diff options
Diffstat (limited to 'libsolidity/ast/ASTJsonConverter.cpp')
-rw-r--r-- | libsolidity/ast/ASTJsonConverter.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/libsolidity/ast/ASTJsonConverter.cpp b/libsolidity/ast/ASTJsonConverter.cpp index cdf70cf9..e1bcf6a1 100644 --- a/libsolidity/ast/ASTJsonConverter.cpp +++ b/libsolidity/ast/ASTJsonConverter.cpp @@ -704,13 +704,13 @@ bool ASTJsonConverter::visit(ElementaryTypeNameExpression const& _node) bool ASTJsonConverter::visit(Literal const& _node) { - char const* tokenString = Token::toString(_node.token()); + string tokenString = tokenKind(_node.token()); Json::Value value{_node.value()}; if (!dev::validateUTF8(_node.value())) value = Json::nullValue; Token::Value subdenomination = Token::Value(_node.subDenomination()); std::vector<pair<string, Json::Value>> attributes = { - make_pair("token", tokenString ? tokenString : Json::Value()), + make_pair(m_legacy ? "token" : "kind", tokenString), make_pair("value", value), make_pair(m_legacy ? "hexvalue" : "hexValue", toHex(_node.value())), make_pair( @@ -793,6 +793,23 @@ string ASTJsonConverter::functionCallKind(FunctionCallKind _kind) } } +string ASTJsonConverter::tokenKind(Token::Value _token) +{ + switch (_token) + { + case dev::solidity::Token::Number: + return "number"; + case dev::solidity::Token::StringLiteral: + return "string"; + case dev::solidity::Token::TrueLiteral: + return "bool"; + case dev::solidity::Token::FalseLiteral: + return "bool"; + default: + BOOST_THROW_EXCEPTION(InternalCompilerError() << errinfo_comment("Unknown kind of literal token.")); + } +} + string ASTJsonConverter::type(Expression const& _expression) { return _expression.annotation().type ? _expression.annotation().type->toString() : "Unknown"; |