diff options
author | djudjuu <julfaber@gmail.com> | 2017-05-17 21:52:45 +0800 |
---|---|---|
committer | djudjuu <julfaber@gmail.com> | 2017-05-17 21:58:28 +0800 |
commit | e3583d04f79c5e9ada9914f43711d3b90242dfdc (patch) | |
tree | b2c8c5caa831a90beb83a1e309fd5bf6e813267c /libsolidity/ast | |
parent | a4ba5ace8a5d77397715204fe737b0dba4429368 (diff) | |
download | dexon-solidity-e3583d04f79c5e9ada9914f43711d3b90242dfdc.tar.gz dexon-solidity-e3583d04f79c5e9ada9914f43711d3b90242dfdc.tar.zst dexon-solidity-e3583d04f79c5e9ada9914f43711d3b90242dfdc.zip |
include new InlineAssemblyInformation into JSON
Diffstat (limited to 'libsolidity/ast')
-rw-r--r-- | libsolidity/ast/ASTJsonConverter.cpp | 14 | ||||
-rw-r--r-- | libsolidity/ast/ASTJsonConverter.h | 1 |
2 files changed, 13 insertions, 2 deletions
diff --git a/libsolidity/ast/ASTJsonConverter.cpp b/libsolidity/ast/ASTJsonConverter.cpp index 492429d7..3c3ceae8 100644 --- a/libsolidity/ast/ASTJsonConverter.cpp +++ b/libsolidity/ast/ASTJsonConverter.cpp @@ -171,6 +171,16 @@ void ASTJsonConverter::appendExpressionAttributes( _attributes.insert(_attributes.end(), exprAttributes.begin(), exprAttributes.end()); } +Json::Value ASTJsonConverter::inlineAssemblyIdentifierToJson(pair<assembly::Identifier const* ,InlineAssemblyAnnotation::ExternalIdentifierInfo> _info) +{ + Json::Value tuple(Json::objectValue); + tuple["src"] = sourceLocationToString(_info.first->location); + tuple["declaration"] = idOrNull(_info.second.declaration); + tuple["isSlot"] = Json::Value(_info.second.isSlot); + tuple["isOffset"] = Json::Value(_info.second.isOffset); + tuple["valueSize"] = _info.second.valueSize; + return tuple; +} void ASTJsonConverter::print(ostream& _stream, ASTNode const& _node) { @@ -441,10 +451,10 @@ bool ASTJsonConverter::visit(InlineAssembly const& _node) Json::Value externalReferences(Json::arrayValue); for (auto const& it : _node.annotation().externalReferences) { - if (it.first && it.second) + if (it.first) { Json::Value tuple(Json::objectValue); - tuple[it.first->name] = nodeId(*it.second); + tuple[it.first->name] = inlineAssemblyIdentifierToJson(it); externalReferences.append(tuple); } } diff --git a/libsolidity/ast/ASTJsonConverter.h b/libsolidity/ast/ASTJsonConverter.h index 1499c3b8..cf62e5f5 100644 --- a/libsolidity/ast/ASTJsonConverter.h +++ b/libsolidity/ast/ASTJsonConverter.h @@ -128,6 +128,7 @@ private: { return _node ? toJson(*_node) : Json::nullValue; } + Json::Value inlineAssemblyIdentifierToJson(std::pair<assembly::Identifier const* , InlineAssemblyAnnotation::ExternalIdentifierInfo> _info); std::string visibility(Declaration::Visibility const& _visibility); std::string location(VariableDeclaration::Location _location); std::string contractKind(ContractDefinition::ContractKind _kind); |