diff --git a/test/libyul/Parser.cpp b/test/libyul/Parser.cpp index d232d5705..a9ab468aa 100644 --- a/test/libyul/Parser.cpp +++ b/test/libyul/Parser.cpp @@ -158,13 +158,6 @@ BOOST_AUTO_TEST_CASE(multiple_assignment) BOOST_CHECK(successParse(text)); } -BOOST_AUTO_TEST_CASE(if_statement) -{ - BOOST_CHECK(successParse("{ if true:bool {} }")); - BOOST_CHECK(successParse("{ if false:bool { let x:u256 := 3:u256 } }")); - BOOST_CHECK(successParse("{ function f() -> x:bool {} if f() { let b:bool := f() } }")); -} - BOOST_AUTO_TEST_CASE(break_outside_of_for_loop) { CHECK_ERROR_DIALECT( @@ -338,13 +331,6 @@ BOOST_AUTO_TEST_CASE(function_defined_in_init_nested) ); } -BOOST_AUTO_TEST_CASE(if_statement_invalid) -{ - CHECK_ERROR("{ if let x:u256 {} }", ParserError, "Literal or identifier expected."); - CHECK_ERROR("{ if true:bool let x:u256 := 3:u256 }", ParserError, "Expected '{' but got reserved keyword 'let'"); - CHECK_ERROR("{ if 42:u256 { } }", TypeError, "Expected a value of boolean type"); -} - BOOST_AUTO_TEST_CASE(switch_duplicate_case) { CHECK_ERROR("{ switch 0:u256 case 0:u256 {} case 0x0:u256 {} }", DeclarationError, "Duplicate case defined."); diff --git a/test/libyul/yulSyntaxTests/if_statement_1.yul b/test/libyul/yulSyntaxTests/if_statement_1.yul new file mode 100644 index 000000000..b631f8a95 --- /dev/null +++ b/test/libyul/yulSyntaxTests/if_statement_1.yul @@ -0,0 +1,6 @@ +{ + if true:bool {} +} +// ==== +// dialect: evmTyped +// ---- diff --git a/test/libyul/yulSyntaxTests/if_statement_2.yul b/test/libyul/yulSyntaxTests/if_statement_2.yul new file mode 100644 index 000000000..20be9b525 --- /dev/null +++ b/test/libyul/yulSyntaxTests/if_statement_2.yul @@ -0,0 +1,9 @@ +{ + if false:bool + { + let x:u256 := 3:u256 + } +} +// ==== +// dialect: evmTyped +// ---- diff --git a/test/libyul/yulSyntaxTests/if_statement_3.yul b/test/libyul/yulSyntaxTests/if_statement_3.yul new file mode 100644 index 000000000..2ba20d39b --- /dev/null +++ b/test/libyul/yulSyntaxTests/if_statement_3.yul @@ -0,0 +1,11 @@ +{ + function f() -> x:bool {} + + if f() + { + let b:bool := f() + } +} +// ==== +// dialect: evmTyped +// ---- diff --git a/test/libyul/yulSyntaxTests/if_statement_fail_1.yul b/test/libyul/yulSyntaxTests/if_statement_fail_1.yul new file mode 100644 index 000000000..6fc409ce3 --- /dev/null +++ b/test/libyul/yulSyntaxTests/if_statement_fail_1.yul @@ -0,0 +1,5 @@ +{ if let x:u256 {} } +// ==== +// dialect: evmTyped +// ---- +// ParserError 1856: (5-8): Literal or identifier expected. diff --git a/test/libyul/yulSyntaxTests/if_statement_fail_2.yul b/test/libyul/yulSyntaxTests/if_statement_fail_2.yul new file mode 100644 index 000000000..97ce0e9f9 --- /dev/null +++ b/test/libyul/yulSyntaxTests/if_statement_fail_2.yul @@ -0,0 +1,5 @@ +{ if true:bool let x:u256 := 3:u256 } +// ==== +// dialect: evmTyped +// ---- +// ParserError 2314: (15-18): Expected '{' but got reserved keyword 'let' diff --git a/test/libyul/yulSyntaxTests/if_statement_fail_3.yul b/test/libyul/yulSyntaxTests/if_statement_fail_3.yul new file mode 100644 index 000000000..51e36790b --- /dev/null +++ b/test/libyul/yulSyntaxTests/if_statement_fail_3.yul @@ -0,0 +1,5 @@ +{ if 42:u256 { } } +// ==== +// dialect: evmTyped +// ---- +// TypeError 1733: (5-12): Expected a value of boolean type "bool" but got "u256"