@@ -415,31 +415,32 @@ void ConstantEvaluator::endVisit(MemberAccess const& _memberAccess)
415
415
std::vector<VariableDeclaration const *> candidateVariables;
416
416
if (auto const * nestedMemberAccess = dynamic_cast <MemberAccess const *>(&_memberAccess.expression ()))
417
417
{
418
- // The nested expression can only be accessing a contract inside an imported module
418
+ // The nested expression should be accessing a contract inside an imported module
419
419
auto const * moduleIdentifier = dynamic_cast <Identifier const *>(&nestedMemberAccess->expression ());
420
- solAssert (moduleIdentifier);
420
+ if (!moduleIdentifier)
421
+ return ;
421
422
auto const * importedModule = dynamic_cast <ImportDirective const *>(moduleIdentifier->annotation ().referencedDeclaration );
422
- solAssert (importedModule);
423
+ if (!importedModule)
424
+ return ;
425
+
423
426
SourceUnit const * sourceUnit = importedModule->annotation ().sourceUnit ;
424
427
solAssert (sourceUnit);
425
-
426
428
auto contracts = ASTNode::filteredNodes<ContractDefinition>(sourceUnit->nodes ());
427
429
auto contract = ranges::find_if (
428
430
contracts,
429
431
[&](ContractDefinition const * _contract) { return _contract->name () == nestedMemberAccess->memberName (); }
430
432
);
431
433
if (contract != ranges::end (contracts))
432
434
candidateVariables = (*contract)->stateVariables ();
433
-
434
435
}
435
436
else if (auto const * parentIdentifier = dynamic_cast <Identifier const *>(&_memberAccess.expression ()))
436
437
{
437
438
Declaration const * referencedDeclaration = parentIdentifier->annotation ().referencedDeclaration ;
438
439
if (auto const * contract = dynamic_cast <ContractDefinition const *>(referencedDeclaration))
439
440
candidateVariables = contract->stateVariables ();
440
- else if (auto const * import = dynamic_cast <ImportDirective const *>(referencedDeclaration))
441
+ else if (auto const * importedModule = dynamic_cast <ImportDirective const *>(referencedDeclaration))
441
442
{
442
- if (SourceUnit const * sourceUnit = import ->annotation ().sourceUnit )
443
+ if (SourceUnit const * sourceUnit = importedModule ->annotation ().sourceUnit )
443
444
candidateVariables = ASTNode::filteredNodes<VariableDeclaration>(sourceUnit->nodes ());
444
445
}
445
446
}
0 commit comments