Merge remote-tracking branch 'origin/develop' into breaking

This commit is contained in:
chriseth
2020-11-23 19:28:08 +01:00
511 changed files with 1263 additions and 372 deletions
+29 -32
View File
@@ -19,52 +19,49 @@ object "C_59" {
object "C_59_deployed" {
code {
{
mstore(64, 128)
let _1 := 64
mstore(_1, 128)
if iszero(lt(calldatasize(), 4))
{
let _1 := 0
if eq(0xf8eddcc6, shr(224, calldataload(_1)))
let _2 := 0
if eq(0xf8eddcc6, shr(224, calldataload(_2)))
{
if callvalue() { revert(_1, _1) }
let _2 := 32
if slt(add(calldatasize(), not(3)), _2) { revert(_1, _1) }
if callvalue() { revert(_2, _2) }
let _3 := 32
if slt(add(calldatasize(), not(3)), _3) { revert(_2, _2) }
let offset := calldataload(4)
let _3 := 0xffffffffffffffff
if gt(offset, _3) { revert(_1, _1) }
if iszero(slt(add(offset, 35), calldatasize())) { revert(_1, _1) }
let length := calldataload(add(4, offset))
if gt(length, _3) { panic_error_0x41() }
let _4 := mul(length, _2)
let dst := allocateMemory(add(_4, _2))
let _4 := 0xffffffffffffffff
if gt(offset, _4) { revert(_2, _2) }
if iszero(slt(add(offset, 35), calldatasize())) { revert(_2, _2) }
let _5 := calldataload(add(4, offset))
if gt(_5, _4) { panic_error_0x41() }
let _6 := mul(_5, _3)
let dst := allocateMemory(add(_6, _3))
let dst_1 := dst
mstore(dst, length)
dst := add(dst, _2)
mstore(dst, _5)
dst := add(dst, _3)
let src := add(offset, 36)
if gt(add(add(offset, _4), 36), calldatasize()) { revert(_1, _1) }
let i := _1
for { } lt(i, length) { i := add(i, 1) }
if gt(add(add(offset, _6), 36), calldatasize()) { revert(_2, _2) }
let i := _2
for { } lt(i, _5) { i := add(i, 1) }
{
mstore(dst, abi_decode_t_struct$_S(src, calldatasize()))
dst := add(dst, _2)
src := add(src, _2)
if slt(sub(calldatasize(), src), _3) { revert(_2, _2) }
let memPtr := mload(_1)
let newFreePtr := add(memPtr, _3)
if or(gt(newFreePtr, _4), lt(newFreePtr, memPtr)) { panic_error_0x41() }
mstore(_1, newFreePtr)
mstore(memPtr, calldataload(src))
mstore(dst, memPtr)
dst := add(dst, _3)
src := add(src, _3)
}
let ret, ret_1 := fun_sumArray_58(dst_1)
let memPos := allocateMemory(_1)
let memPos := allocateMemory(_2)
return(memPos, sub(abi_encode_uint256_t_string(memPos, ret, ret_1), memPos))
}
}
revert(0, 0)
}
function abi_decode_t_struct$_S(headStart, end) -> value
{
if slt(sub(end, headStart), 0x20) { revert(value, value) }
let memPtr := mload(64)
let newFreePtr := add(memPtr, 0x20)
if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }
mstore(64, newFreePtr)
value := memPtr
mstore(memPtr, calldataload(headStart))
}
function abi_encode_uint256_t_string(headStart, value0, value1) -> tail
{
mstore(headStart, value0)
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+3 -3
View File
@@ -1,5 +1,5 @@
Error (1834): Unimplemented feature error in <FILENAME REMOVED>
--> yul_unimplemented/input.sol:8:9:
--> yul_unimplemented/input.sol:5:16:
|
8 | x.f();
| ^^^^^
5 | return type(test).name;
| ^^^^^^^^^^^^^^^
@@ -1,10 +1,7 @@
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.0;
library L { function f(uint) public {} }
contract test {
using L for uint;
function f() public {
uint x;
x.f();
function f() public pure returns (string memory) {
return type(test).name;
}
}
+3 -3
View File
@@ -14,9 +14,9 @@ contract C {
}
// ----
// creation:
// codeDepositCost: 1116400
// executionCost: 1160
// totalCost: 1117560
// codeDepositCost: 1173600
// executionCost: 1221
// totalCost: 1174821
// external:
// a(): 1130
// b(uint256): infinite
@@ -17,9 +17,9 @@ contract C {
// optimize-yul: true
// ----
// creation:
// codeDepositCost: 615400
// executionCost: 651
// totalCost: 616051
// codeDepositCost: 587400
// executionCost: 619
// totalCost: 588019
// external:
// a(): 1029
// b(uint256): 2084
@@ -30,6 +30,7 @@ contract C {
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f0() -> 0x20, 0x0
// f1() -> 0x20, 0x40, 0x1, 0x2
@@ -7,5 +7,6 @@ contract C {
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> 0x21, 0x40, 0x7, "abcdefg"
@@ -7,5 +7,6 @@ contract C {
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> 0x20, 0x40, 0x1, -2
@@ -5,5 +5,6 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f(uint256,uint256[],uint256): 6, 0x60, 9, 0x8000000000000000000000000000000000000000000000000000000000000002, 1, 2 -> FAILURE
// f(uint256,uint256[],uint256): 6, 0x60, 9, 0x8000000000000000000000000000000000000000000000000000000000000002, 1, 2 -> FAILURE
@@ -8,5 +8,6 @@ contract C {
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f(uint256,uint256): 42, 23 -> 42, 23, 42, 23
@@ -11,5 +11,6 @@ contract C {
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> 0x40, 0xa0, 0x40, 0x20, 0x0, 0x0
@@ -10,5 +10,6 @@ contract C {
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> 0x20, 0x40, 0x1, -2
@@ -5,6 +5,7 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f(bool): true -> true
// f(bool): false -> false
@@ -15,6 +15,7 @@ contract C {
}
}
// ====
// compileViaYul: also
// EVMVersion: >homestead
// ----
// f(uint256[][1]): 32, 32, 0 -> true
@@ -7,6 +7,7 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f(uint256[][2][]): 0x20, 0x01, 0x20, 0x40, 0x60, 0x00, 0x00 -> 23 # this is the common encoding for x.length == 1 && x[0][0].length == 0 && x[0][1].length == 0 #
// f(uint256[][2][]): 0x20, 0x01, 0x20, 0x00, 0x00 -> 23 # exotic, but still valid encoding #
@@ -8,6 +8,7 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f(uint16,int16,address,bytes3,bool): 1, 2, 3, "a", true -> 1, 2, 3, "a", true
// f(uint16,int16,address,bytes3,bool): 0xffffff, 0x1ffff, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, "abcd", 1 -> FAILURE
@@ -8,6 +8,7 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f(uint8): 0 -> 0
// f(uint8): 1 -> 1
@@ -8,6 +8,7 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f((int256,uint256,bytes16)): 0xff010, 0xff0002, "abcd" -> 0xff010, 0xff0002, "abcd"
// f((int256,uint256,bytes16)): 0xff010, 0xff0002, 0x1111222233334444555566667777888800000000000000000000000000000000 -> 0xff010, 0xff0002, left(0x11112222333344445555666677778888)
@@ -11,5 +11,6 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f((uint256,uint8,uint8,bytes2)): 1, 2, 3, "ab" -> 1, 2, 3, 0x6162
@@ -3,5 +3,6 @@ contract Lotto {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// ticketPrice() -> 555
@@ -4,5 +4,6 @@ contract Lotto {
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// ticketPrice() -> 500
@@ -10,5 +10,6 @@ contract C {
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// test() -> 0
@@ -20,6 +20,7 @@ contract C {
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f(uint256): 0 -> FAILURE, hex"4e487b71", 0x12
// g(uint256): 0 -> FAILURE, hex"4e487b71", 0x12
@@ -9,6 +9,7 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// div(uint256,uint256): 7, 2 -> 3
// div(uint256,uint256): 7, 0 -> FAILURE, hex"4e487b71", 0x12 # throws #
@@ -13,5 +13,6 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f(uint256[2]): 42, 23 -> 42, 23
@@ -13,6 +13,7 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f(uint256[][]): 0x20, 0x0 -> 42 # valid access stub #
// f(uint256[][]): 0x20, 0x1 -> FAILURE # invalid on argument decoding #
@@ -22,5 +22,6 @@ contract C {
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f((uint256,uint256)[]): 0x20, 0x2, 0x1, 0x2, 0x3, 0x4 -> 2, 1, 2, 3, 4
@@ -8,6 +8,7 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f(uint256[],uint256,uint256): 0x80, 0, 0, 0, 1, 42 ->
// f(uint256[],uint256,uint256): 0x80, 0, 1, 0, 1, 42 ->
@@ -0,0 +1,38 @@
pragma experimental ABIEncoderV2;
contract c {
function test1(uint256[][] calldata c) external returns (uint256, uint256) {
uint256[][] memory a1 = c;
assert(a1[0][0] == c[0][0]);
assert(a1[0][1] == c[0][1]);
return (a1.length, a1[0][0] + a1[1][1]);
}
function test2(uint256[][2] calldata c) external returns (uint256, uint256) {
uint256[][2] memory a2 = c;
assert(a2[0][0] == c[0][0]);
assert(a2[0][1] == c[0][1]);
return (a2[0].length, a2[0][0] + a2[1][1]);
}
function test3(uint256[2][] calldata c) external returns (uint256, uint256) {
uint256[2][] memory a3 = c;
assert(a3[0][0] == c[0][0]);
assert(a3[0][1] == c[0][1]);
return (a3.length, a3[0][0] + a3[1][1]);
}
function test4(uint256[2][2] calldata c) external returns (uint256) {
uint256[2][2] memory a4 = c;
assert(a4[0][0] == c[0][0]);
assert(a4[0][1] == c[0][1]);
return (a4[0][0] + a4[1][1]);
}
}
// ====
// compileViaYul: true
// ----
// test1(uint256[][]): 0x20, 2, 0x40, 0x40, 2, 23, 42 -> 2, 65
// test2(uint256[][2]): 0x20, 0x40, 0x40, 2, 23, 42 -> 2, 65
// test3(uint256[2][]): 0x20, 2, 23, 42, 23, 42 -> 2, 65
// test4(uint256[2][2]): 23, 42, 23, 42 -> 65
@@ -10,28 +10,28 @@ contract c {
a1 = c;
assert(a1[0][0] == c[0][0]);
assert(a1[0][1] == c[0][1]);
return (a1.length, a1[1][0] + a1[1][1]);
return (a1.length, a1[0][0] + a1[1][1]);
}
function test2(uint256[][2] calldata c) external returns (uint256, uint256) {
a2 = c;
assert(a2[0][0] == c[0][0]);
assert(a2[0][1] == c[0][1]);
return (a2[0].length, a2[1][0] + a2[1][1]);
return (a2[0].length, a2[0][0] + a2[1][1]);
}
function test3(uint256[2][] calldata c) external returns (uint256, uint256) {
a3 = c;
assert(a3[0][0] == c[0][0]);
assert(a3[0][1] == c[0][1]);
return (a3.length, a3[1][0] + a3[1][1]);
return (a3.length, a3[0][0] + a3[1][1]);
}
function test4(uint256[2][2] calldata c) external returns (uint256) {
a4 = c;
assert(a4[0][0] == c[0][0]);
assert(a4[0][1] == c[0][1]);
return (a4[1][0] + a4[1][1]);
return (a4[0][0] + a4[1][1]);
}
}
// ====
@@ -39,5 +39,5 @@ contract c {
// ----
// test1(uint256[][]): 0x20, 2, 0x40, 0x40, 2, 23, 42 -> 2, 65
// test2(uint256[][2]): 0x20, 0x40, 0x40, 2, 23, 42 -> 2, 65
// test3(uint256[2][]): 0x20, 2, 0x40, 0x40, 23, 42 -> 2, 65
// test3(uint256[2][]): 0x20, 2, 23, 42, 23, 42 -> 2, 65
// test4(uint256[2][2]): 23, 42, 23, 42 -> 65
@@ -0,0 +1,22 @@
pragma experimental ABIEncoderV2;
contract C {
struct S {
uint128 a;
uint64 b;
uint128 c;
}
function f(S[3] calldata c) public returns (uint128, uint64, uint128) {
S[3] memory m = c;
return (m[2].a, m[1].b, m[0].c);
}
function g(S[] calldata c) public returns (uint128, uint64, uint128) {
S[] memory m = c;
return (m[2].a, m[1].b, m[0].c);
}
}
// ====
// compileViaYul: also
// ----
// f((uint128, uint64, uint128)[3]): 0, 0, 12, 0, 11, 0, 10, 0, 0 -> 10, 11, 12
// g((uint128, uint64, uint128)[]): 0x20, 3, 0, 0, 12, 0, 11, 0, 10, 0, 0 -> 10, 11, 12
@@ -0,0 +1,23 @@
pragma experimental ABIEncoderV2;
contract C {
struct S {
uint256[] a;
}
function f(S[] calldata c) external returns (uint256, uint256) {
S[] memory s = c;
assert(s.length == c.length);
for (uint i = 0; i < s.length; i++) {
assert(s[i].a.length == c[i].a.length);
for (uint j = 0; j < s[i].a.length; j++) {
assert(s[i].a[j] == c[i].a[j]);
}
}
return (s[1].a.length, s[1].a[0]);
}
}
// ====
// compileViaYul: true
// ----
// f((uint256[])[]): 0x20, 3, 0x60, 0x60, 0x60, 0x20, 3, 1, 2, 3 -> 3, 1
@@ -9,6 +9,13 @@ contract C {
function f(S[] calldata c) external returns (uint256, uint256) {
s = c;
assert(s.length == c.length);
for (uint i = 0; i < s.length; i++) {
assert(s[i].a.length == c[i].a.length);
for (uint j = 0; j < s[i].a.length; j++) {
assert(s[i].a[j] == c[i].a[j]);
}
}
return (s[1].a.length, s[1].a[0]);
}
}
@@ -12,5 +12,6 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> 1, 2, 3
@@ -8,5 +8,6 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> "a"
@@ -5,5 +5,8 @@ contract C {
return data[0];
}
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> "a"
@@ -21,5 +21,7 @@ contract C {
}
}
// ====
// compileViaYul: also
// ----
// f((uint256,uint256)[]): 0x20, 0x2, 0x1, 0x2, 0x3, 0x4 -> 2, 1, 2, 3, 4
@@ -0,0 +1,10 @@
contract C {
function f(uint256[2] calldata c) public returns (uint256, uint256) {
uint256[2] memory m1 = c;
return (m1[0], m1[1]);
}
}
// ====
// compileViaYul: also
// ----
// f(uint256[2]): 43, 57 -> 43, 57
@@ -7,5 +7,6 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f(bytes): 0x20, 0x08, "abcdefgh" -> "a"
@@ -11,5 +11,7 @@ contract C {
}
}
// ====
// compileViaYul: also
// ----
// f(uint256[][]): 0x20, 0x1, 0x20, 0x2, 0x17, 0x2a -> 0x1, 0x40, 0x2, 0x17, 0x2a
@@ -19,6 +19,7 @@ contract C {
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// one() -> 3
// two() -> FAILURE, hex"4e487b71", 0x51
@@ -11,5 +11,6 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> 2, 3, 4
@@ -6,5 +6,6 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> 7
@@ -21,6 +21,7 @@ contract C {
}}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> FAILURE, hex"4e487b71", 0x41
// g() -> FAILURE, hex"4e487b71", 0x41
@@ -31,5 +31,6 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> 7
@@ -14,6 +14,7 @@ contract A {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// test() -> false
// testIt() -> FAILURE, hex"4e487b71", 0x32
@@ -8,5 +8,6 @@ contract c {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// test(uint256[8],uint256[],uint256[5],uint256,uint256,uint256): 1, 2, 3, 4, 5, 6, 7, 8, 0x220, 21, 22, 23, 24, 25, 0, 1, 2, 3, 11, 12, 13 -> 1, 12, 23
@@ -9,6 +9,7 @@ contract c {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// storage: empty
// fill() ->
@@ -35,6 +35,7 @@ contract c {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// setIDStatic(uint256): 0xb ->
// getID(uint256): 0x2 -> 0xb
@@ -7,5 +7,6 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f(bytes32): "789" -> 32, 16, 8
@@ -17,6 +17,7 @@ contract c {
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// length() -> 4
// set(uint256,uint256): 3, 4 -> true
@@ -32,6 +32,7 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// test(uint256,uint256): 10, 0 -> 11
// test(uint256,uint256): 10, 1 -> 12
@@ -6,5 +6,6 @@ contract C {
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> 3
@@ -12,5 +12,6 @@ contract Test {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07
@@ -13,5 +13,6 @@ contract C {
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> 1, 2, 3, 4, 5
@@ -6,5 +6,6 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> 4
@@ -9,5 +9,6 @@ contract C {
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> 3, 6
@@ -8,5 +8,8 @@ contract C {
}
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> 0x40, 0x80, 0x3, "ray", 0x2, "mi"
@@ -7,6 +7,7 @@ contract C {
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f(uint256): 0 -> 0x20, 0x4, "This"
// f(uint256): 1 -> 0x20, 0x2, "is"
@@ -8,5 +8,6 @@ contract c {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// test() -> FAILURE, hex"4e487b71", 0x31
@@ -10,5 +10,6 @@ contract c {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// test() -> 3
@@ -14,5 +14,6 @@ contract c {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// test() -> 2, 1, 1
@@ -11,5 +11,6 @@ contract c {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// test() -> FAILURE, hex"4e487b71", 0x31
@@ -10,5 +10,6 @@ contract c {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// test() -> 3
@@ -11,6 +11,7 @@ contract c {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// test() ->
// storage: empty
@@ -15,5 +15,6 @@ contract c {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// test() -> false
@@ -9,6 +9,7 @@ contract c {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// storage: empty
// fill() ->
@@ -11,5 +11,6 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> 6
@@ -11,5 +11,6 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> 5
@@ -15,6 +15,7 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f(uint256): 0 -> 2
// f(uint256): 1 -> 18
@@ -7,5 +7,6 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> 0x4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa12d6c45
@@ -11,6 +11,7 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> 0x3737373737373737373737373737373737373737373737373737373737373738
// g() -> 0x3737373737373737373737373737373737373737373737373737373737373739
@@ -4,5 +4,6 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> 0
@@ -21,6 +21,7 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> 0x26121ff000000000000000000000000000000000000000000000000000000000
// g() -> 0x26121ff000000000000000000000000000000000000000000000000000000000
@@ -6,5 +6,6 @@ contract C {
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470
@@ -5,5 +5,6 @@ contract test {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// foo(uint256): 0x0 -> 0x2fbebd3800000000000000000000000000000000000000000000000000000000
@@ -9,5 +9,6 @@ contract test {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// foo(uint256): 0x0 -> 0x2fbebd3800000000000000000000000000000000000000000000000000000000
@@ -36,6 +36,7 @@ contract test {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> 3
// g() -> 0
@@ -18,6 +18,7 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f((uint8,bytes1)): 0x12, hex"3400000000000000000000000000000000000000000000000000000000000000" -> 0x12, hex"3400000000000000000000000000000000000000000000000000000000000000" # double check that the valid case goes through #
// f((uint8,bytes1)): 0x1234, hex"5678000000000000000000000000000000000000000000000000000000000000" -> FAILURE
@@ -13,6 +13,7 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f(bool): 0x0 -> 0x0
// f(bool): 0x1 -> 0x1
@@ -28,6 +28,7 @@ contract C {
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> 0x1122334455667788990011223344556677889900
// g() -> 0x1122334455667788990011223344556677889900
@@ -15,6 +15,7 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f(address): 0xffff1234567890123456789012345678901234567890 -> FAILURE # We input longer data on purpose.#
// g(address): 0xffff1234567890123456789012345678901234567890 -> FAILURE
@@ -12,5 +12,6 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> "\xff\xff\xff\xff"
@@ -12,5 +12,6 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f(bytes2,uint16): "abc", 0x40102 -> FAILURE # We input longer data on purpose. #
@@ -10,5 +10,6 @@ contract C {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// test() -> 0xff, 0xff
@@ -10,5 +10,6 @@ contract C {
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> 0x00
@@ -18,6 +18,7 @@ contract C {
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> 0x20, 3, "\x03\x01\x02"
// g() -> 0x20, 3, "\x03\x01\x02"
@@ -26,6 +26,7 @@ contract C {
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> 0x20, 3, "\x03\x01\x02"
// g() -> 0x20, 3, "\x03\x01\x02"
@@ -7,5 +7,6 @@ contract Foo {
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// constructor() ->
@@ -34,8 +34,9 @@ contract C {
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> 0x20, 3, "\x03\x01\x02"
// g() -> 0x20, 3, "\x03\x01\x02"
// h() -> 5
// i() -> 0x20, 3, "\x03\x01\x02"
// i() -> 0x20, 3, "\x03\x01\x02"
@@ -22,5 +22,6 @@ contract C {
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// f() -> 0x0d, 0x59, 0x59, 0x59
@@ -8,5 +8,6 @@ contract Foo {
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// getX() -> 56
@@ -16,6 +16,7 @@ contract B {
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// testIt() ->
// test() -> 2
@@ -17,5 +17,6 @@ contract Test {
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// getName() -> "abc"
@@ -27,5 +27,6 @@ contract Test {
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// getName() -> "def\x00\x00\x00"
@@ -16,6 +16,7 @@ contract Derived is Base {
}
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// getBMember() -> 5
// getDMember() -> 6
@@ -4,5 +4,6 @@ contract C {
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// constructor(), 27 wei ->
@@ -18,6 +18,7 @@ contract C {
// ====
// compileViaYul: also
// compileToEwasm: also
// ----
// use(uint256): 3 -> 6
// result_in_constructor() -> 4

Some files were not shown because too many files have changed in this diff Show More