mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Add/Update tests for Yul function definition
This commit is contained in:
parent
e68d16d8e0
commit
bb29307b02
@ -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()
|
BOOST_AUTO_TEST_SUITE_END()
|
||||||
|
|
||||||
} // end namespaces
|
} // end namespaces
|
||||||
|
@ -3,7 +3,7 @@ contract C {
|
|||||||
assembly {
|
assembly {
|
||||||
let d:= 0x10
|
let d:= 0x10
|
||||||
|
|
||||||
function asmfun(a, b, c) - > x, y, z {
|
function asmfun(a, b, c) -> x, y, z {
|
||||||
x := g(a)
|
x := g(a)
|
||||||
function g(r) - > s {
|
function g(r) - > s {
|
||||||
s := mul(r, r)
|
s := mul(r, r)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
contract C {
|
contract C {
|
||||||
function f() public {
|
function f() public {
|
||||||
assembly {
|
assembly {
|
||||||
function asmfun(a, b, c) - > x, y, z {
|
function asmfun(a, b, c) -> x, y, z {
|
||||||
x := a
|
x := a
|
||||||
y := b
|
y := b
|
||||||
z := 7
|
z := 7
|
||||||
|
@ -3,7 +3,7 @@ contract C {
|
|||||||
assembly {
|
assembly {
|
||||||
let d := 0x10
|
let d := 0x10
|
||||||
|
|
||||||
function asmfun(a, b, c) - > x, y, z {
|
function asmfun(a, b, c) -> x, y, z {
|
||||||
x := a
|
x := a
|
||||||
y := b
|
y := b
|
||||||
z := 7
|
z := 7
|
||||||
|
@ -3,7 +3,7 @@ contract C {
|
|||||||
assembly {
|
assembly {
|
||||||
let a1, b1, c1
|
let a1, b1, c1
|
||||||
|
|
||||||
function asmfun(a, b, c) - > x, y, z {
|
function asmfun(a, b, c) -> x, y, z {
|
||||||
x := a
|
x := a
|
||||||
y := b
|
y := b
|
||||||
z := 7
|
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