diff options
author | chriseth <chris@ethereum.org> | 2018-05-03 14:35:00 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-03 14:35:00 +0800 |
commit | 650244f61986ea889dbe0a82a5c9d6ab91ffab5b (patch) | |
tree | 2010208e15fee4c34fac10fc1ee4eba2cd4a4108 /test/libsolidity | |
parent | 72c3b3a2422b5f1b1ca80736a84fd88d44da4c47 (diff) | |
parent | 07e765a2f1105343ef495fafeb6faa6cf0fefd18 (diff) | |
download | dexon-solidity-650244f61986ea889dbe0a82a5c9d6ab91ffab5b.tar.gz dexon-solidity-650244f61986ea889dbe0a82a5c9d6ab91ffab5b.tar.zst dexon-solidity-650244f61986ea889dbe0a82a5c9d6ab91ffab5b.zip |
Merge pull request #4053 from ethereum/parser-syntax-tests
Move some parser tests to syntax tests
Diffstat (limited to 'test/libsolidity')
30 files changed, 183 insertions, 319 deletions
diff --git a/test/libsolidity/SolidityParser.cpp b/test/libsolidity/SolidityParser.cpp index 100b3662..1ebf8010 100644 --- a/test/libsolidity/SolidityParser.cpp +++ b/test/libsolidity/SolidityParser.cpp @@ -112,61 +112,6 @@ while(0) BOOST_AUTO_TEST_SUITE(SolidityParser) -BOOST_AUTO_TEST_CASE(empty_function) -{ - char const* text = R"( - contract test { - uint256 stateVar; - function functionName(bytes20 arg1, address addr) constant - returns (int id) - { } - } - )"; - BOOST_CHECK(successParse(text)); -} - -BOOST_AUTO_TEST_CASE(no_function_params) -{ - char const* text = R"( - contract test { - uint256 stateVar; - function functionName() {} - } - )"; - BOOST_CHECK(successParse(text)); -} - -BOOST_AUTO_TEST_CASE(single_function_param) -{ - char const* text = R"( - contract test { - uint256 stateVar; - function functionName(bytes32 input) returns (bytes32 out) {} - } - )"; - BOOST_CHECK(successParse(text)); -} - -BOOST_AUTO_TEST_CASE(single_function_param_trailing_comma) -{ - char const* text = R"( - contract test { - function(uint a,) {} - } - )"; - CHECK_PARSE_ERROR(text, "Unexpected trailing comma in parameter list."); -} - -BOOST_AUTO_TEST_CASE(single_return_param_trailing_comma) -{ - char const* text = R"( - contract test { - function() returns (uint a,) {} - } - )"; - CHECK_PARSE_ERROR(text, "Unexpected trailing comma in parameter list."); -} - BOOST_AUTO_TEST_CASE(single_modifier_arg_trailing_comma) { char const* text = R"( @@ -241,39 +186,6 @@ BOOST_AUTO_TEST_CASE(function_no_body) BOOST_CHECK(successParse(text)); } -BOOST_AUTO_TEST_CASE(missing_parameter_name_in_named_args) -{ - char const* text = R"( - contract test { - function a(uint a, uint b, uint c) returns (uint r) { r = a * 100 + b * 10 + c * 1; } - function b() returns (uint r) { r = a({: 1, : 2, : 3}); } - } - )"; - CHECK_PARSE_ERROR(text, "Expected identifier"); -} - -BOOST_AUTO_TEST_CASE(missing_argument_in_named_args) -{ - char const* text = R"( - contract test { - function a(uint a, uint b, uint c) returns (uint r) { r = a * 100 + b * 10 + c * 1; } - function b() returns (uint r) { r = a({a: , b: , c: }); } - } - )"; - CHECK_PARSE_ERROR(text, "Expected primary expression"); -} - -BOOST_AUTO_TEST_CASE(trailing_comma_in_named_args) -{ - char const* text = R"( - contract test { - function a(uint a, uint b, uint c) returns (uint r) { r = a * 100 + b * 10 + c * 1; } - function b() returns (uint r) { r = a({a: 1, b: 2, c: 3, }); } - } - )"; - CHECK_PARSE_ERROR(text, "Unexpected trailing comma"); -} - BOOST_AUTO_TEST_CASE(two_exact_functions) { char const* text = R"( @@ -557,18 +469,6 @@ BOOST_AUTO_TEST_CASE(variable_definition_with_initialization) BOOST_CHECK(successParse(text)); } -BOOST_AUTO_TEST_CASE(variable_definition_in_mapping) -{ - char const* text = R"( - contract test { - function fun() { - mapping(var=>bytes32) d; - } - } - )"; - CHECK_PARSE_ERROR(text, "Expected elementary type name for mapping key type"); -} - BOOST_AUTO_TEST_CASE(operator_expression) { char const* text = R"( @@ -849,16 +749,6 @@ BOOST_AUTO_TEST_CASE(modifier) BOOST_CHECK(successParse(text)); } -BOOST_AUTO_TEST_CASE(modifier_without_semicolon) -{ - char const* text = R"( - contract c { - modifier mod { if (msg.sender == 0) _ } - } - )"; - CHECK_PARSE_ERROR(text, "Expected token Semicolon got"); -} - BOOST_AUTO_TEST_CASE(modifier_arguments) { char const* text = R"( @@ -918,16 +808,6 @@ BOOST_AUTO_TEST_CASE(event_arguments_indexed) BOOST_CHECK(successParse(text)); } -BOOST_AUTO_TEST_CASE(event_with_no_argument_list_fails) -{ - char const* text = R"( - contract c { - event e; - } - )"; - CHECK_PARSE_ERROR(text, "Expected token LParen got 'Semicolon'"); -} - BOOST_AUTO_TEST_CASE(visibility_specifiers) { char const* text = R"( @@ -1038,24 +918,6 @@ BOOST_AUTO_TEST_CASE(enum_valid_declaration) BOOST_CHECK(successParse(text)); } -BOOST_AUTO_TEST_CASE(empty_enum_declaration) -{ - char const* text = R"( - contract c { - enum foo { } - })"; - CHECK_PARSE_ERROR(text, "enum with no members is not allowed"); -} - -BOOST_AUTO_TEST_CASE(malformed_enum_declaration) -{ - char const* text = R"( - contract c { - enum foo { WARNING,} - })"; - CHECK_PARSE_ERROR(text, "Expected Identifier after"); -} - BOOST_AUTO_TEST_CASE(external_function) { char const* text = R"( @@ -1065,15 +927,6 @@ BOOST_AUTO_TEST_CASE(external_function) BOOST_CHECK(successParse(text)); } -BOOST_AUTO_TEST_CASE(external_variable) -{ - char const* text = R"( - contract c { - uint external x; - })"; - CHECK_PARSE_ERROR(text, "Expected identifier"); -} - BOOST_AUTO_TEST_CASE(arrays_in_storage) { char const* text = R"( @@ -1113,15 +966,6 @@ BOOST_AUTO_TEST_CASE(multi_arrays) BOOST_CHECK(successParse(text)); } -BOOST_AUTO_TEST_CASE(constant_is_keyword) -{ - char const* text = R"( - contract Foo { - uint constant = 4; - })"; - CHECK_PARSE_ERROR(text, "Expected identifier"); -} - BOOST_AUTO_TEST_CASE(keyword_is_reserved) { auto keywords = { @@ -1152,15 +996,6 @@ BOOST_AUTO_TEST_CASE(keyword_is_reserved) } } -BOOST_AUTO_TEST_CASE(var_array) -{ - char const* text = R"( - contract Foo { - function f() { var[] a; } - })"; - CHECK_PARSE_ERROR(text, "Expected identifier"); -} - BOOST_AUTO_TEST_CASE(location_specifiers_for_params) { char const* text = R"( @@ -1184,24 +1019,6 @@ BOOST_AUTO_TEST_CASE(location_specifiers_for_locals) BOOST_CHECK(successParse(text)); } -BOOST_AUTO_TEST_CASE(location_specifiers_for_state) -{ - char const* text = R"( - contract Foo { - uint[] memory x; - })"; - CHECK_PARSE_ERROR(text, "Expected identifier"); -} - -BOOST_AUTO_TEST_CASE(location_specifiers_with_var) -{ - char const* text = R"( - contract Foo { - function f() { var memory x; } - })"; - CHECK_PARSE_ERROR(text, "Location specifier needs explicit type name"); -} - BOOST_AUTO_TEST_CASE(empty_comment) { char const* text = R"( @@ -1224,7 +1041,6 @@ BOOST_AUTO_TEST_CASE(comment_end_with_double_star) BOOST_CHECK(successParse(text)); } - BOOST_AUTO_TEST_CASE(library_simple) { char const* text = R"( @@ -1235,20 +1051,6 @@ BOOST_AUTO_TEST_CASE(library_simple) BOOST_CHECK(successParse(text)); } - -BOOST_AUTO_TEST_CASE(local_const_variable) -{ - char const* text = R"( - contract Foo { - function localConst() returns (uint ret) - { - uint constant local = 4; - return local; - } - })"; - CHECK_PARSE_ERROR(text, "Expected token Semicolon"); -} - BOOST_AUTO_TEST_CASE(multi_variable_declaration) { char const* text = R"( @@ -1285,18 +1087,6 @@ BOOST_AUTO_TEST_CASE(tuples) BOOST_CHECK(successParse(text)); } -BOOST_AUTO_TEST_CASE(tuples_without_commas) -{ - char const* text = R"( - contract C { - function f() { - var a = (2 2); - } - } - )"; - CHECK_PARSE_ERROR(text, "Expected token Comma"); -} - BOOST_AUTO_TEST_CASE(member_access_parser_ambiguity) { char const* text = R"( @@ -1365,34 +1155,6 @@ BOOST_AUTO_TEST_CASE(inline_array_declaration) BOOST_CHECK(successParse(text)); } - -BOOST_AUTO_TEST_CASE(inline_array_empty_cells_check_lvalue) -{ - char const* text = R"( - contract c { - uint[] a; - function f() returns (uint) { - a = [,2,3]; - return (a[0]); - } - } - )"; - CHECK_PARSE_ERROR(text, "Expected expression"); -} - -BOOST_AUTO_TEST_CASE(inline_array_empty_cells_check_without_lvalue) -{ - char const* text = R"( - contract c { - uint[] a; - function f() returns (uint, uint) { - return ([3, ,4][0]); - } - } - )"; - CHECK_PARSE_ERROR(text, "Expected expression"); -} - BOOST_AUTO_TEST_CASE(conditional_true_false_literal) { char const* text = R"( @@ -1520,38 +1282,6 @@ BOOST_AUTO_TEST_CASE(declaring_fixed_literal_variables) BOOST_CHECK(successParse(text)); } -BOOST_AUTO_TEST_CASE(no_double_radix_in_fixed_literal) -{ - char const* text = R"( - contract A { - fixed40x40 pi = 3.14.15; - } - )"; - CHECK_PARSE_ERROR(text, "Expected token Semicolon"); -} - -BOOST_AUTO_TEST_CASE(invalid_fixed_conversion_leading_zeroes_check) -{ - char const* text = R"( - contract test { - function f() { - fixed a = 1.0x2; - } - } - )"; - CHECK_PARSE_ERROR(text, "Expected primary expression"); -} - -BOOST_AUTO_TEST_CASE(payable_accessor) -{ - char const* text = R"( - contract test { - uint payable x; - } - )"; - CHECK_PARSE_ERROR(text, "Expected identifier"); -} - BOOST_AUTO_TEST_CASE(function_type_in_expression) { char const* text = R"( @@ -1575,16 +1305,6 @@ BOOST_AUTO_TEST_CASE(function_type_as_storage_variable) BOOST_CHECK(successParse(text)); } -BOOST_AUTO_TEST_CASE(function_type_as_storage_variable_with_modifiers) -{ - char const* text = R"( - contract test { - function (uint, uint) modifier1() returns (uint) f1; - } - )"; - CHECK_PARSE_ERROR(text, "Expected token LBrace"); -} - BOOST_AUTO_TEST_CASE(function_type_as_storage_variable_with_assignment) { char const* text = R"( @@ -1660,20 +1380,6 @@ BOOST_AUTO_TEST_CASE(function_type_state_variable) BOOST_CHECK(successParse(text)); } -BOOST_AUTO_TEST_CASE(scientific_notation) -{ - char const* text = R"( - contract test { - uint256 a = 2e10; - uint256 b = 2E10; - uint256 c = 200e-2; - uint256 d = 2E10 wei; - uint256 e = 2.5e10; - } - )"; - BOOST_CHECK(successParse(text)); -} - BOOST_AUTO_TEST_CASE(interface) { char const* text = R"( @@ -1684,31 +1390,6 @@ BOOST_AUTO_TEST_CASE(interface) BOOST_CHECK(successParse(text)); } -BOOST_AUTO_TEST_CASE(newInvalidTypeName) -{ - char const* text = R"( - contract C { - function f() { - new var; - } - } - )"; - CHECK_PARSE_ERROR(text, "Expected explicit type name"); -} - -BOOST_AUTO_TEST_CASE(emitWithoutEvent) -{ - char const* text = R"( - contract C { - event A(); - function f() { - emit A; - } - } - )"; - CHECK_PARSE_ERROR(text, "Expected token LParen got 'Semicolon'"); -} - BOOST_AUTO_TEST_SUITE_END() } diff --git a/test/libsolidity/syntaxTests/parsing/constant_is_keyword.sol b/test/libsolidity/syntaxTests/parsing/constant_is_keyword.sol new file mode 100644 index 00000000..40e237d2 --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/constant_is_keyword.sol @@ -0,0 +1,5 @@ +contract Foo { + uint constant = 4; +} +// ---- +// ParserError: (30-30): Expected identifier, got 'Assign' diff --git a/test/libsolidity/syntaxTests/parsing/emit_without_event.sol b/test/libsolidity/syntaxTests/parsing/emit_without_event.sol new file mode 100644 index 00000000..5916fc2b --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/emit_without_event.sol @@ -0,0 +1,8 @@ +contract C { + event A(); + function f() { + emit A; + } +} +// ---- +// ParserError: (49-49): Expected token LParen got 'Semicolon' diff --git a/test/libsolidity/syntaxTests/parsing/empty_enum.sol b/test/libsolidity/syntaxTests/parsing/empty_enum.sol new file mode 100644 index 00000000..dd786cdc --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/empty_enum.sol @@ -0,0 +1,5 @@ +contract c { + enum foo { } +} +// ---- +// ParserError: (25-25): enum with no members is not allowed. diff --git a/test/libsolidity/syntaxTests/parsing/empty_function.sol b/test/libsolidity/syntaxTests/parsing/empty_function.sol new file mode 100644 index 00000000..4f845189 --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/empty_function.sol @@ -0,0 +1,10 @@ +contract test { + uint256 stateVar; + function functionName(bytes20 arg1, address addr) constant returns (int id) { } +} +// ---- +// Warning: (36-115): No visibility specified. Defaulting to "public". +// Warning: (58-70): Unused function parameter. Remove or comment out the variable name to silence this warning. +// Warning: (72-84): Unused function parameter. Remove or comment out the variable name to silence this warning. +// Warning: (104-110): Unused function parameter. Remove or comment out the variable name to silence this warning. +// Warning: (36-115): Function state mutability can be restricted to pure diff --git a/test/libsolidity/syntaxTests/parsing/event_with_no_argument_list.sol b/test/libsolidity/syntaxTests/parsing/event_with_no_argument_list.sol new file mode 100644 index 00000000..ae2591db --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/event_with_no_argument_list.sol @@ -0,0 +1,5 @@ +contract c { + event e; +} +// ---- +// ParserError: (21-21): Expected token LParen got 'Semicolon' diff --git a/test/libsolidity/syntaxTests/parsing/external_variable.sol b/test/libsolidity/syntaxTests/parsing/external_variable.sol new file mode 100644 index 00000000..5188875f --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/external_variable.sol @@ -0,0 +1,5 @@ +contract c { + uint external x; +} +// ---- +// ParserError: (19-19): Expected identifier, got 'External' diff --git a/test/libsolidity/syntaxTests/parsing/fixed_literal_with_double_radix.sol b/test/libsolidity/syntaxTests/parsing/fixed_literal_with_double_radix.sol new file mode 100644 index 00000000..43bb61fa --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/fixed_literal_with_double_radix.sol @@ -0,0 +1,5 @@ +contract A { + fixed40x40 pi = 3.14.15; +} +// ---- +// ParserError: (34-34): Expected token Semicolon got 'Number' diff --git a/test/libsolidity/syntaxTests/parsing/function_type_as_storage_variable_with_modifiers.sol b/test/libsolidity/syntaxTests/parsing/function_type_as_storage_variable_with_modifiers.sol new file mode 100644 index 00000000..12480459 --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/function_type_as_storage_variable_with_modifiers.sol @@ -0,0 +1,5 @@ +contract test { + function (uint, uint) modifier1() returns (uint) f1; +} +// ---- +// ParserError: (66-66): Expected token LBrace got 'Identifier' diff --git a/test/libsolidity/syntaxTests/parsing/inline_array_empty_cells_check_lvalue.sol b/test/libsolidity/syntaxTests/parsing/inline_array_empty_cells_check_lvalue.sol new file mode 100644 index 00000000..23052980 --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/inline_array_empty_cells_check_lvalue.sol @@ -0,0 +1,9 @@ +contract c { + uint[] a; + function f() returns (uint) { + a = [,2,3]; + return (a[0]); + } +} +// ---- +// ParserError: (62-62): Expected expression (inline array elements cannot be omitted). diff --git a/test/libsolidity/syntaxTests/parsing/inline_array_empty_cells_check_without_lvalue.sol b/test/libsolidity/syntaxTests/parsing/inline_array_empty_cells_check_without_lvalue.sol new file mode 100644 index 00000000..88c67619 --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/inline_array_empty_cells_check_without_lvalue.sol @@ -0,0 +1,8 @@ +contract c { + uint[] a; + function f() returns (uint, uint) { + return ([3, ,4][0]); + } +} +// ---- +// ParserError: (75-75): Expected expression (inline array elements cannot be omitted). diff --git a/test/libsolidity/syntaxTests/parsing/invalid_fixed_conversion_leading_zeroes_check.sol b/test/libsolidity/syntaxTests/parsing/invalid_fixed_conversion_leading_zeroes_check.sol new file mode 100644 index 00000000..e0c8fa9a --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/invalid_fixed_conversion_leading_zeroes_check.sol @@ -0,0 +1,7 @@ +contract test { + function f() { + fixed a = 1.0x2; + } +} +// ---- +// ParserError: (44-44): Expected primary expression. diff --git a/test/libsolidity/syntaxTests/parsing/local_const_variable.sol b/test/libsolidity/syntaxTests/parsing/local_const_variable.sol new file mode 100644 index 00000000..55673160 --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/local_const_variable.sol @@ -0,0 +1,9 @@ +contract Foo { + function localConst() returns (uint ret) + { + uint constant local = 4; + return local; + } +} +// ---- +// ParserError: (67-67): Expected token Semicolon got 'Constant' diff --git a/test/libsolidity/syntaxTests/parsing/location_specifiers_for_state_variables.sol b/test/libsolidity/syntaxTests/parsing/location_specifiers_for_state_variables.sol new file mode 100644 index 00000000..1b525506 --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/location_specifiers_for_state_variables.sol @@ -0,0 +1,5 @@ +contract Foo { + uint[] memory x; +} +// ---- +// ParserError: (23-23): Expected identifier, got 'Memory' diff --git a/test/libsolidity/syntaxTests/parsing/location_specifiers_with_var.sol b/test/libsolidity/syntaxTests/parsing/location_specifiers_with_var.sol new file mode 100644 index 00000000..47fe37d5 --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/location_specifiers_with_var.sol @@ -0,0 +1,5 @@ +contract Foo { + function f() { var memory x; } +} +// ---- +// ParserError: (35-35): Location specifier needs explicit type name. diff --git a/test/libsolidity/syntaxTests/parsing/malformed_enum_declaration.sol b/test/libsolidity/syntaxTests/parsing/malformed_enum_declaration.sol new file mode 100644 index 00000000..5a6eb270 --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/malformed_enum_declaration.sol @@ -0,0 +1,5 @@ +contract c { + enum foo { WARNING,} +} +// ---- +// ParserError: (33-33): Expected Identifier after ',' diff --git a/test/libsolidity/syntaxTests/parsing/missing_argument_in_named_args.sol b/test/libsolidity/syntaxTests/parsing/missing_argument_in_named_args.sol new file mode 100644 index 00000000..8e0acfaa --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/missing_argument_in_named_args.sol @@ -0,0 +1,6 @@ +contract test { + function a(uint a, uint b, uint c) returns (uint r) { r = a * 100 + b * 10 + c * 1; } + function b() returns (uint r) { r = a({a: , b: , c: }); } +} +// ---- +// ParserError: (146-146): Expected primary expression. diff --git a/test/libsolidity/syntaxTests/parsing/missing_parameter_name_in_named_args.sol b/test/libsolidity/syntaxTests/parsing/missing_parameter_name_in_named_args.sol new file mode 100644 index 00000000..0606e2c7 --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/missing_parameter_name_in_named_args.sol @@ -0,0 +1,6 @@ +contract test { + function a(uint a, uint b, uint c) returns (uint r) { r = a * 100 + b * 10 + c * 1; } + function b() returns (uint r) { r = a({: 1, : 2, : 3}); } +} +// ---- +// ParserError: (143-143): Expected identifier, got 'Colon' diff --git a/test/libsolidity/syntaxTests/parsing/modifier_without_semicolon.sol b/test/libsolidity/syntaxTests/parsing/modifier_without_semicolon.sol new file mode 100644 index 00000000..0d719db4 --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/modifier_without_semicolon.sol @@ -0,0 +1,5 @@ +contract c { + modifier mod { if (msg.sender == 0) _ } +} +// ---- +// ParserError: (52-52): Expected token Semicolon got 'RBrace' diff --git a/test/libsolidity/syntaxTests/parsing/new_invalid_type_name.sol b/test/libsolidity/syntaxTests/parsing/new_invalid_type_name.sol new file mode 100644 index 00000000..31cd1f09 --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/new_invalid_type_name.sol @@ -0,0 +1,7 @@ +contract C { + function f() { + new var; + } +} +// ---- +// ParserError: (35-35): Expected explicit type name. diff --git a/test/libsolidity/syntaxTests/parsing/no_function_params.sol b/test/libsolidity/syntaxTests/parsing/no_function_params.sol new file mode 100644 index 00000000..020f1233 --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/no_function_params.sol @@ -0,0 +1,7 @@ +contract test { + uint256 stateVar; + function functionName() {} +} +// ---- +// Warning: (36-62): No visibility specified. Defaulting to "public". +// Warning: (36-62): Function state mutability can be restricted to pure diff --git a/test/libsolidity/syntaxTests/parsing/payable_accessor.sol b/test/libsolidity/syntaxTests/parsing/payable_accessor.sol new file mode 100644 index 00000000..a73108ad --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/payable_accessor.sol @@ -0,0 +1,5 @@ +contract test { + uint payable x; +} +// ---- +// ParserError: (22-22): Expected identifier, got 'Payable' diff --git a/test/libsolidity/syntaxTests/parsing/scientific_notation.sol b/test/libsolidity/syntaxTests/parsing/scientific_notation.sol new file mode 100644 index 00000000..5d656508 --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/scientific_notation.sol @@ -0,0 +1,7 @@ +contract test { + uint256 a = 2e10; + uint256 b = 2E10; + uint256 c = 200e-2; + uint256 d = 2E10 wei; + uint256 e = 2.5e10; +} diff --git a/test/libsolidity/syntaxTests/parsing/single_function_param.sol b/test/libsolidity/syntaxTests/parsing/single_function_param.sol new file mode 100644 index 00000000..08e531f1 --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/single_function_param.sol @@ -0,0 +1,9 @@ +contract test { + uint256 stateVar; + function functionName(bytes32 input) returns (bytes32 out) {} +} +// ---- +// Warning: (36-97): No visibility specified. Defaulting to "public". +// Warning: (58-71): Unused function parameter. Remove or comment out the variable name to silence this warning. +// Warning: (82-93): Unused function parameter. Remove or comment out the variable name to silence this warning. +// Warning: (36-97): Function state mutability can be restricted to pure diff --git a/test/libsolidity/syntaxTests/parsing/single_function_param_trailing_comma.sol b/test/libsolidity/syntaxTests/parsing/single_function_param_trailing_comma.sol new file mode 100644 index 00000000..1febdab9 --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/single_function_param_trailing_comma.sol @@ -0,0 +1,5 @@ +contract test { + function(uint a,) {} +} +// ---- +// ParserError: (32-32): Unexpected trailing comma in parameter list. diff --git a/test/libsolidity/syntaxTests/parsing/single_return_param_trailing_comma.sol b/test/libsolidity/syntaxTests/parsing/single_return_param_trailing_comma.sol new file mode 100644 index 00000000..d2e3bbb3 --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/single_return_param_trailing_comma.sol @@ -0,0 +1,5 @@ +contract test { + function() returns (uint a,) {} +} +// ---- +// ParserError: (43-43): Unexpected trailing comma in parameter list. diff --git a/test/libsolidity/syntaxTests/parsing/trailing_comma_in_named_args.sol b/test/libsolidity/syntaxTests/parsing/trailing_comma_in_named_args.sol new file mode 100644 index 00000000..22efc58a --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/trailing_comma_in_named_args.sol @@ -0,0 +1,6 @@ +contract test { + function a(uint a, uint b, uint c) returns (uint r) { r = a * 100 + b * 10 + c * 1; } + function b() returns (uint r) { r = a({a: 1, b: 2, c: 3, }); } +} +// ---- +// ParserError: (159-159): Unexpected trailing comma. diff --git a/test/libsolidity/syntaxTests/parsing/tuples_without_commas.sol b/test/libsolidity/syntaxTests/parsing/tuples_without_commas.sol new file mode 100644 index 00000000..d0e376b0 --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/tuples_without_commas.sol @@ -0,0 +1,7 @@ +contract C { + function f() { + var a = (2 2); + } +} +// ---- +// ParserError: (42-42): Expected token Comma got 'Number' diff --git a/test/libsolidity/syntaxTests/parsing/var_array.sol b/test/libsolidity/syntaxTests/parsing/var_array.sol new file mode 100644 index 00000000..60f6dc28 --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/var_array.sol @@ -0,0 +1,5 @@ +contract Foo { + function f() { var[] a; } +} +// ---- +// ParserError: (34-34): Expected identifier, got 'LBrack' diff --git a/test/libsolidity/syntaxTests/parsing/variable_definition_in_mapping.sol b/test/libsolidity/syntaxTests/parsing/variable_definition_in_mapping.sol new file mode 100644 index 00000000..ec55a4db --- /dev/null +++ b/test/libsolidity/syntaxTests/parsing/variable_definition_in_mapping.sol @@ -0,0 +1,7 @@ +contract test { + function fun() { + mapping(var=>bytes32) d; + } +} +// ---- +// ParserError: (44-44): Expected elementary type name for mapping key type |