Allow reading of immutables during construction time

This commit is contained in:
Marenz
2021-08-19 13:59:05 +02:00
committed by chriseth
parent 729db521a9
commit 121fd40f74
40 changed files with 233 additions and 55 deletions
@@ -0,0 +1,20 @@
contract C {
uint immutable public a;
uint immutable public b;
uint immutable public c;
uint immutable public d;
constructor() {
a = 1;
b = a;
c = b;
d = c;
}
}
// ====
// compileViaYul: also
// ----
// a() -> 1
// b() -> 1
// c() -> 1
// d() -> 1
@@ -0,0 +1,22 @@
contract A {
uint8 immutable a;
uint8 x;
constructor() {
a = 3;
x = readA();
}
function readX() public view returns (uint8) {
return x;
}
function readA() public view returns (uint8) {
return a;
}
}
// ====
// compileViaYul: also
// ----
// readX() -> 3
// readA() -> 3
@@ -0,0 +1,17 @@
contract A {
uint8 immutable a;
uint8 x;
constructor() {
a = 3;
x = a;
}
function readX() public view returns (uint8) {
return x;
}
}
// ====
// compileViaYul: also
// ----
// readX() -> 3