mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Semantic test for high level call to precompiles.
Because of the extcodesize check, the high level call will fail. Even though the low level call can succeed and return data.
This commit is contained in:
parent
408bd5fa62
commit
7683442ce2
@ -0,0 +1,25 @@
|
||||
interface Identity {
|
||||
function selectorAndAppendValue(uint value) external pure returns (uint);
|
||||
}
|
||||
contract C {
|
||||
Identity constant i = Identity(address(0x0004));
|
||||
function testHighLevel() external pure returns (bool) {
|
||||
// Should fail because `extcodesize(4) = 0`
|
||||
i.selectorAndAppendValue(5);
|
||||
return true;
|
||||
}
|
||||
function testLowLevel() external view returns (uint value) {
|
||||
(bool success, bytes memory ret) =
|
||||
address(4).staticcall(
|
||||
abi.encodeWithSelector(Identity.selectorAndAppendValue.selector, uint(5))
|
||||
);
|
||||
value = abi.decode(ret, (uint));
|
||||
}
|
||||
|
||||
}
|
||||
// ====
|
||||
// compileViaYul: also
|
||||
// EVMVersion: >=constantinople
|
||||
// ----
|
||||
// testHighLevel() -> FAILURE
|
||||
// testLowLevel() -> 0xc76596d400000000000000000000000000000000000000000000000000000000
|
Loading…
Reference in New Issue
Block a user