diff options
author | Christian Parpart <christian@ethereum.org> | 2018-07-05 18:31:46 +0800 |
---|---|---|
committer | chriseth <chris@ethereum.org> | 2018-07-12 19:26:52 +0800 |
commit | cc585138bc08ff421a026d08f07020b284d946ce (patch) | |
tree | 583558a78f984faa124e6afd557ec19e9b775fe7 /libsolidity/analysis/SyntaxChecker.cpp | |
parent | fa8102880f87c5a2806d59f959fd3e8a62dd4dc9 (diff) | |
download | dexon-solidity-cc585138bc08ff421a026d08f07020b284d946ce.tar.gz dexon-solidity-cc585138bc08ff421a026d08f07020b284d946ce.tar.zst dexon-solidity-cc585138bc08ff421a026d08f07020b284d946ce.zip |
Generates a syntax error when declaring a variable declaration's LHS has no named components
Diffstat (limited to 'libsolidity/analysis/SyntaxChecker.cpp')
-rw-r--r-- | libsolidity/analysis/SyntaxChecker.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/libsolidity/analysis/SyntaxChecker.cpp b/libsolidity/analysis/SyntaxChecker.cpp index 4311e77d..e33aafed 100644 --- a/libsolidity/analysis/SyntaxChecker.cpp +++ b/libsolidity/analysis/SyntaxChecker.cpp @@ -22,6 +22,7 @@ #include <libsolidity/analysis/SemVerHandler.h> #include <libsolidity/interface/ErrorReporter.h> #include <libsolidity/interface/Version.h> +#include <boost/algorithm/cxx11/all_of.hpp> using namespace std; using namespace dev; @@ -254,6 +255,18 @@ bool SyntaxChecker::visit(FunctionTypeName const& _node) return true; } +bool SyntaxChecker::visit(VariableDeclarationStatement const& _statement) +{ + // Report if none of the variable components in the tuple have a name (only possible via deprecated "var") + if (boost::algorithm::all_of_equal(_statement.declarations(), nullptr)) + m_errorReporter.syntaxError( + _statement.location(), + "The use of the \"var\" keyword is disallowed. The declaration part of the statement can be removed, since it is empty." + ); + + return true; +} + bool SyntaxChecker::visit(StructDefinition const& _struct) { if (_struct.members().empty()) |