diff options
author | chriseth <chris@ethereum.org> | 2018-08-02 21:01:38 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-02 21:01:38 +0800 |
commit | 90a5928b883dc9bbc889269a4e86d3d32c79d8ca (patch) | |
tree | c5f1c13acbd203ae5cf3ef5f97717c72d6a80e9e /libsolidity/codegen/ABIFunctions.cpp | |
parent | f7c96c8dee43652e5c9c52078db524c27bc29aec (diff) | |
parent | 7a8a243eef5551189c51c753463683097cf92f94 (diff) | |
download | dexon-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.cpp | 18 |
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(); |