Style fixes and refactoring in ASTJsonConverter

This commit is contained in:
Lefteris Karapetsas 2015-01-16 11:44:55 +01:00
parent 9c8ce49969
commit 839f7778b5
2 changed files with 28 additions and 44 deletions

View File

@ -56,7 +56,7 @@ void ASTJsonConverter::addJsonNode(string const& _nodeName,
node["attributes"] = attrs; node["attributes"] = attrs;
} }
(*m_jsonNodePtrs.top()).append(node); m_jsonNodePtrs.top()->append(node);
if (_hasChildren) if (_hasChildren)
{ {
@ -82,7 +82,6 @@ void ASTJsonConverter::print(ostream& _stream)
_stream << m_astJson; _stream << m_astJson;
} }
bool ASTJsonConverter::visit(ImportDirective const& _node) bool ASTJsonConverter::visit(ImportDirective const& _node)
{ {
addJsonNode("Import", { make_pair("file", _node.getIdentifier())}); addJsonNode("Import", { make_pair("file", _node.getIdentifier())});
@ -217,8 +216,7 @@ bool ASTJsonConverter::visit(ExpressionStatement const&)
bool ASTJsonConverter::visit(Expression const& _node) bool ASTJsonConverter::visit(Expression const& _node)
{ {
addJsonNode("Expression", addJsonNode("Expression",
{ { make_pair("type", getType(_node)),
make_pair("type", getType(_node)),
make_pair("lvalue", boost::lexical_cast<std::string>(_node.isLValue())), make_pair("lvalue", boost::lexical_cast<std::string>(_node.isLValue())),
make_pair("local_lvalue", boost::lexical_cast<std::string>(_node.isLocalLValue())) }, make_pair("local_lvalue", boost::lexical_cast<std::string>(_node.isLocalLValue())) },
true); true);
@ -314,7 +312,6 @@ bool ASTJsonConverter::visit(Literal const& _node)
void ASTJsonConverter::endVisit(ImportDirective const&) void ASTJsonConverter::endVisit(ImportDirective const&)
{ {
} }
void ASTJsonConverter::endVisit(ContractDefinition const&) void ASTJsonConverter::endVisit(ContractDefinition const&)
@ -343,22 +340,18 @@ void ASTJsonConverter::endVisit(VariableDeclaration const&)
void ASTJsonConverter::endVisit(TypeName const&) void ASTJsonConverter::endVisit(TypeName const&)
{ {
} }
void ASTJsonConverter::endVisit(ElementaryTypeName const&) void ASTJsonConverter::endVisit(ElementaryTypeName const&)
{ {
} }
void ASTJsonConverter::endVisit(UserDefinedTypeName const&) void ASTJsonConverter::endVisit(UserDefinedTypeName const&)
{ {
} }
void ASTJsonConverter::endVisit(Mapping const&) void ASTJsonConverter::endVisit(Mapping const&)
{ {
} }
void ASTJsonConverter::endVisit(Statement const&) void ASTJsonConverter::endVisit(Statement const&)
@ -378,7 +371,6 @@ void ASTJsonConverter::endVisit(IfStatement const&)
void ASTJsonConverter::endVisit(BreakableStatement const&) void ASTJsonConverter::endVisit(BreakableStatement const&)
{ {
} }
void ASTJsonConverter::endVisit(WhileStatement const&) void ASTJsonConverter::endVisit(WhileStatement const&)
@ -393,12 +385,10 @@ void ASTJsonConverter::endVisit(ForStatement const&)
void ASTJsonConverter::endVisit(Continue const&) void ASTJsonConverter::endVisit(Continue const&)
{ {
} }
void ASTJsonConverter::endVisit(Break const&) void ASTJsonConverter::endVisit(Break const&)
{ {
} }
void ASTJsonConverter::endVisit(Return const&) void ASTJsonConverter::endVisit(Return const&)
@ -458,29 +448,24 @@ void ASTJsonConverter::endVisit(IndexAccess const&)
void ASTJsonConverter::endVisit(PrimaryExpression const&) void ASTJsonConverter::endVisit(PrimaryExpression const&)
{ {
} }
void ASTJsonConverter::endVisit(Identifier const&) void ASTJsonConverter::endVisit(Identifier const&)
{ {
} }
void ASTJsonConverter::endVisit(ElementaryTypeNameExpression const&) void ASTJsonConverter::endVisit(ElementaryTypeNameExpression const&)
{ {
} }
void ASTJsonConverter::endVisit(Literal const&) void ASTJsonConverter::endVisit(Literal const&)
{ {
} }
string const ASTJsonConverter::getType(Expression const& _expression) string ASTJsonConverter::getType(Expression const& _expression)
{ {
return (_expression.getType()) ? _expression.getType()->toString() : "Unknown"; return (_expression.getType()) ? _expression.getType()->toString() : "Unknown";
} }
} }
} }

View File

@ -26,6 +26,7 @@
#include <stack> #include <stack>
#include <libsolidity/ASTVisitor.h> #include <libsolidity/ASTVisitor.h>
#include <libsolidity/Exceptions.h> #include <libsolidity/Exceptions.h>
#include <libsolidity/Utils.h>
#include <jsoncpp/json/json.h> #include <jsoncpp/json/json.h>
namespace dev namespace dev
@ -39,8 +40,7 @@ namespace solidity
class ASTJsonConverter: public ASTConstVisitor class ASTJsonConverter: public ASTConstVisitor
{ {
public: public:
/// Create a converter for the given abstract syntax tree. If the source is specified, /// Create a converter to JSON for the given abstract syntax tree.
/// the corresponding parts of the source are printed with each node.
ASTJsonConverter(ASTNode const& _ast); ASTJsonConverter(ASTNode const& _ast);
/// Output the json representation of the AST to _stream. /// Output the json representation of the AST to _stream.
void print(std::ostream& _stream); void print(std::ostream& _stream);
@ -118,11 +118,10 @@ private:
void addJsonNode(std::string const& _nodeName, void addJsonNode(std::string const& _nodeName,
std::initializer_list<std::pair<std::string const, std::string const>> _list, std::initializer_list<std::pair<std::string const, std::string const>> _list,
bool _hasChildren); bool _hasChildren);
std::string const getType(Expression const& _expression); std::string getType(Expression const& _expression);
inline void goUp() inline void goUp()
{ {
if (m_jsonNodePtrs.empty()) solAssert(!m_jsonNodePtrs.empty(), "Uneven json nodes stack. Internal error.");
BOOST_THROW_EXCEPTION(InternalCompilerError() << errinfo_comment("Internal error"));
m_jsonNodePtrs.pop(); m_jsonNodePtrs.pop();
}; };