Use new abicoder pragma.

This commit is contained in:
chriseth
2020-11-24 14:57:45 +01:00
parent 36f9392154
commit 79669ecd48
277 changed files with 325 additions and 320 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
struct S { uint a; T[] sub; bytes b; }
struct T { uint[2] x; }
+1 -1
View File
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
struct S { uint a; }
contract C {
function f(S calldata s) external view {}
+1 -1
View File
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
struct S { uint a; T[] sub; }
struct T { uint[2] x; }
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
struct S { C[] x; C y; }
function f() public returns (S memory s, C c) {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
library L {
struct S { uint a; T[] sub; bytes b; }
struct T { uint[2] x; }
+27 -23
View File
@@ -1983,7 +1983,7 @@ BOOST_AUTO_TEST_CASE(event_really_really_lots_of_data_from_storage)
BOOST_AUTO_TEST_CASE(event_struct_memory_v2)
{
char const* sourceCode = R"(
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
struct S { uint a; }
event E(S);
@@ -2005,7 +2005,7 @@ BOOST_AUTO_TEST_CASE(event_struct_memory_v2)
BOOST_AUTO_TEST_CASE(event_struct_storage_v2)
{
char const* sourceCode = R"(
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
struct S { uint a; }
event E(S);
@@ -2053,7 +2053,7 @@ BOOST_AUTO_TEST_CASE(event_dynamic_array_memory)
BOOST_AUTO_TEST_CASE(event_dynamic_array_memory_v2)
{
char const* sourceCode = R"(
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
event E(uint[]);
function createEvent(uint x) public {
@@ -2078,7 +2078,7 @@ BOOST_AUTO_TEST_CASE(event_dynamic_array_memory_v2)
BOOST_AUTO_TEST_CASE(event_dynamic_nested_array_memory_v2)
{
char const* sourceCode = R"(
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
event E(uint[][]);
function createEvent(uint x) public {
@@ -2136,7 +2136,7 @@ BOOST_AUTO_TEST_CASE(event_dynamic_array_storage)
BOOST_AUTO_TEST_CASE(event_dynamic_array_storage_v2)
{
char const* sourceCode = R"(
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
event E(uint[]);
uint[] arr;
@@ -2167,7 +2167,7 @@ BOOST_AUTO_TEST_CASE(event_dynamic_array_storage_v2)
BOOST_AUTO_TEST_CASE(event_dynamic_nested_array_storage_v2)
{
char const* sourceCode = R"(
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
event E(uint[][]);
uint[][] arr;
@@ -2332,7 +2332,7 @@ BOOST_AUTO_TEST_CASE(generic_delegatecall)
for (auto v2: {false, true})
{
string source = (v2 ? "pragma experimental ABIEncoderV2;\n" : "") + string(sourceCode);
string source = "pragma abicoder " + string(v2 ? "v2" : "v1") + ";\n" + string(sourceCode);
compileAndRun(source, 0, "Receiver");
u160 const c_receiverAddress = m_contractAddress;
@@ -2660,7 +2660,7 @@ BOOST_AUTO_TEST_CASE(storing_invalid_boolean)
BOOST_AUTO_TEST_CASE(struct_referencing)
{
static char const* sourceCode = R"(
pragma experimental ABIEncoderV2;
pragma abicoder v2;
interface I {
struct S { uint a; }
}
@@ -2803,7 +2803,7 @@ BOOST_AUTO_TEST_CASE(array_copy_storage_abi)
// NOTE: This does not really test copying from storage to ABI directly,
// because it will always copy to memory first.
char const* sourceCode = R"(
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract c {
uint8[] x;
uint16[] y;
@@ -3191,7 +3191,7 @@ BOOST_AUTO_TEST_CASE(memory_types_initialisation)
BOOST_AUTO_TEST_CASE(calldata_struct_short)
{
char const* sourceCode = R"(
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
struct S { uint256 a; uint256 b; }
function f(S calldata) external pure returns (uint256) {
@@ -3214,7 +3214,7 @@ BOOST_AUTO_TEST_CASE(calldata_struct_short)
BOOST_AUTO_TEST_CASE(calldata_struct_function_type)
{
char const* sourceCode = R"(
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
struct S { function (uint) external returns (uint) fn; }
function f(S calldata s) external returns (uint256) {
@@ -3263,7 +3263,7 @@ BOOST_AUTO_TEST_CASE(calldata_array_dynamic_three_dimensional)
arrayType += outerDynamicallySized ? "[]" : "[2]";
string sourceCode = R"(
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function test()" + arrayType + R"( calldata a) external returns (uint256) {
return a.length;
@@ -3865,7 +3865,7 @@ BOOST_AUTO_TEST_CASE(using_library_mappings_external)
)";
for (auto v2: {false, true})
{
string prefix = v2 ? "pragma experimental ABIEncoderV2;\n" : "";
string prefix = "pragma abicoder " + string(v2 ? "v2" : "v1") + ";\n";
compileAndRun(prefix + libSourceCode, 0, "Lib");
compileAndRun(prefix + sourceCode, 0, "Test", bytes(), map<string, Address>{{"Lib", m_contractAddress}});
ABI_CHECK(callContractFunction("f()"), encodeArgs(u256(2), u256(0), u256(84), u256(46), u256(0), u256(198)));
@@ -5137,7 +5137,8 @@ BOOST_AUTO_TEST_CASE(abi_encodePacked)
)";
for (auto v2: {false, true})
{
compileAndRun(string(v2 ? "pragma experimental ABIEncoderV2;\n" : "") + sourceCode, 0, "C");
string prefix = "pragma abicoder " + string(v2 ? "v2" : "v1") + ";\n";
compileAndRun(prefix + sourceCode, 0, "C");
ABI_CHECK(callContractFunction("f0()"), encodeArgs(0x20, 0));
ABI_CHECK(callContractFunction("f1()"), encodeArgs(0x20, 2, "\x01\x02"));
ABI_CHECK(callContractFunction("f2()"), encodeArgs(0x20, 5, "\x01" "abc" "\x02"));
@@ -5211,7 +5212,8 @@ BOOST_AUTO_TEST_CASE(abi_encodePacked_from_storage)
)";
for (auto v2: {false, true})
{
compileAndRun(string(v2 ? "pragma experimental ABIEncoderV2;\n" : "") + sourceCode, 0, "C");
string prefix = "pragma abicoder " + string(v2 ? "v2" : "v1") + ";\n";
compileAndRun(prefix + sourceCode, 0, "C");
bytes payload = encodeArgs(0xfffff1, 0, 0xfffff2, 0, 0, 0xfffff3, 0, 0, 0xfffff4);
bytes encoded = encodeArgs(0x20, 0x122, "\x01" + asString(payload) + "\x02");
ABI_CHECK(callContractFunction("sf()"), encoded);
@@ -5281,7 +5283,8 @@ BOOST_AUTO_TEST_CASE(abi_encodePacked_from_memory)
)";
for (auto v2: {false, true})
{
compileAndRun(string(v2 ? "pragma experimental ABIEncoderV2;\n" : "") + sourceCode, 0, "C");
string prefix = "pragma abicoder " + string(v2 ? "v2" : "v1") + ";\n";
compileAndRun(prefix + sourceCode, 0, "C");
bytes payload = encodeArgs(0xfffff1, 0, 0xfffff2, 0, 0, 0xfffff3, 0, 0, 0xfffff4);
bytes encoded = encodeArgs(0x20, 0x122, "\x01" + asString(payload) + "\x02");
ABI_CHECK(callContractFunction("sf()"), encoded);
@@ -5324,7 +5327,8 @@ BOOST_AUTO_TEST_CASE(abi_encodePacked_functionPtr)
)";
for (auto v2: {false, true})
{
compileAndRun(string(v2 ? "pragma experimental ABIEncoderV2;\n" : "") + sourceCode, 0, "C");
string prefix = "pragma abicoder " + string(v2 ? "v2" : "v1") + ";\n";
compileAndRun(prefix + sourceCode, 0, "C");
string directEncoding = asString(fromHex("08" "1112131400000000000011121314000000000087" "26121ff0" "02"));
ABI_CHECK(callContractFunction("testDirect()"), encodeArgs(0x20, directEncoding.size(), directEncoding));
string arrayEncoding = asString(fromHex("08" "1112131400000000000011121314000000000087" "26121ff0" "0000000000000000" "02"));
@@ -5336,7 +5340,7 @@ BOOST_AUTO_TEST_CASE(abi_encodePacked_functionPtr)
BOOST_AUTO_TEST_CASE(abi_encodePackedV2_structs)
{
char const* sourceCode = R"(
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
struct S {
uint8 a;
@@ -5378,7 +5382,7 @@ BOOST_AUTO_TEST_CASE(abi_encodePackedV2_structs)
BOOST_AUTO_TEST_CASE(abi_encodePackedV2_nestedArray)
{
char const* sourceCode = R"(
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
struct S {
uint8 a;
@@ -5407,7 +5411,7 @@ BOOST_AUTO_TEST_CASE(abi_encodePackedV2_nestedArray)
BOOST_AUTO_TEST_CASE(abi_encodePackedV2_arrayOfStrings)
{
char const* sourceCode = R"(
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
string[] x;
event E(string[] indexed);
@@ -5441,7 +5445,7 @@ BOOST_AUTO_TEST_CASE(event_signature_in_library)
// This tests a bug that was present where the "internal signature"
// for structs was also used for events.
char const* sourceCode = R"(
pragma experimental ABIEncoderV2;
pragma abicoder v2;
library L {
struct S {
uint8 a;
@@ -5498,7 +5502,7 @@ BOOST_AUTO_TEST_CASE(abi_encode_with_selector)
BOOST_AUTO_TEST_CASE(abi_encode_with_selectorv2)
{
char const* sourceCode = R"(
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function f0() public pure returns (bytes memory) {
return abi.encodeWithSelector(0x12345678);
@@ -5588,7 +5592,7 @@ BOOST_AUTO_TEST_CASE(abi_encode_with_signature)
BOOST_AUTO_TEST_CASE(abi_encode_with_signaturev2)
{
char const* sourceCode = R"T(
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function f0() public pure returns (bytes memory) {
return abi.encodeWithSignature("f(uint256)");
@@ -132,11 +132,12 @@ bytes SolidityExecutionFramework::compileContract(
string SolidityExecutionFramework::addPreamble(string const& _sourceCode)
{
// Silence compiler version warning
string preamble = "pragma solidity >=0.0;\n";
string preamble = "pragma solidity >=0.0;\n// SPDX-License-Identifier: unlicensed\n";
if (
solidity::test::CommonOptions::get().useABIEncoderV2 &&
_sourceCode.find("pragma experimental ABIEncoderV2;") == string::npos
_sourceCode.find("pragma experimental ABIEncoderV2;") == string::npos &&
_sourceCode.find("pragma abicoder") == string::npos
)
preamble += "pragma experimental ABIEncoderV2;\n";
preamble += "pragma abicoder v2;\n";
return preamble + _sourceCode;
}
@@ -197,7 +197,7 @@ BOOST_AUTO_TEST_CASE(enum_external_type)
BOOST_AUTO_TEST_CASE(external_struct_signatures)
{
char const* text = R"(
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract Test {
enum ActionChoices { GoLeft, GoRight, GoStraight, Sit }
struct Simple { uint i; }
@@ -228,7 +228,7 @@ BOOST_AUTO_TEST_CASE(external_struct_signatures)
BOOST_AUTO_TEST_CASE(external_struct_signatures_in_libraries)
{
char const* text = R"(
pragma experimental ABIEncoderV2;
pragma abicoder v2;
library Test {
enum ActionChoices { GoLeft, GoRight, GoStraight, Sit }
struct Simple { uint i; }
+1 -1
View File
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
uint public a;
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
uint public a;
+1 -1
View File
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function exp_neg_one(uint exponent) public returns(int) {
+1 -1
View File
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function exp_neg_one(uint exponent) public returns(int) {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function enc_packed_bytes(bytes calldata data, uint256 start, uint256 end) external returns (bytes memory) {
return abi.encodePacked(data[start:end]);
@@ -1,6 +1,6 @@
// Tests that this will not end up using a "bytes0" type
// (which would assert)
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
@@ -1,5 +1,5 @@
// Tests that rational numbers (even negative ones) are encoded properly.
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
@@ -1,5 +1,5 @@
==== Source: A ====
pragma experimental ABIEncoderV2;
pragma abicoder v2;
struct Data {
uint a;
@@ -1,5 +1,5 @@
==== Source: A ====
pragma experimental ABIEncoderV2;
pragma abicoder v2;
struct Data {
uint value;
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function f(bool b) public pure returns (bool) { return b; }
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function f(uint a, bytes memory b, uint c)
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function g(uint256[] calldata) external pure returns (bytes memory) {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function f(uint256[] calldata s) external pure returns (bytes memory) {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function f(uint256[] calldata s) external pure returns (bytes memory) {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function f(uint8[][1][] calldata s) external pure returns (bytes memory) {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function f(uint256[][2][] calldata x) external returns (uint256) {
x[0]; // trigger bounds checks
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function f(uint256[][2][] calldata x) external returns (uint256) {
return 42;
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function f(function() external returns (uint)[] calldata s) external returns (uint, uint, uint) {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function f(uint256[][] calldata s) external pure returns (bytes memory) {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function f(uint256[3] calldata s) external pure returns (bytes memory) {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function f(uint8[1][][1] calldata s) external pure returns (bytes memory) {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function f(uint256[3] calldata s) external pure returns (bytes memory) {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
struct S { uint256[] a; }
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function f(uint256[] calldata s1, uint256[] calldata s2, bool which) external pure returns (bytes memory) {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function f(uint256[3] calldata s1, uint256[2] calldata s2, bool which) external pure returns (bytes memory) {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
struct S { uint256[] a; }
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
struct A {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
struct S { uint256 a; }
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function g(address x) external pure returns (uint256 r) {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function gggg(bool x) external pure returns (bool) {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function gg1(bytes1 x) external pure returns (bytes32) {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function f(uint16 a, int16 b, address c, bytes3 d, bool e)
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function ggg(uint8[] calldata s) external pure returns (bytes memory) {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
struct S { function() external f; }
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function ggg8(int8 x) external pure returns (int256) {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
struct S { uint8 a; bytes1 b; }
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function gggggggg(uint8[2] calldata s) external pure returns (bytes memory) {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function ggg8(uint8 x) external pure returns (uint256) {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function f(uint a, uint16[] memory b, uint c)
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function f(uint a, uint16[][] memory b, uint[2][][3] memory c, uint d)
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
enum E { A, B }
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function f(bytes memory a, bytes calldata b, uint[] memory c)
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
// tests encoding from storage arrays
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
struct S { C c; uint[] x; }
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
struct S { C c; }
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
struct S { function () external returns (uint) f; uint b; }
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
struct S { int a; uint b; bytes16 c; }
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
struct S { uint a; uint8 b; uint8 c; bytes2 d; }
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
struct S { int16 a; uint8 b; bytes2 c; }
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
struct S { function () external x; }
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function f(bytes calldata x) public returns (C[] memory) {
return abi.decode(x, (C[]));
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function test(uint256[][2] calldata a) external returns (uint256) {
return a.length;
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function test(uint256[][] calldata a) external returns (uint256) {
return a.length;
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function f(bytes[] calldata a, uint256 i) external returns (uint) {
return uint8(a[0][i]);
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract c {
uint256[][] a1;
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
struct S {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
struct S {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
struct S {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
uint256[] s;
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
struct S {
uint16 x;
bytes a;
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
bytes[] a;
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function g(uint[][2] calldata s) internal pure returns (uint, uint[] calldata) {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
struct S {
uint x;
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
// Checks that address types are properly cleaned before they are compared.
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
// Checks that bytesXX types are properly cleaned before they are compared.
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract test {
function a(bytes32 h, uint8 v, bytes32 r, bytes32 s) public returns (address addr) {
return ecrecover(h, v, r, s);
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
library L {
struct S { uint256 a; }
function f(S storage s) external returns (uint) { return s.a; }
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
library Lib {
struct Items {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C
{
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function f(uint256[][] calldata a) external returns (uint) {
return 42;
@@ -1,4 +1,4 @@
pragma experimental ABIEncoderV2;
pragma abicoder v2;
contract C {
function f(uint256[][2][] calldata x) external returns (uint256) {
x[0];

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