Skip to content

Commit b6dbfdf

Browse files
authored
Merge pull request #12494 from ethereum/AST-ImportDirective-traversal-fix
Adds missing accepts to ImportDirective's SymbolAlias::symbol.
2 parents 29dde71 + f5ff358 commit b6dbfdf

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

libsolidity/analysis/NameAndTypeResolver.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -571,7 +571,8 @@ bool DeclarationRegistrationHelper::visit(ImportDirective& _import)
571571
if (!m_scopes[importee])
572572
m_scopes[importee] = make_shared<DeclarationContainer>(nullptr, m_scopes[nullptr].get());
573573
m_scopes[&_import] = m_scopes[importee];
574-
return ASTVisitor::visit(_import);
574+
ASTVisitor::visit(_import);
575+
return false; // Do not recurse into child nodes (Identifier for symbolAliases)
575576
}
576577

577578
bool DeclarationRegistrationHelper::visit(ContractDefinition& _contract)

libsolidity/ast/AST_accept.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,19 @@ void PragmaDirective::accept(ASTConstVisitor& _visitor) const
5858

5959
void ImportDirective::accept(ASTVisitor& _visitor)
6060
{
61-
_visitor.visit(*this);
61+
if (_visitor.visit(*this))
62+
for (SymbolAlias const& symbolAlias: symbolAliases())
63+
if (symbolAlias.symbol)
64+
symbolAlias.symbol->accept(_visitor);
6265
_visitor.endVisit(*this);
6366
}
6467

6568
void ImportDirective::accept(ASTConstVisitor& _visitor) const
6669
{
67-
_visitor.visit(*this);
70+
if (_visitor.visit(*this))
71+
for (SymbolAlias const& symbolAlias: symbolAliases())
72+
if (symbolAlias.symbol)
73+
symbolAlias.symbol->accept(_visitor);
6874
_visitor.endVisit(*this);
6975
}
7076

0 commit comments

Comments
 (0)