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)"); | ||||
| } | ||||
| 
 | ||||
| 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) | ||||
| { | ||||
| 	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"); | ||||
| } | ||||
| BOOST_AUTO_TEST_CASE(functions_in_parallel_scopes) | ||||
| { | ||||
| 	BOOST_CHECK(successParse("{ { function g() {} } { function g() {} } }")); | ||||
| } | ||||
| 
 | ||||
| BOOST_AUTO_TEST_CASE(variable_access_cross_functions) | ||||
| { | ||||
| 	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_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) | ||||
| { | ||||
| 	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 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