solidity/test/libsolidity/semanticTests/enums/enum_explicit_overflow.sol

34 lines
931 B
Solidity
Raw Normal View History

contract test {
enum ActionChoices {GoLeft, GoRight, GoStraight}
2020-06-23 12:14:24 +00:00
constructor() {}
function getChoiceExp(uint256 x) public returns (uint256 d) {
choice = ActionChoices(x);
d = uint256(choice);
}
function getChoiceFromSigned(int256 x) public returns (uint256 d) {
choice = ActionChoices(x);
d = uint256(choice);
}
function getChoiceFromMax() public returns (uint256 d) {
choice = ActionChoices(type(uint).max);
d = uint256(choice);
}
ActionChoices choice;
}
// ====
2020-10-13 11:28:39 +00:00
// EVMVersion: >=byzantium
// compileViaYul: also
// ----
// getChoiceExp(uint256): 2 -> 2
2020-10-13 11:28:39 +00:00
// getChoiceExp(uint256): 3 -> FAILURE, hex"4e487b71", 33 # These should throw #
// getChoiceFromSigned(int256): -1 -> FAILURE, hex"4e487b71", 33
// getChoiceFromMax() -> FAILURE, hex"4e487b71", 33
// getChoiceExp(uint256): 2 -> 2 # These should work #
// getChoiceExp(uint256): 0 -> 0