aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/ast/ASTJsonConverter.cpp
diff options
context:
space:
mode:
authorFederico Bond <federicobond@gmail.com>2016-12-13 03:21:57 +0800
committerFederico Bond <federicobond@gmail.com>2016-12-13 03:21:57 +0800
commit9ed65f2ab9d5d6e67e07219006434356ce5c64ee (patch)
treefc87d230d66e5e7d80c11a403c77358dcd62865f /libsolidity/ast/ASTJsonConverter.cpp
parente53fdb49335ccf5356a2fa8c1689afe82430a134 (diff)
downloaddexon-solidity-9ed65f2ab9d5d6e67e07219006434356ce5c64ee.tar
dexon-solidity-9ed65f2ab9d5d6e67e07219006434356ce5c64ee.tar.gz
dexon-solidity-9ed65f2ab9d5d6e67e07219006434356ce5c64ee.tar.bz2
dexon-solidity-9ed65f2ab9d5d6e67e07219006434356ce5c64ee.tar.lz
dexon-solidity-9ed65f2ab9d5d6e67e07219006434356ce5c64ee.tar.xz
dexon-solidity-9ed65f2ab9d5d6e67e07219006434356ce5c64ee.tar.zst
dexon-solidity-9ed65f2ab9d5d6e67e07219006434356ce5c64ee.zip
Include visibility level for functions in AST
Diffstat (limited to 'libsolidity/ast/ASTJsonConverter.cpp')
-rw-r--r--libsolidity/ast/ASTJsonConverter.cpp28
1 files changed, 21 insertions, 7 deletions
diff --git a/libsolidity/ast/ASTJsonConverter.cpp b/libsolidity/ast/ASTJsonConverter.cpp
index 493707b9..abaad0fd 100644
--- a/libsolidity/ast/ASTJsonConverter.cpp
+++ b/libsolidity/ast/ASTJsonConverter.cpp
@@ -24,6 +24,7 @@
#include <boost/algorithm/string/join.hpp>
#include <libdevcore/UTF8.h>
#include <libsolidity/ast/AST.h>
+#include <libsolidity/interface/Exceptions.h>
using namespace std;
@@ -173,9 +174,9 @@ bool ASTJsonConverter::visit(FunctionDefinition const& _node)
{
addJsonNode(_node, "FunctionDefinition", {
make_pair("name", _node.name()),
- make_pair("public", _node.isPublic()),
make_pair("constant", _node.isDeclaredConst()),
- make_pair("payable", _node.isPayable())
+ make_pair("payable", _node.isPayable()),
+ make_pair("visibility", visibility(_node.visibility()))
}, true);
return true;
}
@@ -228,13 +229,9 @@ 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("visibility", visibility(_node.visibility())),
make_pair("constant", _node.isDeclaredConst())
}, true);
return true;
@@ -656,6 +653,23 @@ void ASTJsonConverter::process()
processed = true;
}
+string ASTJsonConverter::visibility(Declaration::Visibility const& _visibility)
+{
+ switch (_visibility)
+ {
+ case Declaration::Visibility::Private:
+ return "private";
+ case Declaration::Visibility::Internal:
+ return "internal";
+ case Declaration::Visibility::Public:
+ return "public";
+ case Declaration::Visibility::External:
+ return "external";
+ default:
+ BOOST_THROW_EXCEPTION(InternalCompilerError() << errinfo_comment("Unknown declaration visibility."));
+ }
+}
+
string ASTJsonConverter::type(Expression const& _expression)
{
return _expression.annotation().type ? _expression.annotation().type->toString() : "Unknown";