diff options
author | Daniel Kirchner <daniel@ekpyron.org> | 2018-07-05 00:34:24 +0800 |
---|---|---|
committer | Daniel Kirchner <daniel@ekpyron.org> | 2018-07-13 02:33:51 +0800 |
commit | fc370591f02d2bcfe52b62776a871b33e933bd34 (patch) | |
tree | 08101656cd0bef2da7a93fea9e3806e235a2acbd /libsolidity/ast | |
parent | 5d8a8f726555361a78dac05a5413558f3f63f7f1 (diff) | |
download | dexon-solidity-fc370591f02d2bcfe52b62776a871b33e933bd34.tar dexon-solidity-fc370591f02d2bcfe52b62776a871b33e933bd34.tar.gz dexon-solidity-fc370591f02d2bcfe52b62776a871b33e933bd34.tar.bz2 dexon-solidity-fc370591f02d2bcfe52b62776a871b33e933bd34.tar.lz dexon-solidity-fc370591f02d2bcfe52b62776a871b33e933bd34.tar.xz dexon-solidity-fc370591f02d2bcfe52b62776a871b33e933bd34.tar.zst dexon-solidity-fc370591f02d2bcfe52b62776a871b33e933bd34.zip |
Disallow multi variable declarations with mismatching number of values.
Diffstat (limited to 'libsolidity/ast')
-rw-r--r-- | libsolidity/ast/AST.cpp | 7 | ||||
-rw-r--r-- | libsolidity/ast/AST.h | 2 | ||||
-rw-r--r-- | libsolidity/ast/ASTAnnotations.h | 7 | ||||
-rw-r--r-- | libsolidity/ast/ASTJsonConverter.cpp | 4 |
4 files changed, 2 insertions, 18 deletions
diff --git a/libsolidity/ast/AST.cpp b/libsolidity/ast/AST.cpp index 16c9b2d2..7719d080 100644 --- a/libsolidity/ast/AST.cpp +++ b/libsolidity/ast/AST.cpp @@ -535,13 +535,6 @@ ReturnAnnotation& Return::annotation() const return dynamic_cast<ReturnAnnotation&>(*m_annotation); } -VariableDeclarationStatementAnnotation& VariableDeclarationStatement::annotation() const -{ - if (!m_annotation) - m_annotation = new VariableDeclarationStatementAnnotation(); - return dynamic_cast<VariableDeclarationStatementAnnotation&>(*m_annotation); -} - ExpressionAnnotation& Expression::annotation() const { if (!m_annotation) diff --git a/libsolidity/ast/AST.h b/libsolidity/ast/AST.h index e862fd62..acd90ad8 100644 --- a/libsolidity/ast/AST.h +++ b/libsolidity/ast/AST.h @@ -1270,8 +1270,6 @@ public: virtual void accept(ASTVisitor& _visitor) override; virtual void accept(ASTConstVisitor& _visitor) const override; - VariableDeclarationStatementAnnotation& annotation() const override; - std::vector<ASTPointer<VariableDeclaration>> const& declarations() const { return m_variables; } Expression const* initialValue() const { return m_initialValue.get(); } diff --git a/libsolidity/ast/ASTAnnotations.h b/libsolidity/ast/ASTAnnotations.h index 5cbe42bd..e0b3f492 100644 --- a/libsolidity/ast/ASTAnnotations.h +++ b/libsolidity/ast/ASTAnnotations.h @@ -164,13 +164,6 @@ struct UserDefinedTypeNameAnnotation: TypeNameAnnotation ContractDefinition const* contractScope = nullptr; }; -struct VariableDeclarationStatementAnnotation: StatementAnnotation -{ - /// Information about which component of the value is assigned to which variable. - /// The pointer can be null to signify that the component is discarded. - std::vector<VariableDeclaration const*> assignments; -}; - struct ExpressionAnnotation: ASTAnnotation { /// Inferred type of the expression. diff --git a/libsolidity/ast/ASTJsonConverter.cpp b/libsolidity/ast/ASTJsonConverter.cpp index b7855668..a26828a6 100644 --- a/libsolidity/ast/ASTJsonConverter.cpp +++ b/libsolidity/ast/ASTJsonConverter.cpp @@ -555,8 +555,8 @@ bool ASTJsonConverter::visit(EmitStatement const& _node) bool ASTJsonConverter::visit(VariableDeclarationStatement const& _node) { Json::Value varDecs(Json::arrayValue); - for (auto const& v: _node.annotation().assignments) - appendMove(varDecs, idOrNull(v)); + for (auto const& v: _node.declarations()) + appendMove(varDecs, idOrNull(v.get())); setJsonNode(_node, "VariableDeclarationStatement", { make_pair("assignments", std::move(varDecs)), make_pair("declarations", toJson(_node.declarations())), |