mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	Merge pull request #4053 from ethereum/parser-syntax-tests
Move some parser tests to syntax tests
This commit is contained in:
		
						commit
						650244f619
					
				| @ -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() | ||||
| 
 | ||||
| } | ||||
|  | ||||
| @ -0,0 +1,5 @@ | ||||
| contract Foo { | ||||
| 	uint constant = 4; | ||||
| } | ||||
| // ---- | ||||
| // ParserError: (30-30): Expected identifier, got 'Assign' | ||||
| @ -0,0 +1,8 @@ | ||||
| contract C { | ||||
| 	event A(); | ||||
| 	function f() { | ||||
| 		emit A; | ||||
| 	} | ||||
| } | ||||
| // ---- | ||||
| // ParserError: (49-49): Expected token LParen got 'Semicolon' | ||||
							
								
								
									
										5
									
								
								test/libsolidity/syntaxTests/parsing/empty_enum.sol
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								test/libsolidity/syntaxTests/parsing/empty_enum.sol
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | ||||
| contract c { | ||||
| 	enum foo { } | ||||
| } | ||||
| // ---- | ||||
| // ParserError: (25-25): enum with no members is not allowed. | ||||
							
								
								
									
										10
									
								
								test/libsolidity/syntaxTests/parsing/empty_function.sol
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								test/libsolidity/syntaxTests/parsing/empty_function.sol
									
									
									
									
									
										Normal file
									
								
							| @ -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 | ||||
| @ -0,0 +1,5 @@ | ||||
| contract c { | ||||
| 	event e; | ||||
| } | ||||
| // ---- | ||||
| // ParserError: (21-21): Expected token LParen got 'Semicolon' | ||||
| @ -0,0 +1,5 @@ | ||||
| contract c { | ||||
| 	uint external x; | ||||
| } | ||||
| // ---- | ||||
| // ParserError: (19-19): Expected identifier, got 'External' | ||||
| @ -0,0 +1,5 @@ | ||||
| contract A { | ||||
| 	fixed40x40 pi = 3.14.15; | ||||
| } | ||||
| // ---- | ||||
| // ParserError: (34-34): Expected token Semicolon got 'Number' | ||||
| @ -0,0 +1,5 @@ | ||||
| contract test { | ||||
| 	function (uint, uint) modifier1() returns (uint) f1; | ||||
| } | ||||
| // ---- | ||||
| // ParserError: (66-66): Expected token LBrace got 'Identifier' | ||||
| @ -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). | ||||
| @ -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). | ||||
| @ -0,0 +1,7 @@ | ||||
| contract test { | ||||
| 	function f() { | ||||
| 		fixed a = 1.0x2; | ||||
| 	} | ||||
| } | ||||
| // ---- | ||||
| // ParserError: (44-44): Expected primary expression. | ||||
| @ -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' | ||||
| @ -0,0 +1,5 @@ | ||||
| contract Foo { | ||||
| 	uint[] memory x; | ||||
| } | ||||
| // ---- | ||||
| // ParserError: (23-23): Expected identifier, got 'Memory' | ||||
| @ -0,0 +1,5 @@ | ||||
| contract Foo { | ||||
| 	function f() { var memory x; } | ||||
| } | ||||
| // ---- | ||||
| // ParserError: (35-35): Location specifier needs explicit type name. | ||||
| @ -0,0 +1,5 @@ | ||||
| contract c { | ||||
| 	enum foo { WARNING,} | ||||
| } | ||||
| // ---- | ||||
| // ParserError: (33-33): Expected Identifier after ',' | ||||
| @ -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. | ||||
| @ -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' | ||||
| @ -0,0 +1,5 @@ | ||||
| contract c { | ||||
| 	modifier mod { if (msg.sender == 0) _ } | ||||
| } | ||||
| // ---- | ||||
| // ParserError: (52-52): Expected token Semicolon got 'RBrace' | ||||
| @ -0,0 +1,7 @@ | ||||
| contract C { | ||||
| 	function f() { | ||||
| 		new var; | ||||
| 	} | ||||
| } | ||||
| // ---- | ||||
| // ParserError: (35-35): Expected explicit type name. | ||||
| @ -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 | ||||
| @ -0,0 +1,5 @@ | ||||
| contract test { | ||||
| 	uint payable x; | ||||
| } | ||||
| // ---- | ||||
| // ParserError: (22-22): Expected identifier, got 'Payable' | ||||
| @ -0,0 +1,7 @@ | ||||
| contract test { | ||||
| 	uint256 a = 2e10; | ||||
| 	uint256 b = 2E10; | ||||
| 	uint256 c = 200e-2; | ||||
| 	uint256 d = 2E10 wei; | ||||
| 	uint256 e = 2.5e10; | ||||
| } | ||||
| @ -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 | ||||
| @ -0,0 +1,5 @@ | ||||
| contract test { | ||||
| 	function(uint a,) {} | ||||
| } | ||||
| // ---- | ||||
| // ParserError: (32-32): Unexpected trailing comma in parameter list. | ||||
| @ -0,0 +1,5 @@ | ||||
| contract test { | ||||
| 	function() returns (uint a,) {} | ||||
| } | ||||
| // ---- | ||||
| // ParserError: (43-43): Unexpected trailing comma in parameter list. | ||||
| @ -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. | ||||
| @ -0,0 +1,7 @@ | ||||
| contract C { | ||||
| 	function f() { | ||||
| 		var a = (2 2); | ||||
| 	} | ||||
| } | ||||
| // ---- | ||||
| // ParserError: (42-42): Expected token Comma got 'Number' | ||||
							
								
								
									
										5
									
								
								test/libsolidity/syntaxTests/parsing/var_array.sol
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								test/libsolidity/syntaxTests/parsing/var_array.sol
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | ||||
| contract Foo { | ||||
| 	function f() { var[] a; } | ||||
| } | ||||
| // ---- | ||||
| // ParserError: (34-34): Expected identifier, got 'LBrack' | ||||
| @ -0,0 +1,7 @@ | ||||
| contract test { | ||||
| 	function fun() { | ||||
| 		mapping(var=>bytes32) d; | ||||
| 	} | ||||
| } | ||||
| // ---- | ||||
| // ParserError: (44-44): Expected elementary type name for mapping key type | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user