diff options
author | chriseth <chris@ethereum.org> | 2018-09-20 16:54:19 +0800 |
---|---|---|
committer | chriseth <chris@ethereum.org> | 2018-09-20 20:31:04 +0800 |
commit | d0461c49fee20c5213f351bf3f1814112dcf3331 (patch) | |
tree | bbb2eb6f8be0993ef1ca8f0e7a6b35daf94f268a /libsolidity | |
parent | 2150aea344c259eb6541cb3617e7ae0f3d3381dd (diff) | |
download | dexon-solidity-d0461c49fee20c5213f351bf3f1814112dcf3331.tar.gz dexon-solidity-d0461c49fee20c5213f351bf3f1814112dcf3331.tar.zst dexon-solidity-d0461c49fee20c5213f351bf3f1814112dcf3331.zip |
Make non-payable default for conversion to address.
Diffstat (limited to 'libsolidity')
-rw-r--r-- | libsolidity/analysis/TypeChecker.cpp | 4 | ||||
-rw-r--r-- | libsolidity/ast/Types.cpp | 4 |
2 files changed, 3 insertions, 5 deletions
diff --git a/libsolidity/analysis/TypeChecker.cpp b/libsolidity/analysis/TypeChecker.cpp index 3056561b..c42a0068 100644 --- a/libsolidity/analysis/TypeChecker.cpp +++ b/libsolidity/analysis/TypeChecker.cpp @@ -1778,9 +1778,7 @@ bool TypeChecker::visit(FunctionCall const& _functionCall) } if (resultType->category() == Type::Category::Address) { - bool payable = true; - if (auto const* contractType = dynamic_cast<ContractType const*>(argType.get())) - payable = contractType->isPayable(); + bool payable = argType->isExplicitlyConvertibleTo(AddressType::addressPayable()); resultType = make_shared<AddressType>(payable ? StateMutability::Payable : StateMutability::NonPayable); } } diff --git a/libsolidity/ast/Types.cpp b/libsolidity/ast/Types.cpp index 25702f19..3a98eb60 100644 --- a/libsolidity/ast/Types.cpp +++ b/libsolidity/ast/Types.cpp @@ -2641,8 +2641,8 @@ bool FunctionType::operator==(Type const& _other) const bool FunctionType::isExplicitlyConvertibleTo(Type const& _convertTo) const { - if (m_kind == Kind::External && _convertTo.category() == Category::Address) - return true; + if (m_kind == Kind::External && _convertTo == AddressType::address()) + return true; return _convertTo.category() == category(); } |