aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/analysis/ReferencesResolver.cpp
diff options
context:
space:
mode:
authorDaniel Kirchner <daniel@ekpyron.org>2018-09-13 23:30:54 +0800
committerGitHub <noreply@github.com>2018-09-13 23:30:54 +0800
commite7daed68c1977683546ac3e72d4f84ff538f6711 (patch)
treebb2595e6cc12d420c22bc0373bcb5a7f81c3b0bb /libsolidity/analysis/ReferencesResolver.cpp
parent5aa5fa78f32c89fcf8f635db026d18a6ba8ef132 (diff)
parentae35a58124852eda9a5e6bf67f9976198d2f9c0f (diff)
downloaddexon-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.cpp18
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;