mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Review suggestions
This commit is contained in:
parent
17176871ab
commit
ac8892e0e3
@ -68,7 +68,7 @@ Breaking Changes:
|
|||||||
* Syntax Checker: Named return values in function types are an error.
|
* Syntax Checker: Named return values in function types are an error.
|
||||||
* Syntax Checker: Strictly require visibility specifier for functions. This was already the case in the experimental 0.5.0 mode.
|
* Syntax Checker: Strictly require visibility specifier for functions. This was already the case in the experimental 0.5.0 mode.
|
||||||
* Syntax Checker: Disallow unary ``+``. This was already the case in the experimental 0.5.0 mode.
|
* Syntax Checker: Disallow unary ``+``. This was already the case in the experimental 0.5.0 mode.
|
||||||
* Syntax Checker: Disallow single statement variable declaration inside if/while/for without a block.
|
* Syntax Checker: Disallow single statement variable declaration inside if/while/for bodies that are not blocks.
|
||||||
* View Pure Checker: Strictly enfore state mutability. This was already the case in the experimental 0.5.0 mode.
|
* View Pure Checker: Strictly enfore state mutability. This was already the case in the experimental 0.5.0 mode.
|
||||||
|
|
||||||
Language Features:
|
Language Features:
|
||||||
|
@ -138,25 +138,25 @@ void SyntaxChecker::endVisit(ModifierDefinition const& _modifier)
|
|||||||
m_placeholderFound = false;
|
m_placeholderFound = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SyntaxChecker::checkSingleStatementVariableDeclaration(ASTNode const* _statement)
|
void SyntaxChecker::checkSingleStatementVariableDeclaration(ASTNode const& _statement)
|
||||||
{
|
{
|
||||||
auto varDecl = dynamic_cast<VariableDeclarationStatement const*>(_statement);
|
auto varDecl = dynamic_cast<VariableDeclarationStatement const*>(&_statement);
|
||||||
if (varDecl)
|
if (varDecl)
|
||||||
m_errorReporter.syntaxError(_statement->location(), "Variable declarations can only be used inside blocks.");
|
m_errorReporter.syntaxError(_statement.location(), "Variable declarations can only be used inside blocks.");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SyntaxChecker::visit(IfStatement const& _ifStatement)
|
bool SyntaxChecker::visit(IfStatement const& _ifStatement)
|
||||||
{
|
{
|
||||||
checkSingleStatementVariableDeclaration(&_ifStatement.trueStatement());
|
checkSingleStatementVariableDeclaration(_ifStatement.trueStatement());
|
||||||
if (Statement const* _statement = _ifStatement.falseStatement())
|
if (Statement const* _statement = _ifStatement.falseStatement())
|
||||||
checkSingleStatementVariableDeclaration(_statement);
|
checkSingleStatementVariableDeclaration(*_statement);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SyntaxChecker::visit(WhileStatement const& _whileStatement)
|
bool SyntaxChecker::visit(WhileStatement const& _whileStatement)
|
||||||
{
|
{
|
||||||
m_inLoopDepth++;
|
m_inLoopDepth++;
|
||||||
checkSingleStatementVariableDeclaration(&_whileStatement.body());
|
checkSingleStatementVariableDeclaration(_whileStatement.body());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -168,7 +168,7 @@ void SyntaxChecker::endVisit(WhileStatement const&)
|
|||||||
bool SyntaxChecker::visit(ForStatement const& _forStatement)
|
bool SyntaxChecker::visit(ForStatement const& _forStatement)
|
||||||
{
|
{
|
||||||
m_inLoopDepth++;
|
m_inLoopDepth++;
|
||||||
checkSingleStatementVariableDeclaration(&_forStatement.body());
|
checkSingleStatementVariableDeclaration(_forStatement.body());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,10 +52,10 @@ private:
|
|||||||
virtual bool visit(ModifierDefinition const& _modifier) override;
|
virtual bool visit(ModifierDefinition const& _modifier) override;
|
||||||
virtual void endVisit(ModifierDefinition const& _modifier) override;
|
virtual void endVisit(ModifierDefinition const& _modifier) override;
|
||||||
|
|
||||||
// Reports an error if _statement is a VariableDeclarationStatement.
|
/// Reports an error if _statement is a VariableDeclarationStatement.
|
||||||
// Used by if/while/for to check for single statement variable declarations
|
/// Used by if/while/for to check for single statement variable declarations
|
||||||
// without a block.
|
/// without a block.
|
||||||
void checkSingleStatementVariableDeclaration(ASTNode const* _statement);
|
void checkSingleStatementVariableDeclaration(ASTNode const& _statement);
|
||||||
|
|
||||||
virtual bool visit(IfStatement const& _ifStatement) override;
|
virtual bool visit(IfStatement const& _ifStatement) override;
|
||||||
virtual bool visit(WhileStatement const& _whileStatement) override;
|
virtual bool visit(WhileStatement const& _whileStatement) override;
|
||||||
|
Loading…
Reference in New Issue
Block a user