Conditional Expression: Delay invalid type fatal error

Check the whole conditional first and then output errors for
both, the true and false expressions.
This commit is contained in:
Mathias Baumann
2019-02-11 15:47:19 +01:00
parent 08977af843
commit 259d803387
2 changed files with 47 additions and 17 deletions
@@ -0,0 +1,16 @@
contract C {
function o(byte) public pure {}
function f() public {
o(true ? 99**99 : 99);
o(true ? 99 : 99**99);
o(true ? 99**99 : 99**99);
}
}
// ----
// TypeError: (92-98): Invalid mobile type in true expression.
// TypeError: (85-103): Invalid type for argument in function call. Invalid implicit conversion from uint8 to bytes1 requested.
// TypeError: (128-134): Invalid mobile type in false expression.
// TypeError: (116-134): Invalid type for argument in function call. Invalid implicit conversion from uint8 to bytes1 requested.
// TypeError: (155-161): Invalid mobile type in true expression.
// TypeError: (164-170): Invalid mobile type in false expression.