aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/codegen/ABIFunctions.cpp
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2018-08-02 21:01:38 +0800
committerGitHub <noreply@github.com>2018-08-02 21:01:38 +0800
commit90a5928b883dc9bbc889269a4e86d3d32c79d8ca (patch)
treec5f1c13acbd203ae5cf3ef5f97717c72d6a80e9e /libsolidity/codegen/ABIFunctions.cpp
parentf7c96c8dee43652e5c9c52078db524c27bc29aec (diff)
parent7a8a243eef5551189c51c753463683097cf92f94 (diff)
downloaddexon-solidity-90a5928b883dc9bbc889269a4e86d3d32c79d8ca.tar
dexon-solidity-90a5928b883dc9bbc889269a4e86d3d32c79d8ca.tar.gz
dexon-solidity-90a5928b883dc9bbc889269a4e86d3d32c79d8ca.tar.bz2
dexon-solidity-90a5928b883dc9bbc889269a4e86d3d32c79d8ca.tar.lz
dexon-solidity-90a5928b883dc9bbc889269a4e86d3d32c79d8ca.tar.xz
dexon-solidity-90a5928b883dc9bbc889269a4e86d3d32c79d8ca.tar.zst
dexon-solidity-90a5928b883dc9bbc889269a4e86d3d32c79d8ca.zip
Merge pull request #4522 from ethereum/fullEncodingType
Isolate determining the encoding type into its own function.
Diffstat (limited to 'libsolidity/codegen/ABIFunctions.cpp')
-rw-r--r--libsolidity/codegen/ABIFunctions.cpp18
1 files changed, 4 insertions, 14 deletions
diff --git a/libsolidity/codegen/ABIFunctions.cpp b/libsolidity/codegen/ABIFunctions.cpp
index b3f1bc7e..1ce77d67 100644
--- a/libsolidity/codegen/ABIFunctions.cpp
+++ b/libsolidity/codegen/ABIFunctions.cpp
@@ -471,13 +471,8 @@ string ABIFunctions::abiEncodingFunction(
bool _fromStack
)
{
- solUnimplementedAssert(
- _to.mobileType() &&
- _to.mobileType()->interfaceType(_encodeAsLibraryTypes) &&
- _to.mobileType()->interfaceType(_encodeAsLibraryTypes)->encodingType(),
- "Encoding type \"" + _to.toString() + "\" not yet implemented."
- );
- TypePointer toInterface = _to.mobileType()->interfaceType(_encodeAsLibraryTypes)->encodingType();
+ TypePointer toInterface = _to.fullEncodingType(_encodeAsLibraryTypes, true, false);
+ solUnimplementedAssert(toInterface, "Encoding type \"" + _to.toString() + "\" not yet implemented.");
Type const& to = *toInterface;
if (_from.category() == Type::Category::StringLiteral)
@@ -886,13 +881,8 @@ string ABIFunctions::abiEncodingFunctionStruct(
solAssert(member.type, "");
if (!member.type->canLiveOutsideStorage())
continue;
- solUnimplementedAssert(
- member.type->mobileType() &&
- member.type->mobileType()->interfaceType(_encodeAsLibraryTypes) &&
- member.type->mobileType()->interfaceType(_encodeAsLibraryTypes)->encodingType(),
- "Encoding type \"" + member.type->toString() + "\" not yet implemented."
- );
- auto memberTypeTo = member.type->mobileType()->interfaceType(_encodeAsLibraryTypes)->encodingType();
+ TypePointer memberTypeTo = member.type->fullEncodingType(_encodeAsLibraryTypes, true, false);
+ solUnimplementedAssert(memberTypeTo, "Encoding type \"" + member.type->toString() + "\" not yet implemented.");
auto memberTypeFrom = _from.memberType(member.name);
solAssert(memberTypeFrom, "");
bool dynamicMember = memberTypeTo->isDynamicallyEncoded();