aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2018-07-13 01:22:38 +0800
committerGitHub <noreply@github.com>2018-07-13 01:22:38 +0800
commit5d8a8f726555361a78dac05a5413558f3f63f7f1 (patch)
tree6b8087793be20959f8f16f17e5683b90e5841e12 /libsolidity
parent6dcafac44e1dc6b6b75b61c65b3f55c4f2af8575 (diff)
parentcc585138bc08ff421a026d08f07020b284d946ce (diff)
downloaddexon-solidity-5d8a8f726555361a78dac05a5413558f3f63f7f1.tar.gz
dexon-solidity-5d8a8f726555361a78dac05a5413558f3f63f7f1.tar.zst
dexon-solidity-5d8a8f726555361a78dac05a5413558f3f63f7f1.zip
Merge pull request #4437 from ethereum/report-empty-var-decls
[BREAKING] Report empty var tuple decls
Diffstat (limited to 'libsolidity')
-rw-r--r--libsolidity/analysis/SyntaxChecker.cpp13
-rw-r--r--libsolidity/analysis/SyntaxChecker.h2
2 files changed, 15 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())
diff --git a/libsolidity/analysis/SyntaxChecker.h b/libsolidity/analysis/SyntaxChecker.h
index 8ee3df37..5460e3be 100644
--- a/libsolidity/analysis/SyntaxChecker.h
+++ b/libsolidity/analysis/SyntaxChecker.h
@@ -69,6 +69,8 @@ private:
virtual bool visit(FunctionDefinition const& _function) override;
virtual bool visit(FunctionTypeName const& _node) override;
+ virtual bool visit(VariableDeclarationStatement const& _statement) override;
+
virtual bool visit(StructDefinition const& _struct) override;
ErrorReporter& m_errorReporter;