diff options
author | chriseth <c@ethdev.com> | 2016-10-19 22:39:16 +0800 |
---|---|---|
committer | chriseth <c@ethdev.com> | 2016-11-16 21:37:18 +0800 |
commit | 62492b67e783dd19c67850e2b8ae107aeeb83217 (patch) | |
tree | b683d9145c39005201132e8fc631ef056ea3ba04 | |
parent | 6172590b870832d7aa132209afb890125f301c15 (diff) | |
download | dexon-solidity-62492b67e783dd19c67850e2b8ae107aeeb83217.tar.gz dexon-solidity-62492b67e783dd19c67850e2b8ae107aeeb83217.tar.zst dexon-solidity-62492b67e783dd19c67850e2b8ae107aeeb83217.zip |
Changelog entry and small fixes.
-rw-r--r-- | Changelog.md | 1 | ||||
-rw-r--r-- | libsolidity/ast/ASTJsonConverter.cpp | 5 | ||||
-rw-r--r-- | libsolidity/ast/Types.cpp | 8 |
3 files changed, 9 insertions, 5 deletions
diff --git a/Changelog.md b/Changelog.md index a392ec01..ce3343d8 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,6 +1,7 @@ ### 0.4.5 (unreleased) Features: + * Function types * Do-while loops: support for a C-style do{<block>}while(<expr>); control structure * Inline assembly: support ``invalidJumpLabel`` as a jump label. * Type checker: now more eagerly searches for a common type of an inline array with mixed types diff --git a/libsolidity/ast/ASTJsonConverter.cpp b/libsolidity/ast/ASTJsonConverter.cpp index 717a80ee..d6aca175 100644 --- a/libsolidity/ast/ASTJsonConverter.cpp +++ b/libsolidity/ast/ASTJsonConverter.cpp @@ -228,8 +228,13 @@ bool ASTJsonConverter::visit(UserDefinedTypeName const& _node) bool ASTJsonConverter::visit(FunctionTypeName const& _node) { + string visibility = "internal"; + if (_node.visibility() == Declaration::Visibility::External) + visibility = "external"; + addJsonNode(_node, "FunctionTypeName", { make_pair("payable", _node.isPayable()), + make_pair("visibility", visibility), make_pair("constant", _node.isDeclaredConst()) }); return true; diff --git a/libsolidity/ast/Types.cpp b/libsolidity/ast/Types.cpp index 3afbee13..15747a8b 100644 --- a/libsolidity/ast/Types.cpp +++ b/libsolidity/ast/Types.cpp @@ -2077,12 +2077,10 @@ TypePointer FunctionType::encodingType() const TypePointer FunctionType::interfaceType(bool /*_inLibrary*/) const { - if (m_location != Location::External && m_location != Location::Internal) - return TypePointer(); - if (m_location != Location::External) - return TypePointer(); - else + if (m_location == Location::External) return make_shared<IntegerType>(8 * storageBytes()); + else + return TypePointer(); } bool FunctionType::canTakeArguments(TypePointers const& _argumentTypes, TypePointer const& _selfType) const |