mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Changed error message and added tests
This commit is contained in:
parent
4522c804f3
commit
17176871ab
@ -142,7 +142,7 @@ void SyntaxChecker::checkSingleStatementVariableDeclaration(ASTNode const* _stat
|
|||||||
{
|
{
|
||||||
auto varDecl = dynamic_cast<VariableDeclarationStatement const*>(_statement);
|
auto varDecl = dynamic_cast<VariableDeclarationStatement const*>(_statement);
|
||||||
if (varDecl)
|
if (varDecl)
|
||||||
m_errorReporter.syntaxError(_statement->location(), "Invalid variable declaration. Please declare it inside a block.");
|
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)
|
||||||
|
@ -0,0 +1,12 @@
|
|||||||
|
pragma solidity >0.4.24;
|
||||||
|
|
||||||
|
contract C
|
||||||
|
{
|
||||||
|
function f(uint x) public pure {
|
||||||
|
do
|
||||||
|
uint y;
|
||||||
|
while (x > 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ----
|
||||||
|
// SyntaxError: (81-87): Variable declarations can only be used inside blocks.
|
13
test/libsolidity/syntaxTests/variableDeclaration/else.sol
Normal file
13
test/libsolidity/syntaxTests/variableDeclaration/else.sol
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
pragma solidity >0.4.24;
|
||||||
|
|
||||||
|
contract C
|
||||||
|
{
|
||||||
|
function f(uint x) public pure {
|
||||||
|
if (x > 0)
|
||||||
|
{uint y;}
|
||||||
|
else
|
||||||
|
uint z;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ----
|
||||||
|
// SyntaxError: (109-115): Variable declarations can only be used inside blocks.
|
11
test/libsolidity/syntaxTests/variableDeclaration/for.sol
Normal file
11
test/libsolidity/syntaxTests/variableDeclaration/for.sol
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
pragma solidity >0.4.24;
|
||||||
|
|
||||||
|
contract C
|
||||||
|
{
|
||||||
|
function f(uint x) public pure {
|
||||||
|
for (uint i = 0; i < x; ++i)
|
||||||
|
uint y;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ----
|
||||||
|
// SyntaxError: (107-113): Variable declarations can only be used inside blocks.
|
11
test/libsolidity/syntaxTests/variableDeclaration/if.sol
Normal file
11
test/libsolidity/syntaxTests/variableDeclaration/if.sol
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
pragma solidity >0.4.24;
|
||||||
|
|
||||||
|
contract C
|
||||||
|
{
|
||||||
|
function f(uint x) public pure {
|
||||||
|
if (x > 0)
|
||||||
|
uint y;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ----
|
||||||
|
// SyntaxError: (89-95): Variable declarations can only be used inside blocks.
|
11
test/libsolidity/syntaxTests/variableDeclaration/while.sol
Normal file
11
test/libsolidity/syntaxTests/variableDeclaration/while.sol
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
pragma solidity >0.4.24;
|
||||||
|
|
||||||
|
contract C
|
||||||
|
{
|
||||||
|
function f(uint x) public pure {
|
||||||
|
while (x > 0)
|
||||||
|
uint y;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ----
|
||||||
|
// SyntaxError: (92-98): Variable declarations can only be used inside blocks.
|
Loading…
Reference in New Issue
Block a user