Adjust tests.

This commit is contained in:
chriseth 2018-05-23 15:39:26 +02:00 committed by Alex Beregszaszi
parent 23c4142005
commit 86a720b96a
26 changed files with 103 additions and 173 deletions

View File

@ -82,7 +82,7 @@ contract FixedFeeRegistrar is Registrar {
} }
} }
function disown(string _name, address _refund) onlyrecordowner(_name) { function disown(string _name, address _refund) onlyrecordowner(_name) {
delete m_recordData[uint(keccak256(_name)) / 8]; delete m_recordData[uint(keccak256(bytes(_name))) / 8];
if (!_refund.send(c_fee)) if (!_refund.send(c_fee))
throw; throw;
Changed(_name); Changed(_name);
@ -118,7 +118,7 @@ contract FixedFeeRegistrar is Registrar {
Record[2**253] m_recordData; Record[2**253] m_recordData;
function m_record(string _name) constant internal returns (Record storage o_record) { function m_record(string _name) constant internal returns (Record storage o_record) {
return m_recordData[uint(keccak256(_name)) / 8]; return m_recordData[uint(keccak256(bytes(_name))) / 8];
} }
uint constant c_fee = 69 ether; uint constant c_fee = 69 ether;
} }

View File

@ -398,7 +398,7 @@ contract Wallet is multisig, multiowned, daylimit {
return 0; return 0;
} }
// determine our operation hash. // determine our operation hash.
_r = keccak256(msg.data, block.number); _r = keccak256(abi.encodePacked(msg.data, block.number));
if (!confirm(_r) && m_txs[_r].to == 0x0000000000000000000000000000000000000000) { if (!confirm(_r) && m_txs[_r].to == 0x0000000000000000000000000000000000000000) {
m_txs[_r].to = _to; m_txs[_r].to = _to;
m_txs[_r].value = _value; m_txs[_r].value = _value;

View File

@ -152,7 +152,7 @@ BOOST_AUTO_TEST_CASE(simple_contract)
contract test { contract test {
bytes32 public shaValue; bytes32 public shaValue;
function f(uint a) { function f(uint a) {
shaValue = keccak256(a); shaValue = keccak256(abi.encodePacked(a));
} }
} }
)"; )";
@ -165,7 +165,7 @@ BOOST_AUTO_TEST_CASE(store_keccak256)
contract test { contract test {
bytes32 public shaValue; bytes32 public shaValue;
function test(uint a) { function test(uint a) {
shaValue = keccak256(a); shaValue = keccak256(abi.encodePacked(a));
} }
} }
)"; )";

View File

@ -1456,7 +1456,7 @@ BOOST_AUTO_TEST_CASE(multiple_elementary_accessors)
function test() { function test() {
data = 8; data = 8;
name = "Celina"; name = "Celina";
a_hash = keccak256(123); a_hash = keccak256("\x7b");
an_address = address(0x1337); an_address = address(0x1337);
super_secret_data = 42; super_secret_data = 42;
} }
@ -1992,7 +1992,7 @@ BOOST_AUTO_TEST_CASE(keccak256)
char const* sourceCode = R"( char const* sourceCode = R"(
contract test { contract test {
function a(bytes32 input) returns (bytes32 hash) { function a(bytes32 input) returns (bytes32 hash) {
return keccak256(input); return keccak256(abi.encodePacked(input));
} }
} }
)"; )";
@ -2011,7 +2011,7 @@ BOOST_AUTO_TEST_CASE(sha256)
char const* sourceCode = R"( char const* sourceCode = R"(
contract test { contract test {
function a(bytes32 input) returns (bytes32 sha256hash) { function a(bytes32 input) returns (bytes32 sha256hash) {
return sha256(input); return sha256(abi.encodePacked(input));
} }
} }
)"; )";
@ -2036,7 +2036,7 @@ BOOST_AUTO_TEST_CASE(ripemd)
char const* sourceCode = R"( char const* sourceCode = R"(
contract test { contract test {
function a(bytes32 input) returns (bytes32 sha256hash) { function a(bytes32 input) returns (bytes32 sha256hash) {
return ripemd160(input); return ripemd160(abi.encodePacked(input));
} }
} }
)"; )";
@ -2063,7 +2063,7 @@ BOOST_AUTO_TEST_CASE(packed_keccak256)
function a(bytes32 input) returns (bytes32 hash) { function a(bytes32 input) returns (bytes32 hash) {
var b = 65536; var b = 65536;
uint c = 256; uint c = 256;
return keccak256(8, input, b, input, c); return keccak256(abi.encodePacked(8, input, b, input, c));
} }
} }
)"; )";
@ -2093,9 +2093,9 @@ BOOST_AUTO_TEST_CASE(packed_keccak256_complex_types)
x[0] = y[0] = uint120(-2); x[0] = y[0] = uint120(-2);
x[1] = y[1] = uint120(-3); x[1] = y[1] = uint120(-3);
x[2] = y[2] = uint120(-4); x[2] = y[2] = uint120(-4);
hash1 = keccak256(x); hash1 = keccak256(abi.encodePacked(x));
hash2 = keccak256(y); hash2 = keccak256(abi.encodePacked(y));
hash3 = keccak256(this.f); hash3 = keccak256(abi.encodePacked(this.f));
} }
} }
)"; )";
@ -2115,7 +2115,7 @@ BOOST_AUTO_TEST_CASE(packed_sha256)
function a(bytes32 input) returns (bytes32 hash) { function a(bytes32 input) returns (bytes32 hash) {
var b = 65536; var b = 65536;
uint c = 256; uint c = 256;
return sha256(8, input, b, input, c); return sha256(abi.encodePacked(8, input, b, input, c));
} }
} }
)"; )";
@ -2142,7 +2142,7 @@ BOOST_AUTO_TEST_CASE(packed_ripemd160)
function a(bytes32 input) returns (bytes32 hash) { function a(bytes32 input) returns (bytes32 hash) {
var b = 65536; var b = 65536;
uint c = 256; uint c = 256;
return ripemd160(8, input, b, input, c); return ripemd160(abi.encodePacked(8, input, b, input, c));
} }
} }
)"; )";
@ -3082,13 +3082,13 @@ BOOST_AUTO_TEST_CASE(inherited_fallback_function)
BOOST_AUTO_TEST_CASE(default_fallback_throws) BOOST_AUTO_TEST_CASE(default_fallback_throws)
{ {
char const* sourceCode = R"( char const* sourceCode = R"YY(
contract A { contract A {
function f() returns (bool) { function f() returns (bool) {
return this.call(); return this.call("");
} }
} }
)"; )YY";
compileAndRun(sourceCode); compileAndRun(sourceCode);
ABI_CHECK(callContractFunction("f()"), encodeArgs(0)); ABI_CHECK(callContractFunction("f()"), encodeArgs(0));
} }
@ -3577,7 +3577,7 @@ BOOST_AUTO_TEST_CASE(sha256_empty)
char const* sourceCode = R"( char const* sourceCode = R"(
contract C { contract C {
function f() returns (bytes32) { function f() returns (bytes32) {
return sha256(); return sha256("");
} }
} }
)"; )";
@ -3590,7 +3590,7 @@ BOOST_AUTO_TEST_CASE(ripemd160_empty)
char const* sourceCode = R"( char const* sourceCode = R"(
contract C { contract C {
function f() returns (bytes20) { function f() returns (bytes20) {
return ripemd160(); return ripemd160("");
} }
} }
)"; )";
@ -3603,7 +3603,7 @@ BOOST_AUTO_TEST_CASE(keccak256_empty)
char const* sourceCode = R"( char const* sourceCode = R"(
contract C { contract C {
function f() returns (bytes32) { function f() returns (bytes32) {
return keccak256(); return keccak256("");
} }
} }
)"; )";
@ -3617,7 +3617,7 @@ BOOST_AUTO_TEST_CASE(keccak256_multiple_arguments)
contract c { contract c {
function foo(uint a, uint b, uint c) returns (bytes32 d) function foo(uint a, uint b, uint c) returns (bytes32 d)
{ {
d = keccak256(a, b, c); d = keccak256(abi.encodePacked(a, b, c));
} }
} }
)"; )";
@ -3638,7 +3638,7 @@ BOOST_AUTO_TEST_CASE(keccak256_multiple_arguments_with_numeric_literals)
contract c { contract c {
function foo(uint a, uint16 b) returns (bytes32 d) function foo(uint a, uint16 b) returns (bytes32 d)
{ {
d = keccak256(a, b, 145); d = keccak256(abi.encodePacked(a, b, 145));
} }
} }
)"; )";
@ -3663,7 +3663,7 @@ BOOST_AUTO_TEST_CASE(keccak256_multiple_arguments_with_string_literals)
} }
function bar(uint a, uint16 b) returns (bytes32 d) function bar(uint a, uint16 b) returns (bytes32 d)
{ {
d = keccak256(a, b, 145, "foo"); d = keccak256(abi.encodePacked(a, b, 145, "foo"));
} }
} }
)"; )";
@ -3702,7 +3702,7 @@ BOOST_AUTO_TEST_CASE(keccak256_with_bytes)
BOOST_AUTO_TEST_CASE(iterated_keccak256_with_bytes) BOOST_AUTO_TEST_CASE(iterated_keccak256_with_bytes)
{ {
char const* sourceCode = R"( char const* sourceCode = R"ABC(
contract c { contract c {
bytes data; bytes data;
function foo() returns (bytes32) function foo() returns (bytes32)
@ -3711,10 +3711,10 @@ BOOST_AUTO_TEST_CASE(iterated_keccak256_with_bytes)
data[0] = "x"; data[0] = "x";
data[1] = "y"; data[1] = "y";
data[2] = "z"; data[2] = "z";
return keccak256("b", keccak256(data), "a"); return keccak256(abi.encodePacked("b", keccak256(data), "a"));
} }
} }
)"; )ABC";
compileAndRun(sourceCode); compileAndRun(sourceCode);
ABI_CHECK(callContractFunction("foo()"), encodeArgs( ABI_CHECK(callContractFunction("foo()"), encodeArgs(
u256(dev::keccak256(bytes{'b'} + dev::keccak256("xyz").asBytes() + bytes{'a'})) u256(dev::keccak256(bytes{'b'} + dev::keccak256("xyz").asBytes() + bytes{'a'}))
@ -3733,7 +3733,7 @@ BOOST_AUTO_TEST_CASE(generic_call)
function doSend(address rec) returns (uint d) function doSend(address rec) returns (uint d)
{ {
bytes4 signature = bytes4(bytes32(keccak256("receive(uint256)"))); bytes4 signature = bytes4(bytes32(keccak256("receive(uint256)")));
rec.call.value(2)(signature, 23); rec.call.value(2)(abi.encodeWithSelector(signature, 23));
return receiver(rec).received(); return receiver(rec).received();
} }
} }
@ -3763,7 +3763,7 @@ BOOST_AUTO_TEST_CASE(generic_delegatecall)
function doSend(address rec) payable function doSend(address rec) payable
{ {
bytes4 signature = bytes4(bytes32(keccak256("receive(uint256)"))); bytes4 signature = bytes4(bytes32(keccak256("receive(uint256)")));
if (rec.delegatecall(signature, 23)) {} if (rec.delegatecall(abi.encodeWithSelector(signature, 23))) {}
} }
} }
)**"; )**";
@ -3860,7 +3860,7 @@ BOOST_AUTO_TEST_CASE(bytes_from_calldata_to_memory)
char const* sourceCode = R"( char const* sourceCode = R"(
contract C { contract C {
function f() returns (bytes32) { function f() returns (bytes32) {
return keccak256("abc", msg.data); return keccak256(abi.encodePacked("abc", msg.data));
} }
} }
)"; )";
@ -3929,15 +3929,13 @@ BOOST_AUTO_TEST_CASE(call_forward_bytes_length)
compileAndRun(sourceCode, 0, "sender"); compileAndRun(sourceCode, 0, "sender");
// No additional data, just function selector // No additional data, just function selector
ABI_CHECK(callContractFunction("viaCalldata()"), encodeArgs(0x20)); ABI_CHECK(callContractFunction("viaCalldata()"), encodeArgs(4));
// Should be this with 0.5.0: encodeArgs(4));
ABI_CHECK(callContractFunction("viaMemory()"), encodeArgs(4)); ABI_CHECK(callContractFunction("viaMemory()"), encodeArgs(4));
ABI_CHECK(callContractFunction("viaStorage()"), encodeArgs(4)); ABI_CHECK(callContractFunction("viaStorage()"), encodeArgs(4));
// Some additional unpadded data // Some additional unpadded data
bytes unpadded = asBytes(string("abc")); bytes unpadded = asBytes(string("abc"));
ABI_CHECK(callContractFunctionNoEncoding("viaCalldata()", unpadded), encodeArgs(0x20)); ABI_CHECK(callContractFunctionNoEncoding("viaCalldata()", unpadded), encodeArgs(7));
// Should be this with 0.5.0: encodeArgs(7));
ABI_CHECK(callContractFunctionNoEncoding("viaMemory()", unpadded), encodeArgs(7)); ABI_CHECK(callContractFunctionNoEncoding("viaMemory()", unpadded), encodeArgs(7));
ABI_CHECK(callContractFunctionNoEncoding("viaStorage()", unpadded), encodeArgs(7)); ABI_CHECK(callContractFunctionNoEncoding("viaStorage()", unpadded), encodeArgs(7));
} }
@ -6394,7 +6392,7 @@ BOOST_AUTO_TEST_CASE(reusing_memory)
mapping(uint => uint) map; mapping(uint => uint) map;
function f(uint x) returns (uint) { function f(uint x) returns (uint) {
map[x] = x; map[x] = x;
return (new Helper(uint(keccak256(this.g(map[x]))))).flag(); return (new Helper(uint(keccak256(abi.encodePacked(this.g(map[x])))))).flag();
} }
function g(uint a) returns (uint) function g(uint a) returns (uint)
{ {
@ -9382,7 +9380,7 @@ BOOST_AUTO_TEST_CASE(mutex)
// NOTE: It is very bad practice to write this function this way. // NOTE: It is very bad practice to write this function this way.
// Please refer to the documentation of how to do this properly. // Please refer to the documentation of how to do this properly.
if (amount > shares) throw; if (amount > shares) throw;
if (!msg.sender.call.value(amount)()) throw; if (!msg.sender.call.value(amount)("")) throw;
shares -= amount; shares -= amount;
return shares; return shares;
} }
@ -9390,7 +9388,7 @@ BOOST_AUTO_TEST_CASE(mutex)
// NOTE: It is very bad practice to write this function this way. // NOTE: It is very bad practice to write this function this way.
// Please refer to the documentation of how to do this properly. // Please refer to the documentation of how to do this properly.
if (amount > shares) throw; if (amount > shares) throw;
if (!msg.sender.call.value(amount)()) throw; if (!msg.sender.call.value(amount)("")) throw;
shares -= amount; shares -= amount;
return shares; return shares;
} }
@ -9463,7 +9461,7 @@ BOOST_AUTO_TEST_CASE(failing_ecrecover_invalid_input_proper)
function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s, uint blockExpired, bytes32 salt) function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s, uint blockExpired, bytes32 salt)
returns (address) returns (address)
{ {
require(hash == keccak256(blockExpired, salt)); require(hash == keccak256(abi.encodePacked(blockExpired, salt)));
return ecrecover(hash, v, r, s); return ecrecover(hash, v, r, s);
} }
} }
@ -9495,7 +9493,7 @@ BOOST_AUTO_TEST_CASE(failing_ecrecover_invalid_input_asm)
BOOST_AUTO_TEST_CASE(calling_nonexisting_contract_throws) BOOST_AUTO_TEST_CASE(calling_nonexisting_contract_throws)
{ {
char const* sourceCode = R"( char const* sourceCode = R"YY(
contract D { function g(); } contract D { function g(); }
contract C { contract C {
D d = D(0x1212); D d = D(0x1212);
@ -9508,11 +9506,11 @@ BOOST_AUTO_TEST_CASE(calling_nonexisting_contract_throws)
return 7; return 7;
} }
function h() returns (uint) { function h() returns (uint) {
d.call(); // this does not throw (low-level) d.call(""); // this does not throw (low-level)
return 7; return 7;
} }
} }
)"; )YY";
compileAndRun(sourceCode, 0, "C"); compileAndRun(sourceCode, 0, "C");
ABI_CHECK(callContractFunction("f()"), encodeArgs()); ABI_CHECK(callContractFunction("f()"), encodeArgs());
ABI_CHECK(callContractFunction("g()"), encodeArgs()); ABI_CHECK(callContractFunction("g()"), encodeArgs());
@ -11516,17 +11514,17 @@ BOOST_AUTO_TEST_CASE(inlineasm_empty_let)
BOOST_AUTO_TEST_CASE(bare_call_invalid_address) BOOST_AUTO_TEST_CASE(bare_call_invalid_address)
{ {
char const* sourceCode = R"( char const* sourceCode = R"YY(
contract C { contract C {
/// Calling into non-existant account is successful (creates the account) /// Calling into non-existant account is successful (creates the account)
function f() external returns (bool) { function f() external returns (bool) {
return address(0x4242).call(); return address(0x4242).call("");
} }
function h() external returns (bool) { function h() external returns (bool) {
return address(0x4242).delegatecall(); return address(0x4242).delegatecall("");
} }
} }
)"; )YY";
compileAndRun(sourceCode, 0, "C"); compileAndRun(sourceCode, 0, "C");
ABI_CHECK(callContractFunction("f()"), encodeArgs(u256(1))); ABI_CHECK(callContractFunction("f()"), encodeArgs(u256(1)));
ABI_CHECK(callContractFunction("h()"), encodeArgs(u256(1))); ABI_CHECK(callContractFunction("h()"), encodeArgs(u256(1)));
@ -11544,13 +11542,13 @@ BOOST_AUTO_TEST_CASE(delegatecall_return_value)
return value; return value;
} }
function get_delegated() external returns (bool) { function get_delegated() external returns (bool) {
return this.delegatecall(bytes4(keccak256("get()"))); return this.delegatecall(abi.encodeWithSignature("get()"));
} }
function assert0() external view { function assert0() external view {
assert(value == 0); assert(value == 0);
} }
function assert0_delegated() external returns (bool) { function assert0_delegated() external returns (bool) {
return this.delegatecall(bytes4(keccak256("assert0()"))); return this.delegatecall(abi.encodeWithSignature("assert0()"));
} }
} }
)DELIMITER"; )DELIMITER";

View File

@ -265,18 +265,18 @@ BOOST_AUTO_TEST_CASE(storage_write_in_loops)
// Information in joining branches is not retained anymore. // Information in joining branches is not retained anymore.
BOOST_AUTO_TEST_CASE(retain_information_in_branches) BOOST_AUTO_TEST_CASE(retain_information_in_branches)
{ {
// This tests that the optimizer knows that we already have "z == keccak256(y)" inside both branches. // This tests that the optimizer knows that we already have "z == keccak256(abi.encodePacked(y))" inside both branches.
char const* sourceCode = R"( char const* sourceCode = R"(
contract c { contract c {
bytes32 d; bytes32 d;
uint a; uint a;
function f(uint x, bytes32 y) returns (uint r_a, bytes32 r_d) { function f(uint x, bytes32 y) returns (uint r_a, bytes32 r_d) {
bytes32 z = keccak256(y); bytes32 z = keccak256(abi.encodePacked(y));
if (x > 8) { if (x > 8) {
z = keccak256(y); z = keccak256(abi.encodePacked(y));
a = x; a = x;
} else { } else {
z = keccak256(y); z = keccak256(abi.encodePacked(y));
a = x; a = x;
} }
r_a = a; r_a = a;
@ -313,19 +313,19 @@ BOOST_AUTO_TEST_CASE(store_tags_as_unions)
contract test { contract test {
bytes32 data; bytes32 data;
function f(uint x, bytes32 y) external returns (uint r_a, bytes32 r_d) { function f(uint x, bytes32 y) external returns (uint r_a, bytes32 r_d) {
r_d = keccak256(y); r_d = keccak256(abi.encodePacked(y));
shared(y); shared(y);
r_d = keccak256(y); r_d = keccak256(abi.encodePacked(y));
r_a = 5; r_a = 5;
} }
function g(uint x, bytes32 y) external returns (uint r_a, bytes32 r_d) { function g(uint x, bytes32 y) external returns (uint r_a, bytes32 r_d) {
r_d = keccak256(y); r_d = keccak256(abi.encodePacked(y));
shared(y); shared(y);
r_d = bytes32(uint(keccak256(y)) + 2); r_d = bytes32(uint(keccak256(abi.encodePacked(y))) + 2);
r_a = 7; r_a = 7;
} }
function shared(bytes32 y) internal { function shared(bytes32 y) internal {
data = keccak256(y); data = keccak256(abi.encodePacked(y));
} }
} }
)"; )";
@ -370,7 +370,7 @@ BOOST_AUTO_TEST_CASE(sequence_number_for_calls)
// to storage), so the sequence number should be incremented. // to storage), so the sequence number should be incremented.
char const* sourceCode = R"( char const* sourceCode = R"(
contract test { contract test {
function f(string a, string b) returns (bool) { return sha256(a) == sha256(b); } function f(string a, string b) returns (bool) { return sha256(bytes(a)) == sha256(bytes(b)); }
} }
)"; )";
compileBothVersions(sourceCode); compileBothVersions(sourceCode);

View File

@ -1,12 +1,10 @@
contract C { contract C {
uint constant a = b * c; uint constant a = b * c;
uint constant b = 7; uint constant b = 7;
uint constant c = b + uint(keccak256(d)); uint constant c = b + uint(keccak256(abi.encodePacked(d)));
uint constant d = 2 + a; uint constant d = 2 + a;
} }
// ---- // ----
// Warning: (98-110): This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data.
// Warning: (98-110): The provided argument of type uint256 is not implicitly convertible to expected type bytes memory.
// TypeError: (17-40): The value of the constant a has a cyclic dependency via c. // TypeError: (17-40): The value of the constant a has a cyclic dependency via c.
// TypeError: (71-111): The value of the constant c has a cyclic dependency via d. // TypeError: (71-129): The value of the constant c has a cyclic dependency via d.
// TypeError: (117-140): The value of the constant d has a cyclic dependency via a. // TypeError: (135-158): The value of the constant d has a cyclic dependency via a.

View File

@ -1,9 +1,7 @@
contract C { contract C {
uint constant a = b * c; uint constant a = b * c;
uint constant b = 7; uint constant b = 7;
uint constant c = 4 + uint(keccak256(d)); uint constant c = 4 + uint(keccak256(abi.encode(d)));
uint constant d = 2 + b; uint constant d = 2 + b;
} }
// ---- // ----
// Warning: (98-110): This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data.
// Warning: (98-110): The provided argument of type uint256 is not implicitly convertible to expected type bytes memory.

View File

@ -1,6 +1,6 @@
contract test { contract test {
function f() pure public { function f() pure public {
bytes32 x = sha3(); bytes32 x = sha3("");
x; x;
} }
function g() public { function g() public {
@ -8,5 +8,5 @@ contract test {
} }
} }
// ---- // ----
// TypeError: (58-64): "sha3" has been deprecated in favour of "keccak256" // TypeError: (58-66): "sha3" has been deprecated in favour of "keccak256"
// TypeError: (99-150): "suicide" has been deprecated in favour of "selfdestruct" // TypeError: (101-152): "suicide" has been deprecated in favour of "selfdestruct"

View File

@ -0,0 +1,5 @@
contract C {
function f() pure public { abi.encode(2**500); }
}
// ----
// TypeError: (55-61): Invalid rational number (too large or division by zero).

View File

@ -1,7 +0,0 @@
contract C {
function f() public { keccak256(2**500); }
}
// ----
// Warning: (39-56): This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data.
// Warning: (39-56): The provided argument of type int_const 3273...(143 digits omitted)...9376 is not implicitly convertible to expected type bytes memory.
// TypeError: (49-55): Invalid rational number (too large or division by zero).

View File

@ -2,8 +2,8 @@ contract C {
function f() public { function f() public {
address addr; address addr;
uint balance = addr.balance; uint balance = addr.balance;
bool callRet = addr.call(); bool callRet = addr.call("");
bool delegatecallRet = addr.delegatecall(); bool delegatecallRet = addr.delegatecall("");
bool sendRet = addr.send(1); bool sendRet = addr.send(1);
addr.transfer(1); addr.transfer(1);
balance; callRet; delegatecallRet; sendRet; balance; callRet; delegatecallRet; sendRet;

View File

@ -4,4 +4,4 @@ contract C {
} }
} }
// ---- // ----
// TypeError: (47-60): Member "gas" not found or not visible after argument-dependent lookup in function () pure returns (bytes32) // TypeError: (47-60): Member "gas" not found or not visible after argument-dependent lookup in function (bytes memory) pure returns (bytes32)

View File

@ -4,4 +4,4 @@ contract C {
} }
} }
// ---- // ----
// TypeError: (47-57): Member "gas" not found or not visible after argument-dependent lookup in function () pure returns (bytes32) // TypeError: (47-57): Member "gas" not found or not visible after argument-dependent lookup in function (bytes memory) pure returns (bytes32)

View File

@ -4,4 +4,4 @@ contract C {
} }
} }
// ---- // ----
// TypeError: (47-60): Member "gas" not found or not visible after argument-dependent lookup in function () pure returns (bytes20) // TypeError: (47-60): Member "gas" not found or not visible after argument-dependent lookup in function (bytes memory) pure returns (bytes20)

View File

@ -4,4 +4,4 @@ contract C {
} }
} }
// ---- // ----
// TypeError: (47-62): Member "value" not found or not visible after argument-dependent lookup in function () pure returns (bytes32) - did you forget the "payable" modifier? // TypeError: (47-62): Member "value" not found or not visible after argument-dependent lookup in function (bytes memory) pure returns (bytes32) - did you forget the "payable" modifier?

View File

@ -4,4 +4,4 @@ contract C {
} }
} }
// ---- // ----
// TypeError: (47-59): Member "value" not found or not visible after argument-dependent lookup in function () pure returns (bytes32) - did you forget the "payable" modifier? // TypeError: (47-59): Member "value" not found or not visible after argument-dependent lookup in function (bytes memory) pure returns (bytes32) - did you forget the "payable" modifier?

View File

@ -4,4 +4,4 @@ contract C {
} }
} }
// ---- // ----
// TypeError: (47-62): Member "value" not found or not visible after argument-dependent lookup in function () pure returns (bytes20) - did you forget the "payable" modifier? // TypeError: (47-62): Member "value" not found or not visible after argument-dependent lookup in function (bytes memory) pure returns (bytes20) - did you forget the "payable" modifier?

View File

@ -7,9 +7,6 @@ contract C {
function g(bytes32) pure internal {} function g(bytes32) pure internal {}
} }
// ---- // ----
// Warning: (54-72): This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data. // TypeError: (64-71): Invalid type for argument in function call. Invalid implicit conversion from uint256 to bytes memory requested.
// Warning: (54-72): The provided argument of type uint256 is not implicitly convertible to expected type bytes memory. // TypeError: (92-99): Invalid type for argument in function call. Invalid implicit conversion from uint256 to bytes memory requested.
// Warning: (85-100): This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data. // TypeError: (123-130): Invalid type for argument in function call. Invalid implicit conversion from uint256 to bytes memory requested.
// Warning: (85-100): The provided argument of type uint256 is not implicitly convertible to expected type bytes memory.
// Warning: (113-131): This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data.
// Warning: (113-131): The provided argument of type uint256 is not implicitly convertible to expected type bytes memory.

View File

@ -1,13 +1,13 @@
contract C { contract C {
function f() public pure { function f() public pure {
bool a = address(this).call(address(this).delegatecall, super); bool a = address(this).call(abi.encode(address(this).delegatecall, super));
bool b = address(this).delegatecall(log0, tx, mulmod); bool b = address(this).delegatecall(abi.encode(log0, tx, mulmod));
a; b; a; b;
} }
} }
// ---- // ----
// TypeError: (80-106): This type cannot be encoded. // TypeError: (91-117): This type cannot be encoded.
// TypeError: (108-113): This type cannot be encoded. // TypeError: (119-124): This type cannot be encoded.
// TypeError: (160-164): This type cannot be encoded. // TypeError: (183-187): This type cannot be encoded.
// TypeError: (166-168): This type cannot be encoded. // TypeError: (189-191): This type cannot be encoded.
// TypeError: (170-176): This type cannot be encoded. // TypeError: (193-199): This type cannot be encoded.

View File

@ -4,11 +4,10 @@ contract C {
struct T { uint y; } struct T { uint y; }
T t; T t;
function f() public view { function f() public view {
bytes32 a = sha256(s, t); bytes32 a = sha256(abi.encodePacked(s, t));
a; a;
} }
} }
// ---- // ----
// Warning: (132-144): This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data. // TypeError: (156-157): This type cannot be encoded.
// TypeError: (139-140): This type cannot be encoded. // TypeError: (159-160): This type cannot be encoded.
// TypeError: (142-143): This type cannot be encoded.

View File

@ -6,12 +6,11 @@ contract C {
struct T { uint y; } struct T { uint y; }
T t; T t;
function f() public view { function f() public view {
bytes32 a = sha256(s, t); bytes32 a = sha256(abi.encodePacked(s, t));
a; a;
} }
} }
// ---- // ----
// Warning: (0-33): Experimental features are turned on. Do not use experimental features on live deployments. // Warning: (0-33): Experimental features are turned on. Do not use experimental features on live deployments.
// Warning: (167-179): This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data. // TypeError: (191-192): This type cannot be encoded.
// TypeError: (174-175): This type cannot be encoded. // TypeError: (194-195): This type cannot be encoded.
// TypeError: (177-178): This type cannot be encoded.

View File

@ -5,12 +5,13 @@ contract C {
T t; T t;
enum A { X, Y } enum A { X, Y }
function f() public pure { function f() public pure {
bool a = address(this).delegatecall(S, A, A.X, T, uint, uint[]); bytes memory a = abi.encodePacked(S, A, A.X, T, uint, uint[]);
a;
} }
} }
// ---- // ----
// TypeError: (176-177): This type cannot be encoded. // TypeError: (174-175): This type cannot be encoded.
// TypeError: (179-180): This type cannot be encoded. // TypeError: (177-178): This type cannot be encoded.
// TypeError: (187-188): This type cannot be encoded. // TypeError: (185-186): This type cannot be encoded.
// TypeError: (190-194): This type cannot be encoded. // TypeError: (188-192): This type cannot be encoded.
// TypeError: (196-202): This type cannot be encoded. // TypeError: (194-200): This type cannot be encoded.

View File

@ -1,26 +1,8 @@
contract C { contract C {
function f() pure public returns (bytes32) {
return keccak256(1);
}
function h() pure public returns (bytes32) {
return sha256(1);
}
function j() pure public returns (bytes32) {
return ripemd160(1);
}
function k() pure public returns (bytes) { function k() pure public returns (bytes) {
return abi.encodePacked(1); return abi.encodePacked(1);
} }
} }
// ---- // ----
// Warning: (87-88): The type of "int_const 1" was inferred as uint8. This is probably not desired. Use an explicit type to silence this warning. // Warning: (92-93): The type of "int_const 1" was inferred as uint8. This is probably not desired. Use an explicit type to silence this warning.
// Warning: (77-89): This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data.
// Warning: (77-89): The provided argument of type int_const 1 is not implicitly convertible to expected type bytes memory.
// Warning: (168-169): The type of "int_const 1" was inferred as uint8. This is probably not desired. Use an explicit type to silence this warning.
// Warning: (161-170): This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data.
// Warning: (161-170): The provided argument of type int_const 1 is not implicitly convertible to expected type bytes memory.
// Warning: (252-253): The type of "int_const 1" was inferred as uint8. This is probably not desired. Use an explicit type to silence this warning.
// Warning: (242-254): This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data.
// Warning: (242-254): The provided argument of type int_const 1 is not implicitly convertible to expected type bytes memory.
// Warning: (341-342): The type of "int_const 1" was inferred as uint8. This is probably not desired. Use an explicit type to silence this warning.

View File

@ -1,34 +1,9 @@
pragma experimental "v0.5.0"; pragma experimental "v0.5.0";
contract C { contract C {
function f() pure public returns (bytes32) {
return keccak256(1);
}
function g() pure public returns (bytes32) {
return sha3(1);
}
function h() pure public returns (bytes32) {
return sha256(1);
}
function j() pure public returns (bytes32) {
return ripemd160(1);
}
function k() pure public returns (bytes) { function k() pure public returns (bytes) {
return abi.encodePacked(1); return abi.encodePacked(1);
} }
} }
// ---- // ----
// TypeError: (117-118): Cannot perform packed encoding for a literal. Please convert it to an explicit type first. // TypeError: (122-123): Cannot perform packed encoding for a literal. Please convert it to an explicit type first.
// TypeError: (107-119): This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data.
// TypeError: (107-119): The provided argument of type int_const 1 is not implicitly convertible to expected type bytes memory.
// TypeError: (191-198): "sha3" has been deprecated in favour of "keccak256"
// TypeError: (196-197): Cannot perform packed encoding for a literal. Please convert it to an explicit type first.
// TypeError: (191-198): This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data.
// TypeError: (191-198): The provided argument of type int_const 1 is not implicitly convertible to expected type bytes memory.
// TypeError: (277-278): Cannot perform packed encoding for a literal. Please convert it to an explicit type first.
// TypeError: (270-279): This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data.
// TypeError: (270-279): The provided argument of type int_const 1 is not implicitly convertible to expected type bytes memory.
// TypeError: (361-362): Cannot perform packed encoding for a literal. Please convert it to an explicit type first.
// TypeError: (351-363): This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data.
// TypeError: (351-363): The provided argument of type int_const 1 is not implicitly convertible to expected type bytes memory.
// TypeError: (450-451): Cannot perform packed encoding for a literal. Please convert it to an explicit type first.

View File

@ -1,13 +1,4 @@
contract C { contract C {
function f() pure public returns (bytes32) {
return keccak256(uint8(1));
}
function h() pure public returns (bytes32) {
return sha256(uint8(1));
}
function j() pure public returns (bytes32) {
return ripemd160(uint8(1));
}
function k() pure public returns (bytes) { function k() pure public returns (bytes) {
return abi.encodePacked(uint8(1)); return abi.encodePacked(uint8(1));
} }
@ -16,9 +7,3 @@ contract C {
} }
} }
// ---- // ----
// Warning: (77-96): This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data.
// Warning: (77-96): The provided argument of type uint8 is not implicitly convertible to expected type bytes memory.
// Warning: (168-184): This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data.
// Warning: (168-184): The provided argument of type uint8 is not implicitly convertible to expected type bytes memory.
// Warning: (256-275): This function only accepts a single "bytes" argument. Please use "abi.encodePacked(...)" or a similar function to encode the data.
// Warning: (256-275): The provided argument of type uint8 is not implicitly convertible to expected type bytes memory.

View File

@ -3,13 +3,13 @@ contract C {
address(this).transfer(1); address(this).transfer(1);
require(address(this).send(2)); require(address(this).send(2));
selfdestruct(address(this)); selfdestruct(address(this));
require(address(this).delegatecall()); require(address(this).delegatecall(""));
require(address(this).call()); require(address(this).call(""));
} }
function g() pure public { function g() pure public {
bytes32 x = keccak256("abc"); bytes32 x = keccak256("abc");
bytes32 y = sha256("abc"); bytes32 y = sha256("abc");
address z = ecrecover(1, 2, 3, 4); address z = ecrecover(bytes32(1), uint8(2), bytes32(3), bytes32(4));
require(true); require(true);
assert(true); assert(true);
x; y; z; x; y; z;