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
2 changed files with 5 additions and 1 deletions
@@ -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;
@@ -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