@@ -415,31 +415,32 @@ void ConstantEvaluator::endVisit(MemberAccess const& _memberAccess)
415415 std::vector<VariableDeclaration const *> candidateVariables;
416416 if (auto const * nestedMemberAccess = dynamic_cast <MemberAccess const *>(&_memberAccess.expression ()))
417417 {
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
419419 auto const * moduleIdentifier = dynamic_cast <Identifier const *>(&nestedMemberAccess->expression ());
420- solAssert (moduleIdentifier);
420+ if (!moduleIdentifier)
421+ return ;
421422 auto const * importedModule = dynamic_cast <ImportDirective const *>(moduleIdentifier->annotation ().referencedDeclaration );
422- solAssert (importedModule);
423+ if (!importedModule)
424+ return ;
425+
423426 SourceUnit const * sourceUnit = importedModule->annotation ().sourceUnit ;
424427 solAssert (sourceUnit);
425-
426428 auto contracts = ASTNode::filteredNodes<ContractDefinition>(sourceUnit->nodes ());
427429 auto contract = ranges::find_if (
428430 contracts,
429431 [&](ContractDefinition const * _contract) { return _contract->name () == nestedMemberAccess->memberName (); }
430432 );
431433 if (contract != ranges::end (contracts))
432434 candidateVariables = (*contract)->stateVariables ();
433-
434435 }
435436 else if (auto const * parentIdentifier = dynamic_cast <Identifier const *>(&_memberAccess.expression ()))
436437 {
437438 Declaration const * referencedDeclaration = parentIdentifier->annotation ().referencedDeclaration ;
438439 if (auto const * contract = dynamic_cast <ContractDefinition const *>(referencedDeclaration))
439440 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))
441442 {
442- if (SourceUnit const * sourceUnit = import ->annotation ().sourceUnit )
443+ if (SourceUnit const * sourceUnit = importedModule ->annotation ().sourceUnit )
443444 candidateVariables = ASTNode::filteredNodes<VariableDeclaration>(sourceUnit->nodes ());
444445 }
445446 }
0 commit comments