mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
24 lines
538 B
Solidity
24 lines
538 B
Solidity
contract C {
|
|
function testFunction() external {}
|
|
|
|
function testYul() public returns (uint32) {
|
|
function() external fp = this.testFunction;
|
|
uint selectorValue = 0;
|
|
|
|
assembly {
|
|
selectorValue := fp.selector
|
|
}
|
|
|
|
// Value is right-aligned, we shift it so it can be compared
|
|
return uint32(bytes4(bytes32(selectorValue << (256 - 32))));
|
|
}
|
|
function testSol() public returns (uint32) {
|
|
return uint32(this.testFunction.selector);
|
|
}
|
|
}
|
|
// ====
|
|
// compileViaYul: also
|
|
// ----
|
|
// testYul() -> 0xe16b4a9b
|
|
// testSol() -> 0xe16b4a9b
|