mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Extract yul syntax tests: function
This commit is contained in:
parent
5b799b01ab
commit
5d40494ed2
@ -126,46 +126,6 @@ do \
|
||||
|
||||
BOOST_AUTO_TEST_SUITE(YulParser)
|
||||
|
||||
BOOST_AUTO_TEST_CASE(function_defined_in_init_block)
|
||||
{
|
||||
auto const& dialect = EVMDialect::strictAssemblyForEVMObjects(EVMVersion{});
|
||||
BOOST_CHECK(successParse("{ for { } 1 { function f() {} } {} }", dialect));
|
||||
BOOST_CHECK(successParse("{ for { } 1 {} { function f() {} } }", dialect));
|
||||
CHECK_ERROR_DIALECT(
|
||||
"{ for { function f() {} } 1 {} {} }",
|
||||
SyntaxError,
|
||||
"Functions cannot be defined inside a for-loop init block.",
|
||||
dialect
|
||||
);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(function_defined_in_init_nested)
|
||||
{
|
||||
auto const& dialect = EVMDialect::strictAssemblyForEVMObjects(EVMVersion{});
|
||||
BOOST_CHECK(successParse(
|
||||
"{ for {"
|
||||
"for { } 1 { function f() {} } {}"
|
||||
"} 1 {} {} }", dialect));
|
||||
CHECK_ERROR_DIALECT(
|
||||
"{ for { for {function foo() {}} 1 {} {} } 1 {} {} }",
|
||||
SyntaxError,
|
||||
"Functions cannot be defined inside a for-loop init block.",
|
||||
dialect
|
||||
);
|
||||
CHECK_ERROR_DIALECT(
|
||||
"{ for {} 1 {for {function foo() {}} 1 {} {} } {} }",
|
||||
SyntaxError,
|
||||
"Functions cannot be defined inside a for-loop init block.",
|
||||
dialect
|
||||
);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(function_shadowing_outside_vars)
|
||||
{
|
||||
CHECK_ERROR("{ let x:u256 function f() -> x:u256 {} }", DeclarationError, "already taken in this scope");
|
||||
BOOST_CHECK(successParse("{ { let x:u256 } function f() -> x:u256 {} }"));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(builtins_parser)
|
||||
{
|
||||
struct SimpleDialect: public Dialect
|
||||
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
for { } 1:bool { function f() {} } {}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
for { } 1:bool {} { function f() {} }
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
{
|
||||
for { function f() {} } 1:bool {} {}
|
||||
}
|
||||
// ----
|
||||
// SyntaxError 3441: (9-17): Functions cannot be defined inside a for-loop init block.
|
@ -0,0 +1,7 @@
|
||||
{
|
||||
for {
|
||||
for {} 1:bool { function f() {} }
|
||||
{}
|
||||
} 1:bool {}
|
||||
{}
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
{
|
||||
for { for {function foo() {}} 1:bool {} {} } 1:bool {} {}
|
||||
}
|
||||
// ----
|
||||
// SyntaxError 3441: (14-22): Functions cannot be defined inside a for-loop init block.
|
@ -0,0 +1,8 @@
|
||||
{
|
||||
for {}
|
||||
1:bool
|
||||
{for {function foo() {}} 1:bool {} {} }
|
||||
{}
|
||||
}
|
||||
// ----
|
||||
// SyntaxError 3441: (27-35): Functions cannot be defined inside a for-loop init block.
|
@ -0,0 +1,4 @@
|
||||
{
|
||||
{ let x:u256 }
|
||||
function f() -> x:u256 {}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
let x:u256
|
||||
function f() -> x:u256 {}
|
||||
}
|
||||
// ----
|
||||
// DeclarationError 1395: (15-40): Variable name x already taken in this scope.
|
Loading…
Reference in New Issue
Block a user