diff --git a/test/libsolidity/semanticTests/literalSuffixes/keccak256_suffix.sol b/test/libsolidity/semanticTests/literalSuffixes/keccak256_suffix.sol new file mode 100644 index 000000000..5655d7246 --- /dev/null +++ b/test/libsolidity/semanticTests/literalSuffixes/keccak256_suffix.sol @@ -0,0 +1,30 @@ +==== Source: builtin.sol ==== +function builtinKeccak(bytes memory input) pure returns (bytes32) { + return keccak256(input); +} +==== Source: suffix.sol ==== +import {builtinKeccak} from "builtin.sol"; + +function keccak256(bytes memory input) pure suffix returns (bytes32) { + // NOTE: A call to keccak256() here would not call the built-in + // and would instead result in infinite recursion. + return builtinKeccak(input); +} + +contract C { + function testBuiltin() public pure returns (bytes32) { + return builtinKeccak("solidity"); + } + + function testSuffix() public pure returns (bytes32) { + return "solidity" keccak256; + } + + function testSuffixFunctionCall() public pure returns (bytes32) { + return keccak256("solidity"); + } +} +// ---- +// testBuiltin() -> 0xa477d97b122e6356d32a064f9ee824230d42d04c7d66d8e7d125a091a42b0b25 +// testSuffix() -> 0xa477d97b122e6356d32a064f9ee824230d42d04c7d66d8e7d125a091a42b0b25 +// testSuffixFunctionCall() -> 0xa477d97b122e6356d32a064f9ee824230d42d04c7d66d8e7d125a091a42b0b25 diff --git a/test/libsolidity/syntaxTests/literalSuffixes/usableAsSuffix/suffix_function_shadowing_builtin.sol b/test/libsolidity/syntaxTests/literalSuffixes/usableAsSuffix/suffix_function_shadowing_builtin.sol new file mode 100644 index 000000000..9136a1363 --- /dev/null +++ b/test/libsolidity/syntaxTests/literalSuffixes/usableAsSuffix/suffix_function_shadowing_builtin.sol @@ -0,0 +1 @@ +function keccak256(bytes memory input) pure suffix returns (bytes32) {}