Split fallback function and introduce "fallback()" and "receive()" syntax.

This commit is contained in:
Daniel Kirchner
2019-11-04 17:17:58 +01:00
parent 3d625cc239
commit 3321fc56ea
137 changed files with 1340 additions and 386 deletions
@@ -0,0 +1,17 @@
contract C {
uint x;
uint y;
fallback () payable external { ++x; }
receive () payable external { ++y; }
function f() external returns (uint, uint) { return (x, y); }
}
// ----
// f() -> 0, 0
// () ->
// f() -> 0, 1
// (), 1 ether ->
// f() -> 0, 2
// (): 1 ->
// f() -> 1, 2
// (), 1 ether: 1 ->
// f() -> 2, 2
@@ -0,0 +1,10 @@
contract A {
uint data;
fallback() external { data = 1; }
function getData() public returns (uint r) { return data; }
}
contract B is A {}
// ----
// getData() -> 0
// (): 42 ->
// getData() -> 1
@@ -0,0 +1,17 @@
contract A {
uint public x;
// Signature is d88e0b00
function fow() public { x = 3; }
fallback () external { x = 2; }
}
// ----
// (): hex"d88e0b"
// x() -> 2
// (): hex"d88e0b00"
// x() -> 3
// (): hex"d88e"
// x() -> 2
// (): hex"d88e0b00"
// x() -> 3
// (): hex"d8"
// x() -> 2