mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	Merge pull request #9613 from ethereum/yul-function-arrow
Add/Update tests for Yul function definition
This commit is contained in:
		
						commit
						ce501d6740
					
				| @ -771,6 +771,74 @@ BOOST_AUTO_TEST_CASE(irregular_line_breaks_in_strings) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| BOOST_AUTO_TEST_CASE(yul_function) | ||||
| { | ||||
| 	string sig = "function f(a, b) -> x, y"; | ||||
| 	Scanner scanner(CharStream(sig, "")); | ||||
| 	BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Function); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Identifier); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::LParen); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Identifier); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Comma); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Identifier); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::RParen); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Sub); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::GreaterThan); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Identifier); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Comma); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Identifier); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::EOS); | ||||
| 	scanner.reset(CharStream(sig, "")); | ||||
| 	scanner.setScannerMode(ScannerKind::Yul); | ||||
| 	BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Function); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Identifier); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::LParen); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Identifier); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Comma); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Identifier); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::RParen); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Sub); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::GreaterThan); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Identifier); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Comma); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Identifier); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::EOS); | ||||
| } | ||||
| 
 | ||||
| BOOST_AUTO_TEST_CASE(yul_function_with_whitespace) | ||||
| { | ||||
| 	string sig = "function f (a, b) - > x, y"; | ||||
| 	Scanner scanner(CharStream(sig, "")); | ||||
| 	BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Function); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Identifier); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::LParen); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Identifier); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Comma); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Identifier); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::RParen); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Sub); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::GreaterThan); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Identifier); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Comma); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Identifier); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::EOS); | ||||
| 	scanner.reset(CharStream(sig, "")); | ||||
| 	scanner.setScannerMode(ScannerKind::Yul); | ||||
| 	BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Function); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Identifier); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::LParen); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Identifier); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Comma); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Identifier); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::RParen); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Sub); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::GreaterThan); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Identifier); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Comma); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::Identifier); | ||||
| 	BOOST_CHECK_EQUAL(scanner.next(), Token::EOS); | ||||
| } | ||||
| 
 | ||||
| BOOST_AUTO_TEST_SUITE_END() | ||||
| 
 | ||||
| } // end namespaces
 | ||||
|  | ||||
| @ -3,7 +3,7 @@ contract C { | ||||
|         assembly { | ||||
|             let d:= 0x10 | ||||
| 
 | ||||
|             function asmfun(a, b, c) - > x, y, z { | ||||
|             function asmfun(a, b, c) -> x, y, z { | ||||
|                 x := g(a) | ||||
|                 function g(r) - > s { | ||||
|                     s := mul(r, r) | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| contract C { | ||||
|     function f() public { | ||||
|         assembly { | ||||
|             function asmfun(a, b, c) - > x, y, z { | ||||
|             function asmfun(a, b, c) -> x, y, z { | ||||
|                 x := a | ||||
|                 y := b | ||||
|                 z := 7 | ||||
|  | ||||
| @ -3,7 +3,7 @@ contract C { | ||||
|         assembly { | ||||
|             let d := 0x10 | ||||
| 
 | ||||
|             function asmfun(a, b, c) - > x, y, z { | ||||
|             function asmfun(a, b, c) -> x, y, z { | ||||
|                 x := a | ||||
|                 y := b | ||||
|                 z := 7 | ||||
|  | ||||
| @ -3,7 +3,7 @@ contract C { | ||||
|         assembly { | ||||
|             let a1, b1, c1 | ||||
| 
 | ||||
|             function asmfun(a, b, c) - > x, y, z { | ||||
|             function asmfun(a, b, c) -> x, y, z { | ||||
|                 x := a | ||||
|                 y := b | ||||
|                 z := 7 | ||||
|  | ||||
| @ -0,0 +1,8 @@ | ||||
| contract C { | ||||
|   function f() pure public { | ||||
|     assembly { | ||||
|       function f (a, b  , c ) ->    y,x,z { | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,8 @@ | ||||
| contract C { | ||||
|   function f() pure public { | ||||
|     assembly { | ||||
|       function f (a, b  , c ) -     >    y,x,z { | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
							
								
								
									
										4
									
								
								test/libyul/yulSyntaxTests/function_definition.yul
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								test/libyul/yulSyntaxTests/function_definition.yul
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,4 @@ | ||||
| { | ||||
|     function f (a, b  , c ) ->    y,x,z { | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,4 @@ | ||||
| { | ||||
|     function f (a, b  , c ) -     >    y,x,z { | ||||
|     } | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user