Fix initializing mapping return variables.

This commit is contained in:
chriseth 2020-11-11 18:03:19 +01:00
parent be7b2c3725
commit 01d7d50750
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."); solAssert(m_context.isLocalVariable(_varDecl), "Must be a local variable.");
auto const* type = _varDecl.type(); 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()) if (refType->dataStoredIn(DataLocation::Storage) && refType->isPointer())
return; return;

View File

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