From b1b2d3ef62287e2c8acad41a1bb08cae9d51d9e4 Mon Sep 17 00:00:00 2001 From: Christian Parpart Date: Wed, 14 Oct 2020 11:39:10 +0200 Subject: [PATCH] Extract yul syntax tests: switch statement --- test/libyul/Parser.cpp | 18 ------------------ test/libyul/yulSyntaxTests/switch_case.yul | 8 ++++++++ .../switch_case_different_literal.yul | 8 ++++++++ .../switch_case_string_literal_too_long.yul | 9 +++++++++ .../switch_case_string_literal_very_long.yul | 8 ++++++++ .../yulSyntaxTests/switch_duplicate_case.yul | 9 +++++++++ ...switch_duplicate_case_different_literal.yul | 9 +++++++++ 7 files changed, 51 insertions(+), 18 deletions(-) create mode 100644 test/libyul/yulSyntaxTests/switch_case.yul create mode 100644 test/libyul/yulSyntaxTests/switch_case_different_literal.yul create mode 100644 test/libyul/yulSyntaxTests/switch_case_string_literal_too_long.yul create mode 100644 test/libyul/yulSyntaxTests/switch_case_string_literal_very_long.yul create mode 100644 test/libyul/yulSyntaxTests/switch_duplicate_case.yul create mode 100644 test/libyul/yulSyntaxTests/switch_duplicate_case_different_literal.yul diff --git a/test/libyul/Parser.cpp b/test/libyul/Parser.cpp index 92e9c51a4..9fa33b896 100644 --- a/test/libyul/Parser.cpp +++ b/test/libyul/Parser.cpp @@ -192,24 +192,6 @@ BOOST_AUTO_TEST_CASE(function_defined_in_init_nested) ); } -BOOST_AUTO_TEST_CASE(switch_duplicate_case) -{ - CHECK_ERROR("{ switch 0:u256 case 0:u256 {} case 0x0:u256 {} }", DeclarationError, "Duplicate case defined."); - BOOST_CHECK(successParse("{ switch 0:u256 case 42:u256 {} case 0x42:u256 {} }")); -} - -BOOST_AUTO_TEST_CASE(switch_duplicate_case_different_literal) -{ - CHECK_ERROR("{ switch 0:u256 case 0:u256 {} case \"\":u256 {} }", DeclarationError, "Duplicate case defined."); - BOOST_CHECK(successParse("{ switch 1:u256 case \"1\":u256 {} case \"2\":u256 {} }")); -} - -BOOST_AUTO_TEST_CASE(switch_case_string_literal_too_long) -{ - BOOST_CHECK(successParse("{let x:u256 switch x case \"01234567890123456789012345678901\":u256 {}}")); - CHECK_ERROR("{let x:u256 switch x case \"012345678901234567890123456789012\":u256 {}}", TypeError, "String literal too long (33 > 32)"); -} - BOOST_AUTO_TEST_CASE(function_shadowing_outside_vars) { CHECK_ERROR("{ let x:u256 function f() -> x:u256 {} }", DeclarationError, "already taken in this scope"); diff --git a/test/libyul/yulSyntaxTests/switch_case.yul b/test/libyul/yulSyntaxTests/switch_case.yul new file mode 100644 index 000000000..88bda9929 --- /dev/null +++ b/test/libyul/yulSyntaxTests/switch_case.yul @@ -0,0 +1,8 @@ +{ + switch 0:u256 + case 42:u256 {} + case 0x42:u256 {} +} +// ==== +// dialect: evmTyped +// ---- diff --git a/test/libyul/yulSyntaxTests/switch_case_different_literal.yul b/test/libyul/yulSyntaxTests/switch_case_different_literal.yul new file mode 100644 index 000000000..8514b835d --- /dev/null +++ b/test/libyul/yulSyntaxTests/switch_case_different_literal.yul @@ -0,0 +1,8 @@ +{ + switch 1:u256 + case "1":u256 {} + case "2":u256 {} +} +// ==== +// dialect: evmTyped +// ---- diff --git a/test/libyul/yulSyntaxTests/switch_case_string_literal_too_long.yul b/test/libyul/yulSyntaxTests/switch_case_string_literal_too_long.yul new file mode 100644 index 000000000..dceb9db16 --- /dev/null +++ b/test/libyul/yulSyntaxTests/switch_case_string_literal_too_long.yul @@ -0,0 +1,9 @@ +{ + let x:u256 + switch x + case "012345678901234567890123456789012":u256 {} +} +// ==== +// dialect: evmTyped +// ---- +// TypeError 3069: (30-70): String literal too long (33 > 32) diff --git a/test/libyul/yulSyntaxTests/switch_case_string_literal_very_long.yul b/test/libyul/yulSyntaxTests/switch_case_string_literal_very_long.yul new file mode 100644 index 000000000..55f25124b --- /dev/null +++ b/test/libyul/yulSyntaxTests/switch_case_string_literal_very_long.yul @@ -0,0 +1,8 @@ +{ + let x:u256 + switch x + case "01234567890123456789012345678901":u256 {} +} +// ==== +// dialect: evmTyped +// ---- diff --git a/test/libyul/yulSyntaxTests/switch_duplicate_case.yul b/test/libyul/yulSyntaxTests/switch_duplicate_case.yul new file mode 100644 index 000000000..47fb88701 --- /dev/null +++ b/test/libyul/yulSyntaxTests/switch_duplicate_case.yul @@ -0,0 +1,9 @@ +{ + switch 0:u256 + case 0:u256 {} + case 0x0:u256 {} +} +// ==== +// dialect: evmTyped +// ---- +// DeclarationError 6792: (34-50): Duplicate case defined. diff --git a/test/libyul/yulSyntaxTests/switch_duplicate_case_different_literal.yul b/test/libyul/yulSyntaxTests/switch_duplicate_case_different_literal.yul new file mode 100644 index 000000000..b190124bc --- /dev/null +++ b/test/libyul/yulSyntaxTests/switch_duplicate_case_different_literal.yul @@ -0,0 +1,9 @@ +{ + switch 0:u256 + case 0:u256 {} + case "":u256 {} +} +// ==== +// dialect: evmTyped +// ---- +// DeclarationError 6792: (34-49): Duplicate case defined.