solidity/test/libsolidity/semanticTests/immutable/multi_creation.sol

37 lines
634 B
Solidity
Raw Normal View History

2020-03-12 16:32:10 +00:00
contract A {
uint immutable a;
2020-06-23 12:14:24 +00:00
constructor() {
2020-03-12 16:32:10 +00:00
a = 7;
}
function f() public view returns (uint) { return a; }
}
contract B {
uint immutable a;
2020-06-23 12:14:24 +00:00
constructor() {
2020-03-12 16:32:10 +00:00
a = 5;
}
function f() public view returns (uint) { return a; }
}
contract C {
uint immutable a;
uint public x;
uint public y;
2020-06-23 12:14:24 +00:00
constructor() {
2020-03-12 16:32:10 +00:00
a = 3;
x = (new A()).f();
y = (new B()).f();
}
function f() public returns (uint256, uint, uint) {
return (a, (new A()).f(), (new B()).f());
}
}
// ====
// compileViaYul: also
2020-03-12 16:32:10 +00:00
// ----
// f() -> 3, 7, 5
// gas irOptimized: 127347
// gas legacy: 151334
2021-11-04 17:20:10 +00:00
// gas legacyOptimized: 125166
2020-03-12 16:32:10 +00:00
// x() -> 7
// y() -> 5