Skip to content

Commit

Permalink
Extract yul syntax tests: if statement
Browse files Browse the repository at this point in the history
  • Loading branch information
christianparpart committed Oct 14, 2020
1 parent bc97c3e commit 2accbbe
Show file tree
Hide file tree
Showing 7 changed files with 41 additions and 14 deletions.
14 changes: 0 additions & 14 deletions test/libyul/Parser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down Expand Up @@ -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.");
Expand Down
6 changes: 6 additions & 0 deletions test/libyul/yulSyntaxTests/if_statement_1.yul
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
if true:bool {}
}
// ====
// dialect: evmTyped
// ----
9 changes: 9 additions & 0 deletions test/libyul/yulSyntaxTests/if_statement_2.yul
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
if false:bool
{
let x:u256 := 3:u256
}
}
// ====
// dialect: evmTyped
// ----
11 changes: 11 additions & 0 deletions test/libyul/yulSyntaxTests/if_statement_3.yul
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
function f() -> x:bool {}

if f()
{
let b:bool := f()
}
}
// ====
// dialect: evmTyped
// ----
5 changes: 5 additions & 0 deletions test/libyul/yulSyntaxTests/if_statement_fail_1.yul
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{ if let x:u256 {} }
// ====
// dialect: evmTyped
// ----
// ParserError 1856: (5-8): Literal or identifier expected.
5 changes: 5 additions & 0 deletions test/libyul/yulSyntaxTests/if_statement_fail_2.yul
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{ if true:bool let x:u256 := 3:u256 }
// ====
// dialect: evmTyped
// ----
// ParserError 2314: (15-18): Expected '{' but got reserved keyword 'let'
5 changes: 5 additions & 0 deletions test/libyul/yulSyntaxTests/if_statement_fail_3.yul
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{ if 42:u256 { } }
// ====
// dialect: evmTyped
// ----
// TypeError 1733: (5-12): Expected a value of boolean type "bool" but got "u256"

0 comments on commit 2accbbe

Please sign in to comment.