Various deprecation fixes, reported by failed Spicy builds

- Add deprecated version of ID::SetType() that takes Type*
- Add deprecated versions of zeek::set_location in the global namespace
- Fix global namespace version of lookup_ID to return ID*
This commit is contained in:
Tim Wojtulewicz 2020-07-15 15:24:19 -07:00
parent 118605f4ac
commit 4d96b7f1cc
6 changed files with 140 additions and 121 deletions

View file

@ -136,6 +136,11 @@ void ID::SetType(zeek::TypePtr t)
type = std::move(t);
}
void ID::SetType(zeek::Type* t)
{
SetType({AdoptRef(), t});
}
void ID::ClearVal()
{
val = nullptr;

View file

@ -63,7 +63,9 @@ public:
std::string ModuleName() const;
void SetType(TypePtr t);
void SetType(zeek::TypePtr t);
[[deprecated("Remove in v4.1. Use version that takes IntrusivePtr.")]]
void SetType(zeek::Type* t);
[[deprecated("Remove in v4.1. Use GetType().")]]
zeek::Type* Type() { return type.get(); }

View file

@ -199,3 +199,15 @@ using BroObj [[deprecated("Remove in v4.1. Use zeek::Obj instead.")]] = zeek::Ob
[[deprecated("Remove in v4.1. Use zeek::Obj::Print instead.")]]
extern void print(const zeek::Obj* obj);
[[deprecated("Remove in v4.1. Use zeek::detail::set_location instead.")]]
inline void set_location(const Location loc)
{
zeek::detail::set_location(loc);
}
[[deprecated("Remove in v4.1. Use zeek::detail::set_location instead.")]]
inline void set_location(const Location start, const Location end)
{
zeek::detail::set_location(start, end);
}

View file

@ -223,7 +223,7 @@ Scope* global_scope()
}
const zeek::detail::ID* lookup_ID(
zeek::detail::ID* lookup_ID(
const char* name, const char* module,
bool no_global,
bool same_module_only,

View file

@ -128,7 +128,7 @@ constexpr auto global_scope [[deprecated("Remove in v4.1 Use zeek::detail::globa
// Because of the use of default arguments, this function can't be aliased like the rest.
[[deprecated("Remove in v4.1 Use zeek::detail::lookup_ID instead.")]]
extern const zeek::detail::ID* lookup_ID(
extern zeek::detail::ID* lookup_ID(
const char* name, const char* module,
bool no_global = false,
bool same_module_only = false,

View file

@ -265,7 +265,7 @@ bro:
// Any objects creates from here on out should not
// have file positions associated with them.
set_location(zeek::detail::no_location);
zeek::detail::set_location(zeek::detail::no_location);
}
|
/* Silly way of allowing the debugger to call yyparse()
@ -292,169 +292,169 @@ opt_expr:
expr:
'(' expr ')'
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = $2; $$->MarkParen();
}
| TOK_COPY '(' expr ')'
{
set_location(@1, @4);
zeek::detail::set_location(@1, @4);
$$ = new zeek::detail::CloneExpr({zeek::AdoptRef{}, $3});
}
| TOK_INCR expr
{
set_location(@1, @2);
zeek::detail::set_location(@1, @2);
$$ = new zeek::detail::IncrExpr(zeek::detail::EXPR_INCR, {zeek::AdoptRef{}, $2});
}
| TOK_DECR expr
{
set_location(@1, @2);
zeek::detail::set_location(@1, @2);
$$ = new zeek::detail::IncrExpr(zeek::detail::EXPR_DECR, {zeek::AdoptRef{}, $2});
}
| '!' expr
{
set_location(@1, @2);
zeek::detail::set_location(@1, @2);
$$ = new zeek::detail::NotExpr({zeek::AdoptRef{}, $2});
}
| '~' expr
{
set_location(@1, @2);
zeek::detail::set_location(@1, @2);
$$ = new zeek::detail::ComplementExpr({zeek::AdoptRef{}, $2});
}
| '-' expr %prec '!'
{
set_location(@1, @2);
zeek::detail::set_location(@1, @2);
$$ = new zeek::detail::NegExpr({zeek::AdoptRef{}, $2});
}
| '+' expr %prec '!'
{
set_location(@1, @2);
zeek::detail::set_location(@1, @2);
$$ = new zeek::detail::PosExpr({zeek::AdoptRef{}, $2});
}
| expr '+' expr
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::detail::AddExpr({zeek::AdoptRef{}, $1}, {zeek::AdoptRef{}, $3});
}
| expr TOK_ADD_TO expr
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::detail::AddToExpr({zeek::AdoptRef{}, $1}, {zeek::AdoptRef{}, $3});
}
| expr '-' expr
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::detail::SubExpr({zeek::AdoptRef{}, $1}, {zeek::AdoptRef{}, $3});
}
| expr TOK_REMOVE_FROM expr
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::detail::RemoveFromExpr({zeek::AdoptRef{}, $1}, {zeek::AdoptRef{}, $3});
}
| expr '*' expr
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::detail::TimesExpr({zeek::AdoptRef{}, $1}, {zeek::AdoptRef{}, $3});
}
| expr '/' expr
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::detail::DivideExpr({zeek::AdoptRef{}, $1}, {zeek::AdoptRef{}, $3});
}
| expr '%' expr
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::detail::ModExpr({zeek::AdoptRef{}, $1}, {zeek::AdoptRef{}, $3});
}
| expr '&' expr
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::detail::BitExpr(zeek::detail::EXPR_AND, {zeek::AdoptRef{}, $1}, {zeek::AdoptRef{}, $3});
}
| expr '|' expr
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::detail::BitExpr(zeek::detail::EXPR_OR, {zeek::AdoptRef{}, $1}, {zeek::AdoptRef{}, $3});
}
| expr '^' expr
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::detail::BitExpr(zeek::detail::EXPR_XOR, {zeek::AdoptRef{}, $1}, {zeek::AdoptRef{}, $3});
}
| expr TOK_AND_AND expr
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::detail::BoolExpr(zeek::detail::EXPR_AND_AND, {zeek::AdoptRef{}, $1}, {zeek::AdoptRef{}, $3});
}
| expr TOK_OR_OR expr
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::detail::BoolExpr(zeek::detail::EXPR_OR_OR, {zeek::AdoptRef{}, $1}, {zeek::AdoptRef{}, $3});
}
| expr TOK_EQ expr
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::detail::EqExpr(zeek::detail::EXPR_EQ, {zeek::AdoptRef{}, $1}, {zeek::AdoptRef{}, $3});
}
| expr TOK_NE expr
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::detail::EqExpr(zeek::detail::EXPR_NE, {zeek::AdoptRef{}, $1}, {zeek::AdoptRef{}, $3});
}
| expr '<' expr
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::detail::RelExpr(zeek::detail::EXPR_LT, {zeek::AdoptRef{}, $1}, {zeek::AdoptRef{}, $3});
}
| expr TOK_LE expr
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::detail::RelExpr(zeek::detail::EXPR_LE, {zeek::AdoptRef{}, $1}, {zeek::AdoptRef{}, $3});
}
| expr '>' expr
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::detail::RelExpr(zeek::detail::EXPR_GT, {zeek::AdoptRef{}, $1}, {zeek::AdoptRef{}, $3});
}
| expr TOK_GE expr
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::detail::RelExpr(zeek::detail::EXPR_GE, {zeek::AdoptRef{}, $1}, {zeek::AdoptRef{}, $3});
}
| expr '?' expr ':' expr
{
set_location(@1, @5);
zeek::detail::set_location(@1, @5);
$$ = new zeek::detail::CondExpr({zeek::AdoptRef{}, $1}, {zeek::AdoptRef{}, $3}, {zeek::AdoptRef{}, $5});
}
| expr '=' expr
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
if ( $1->Tag() == zeek::detail::EXPR_INDEX && $1->AsIndexExpr()->IsSlice() )
reporter->Error("index slice assignment may not be used"
@ -466,14 +466,14 @@ expr:
| TOK_LOCAL local_id '=' expr
{
set_location(@2, @4);
zeek::detail::set_location(@2, @4);
$$ = add_and_assign_local({zeek::AdoptRef{}, $2}, {zeek::AdoptRef{}, $4},
zeek::val_mgr->True()).release();
}
| expr '[' expr_list ']'
{
set_location(@1, @4);
zeek::detail::set_location(@1, @4);
$$ = new zeek::detail::IndexExpr({zeek::AdoptRef{}, $1}, {zeek::AdoptRef{}, $3});
}
@ -481,13 +481,13 @@ expr:
| expr '$' TOK_ID
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::detail::FieldExpr({zeek::AdoptRef{}, $1}, $3);
}
| '$' TOK_ID '=' expr
{
set_location(@1, @4);
zeek::detail::set_location(@1, @4);
$$ = new zeek::detail::FieldAssignExpr($2, {zeek::AdoptRef{}, $4});
}
@ -507,13 +507,13 @@ expr:
| expr TOK_IN expr
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::detail::InExpr({zeek::AdoptRef{}, $1}, {zeek::AdoptRef{}, $3});
}
| expr TOK_NOT_IN expr
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::detail::NotExpr(zeek::make_intrusive<zeek::detail::InExpr>(
zeek::detail::ExprPtr{zeek::AdoptRef{}, $1},
zeek::detail::ExprPtr{zeek::AdoptRef{}, $3}));
@ -521,7 +521,7 @@ expr:
| '[' expr_list ']'
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
bool is_record_ctor = true;
@ -553,28 +553,28 @@ expr:
| TOK_RECORD '(' expr_list ')'
{
set_location(@1, @4);
zeek::detail::set_location(@1, @4);
$$ = new zeek::detail::RecordConstructorExpr({zeek::AdoptRef{}, $3});
}
| TOK_TABLE '(' { ++in_init; } opt_expr_list ')' { --in_init; }
opt_attr
{ // the ++in_init fixes up the parsing of "[x] = y"
set_location(@1, @5);
zeek::detail::set_location(@1, @5);
std::unique_ptr<std::vector<zeek::detail::AttrPtr>> attrs{$7};
$$ = new zeek::detail::TableConstructorExpr({zeek::AdoptRef{}, $4}, std::move(attrs));
}
| TOK_SET '(' opt_expr_list ')' opt_attr
{
set_location(@1, @4);
zeek::detail::set_location(@1, @4);
std::unique_ptr<std::vector<zeek::detail::AttrPtr>> attrs{$5};
$$ = new zeek::detail::SetConstructorExpr({zeek::AdoptRef{}, $3}, std::move(attrs));
}
| TOK_VECTOR '(' opt_expr_list ')'
{
set_location(@1, @4);
zeek::detail::set_location(@1, @4);
$$ = new zeek::detail::VectorConstructorExpr({zeek::AdoptRef{}, $3});
}
@ -592,7 +592,7 @@ expr:
')'
{
set_location(@1, @6);
zeek::detail::set_location(@1, @6);
if ( $1->Tag() == zeek::detail::EXPR_NAME && $1->AsNameExpr()->Id()->IsType() )
{
@ -633,7 +633,7 @@ expr:
| TOK_HOOK { ++in_hook; } expr
{
--in_hook;
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
if ( $3->Tag() != zeek::detail::EXPR_CALL )
$3->Error("not a valid hook call expression");
$$ = $3;
@ -641,7 +641,7 @@ expr:
| expr TOK_HAS_FIELD TOK_ID
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::detail::HasFieldExpr({zeek::AdoptRef{}, $1}, $3);
}
@ -650,13 +650,13 @@ expr:
| TOK_SCHEDULE expr '{' event '}'
{
set_location(@1, @5);
zeek::detail::set_location(@1, @5);
$$ = new zeek::detail::ScheduleExpr({zeek::AdoptRef{}, $2}, {zeek::AdoptRef{}, $4});
}
| TOK_ID
{
set_location(@1);
zeek::detail::set_location(@1);
auto id = zeek::detail::lookup_ID($1, zeek::detail::current_module.c_str());
if ( ! id )
@ -706,13 +706,13 @@ expr:
| TOK_CONSTANT
{
set_location(@1);
zeek::detail::set_location(@1);
$$ = new zeek::detail::ConstExpr({zeek::AdoptRef{}, $1});
}
| '/' { begin_RE(); } TOK_PATTERN_TEXT TOK_PATTERN_END
{
set_location(@3);
zeek::detail::set_location(@3);
RE_Matcher* re = new RE_Matcher($3);
delete [] $3;
@ -726,7 +726,7 @@ expr:
| '|' expr '|' %prec '('
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
zeek::detail::ExprPtr e{zeek::AdoptRef{}, $2};
if ( zeek::IsIntegral(e->GetType()->Tag()) )
@ -737,13 +737,13 @@ expr:
| expr TOK_AS type
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::detail::CastExpr({zeek::AdoptRef{}, $1}, {zeek::AdoptRef{}, $3});
}
| expr TOK_IS type
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::detail::IsExpr({zeek::AdoptRef{}, $1}, {zeek::AdoptRef{}, $3});
}
;
@ -751,13 +751,13 @@ expr:
expr_list:
expr_list ',' expr
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$1->Append({zeek::AdoptRef{}, $3});
}
| expr
{
set_location(@1);
zeek::detail::set_location(@1);
$$ = new zeek::detail::ListExpr({zeek::AdoptRef{}, $1});
}
;
@ -796,7 +796,7 @@ enum_body_elem:
*/
TOK_ID '=' TOK_CONSTANT opt_deprecated
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
assert(cur_enum_type);
if ( $3->GetType()->Tag() != zeek::TYPE_COUNT )
@ -817,7 +817,7 @@ enum_body_elem:
| TOK_ID opt_deprecated
{
set_location(@1);
zeek::detail::set_location(@1);
assert(cur_enum_type);
cur_enum_type->AddName(zeek::detail::current_module, $1, is_export, $2);
}
@ -825,84 +825,84 @@ enum_body_elem:
type:
TOK_BOOL {
set_location(@1);
zeek::detail::set_location(@1);
$$ = zeek::base_type(zeek::TYPE_BOOL)->Ref();
}
| TOK_INT {
set_location(@1);
zeek::detail::set_location(@1);
$$ = zeek::base_type(zeek::TYPE_INT)->Ref();
}
| TOK_COUNT {
set_location(@1);
zeek::detail::set_location(@1);
$$ = zeek::base_type(zeek::TYPE_COUNT)->Ref();
}
| TOK_COUNTER {
set_location(@1);
zeek::detail::set_location(@1);
$$ = zeek::base_type(zeek::TYPE_COUNTER)->Ref();
}
| TOK_DOUBLE {
set_location(@1);
zeek::detail::set_location(@1);
$$ = zeek::base_type(zeek::TYPE_DOUBLE)->Ref();
}
| TOK_TIME {
set_location(@1);
zeek::detail::set_location(@1);
$$ = zeek::base_type(zeek::TYPE_TIME)->Ref();
}
| TOK_INTERVAL {
set_location(@1);
zeek::detail::set_location(@1);
$$ = zeek::base_type(zeek::TYPE_INTERVAL)->Ref();
}
| TOK_STRING {
set_location(@1);
zeek::detail::set_location(@1);
$$ = zeek::base_type(zeek::TYPE_STRING)->Ref();
}
| TOK_PATTERN {
set_location(@1);
zeek::detail::set_location(@1);
$$ = zeek::base_type(zeek::TYPE_PATTERN)->Ref();
}
| TOK_TIMER {
set_location(@1);
zeek::detail::set_location(@1);
$$ = zeek::base_type(zeek::TYPE_TIMER)->Ref();
}
| TOK_PORT {
set_location(@1);
zeek::detail::set_location(@1);
$$ = zeek::base_type(zeek::TYPE_PORT)->Ref();
}
| TOK_ADDR {
set_location(@1);
zeek::detail::set_location(@1);
$$ = zeek::base_type(zeek::TYPE_ADDR)->Ref();
}
| TOK_SUBNET {
set_location(@1);
zeek::detail::set_location(@1);
$$ = zeek::base_type(zeek::TYPE_SUBNET)->Ref();
}
| TOK_ANY {
set_location(@1);
zeek::detail::set_location(@1);
$$ = zeek::base_type(zeek::TYPE_ANY)->Ref();
}
| TOK_TABLE '[' type_list ']' TOK_OF type
{
set_location(@1, @6);
zeek::detail::set_location(@1, @6);
$$ = new zeek::TableType({zeek::AdoptRef{}, $3}, {zeek::AdoptRef{}, $6});
}
| TOK_SET '[' type_list ']'
{
set_location(@1, @4);
zeek::detail::set_location(@1, @4);
$$ = new zeek::SetType({zeek::AdoptRef{}, $3}, nullptr);
}
@ -912,27 +912,27 @@ type:
{ --in_record; }
'}'
{
set_location(@1, @5);
zeek::detail::set_location(@1, @5);
$$ = new zeek::RecordType($4);
}
| TOK_UNION '{' type_list '}'
{
set_location(@1, @4);
zeek::detail::set_location(@1, @4);
reporter->Error("union type not implemented");
$$ = 0;
}
| TOK_ENUM '{' { set_location(@1); parser_new_enum(); } enum_body '}'
| TOK_ENUM '{' { zeek::detail::set_location(@1); parser_new_enum(); } enum_body '}'
{
set_location(@1, @5);
zeek::detail::set_location(@1, @5);
$4->UpdateLocationEndInfo(@5);
$$ = $4;
}
| TOK_LIST
{
set_location(@1);
zeek::detail::set_location(@1);
// $$ = new TypeList();
reporter->Error("list type not implemented");
$$ = 0;
@ -940,7 +940,7 @@ type:
| TOK_LIST TOK_OF type
{
set_location(@1);
zeek::detail::set_location(@1);
// $$ = new TypeList($3);
reporter->Error("list type not implemented");
$$ = 0;
@ -948,43 +948,43 @@ type:
| TOK_VECTOR TOK_OF type
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::VectorType({zeek::AdoptRef{}, $3});
}
| TOK_FUNCTION func_params
{
set_location(@1, @2);
zeek::detail::set_location(@1, @2);
$$ = $2;
}
| TOK_EVENT '(' formal_args ')'
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::FuncType({zeek::AdoptRef{}, $3}, nullptr, zeek::FUNC_FLAVOR_EVENT);
}
| TOK_HOOK '(' formal_args ')'
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::FuncType({zeek::AdoptRef{}, $3}, zeek::base_type(zeek::TYPE_BOOL), zeek::FUNC_FLAVOR_HOOK);
}
| TOK_FILE TOK_OF type
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::FileType({zeek::AdoptRef{}, $3});
}
| TOK_FILE
{
set_location(@1);
zeek::detail::set_location(@1);
$$ = new zeek::FileType(zeek::base_type(zeek::TYPE_STRING));
}
| TOK_OPAQUE TOK_OF TOK_ID
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::OpaqueType($3);
}
@ -1031,7 +1031,7 @@ type_decl_list:
type_decl:
TOK_ID ':' type opt_attr ';'
{
set_location(@1, @4);
zeek::detail::set_location(@1, @4);
auto attrs = make_attributes($4, {zeek::NewRef{}, $3}, in_record > 0, false);
$$ = new zeek::TypeDecl($1, {zeek::AdoptRef{}, $3}, std::move(attrs));
@ -1061,7 +1061,7 @@ formal_args_decl_list:
formal_args_decl:
TOK_ID ':' type opt_attr
{
set_location(@1, @4);
zeek::detail::set_location(@1, @4);
auto attrs = make_attributes($4, {zeek::NewRef{}, $3}, true, false);
$$ = new zeek::TypeDecl($1, {zeek::AdoptRef{}, $3}, std::move(attrs));
}
@ -1230,7 +1230,7 @@ func_body:
'}'
{
set_location(func_hdr_location, @5);
zeek::detail::set_location(func_hdr_location, @5);
end_func({zeek::AdoptRef{}, $3});
}
;
@ -1250,7 +1250,7 @@ lambda_body:
'}'
{
set_location(@1, @5);
zeek::detail::set_location(@1, @5);
// Code duplication here is sad but needed. end_func actually instantiates the function
// and associates it with an ID. We perform that association later and need to return
@ -1319,7 +1319,7 @@ init:
index_slice:
expr '[' opt_expr ':' opt_expr ']'
{
set_location(@1, @6);
zeek::detail::set_location(@1, @6);
auto low = $3 ? zeek::detail::ExprPtr{zeek::AdoptRef{}, $3} :
zeek::make_intrusive<zeek::detail::ConstExpr>(zeek::val_mgr->Count(0));
@ -1406,7 +1406,7 @@ attr:
stmt:
'{' opt_no_test_block stmt_list '}'
{
set_location(@1, @4);
zeek::detail::set_location(@1, @4);
$$ = $3;
if ( $2 )
brofiler.DecIgnoreDepth();
@ -1414,7 +1414,7 @@ stmt:
| TOK_PRINT expr_list ';' opt_no_test
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::detail::PrintStmt(zeek::IntrusivePtr{zeek::AdoptRef{}, $2});
if ( ! $4 )
brofiler.AddStmt($$);
@ -1422,7 +1422,7 @@ stmt:
| TOK_EVENT event ';' opt_no_test
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::detail::EventStmt({zeek::AdoptRef{}, $2});
if ( ! $4 )
brofiler.AddStmt($$);
@ -1430,19 +1430,19 @@ stmt:
| TOK_IF '(' expr ')' stmt
{
set_location(@1, @4);
zeek::detail::set_location(@1, @4);
$$ = new zeek::detail::IfStmt({zeek::AdoptRef{}, $3}, {zeek::AdoptRef{}, $5}, zeek::make_intrusive<zeek::detail::NullStmt>());
}
| TOK_IF '(' expr ')' stmt TOK_ELSE stmt
{
set_location(@1, @4);
zeek::detail::set_location(@1, @4);
$$ = new zeek::detail::IfStmt({zeek::AdoptRef{}, $3}, {zeek::AdoptRef{}, $5}, {zeek::AdoptRef{}, $7});
}
| TOK_SWITCH expr '{' case_list '}'
{
set_location(@1, @2);
zeek::detail::set_location(@1, @2);
$$ = new zeek::detail::SwitchStmt({zeek::AdoptRef{}, $2}, $4);
}
@ -1458,7 +1458,7 @@ stmt:
| TOK_NEXT ';' opt_no_test
{
set_location(@1, @2);
zeek::detail::set_location(@1, @2);
$$ = new zeek::detail::NextStmt;
if ( ! $3 )
brofiler.AddStmt($$);
@ -1466,7 +1466,7 @@ stmt:
| TOK_BREAK ';' opt_no_test
{
set_location(@1, @2);
zeek::detail::set_location(@1, @2);
$$ = new zeek::detail::BreakStmt;
if ( ! $3 )
brofiler.AddStmt($$);
@ -1474,7 +1474,7 @@ stmt:
| TOK_FALLTHROUGH ';' opt_no_test
{
set_location(@1, @2);
zeek::detail::set_location(@1, @2);
$$ = new zeek::detail::FallthroughStmt;
if ( ! $3 )
brofiler.AddStmt($$);
@ -1482,7 +1482,7 @@ stmt:
| TOK_RETURN ';' opt_no_test
{
set_location(@1, @2);
zeek::detail::set_location(@1, @2);
$$ = new zeek::detail::ReturnStmt(0);
if ( ! $3 )
brofiler.AddStmt($$);
@ -1490,7 +1490,7 @@ stmt:
| TOK_RETURN expr ';' opt_no_test
{
set_location(@1, @2);
zeek::detail::set_location(@1, @2);
$$ = new zeek::detail::ReturnStmt({zeek::AdoptRef{}, $2});
if ( ! $4 )
brofiler.AddStmt($$);
@ -1498,7 +1498,7 @@ stmt:
| TOK_ADD expr ';' opt_no_test
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::detail::AddStmt({zeek::AdoptRef{}, $2});
if ( ! $4 )
brofiler.AddStmt($$);
@ -1506,7 +1506,7 @@ stmt:
| TOK_DELETE expr ';' opt_no_test
{
set_location(@1, @3);
zeek::detail::set_location(@1, @3);
$$ = new zeek::detail::DelStmt({zeek::AdoptRef{}, $2});
if ( ! $4 )
brofiler.AddStmt($$);
@ -1514,7 +1514,7 @@ stmt:
| TOK_LOCAL local_id opt_type init_class opt_init opt_attr ';' opt_no_test
{
set_location(@1, @7);
zeek::detail::set_location(@1, @7);
$$ = add_local({zeek::AdoptRef{}, $2}, {zeek::AdoptRef{}, $3}, $4,
{zeek::AdoptRef{}, $5},
std::unique_ptr<std::vector<zeek::detail::AttrPtr>>{$6},
@ -1525,7 +1525,7 @@ stmt:
| TOK_CONST local_id opt_type init_class opt_init opt_attr ';' opt_no_test
{
set_location(@1, @6);
zeek::detail::set_location(@1, @6);
$$ = add_local({zeek::AdoptRef{}, $2}, {zeek::AdoptRef{}, $3}, $4,
{zeek::AdoptRef{}, $5},
std::unique_ptr<std::vector<zeek::detail::AttrPtr>>{$6},
@ -1536,14 +1536,14 @@ stmt:
| TOK_WHEN '(' expr ')' stmt
{
set_location(@3, @5);
zeek::detail::set_location(@3, @5);
$$ = new zeek::detail::WhenStmt({zeek::AdoptRef{}, $3}, {zeek::AdoptRef{}, $5},
nullptr, nullptr, false);
}
| TOK_WHEN '(' expr ')' stmt TOK_TIMEOUT expr '{' opt_no_test_block stmt_list '}'
{
set_location(@3, @9);
zeek::detail::set_location(@3, @9);
$$ = new zeek::detail::WhenStmt({zeek::AdoptRef{}, $3}, {zeek::AdoptRef{}, $5},
{zeek::AdoptRef{}, $10}, {zeek::AdoptRef{}, $7}, false);
if ( $9 )
@ -1553,14 +1553,14 @@ stmt:
| TOK_RETURN TOK_WHEN '(' expr ')' stmt
{
set_location(@4, @6);
zeek::detail::set_location(@4, @6);
$$ = new zeek::detail::WhenStmt({zeek::AdoptRef{}, $4}, {zeek::AdoptRef{}, $6}, nullptr,
nullptr, true);
}
| TOK_RETURN TOK_WHEN '(' expr ')' stmt TOK_TIMEOUT expr '{' opt_no_test_block stmt_list '}'
{
set_location(@4, @10);
zeek::detail::set_location(@4, @10);
$$ = new zeek::detail::WhenStmt({zeek::AdoptRef{}, $4}, {zeek::AdoptRef{}, $6},
{zeek::AdoptRef{}, $11}, {zeek::AdoptRef{}, $8}, true);
if ( $10 )
@ -1569,7 +1569,7 @@ stmt:
| index_slice '=' expr ';' opt_no_test
{
set_location(@1, @4);
zeek::detail::set_location(@1, @4);
$$ = new zeek::detail::ExprStmt(zeek::detail::get_assign_expr({zeek::AdoptRef{}, $1},
{zeek::AdoptRef{}, $3}, in_init));
@ -1579,7 +1579,7 @@ stmt:
| expr ';' opt_no_test
{
set_location(@1, @2);
zeek::detail::set_location(@1, @2);
$$ = new zeek::detail::ExprStmt({zeek::AdoptRef{}, $1});
if ( ! $3 )
brofiler.AddStmt($$);
@ -1587,7 +1587,7 @@ stmt:
| ';'
{
set_location(@1, @1);
zeek::detail::set_location(@1, @1);
$$ = new zeek::detail::NullStmt;
}
@ -1598,7 +1598,7 @@ stmt:
stmt_list:
stmt_list stmt
{
set_location(@1, @2);
zeek::detail::set_location(@1, @2);
$1->AsStmtList()->Stmts().push_back($2);
$1->UpdateLocationEndInfo(@2);
}
@ -1609,7 +1609,7 @@ stmt_list:
event:
TOK_ID '(' opt_expr_list ')'
{
set_location(@1, @4);
zeek::detail::set_location(@1, @4);
const auto& id = zeek::detail::lookup_ID($1, zeek::detail::current_module.c_str());
if ( id )
@ -1683,7 +1683,7 @@ case_type:
for_head:
TOK_FOR '(' TOK_ID TOK_IN expr ')'
{
set_location(@1, @6);
zeek::detail::set_location(@1, @6);
// This rule needs to be separate from the loop
// body so that we execute these actions - defining
@ -1716,7 +1716,7 @@ for_head:
|
TOK_FOR '(' TOK_ID ',' TOK_ID TOK_IN expr ')'
{
set_location(@1, @8);
zeek::detail::set_location(@1, @8);
const char* module = zeek::detail::current_module.c_str();
// Check for previous definitions of key and
@ -1749,7 +1749,7 @@ for_head:
|
TOK_FOR '(' '[' local_id_list ']' ',' TOK_ID TOK_IN expr ')'
{
set_location(@1, @10);
zeek::detail::set_location(@1, @10);
const char* module = zeek::detail::current_module.c_str();
// Validate value variable
@ -1780,7 +1780,7 @@ local_id_list:
local_id:
TOK_ID
{
set_location(@1);
zeek::detail::set_location(@1);
auto id = zeek::detail::lookup_ID($1, zeek::detail::current_module.c_str());
$$ = id.release();
@ -1817,7 +1817,7 @@ event_id:
global_or_event_id:
TOK_ID
{
set_location(@1);
zeek::detail::set_location(@1);
auto id = zeek::detail::lookup_ID($1, zeek::detail::current_module.c_str(), false,
defining_global_ID);
$$ = id.release();
@ -1855,7 +1855,7 @@ global_or_event_id:
resolve_id:
TOK_ID
{
set_location(@1);
zeek::detail::set_location(@1);
auto id = zeek::detail::lookup_ID($1, zeek::detail::current_module.c_str());
$$ = id.release();