diff options
author | Daniel Kirchner <daniel@ekpyron.org> | 2018-09-13 23:30:54 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-13 23:30:54 +0800 |
commit | e7daed68c1977683546ac3e72d4f84ff538f6711 (patch) | |
tree | bb2595e6cc12d420c22bc0373bcb5a7f81c3b0bb /libsolidity/analysis/ReferencesResolver.cpp | |
parent | 5aa5fa78f32c89fcf8f635db026d18a6ba8ef132 (diff) | |
parent | ae35a58124852eda9a5e6bf67f9976198d2f9c0f (diff) | |
download | dexon-solidity-e7daed68c1977683546ac3e72d4f84ff538f6711.tar dexon-solidity-e7daed68c1977683546ac3e72d4f84ff538f6711.tar.gz dexon-solidity-e7daed68c1977683546ac3e72d4f84ff538f6711.tar.bz2 dexon-solidity-e7daed68c1977683546ac3e72d4f84ff538f6711.tar.lz dexon-solidity-e7daed68c1977683546ac3e72d4f84ff538f6711.tar.xz dexon-solidity-e7daed68c1977683546ac3e72d4f84ff538f6711.tar.zst dexon-solidity-e7daed68c1977683546ac3e72d4f84ff538f6711.zip |
Merge pull request #4911 from ethereum/addressPayable
Payable and non-payable address type.
Diffstat (limited to 'libsolidity/analysis/ReferencesResolver.cpp')
-rw-r--r-- | libsolidity/analysis/ReferencesResolver.cpp | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/libsolidity/analysis/ReferencesResolver.cpp b/libsolidity/analysis/ReferencesResolver.cpp index 4b678c3b..8a576e2e 100644 --- a/libsolidity/analysis/ReferencesResolver.cpp +++ b/libsolidity/analysis/ReferencesResolver.cpp @@ -119,11 +119,19 @@ bool ReferencesResolver::visit(ElementaryTypeName const& _typeName) { // for non-address types this was already caught by the parser solAssert(_typeName.annotation().type->category() == Type::Category::Address, ""); - if (!( - *_typeName.stateMutability() == StateMutability::Payable || - *_typeName.stateMutability() == StateMutability::NonPayable - )) - m_errorReporter.typeError(_typeName.location(), "Address types can only be payable or non-payable."); + switch(*_typeName.stateMutability()) + { + case StateMutability::Payable: + case StateMutability::NonPayable: + _typeName.annotation().type = make_shared<AddressType>(*_typeName.stateMutability()); + break; + default: + m_errorReporter.typeError( + _typeName.location(), + "Address types can only be payable or non-payable." + ); + break; + } } } return true; |