solidity/test/libsolidity/semanticTests/functionCall/gas_and_value_brace_syntax.sol
Daniel Kirchner 44da8507b1 Change default EVM version to Shanghai.
Co-authored-by: Rodrigo Q. Saramago <rodrigoqsaramago@gmail.com>
2023-05-08 16:34:23 +02:00

47 lines
1.1 KiB
Solidity

contract helper {
bool flag;
function getBalance() payable public returns(uint256 myBalance) {
return address(this).balance;
}
function setFlag() public {
flag = true;
}
function getFlag() public returns(bool fl) {
return flag;
}
}
contract test {
helper h;
constructor() payable {
h = new helper();
}
function sendAmount(uint amount) public payable returns(uint256 bal) {
return h.getBalance{value: amount}();
}
function outOfGas() public returns(bool ret) {
h.setFlag {
gas: 2
}(); // should fail due to OOG
return true;
}
function checkState() public returns(bool flagAfter, uint myBal) {
flagAfter = h.getFlag();
myBal = address(this).balance;
}
}
// ----
// constructor(), 20 wei ->
// gas irOptimized: 260040
// gas legacy: 391566
// gas legacyOptimized: 268079
// sendAmount(uint256): 5 -> 5
// outOfGas() -> FAILURE # call to helper should not succeed but amount should be transferred anyway #
// checkState() -> false, 15