aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/ast/ASTJsonConverter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libsolidity/ast/ASTJsonConverter.cpp')
-rw-r--r--libsolidity/ast/ASTJsonConverter.cpp21
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";