Move a few low-use classes to namespaces

This commit is contained in:
Tim Wojtulewicz 2020-07-21 16:19:14 -07:00
parent 886fc102b8
commit c9ab1f93e7
53 changed files with 252 additions and 122 deletions

View file

@ -659,53 +659,53 @@ void begin_func(zeek::detail::IDPtr id, const char* module_name,
zeek::detail::current_scope()->GetID()->MakeDeprecated(depr_attr->GetExpr());
}
class OuterIDBindingFinder : public TraversalCallback {
class OuterIDBindingFinder : public zeek::detail::TraversalCallback {
public:
OuterIDBindingFinder(zeek::detail::Scope* s)
{
scopes.emplace_back(s);
}
TraversalCode PreExpr(const zeek::detail::Expr*) override;
TraversalCode PostExpr(const zeek::detail::Expr*) override;
zeek::detail::TraversalCode PreExpr(const zeek::detail::Expr*) override;
zeek::detail::TraversalCode PostExpr(const zeek::detail::Expr*) override;
std::vector<zeek::detail::Scope*> scopes;
std::vector<const zeek::detail::NameExpr*> outer_id_references;
};
TraversalCode OuterIDBindingFinder::PreExpr(const zeek::detail::Expr* expr)
zeek::detail::TraversalCode OuterIDBindingFinder::PreExpr(const zeek::detail::Expr* expr)
{
if ( expr->Tag() == zeek::detail::EXPR_LAMBDA )
{
auto le = static_cast<const zeek::detail::LambdaExpr*>(expr);
scopes.emplace_back(le->GetScope());
return TC_CONTINUE;
return zeek::detail::TC_CONTINUE;
}
if ( expr->Tag() != zeek::detail::EXPR_NAME )
return TC_CONTINUE;
return zeek::detail::TC_CONTINUE;
auto* e = static_cast<const zeek::detail::NameExpr*>(expr);
if ( e->Id()->IsGlobal() )
return TC_CONTINUE;
return zeek::detail::TC_CONTINUE;
for ( const auto& scope : scopes )
if ( scope->Find(e->Id()->Name()) )
// Shadowing is not allowed, so if it's found at inner scope, it's
// not something we have to worry about also being at outer scope.
return TC_CONTINUE;
return zeek::detail::TC_CONTINUE;
outer_id_references.push_back(e);
return TC_CONTINUE;
return zeek::detail::TC_CONTINUE;
}
TraversalCode OuterIDBindingFinder::PostExpr(const zeek::detail::Expr* expr)
zeek::detail::TraversalCode OuterIDBindingFinder::PostExpr(const zeek::detail::Expr* expr)
{
if ( expr->Tag() == zeek::detail::EXPR_LAMBDA )
scopes.pop_back();
return TC_CONTINUE;
return zeek::detail::TC_CONTINUE;
}
void end_func(zeek::detail::StmtPtr body)