mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	InlineAssembly: Extracting tests for function definition and calls.
This commit is contained in:
		
							parent
							
								
									f2117b87f7
								
							
						
					
					
						commit
						55f9eab51f
					
				| @ -217,21 +217,6 @@ BOOST_AUTO_TEST_CASE(number_literals) | |||||||
| 	CHECK_STRICT_ERROR("{ let x := 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff }", TypeError, "Number literal too large (> 256 bits)"); | 	CHECK_STRICT_ERROR("{ let x := 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff }", TypeError, "Number literal too large (> 256 bits)"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| BOOST_AUTO_TEST_CASE(function_definitions) |  | ||||||
| { |  | ||||||
| 	BOOST_CHECK(successParse("{ function f() { } function g(a) -> x { } }")); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| BOOST_AUTO_TEST_CASE(function_definitions_multiple_args) |  | ||||||
| { |  | ||||||
| 	BOOST_CHECK(successParse("{ function f(a, d) { } function g(a, d) -> x, y { } }")); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| BOOST_AUTO_TEST_CASE(function_calls) |  | ||||||
| { |  | ||||||
| 	BOOST_CHECK(successParse("{ function f(a) -> b {} function g(a, b, c) {} function x() { g(1, 2, f(mul(2, 3))) x() } }")); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| BOOST_AUTO_TEST_CASE(opcode_for_functions) | BOOST_AUTO_TEST_CASE(opcode_for_functions) | ||||||
| { | { | ||||||
| 	CHECK_PARSE_ERROR("{ function gas() { } }", ParserError, "Cannot use builtin"); | 	CHECK_PARSE_ERROR("{ function gas() { } }", ParserError, "Cannot use builtin"); | ||||||
| @ -267,11 +252,6 @@ BOOST_AUTO_TEST_CASE(name_clashes_function_variable_subscope_reverse) | |||||||
| { | { | ||||||
| 	CHECK_PARSE_ERROR("{ { let g := 0 } function g() { } }", DeclarationError, "Variable name g already taken in this scope"); | 	CHECK_PARSE_ERROR("{ { let g := 0 } function g() { } }", DeclarationError, "Variable name g already taken in this scope"); | ||||||
| } | } | ||||||
| BOOST_AUTO_TEST_CASE(functions_in_parallel_scopes) |  | ||||||
| { |  | ||||||
| 	BOOST_CHECK(successParse("{ { function g() {} } { function g() {} } }")); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| BOOST_AUTO_TEST_CASE(variable_access_cross_functions) | BOOST_AUTO_TEST_CASE(variable_access_cross_functions) | ||||||
| { | { | ||||||
| 	CHECK_PARSE_ERROR("{ let x := 2 function g() { pop(x) } }", DeclarationError, "Identifier not found."); | 	CHECK_PARSE_ERROR("{ let x := 2 function g() { pop(x) } }", DeclarationError, "Identifier not found."); | ||||||
| @ -454,29 +434,6 @@ BOOST_AUTO_TEST_CASE(revert) | |||||||
| 	BOOST_CHECK(successAssemble("{ revert(0, 0) }")); | 	BOOST_CHECK(successAssemble("{ revert(0, 0) }")); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| BOOST_AUTO_TEST_CASE(function_calls) |  | ||||||
| { |  | ||||||
| 	BOOST_CHECK(successAssemble("{ function f() {} }")); |  | ||||||
| 	BOOST_CHECK(successAssemble("{ function f() { let y := 2 } }")); |  | ||||||
| 	BOOST_CHECK(successAssemble("{ function f() -> z { let y := 2 } }")); |  | ||||||
| 	BOOST_CHECK(successAssemble("{ function f(a) { let y := 2 } }")); |  | ||||||
| 	BOOST_CHECK(successAssemble("{ function f(a) { let y := a } }")); |  | ||||||
| 	BOOST_CHECK(successAssemble("{ function f() -> x, y, z {} }")); |  | ||||||
| 	BOOST_CHECK(successAssemble("{ function f(x, y, z) {} }")); |  | ||||||
| 	BOOST_CHECK(successAssemble("{ function f(a, b) -> x, y, z { y := a } }")); |  | ||||||
| 	BOOST_CHECK(successAssemble("{ function f() {} f() }")); |  | ||||||
| 	BOOST_CHECK(successAssemble("{ function f() -> x, y { x := 1 y := 2} let a, b := f() }")); |  | ||||||
| 	BOOST_CHECK(successAssemble("{ function f(a, b) -> x, y { x := b y := a } let a, b := f(2, 3) }")); |  | ||||||
| 	BOOST_CHECK(successAssemble("{ function rec(a) { rec(sub(a, 1)) } rec(2) }")); |  | ||||||
| 	BOOST_CHECK(successAssemble("{ let r := 2 function f() -> x, y { x := 1 y := 2} let a, b := f() b := r }")); |  | ||||||
| 	BOOST_CHECK(successAssemble("{ function f() { g() } function g() { f() } }")); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| BOOST_AUTO_TEST_CASE(embedded_functions) |  | ||||||
| { |  | ||||||
| 	BOOST_CHECK(successAssemble("{ function f(r, s) -> x { function g(a) -> b { } x := g(2) } let x := f(2, 3) }")); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| BOOST_AUTO_TEST_CASE(large_constant) | BOOST_AUTO_TEST_CASE(large_constant) | ||||||
| { | { | ||||||
| 	auto source = R"({ | 	auto source = R"({ | ||||||
|  | |||||||
							
								
								
									
										17
									
								
								test/libyul/yulSyntaxTests/function_calls_2.yul
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								test/libyul/yulSyntaxTests/function_calls_2.yul
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,17 @@ | |||||||
|  | { | ||||||
|  | 	{ function f() {} } | ||||||
|  | 	{ function f() { let y := 2 } } | ||||||
|  | 	{ function f() -> z { let y := 2 } } | ||||||
|  | 	{ function f(a) { let y := 2 } } | ||||||
|  | 	{ function f(a) { let y := a } } | ||||||
|  | 	{ function f() -> x, y, z {} } | ||||||
|  | 	{ function f(x, y, z) {} } | ||||||
|  | 	{ function f(a, b) -> x, y, z { y := a } } | ||||||
|  | 	{ function f() {} f() } | ||||||
|  | 	{ function f() -> x, y { x := 1 y := 2} let a, b := f() } | ||||||
|  | 	{ function f(a, b) -> x, y { x := b y := a } let a, b := f(2, 3) } | ||||||
|  | 	{ function rec(a) { rec(sub(a, 1)) } rec(2) } | ||||||
|  | 	{ let r := 2 function f() -> x, y { x := 1 y := 2} let a, b := f() b := r } | ||||||
|  | 	{ function f() { g() } function g() { f() } } | ||||||
|  | 	{ function f(a) -> b {} function g(a, b, c) {} function x() { g(1, 2, f(mul(2, 3))) x() } } | ||||||
|  | } | ||||||
| @ -0,0 +1,4 @@ | |||||||
|  | { | ||||||
|  |     function f(a, d) { } | ||||||
|  |     function g(a, d) -> x, y { } | ||||||
|  | } | ||||||
| @ -1,4 +1,7 @@ | |||||||
| { | { | ||||||
|     function f (a, b  , c ) ->    y,x,z { |     function f (a, b  , c ) ->    y,x,z { | ||||||
|     } |     } | ||||||
| } | 
 | ||||||
|  | 	function g() { } | ||||||
|  | 	function h(a) -> x { } | ||||||
|  | } | ||||||
|  | |||||||
							
								
								
									
										7
									
								
								test/libyul/yulSyntaxTests/function_embedded.yul
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								test/libyul/yulSyntaxTests/function_embedded.yul
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | |||||||
|  | { | ||||||
|  | 	function f(r, s) -> x { | ||||||
|  | 		function g(a) -> b { } | ||||||
|  | 		x := g(2) | ||||||
|  | 	} | ||||||
|  | 	let x := f(2, 3) | ||||||
|  | } | ||||||
| @ -0,0 +1,4 @@ | |||||||
|  | { | ||||||
|  |     { function g() {} } | ||||||
|  |     { function g() {} } | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user