aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/analysis/SyntaxChecker.cpp
diff options
context:
space:
mode:
authorRhett Aultman <roadriverrail@gmail.com>2017-04-29 08:43:19 +0800
committerRhett Aultman <roadriverrail@gmail.com>2017-04-29 08:43:19 +0800
commite544698ad3a2101e3d910d0761571d4fa20144e8 (patch)
tree05195e18c017d61f873a74b3fbc28fdea969b30e /libsolidity/analysis/SyntaxChecker.cpp
parentf33614e1f7c85126b8f1a6d007f5824f6dce237d (diff)
downloaddexon-solidity-e544698ad3a2101e3d910d0761571d4fa20144e8.tar
dexon-solidity-e544698ad3a2101e3d910d0761571d4fa20144e8.tar.gz
dexon-solidity-e544698ad3a2101e3d910d0761571d4fa20144e8.tar.bz2
dexon-solidity-e544698ad3a2101e3d910d0761571d4fa20144e8.tar.lz
dexon-solidity-e544698ad3a2101e3d910d0761571d4fa20144e8.tar.xz
dexon-solidity-e544698ad3a2101e3d910d0761571d4fa20144e8.tar.zst
dexon-solidity-e544698ad3a2101e3d910d0761571d4fa20144e8.zip
Deprecate use of unary '+'
The unary '+' serves no meaningful purpose in Solidity and it makes it possible to produce typos with dagerous implications (e.g. 'a =+5 '), so we are deprecating it. The SyntaxChecker currently issues warnings on the unary '+' but will still compile it for now.
Diffstat (limited to 'libsolidity/analysis/SyntaxChecker.cpp')
-rw-r--r--libsolidity/analysis/SyntaxChecker.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/libsolidity/analysis/SyntaxChecker.cpp b/libsolidity/analysis/SyntaxChecker.cpp
index 89014133..308733df 100644
--- a/libsolidity/analysis/SyntaxChecker.cpp
+++ b/libsolidity/analysis/SyntaxChecker.cpp
@@ -32,6 +32,16 @@ bool SyntaxChecker::checkSyntax(ASTNode const& _astRoot)
return Error::containsOnlyWarnings(m_errors);
}
+void SyntaxChecker::warning(SourceLocation const& _location, string const& _description)
+{
+ auto err = make_shared<Error>(Error::Type::Warning);
+ *err <<
+ errinfo_sourceLocation(_location) <<
+ errinfo_comment(_description);
+
+ m_errors.push_back(err);
+}
+
void SyntaxChecker::syntaxError(SourceLocation const& _location, std::string const& _description)
{
auto err = make_shared<Error>(Error::Type::SyntaxError);
@@ -148,6 +158,15 @@ bool SyntaxChecker::visit(Break const& _breakStatement)
return true;
}
+bool SyntaxChecker::visit(UnaryOperation const& _operation)
+{
+ if (_operation.getOperator() == Token::Add)
+ {
+ warning(_operation.location(), "Use of unary + is deprecated");
+ }
+ return true;
+}
+
bool SyntaxChecker::visit(PlaceholderStatement const&)
{
m_placeholderFound = true;