mirror of
https://github.com/pezkuwichain/revive.git
synced 2026-04-26 01:47:56 +00:00
64 lines
1.2 KiB
Solidity
64 lines
1.2 KiB
Solidity
// SPDX-License-Identifier: MIT
|
|
pragma solidity ^0.8;
|
|
|
|
/* runner.json
|
|
{
|
|
"differential": true,
|
|
"actions": [
|
|
{
|
|
"Upload": {
|
|
"code": {
|
|
"Solidity": {
|
|
"contract": "ImmutablesTester"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"Instantiate": {
|
|
"code": {
|
|
"Solidity": {
|
|
"contract": "Immutables"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"Call": {
|
|
"dest": {
|
|
"Instantiated": 0
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
*/
|
|
|
|
contract ImmutablesTester {
|
|
// Read should work in the runtime code
|
|
uint public immutable foo;
|
|
// Read should work in the runtime code
|
|
uint public immutable bar;
|
|
// Read should work in the runtime code
|
|
uint public immutable zoo;
|
|
|
|
// Assign and read should work in the constructor
|
|
constructor(uint _foo) payable {
|
|
foo = _foo;
|
|
bar = foo + 1;
|
|
zoo = bar + 2;
|
|
|
|
assert(zoo == _foo + 3);
|
|
}
|
|
}
|
|
|
|
contract Immutables {
|
|
fallback() external {
|
|
ImmutablesTester tester = new ImmutablesTester(127);
|
|
|
|
assert(tester.foo() == 127);
|
|
assert(tester.bar() == tester.foo() + 1);
|
|
assert(tester.zoo() == tester.bar() + 2);
|
|
}
|
|
}
|