rational_comparison.sol 1023 B

1234567891011121314151617181920212223242526272829
  1. // Ensure that rational comparisons are not permitted
  2. contract c {
  3. function foo1(uint64 a, uint64 b) public returns (bool) {
  4. return (a/b) >= 0.05;
  5. }
  6. function foo2(uint64 a, uint64 b) public returns (bool) {
  7. return 2.2 > a;
  8. }
  9. function foo3(uint64 a, uint64 b) public returns (bool) {
  10. return 1 == 0.05;
  11. }
  12. function foo4(uint64 a, uint64 b) public returns (bool) {
  13. return a*2.1 < b;
  14. }
  15. function foo5(uint64 a, uint64 b) public returns (bool) {
  16. return (a << b) <= 0.05;
  17. }
  18. function foo6(uint64 a, uint64 b) public returns (bool) {
  19. return 1.2 != (a ^ b);
  20. }
  21. }
  22. // ---- Expect: diagnostics ----
  23. // error: 4:10-23: cannot use rational numbers with '>=' operator
  24. // error: 7:10-17: cannot use rational numbers with '>' operator
  25. // error: 10:10-19: cannot use rational numbers with '==' operator
  26. // error: 13:10-11: expression not allowed in constant rational number expression
  27. // error: 16:10-26: cannot use rational numbers with '<=' operator
  28. // error: 19:10-24: cannot use rational numbers with '!=' operator