Merge pull request #10265 from ethereum/fixMappingInit

Fix initializing mapping return variables.
This commit is contained in:
chriseth 2020-11-11 18:42:45 +01:00 committed by GitHub
commit e7e76131c8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 1 deletions

View File

@ -208,7 +208,9 @@ void IRGeneratorForStatements::initializeLocalVar(VariableDeclaration const& _va
solAssert(m_context.isLocalVariable(_varDecl), "Must be a local variable.");
auto const* type = _varDecl.type();
if (auto const* refType = dynamic_cast<ReferenceType const*>(type))
if (dynamic_cast<MappingType const*>(type))
return;
else if (auto const* refType = dynamic_cast<ReferenceType const*>(type))
if (refType->dataStoredIn(DataLocation::Storage) && refType->isPointer())
return;

View File

@ -17,6 +17,8 @@ contract test {
return (a[0], a[1], a[2], b[0], b[1], b[2]);
}
}
// ====
// compileViaYul: also
// ----
// g() -> 0, 42, 0, 0, 84, 21
// h() -> 0, 42, 0, 0, 84, 17