diff options
author | Leonardo Alt <leo@ethereum.org> | 2018-04-27 20:13:18 +0800 |
---|---|---|
committer | chriseth <chris@ethereum.org> | 2018-05-17 00:32:47 +0800 |
commit | a19b516b2b0b56e2dc0f769ee96ffc871b7acee2 (patch) | |
tree | 8791979c40fc38b4c83bc6ac1fb24f083dc6be9f | |
parent | 0b6eea0c557d0c987baa2d560fe3871ba3bb4a58 (diff) | |
download | dexon-solidity-a19b516b2b0b56e2dc0f769ee96ffc871b7acee2.tar.gz dexon-solidity-a19b516b2b0b56e2dc0f769ee96ffc871b7acee2.tar.zst dexon-solidity-a19b516b2b0b56e2dc0f769ee96ffc871b7acee2.zip |
Add syntax tests and Changelog entry
-rw-r--r-- | Changelog.md | 4 | ||||
-rw-r--r-- | test/libsolidity/syntaxTests/types/bool_ops.sol | 53 |
2 files changed, 56 insertions, 1 deletions
diff --git a/Changelog.md b/Changelog.md index 38c66d39..e047f336 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,7 +1,9 @@ ### 0.5.0 (unreleased) -Features: +Breaking Changes: + * Type Checker: Disallow arithmetic operations for Boolean variables. +Features: Bugfixes: diff --git a/test/libsolidity/syntaxTests/types/bool_ops.sol b/test/libsolidity/syntaxTests/types/bool_ops.sol new file mode 100644 index 00000000..91033906 --- /dev/null +++ b/test/libsolidity/syntaxTests/types/bool_ops.sol @@ -0,0 +1,53 @@ +contract C { + function f(bool a, bool b) public pure { + bool c; + // OK + c = !a; + c = !b; + c = a == b; + c = a != b; + c = a || b; + c = a && b; + + // Not OK + c = a > b; + c = a < b; + c = a >= b; + c = a <= b; + c = a & b; + c = a | b; + c = a ^ b; + c = ~a; + c = ~b; + c = a + b; + c = a - b; + c = -a; + c = -b; + c = a * b; + c = a / b; + c = a ** b; + c = a % b; + c = a << b; + c = a >> b; + } +} +// ---- +// TypeError: (231-236): Operator > not compatible with types bool and bool +// TypeError: (250-255): Operator < not compatible with types bool and bool +// TypeError: (269-275): Operator >= not compatible with types bool and bool +// TypeError: (289-295): Operator <= not compatible with types bool and bool +// TypeError: (309-314): Operator & not compatible with types bool and bool +// TypeError: (328-333): Operator | not compatible with types bool and bool +// TypeError: (347-352): Operator ^ not compatible with types bool and bool +// TypeError: (366-368): Unary operator ~ cannot be applied to type bool +// TypeError: (382-384): Unary operator ~ cannot be applied to type bool +// TypeError: (398-403): Operator + not compatible with types bool and bool +// TypeError: (417-422): Operator - not compatible with types bool and bool +// TypeError: (436-438): Unary operator - cannot be applied to type bool +// TypeError: (452-454): Unary operator - cannot be applied to type bool +// TypeError: (468-473): Operator * not compatible with types bool and bool +// TypeError: (487-492): Operator / not compatible with types bool and bool +// TypeError: (506-512): Operator ** not compatible with types bool and bool +// TypeError: (526-531): Operator % not compatible with types bool and bool +// TypeError: (545-551): Operator << not compatible with types bool and bool +// TypeError: (565-571): Operator >> not compatible with types bool and bool |