Evaluate keccak256 of string literals at compile-time.

This commit is contained in:
chriseth
2020-07-08 16:14:14 +02:00
parent ad5ae2eefe
commit 0a0f578d7c
4 changed files with 50 additions and 15 deletions
@@ -0,0 +1,19 @@
// tests compile-time evaluation of keccak256 on literal strings
contract C {
function short() public pure returns (bool) {
bytes32 a = keccak256("abcdefghijklmn");
bytes memory s = "abcdefghijklmn";
return a == keccak256(s);
}
bytes32 constant sc = keccak256("abcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmn");
function long() public pure returns (bool, bool) {
bytes32 a = keccak256("abcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmn");
bytes memory s = "abcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmn";
return (a == keccak256(s), sc == keccak256(s));
}
}
// ====
// compileViaYul: also
// ----
// short() -> true
// long() -> true, true