Disallow external function pointers as immutables.

This commit is contained in:
Daniel Kirchner
2020-04-03 11:56:51 +02:00
parent 00acaadd10
commit d68c526eaa
4 changed files with 13 additions and 32 deletions
@@ -1,12 +0,0 @@
contract C {
function() external returns (uint, uint) immutable public x = this.f;
function f() external pure returns (uint, uint) {
return (1, 2);
}
function test() external returns (uint, uint) {
return this.x()();
}
}
// ----
// test() -> 1, 2
@@ -1,20 +0,0 @@
contract D {
function f() external view returns (uint256) {
return 42;
}
}
contract C {
D d;
function() external view returns(uint256) immutable z;
constructor() public {
d = new D();
z = d.f;
}
function f() public view returns (uint256) {
assert(z.address == address(d));
assert(z.selector == D.f.selector);
return z();
}
}
// ----
// f() -> 42
@@ -0,0 +1,5 @@
contract C {
function() external immutable f;
}
// ----
// TypeError: (17-48): Immutable variables of external function type are not yet supported.