diff --git a/src/Var.cc b/src/Var.cc index 5a327625a9..ef5a53ebad 100644 --- a/src/Var.cc +++ b/src/Var.cc @@ -767,7 +767,6 @@ class OuterIDBindingFinder : public TraversalCallback public: OuterIDBindingFinder(ScopePtr s) { scopes.emplace_back(s); } - TraversalCode PreStmt(const Stmt*) override; TraversalCode PreExpr(const Expr*) override; TraversalCode PostExpr(const Expr*) override; @@ -775,19 +774,6 @@ public: std::unordered_set outer_id_references; }; -TraversalCode OuterIDBindingFinder::PreStmt(const Stmt* stmt) - { - if ( stmt->Tag() != STMT_WHEN ) - return TC_CONTINUE; - - auto ws = static_cast(stmt); - - for ( auto& cl : ws->Info()->WhenExprLocals() ) - outer_id_references.insert(const_cast(cl.get())); - - return TC_ABORTSTMT; - } - TraversalCode OuterIDBindingFinder::PreExpr(const Expr* expr) { if ( expr->Tag() == EXPR_LAMBDA ) diff --git a/testing/btest/Baseline/language.when-scope/out b/testing/btest/Baseline/language.when-scope/out new file mode 100644 index 0000000000..782046f610 --- /dev/null +++ b/testing/btest/Baseline/language.when-scope/out @@ -0,0 +1,3 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. +10.0.0.1 +10.0.0.2 diff --git a/testing/btest/language/when-scope.zeek b/testing/btest/language/when-scope.zeek new file mode 100644 index 0000000000..12903fab5d --- /dev/null +++ b/testing/btest/language/when-scope.zeek @@ -0,0 +1,22 @@ +# @TEST-DOC: Check for regression of "when" capture confusion over outer scope +# +# @TEST-EXEC: zeek -b %INPUT | sort >out +# @TEST-EXEC: btest-diff out + +module Test; + +event zeek_init() + { + local myset = set(10.0.0.1, 10.0.0.2); + + when [myset] (T) + { + for ( ip in myset ) + { + when [ip] ( ip == ip ) + { + print fmt("%s", ip); + } + } + } + }