Update tests.

This commit is contained in:
Daniel Kirchner 2018-07-10 12:14:20 +02:00
parent 36022493df
commit afa5f528f5
7 changed files with 17 additions and 50 deletions

View File

@ -7895,7 +7895,7 @@ BOOST_AUTO_TEST_CASE(tuples)
if (a != 1 || b != 2 || c[0] != 3) return 2; if (a != 1 || b != 2 || c[0] != 3) return 2;
(a, b) = (b, a); (a, b) = (b, a);
if (a != 2 || b != 1) return 3; if (a != 2 || b != 1) return 3;
(a, , b, ) = (8, 9, 10, 11, 12); (a, , b, , ) = (8, 9, 10, 11, 12);
if (a != 8 || b != 10) return 4; if (a != 8 || b != 10) return 4;
} }
} }
@ -7983,7 +7983,7 @@ BOOST_AUTO_TEST_CASE(destructuring_assignment)
if (loc != 3) return 9; if (loc != 3) return 9;
if (memArray.length != arrayData.length) return 10; if (memArray.length != arrayData.length) return 10;
bytes memory memBytes; bytes memory memBytes;
(x, memBytes, y[2], ) = (456, s, 789, 101112, 131415); (x, memBytes, y[2], , ) = (456, s, 789, 101112, 131415);
if (x != 456 || memBytes.length != s.length || y[2] != 789) return 11; if (x != 456 || memBytes.length != s.length || y[2] != 789) return 11;
} }
} }
@ -7992,31 +7992,6 @@ BOOST_AUTO_TEST_CASE(destructuring_assignment)
ABI_CHECK(callContractFunction("f(bytes)", u256(0x20), u256(5), string("abcde")), encodeArgs(u256(0))); ABI_CHECK(callContractFunction("f(bytes)", u256(0x20), u256(5), string("abcde")), encodeArgs(u256(0)));
} }
BOOST_AUTO_TEST_CASE(destructuring_assignment_wildcard)
{
char const* sourceCode = R"(
contract C {
function f() public returns (uint) {
uint a;
uint b;
uint c;
(a,) = (1,);
if (a != 1) return 1;
(,b) = (2,3,4);
if (b != 4) return 2;
(, c,) = (5,6,7);
if (c != 6) return 3;
(a, b,) = (11, 12, 13);
if (a != 11 || b != 12) return 4;
(, a, b) = (11, 12, 13);
if (a != 12 || b != 13) return 5;
}
}
)";
compileAndRun(sourceCode);
ABI_CHECK(callContractFunction("f()"), encodeArgs(u256(0)));
}
BOOST_AUTO_TEST_CASE(lone_struct_array_type) BOOST_AUTO_TEST_CASE(lone_struct_array_type)
{ {
char const* sourceCode = R"( char const* sourceCode = R"(

View File

@ -0,0 +1,11 @@
contract C {
function f() public pure returns (uint, uint, bytes32) {
uint a;
bytes32 b;
(a,) = f();
(,b) = f();
}
}
// ----
// TypeError: (103-106): Type tuple(uint256,uint256,bytes32) is not implicitly convertible to expected type tuple(uint256,).
// TypeError: (117-120): Type tuple(uint256,uint256,bytes32) is not implicitly convertible to expected type tuple(,bytes32).

View File

@ -6,5 +6,5 @@ contract C {
} }
} }
// ---- // ----
// TypeError: (89-101): Type tuple(int_const 1,int_const 2,struct C.S storage ref,struct C.S storage ref) is not implicitly convertible to expected type tuple(,struct C.S storage ref,struct C.S storage ref).
// Warning: (79-101): This assignment performs two copies to storage. Since storage copies do not first copy to a temporary location, one of them might be overwritten before the second is executed and thus may have unexpected effects. It is safer to perform the copies separately or assign to storage pointers first. // Warning: (79-101): This assignment performs two copies to storage. Since storage copies do not first copy to a temporary location, one of them might be overwritten before the second is executed and thus may have unexpected effects. It is safer to perform the copies separately or assign to storage pointers first.
// Warning: (79-101): Different number of components on the left hand side (3) than on the right hand side (4).

View File

@ -6,5 +6,5 @@ contract C {
} }
} }
// ---- // ----
// TypeError: (90-102): Type tuple(struct C.S storage ref,struct C.S storage ref,int_const 1,int_const 2) is not implicitly convertible to expected type tuple(struct C.S storage ref,struct C.S storage ref,).
// Warning: (79-102): This assignment performs two copies to storage. Since storage copies do not first copy to a temporary location, one of them might be overwritten before the second is executed and thus may have unexpected effects. It is safer to perform the copies separately or assign to storage pointers first. // Warning: (79-102): This assignment performs two copies to storage. Since storage copies do not first copy to a temporary location, one of them might be overwritten before the second is executed and thus may have unexpected effects. It is safer to perform the copies separately or assign to storage pointers first.
// Warning: (79-102): Different number of components on the left hand side (3) than on the right hand side (4).

View File

@ -8,5 +8,5 @@ contract C {
} }
} }
// ---- // ----
// TypeError: (126-136): Different number of components on the left hand side (2) than on the right hand side (3). // TypeError: (133-136): Type tuple(uint256,uint256,bytes32) is not implicitly convertible to expected type tuple(uint256,).
// TypeError: (140-150): Different number of components on the left hand side (2) than on the right hand side (3). // TypeError: (147-150): Type tuple(uint256,uint256,bytes32) is not implicitly convertible to expected type tuple(,bytes32).

View File

@ -1,8 +0,0 @@
contract C {
function f() public pure {
uint a;
(a,) = (uint(1),);
}
}
// ----
// Warning: (53-70): Different number of components on the left hand side (2) than on the right hand side (1).

View File

@ -1,11 +0,0 @@
contract C {
function f() public pure returns (uint, uint, bytes32) {
uint a;
bytes32 b;
(a,) = f();
(,b) = f();
}
}
// ----
// Warning: (96-106): Different number of components on the left hand side (2) than on the right hand side (3).
// Warning: (110-120): Different number of components on the left hand side (2) than on the right hand side (3).