mirror of
https://github.com/ton-blockchain/ton
synced 2025-03-09 15:40:10 +00:00
Example: "flags & 0xFF != 0" is equivalent to "flags & 1", most likely it's unexpected. Example: "a << 2 + 1" (equal to "a << 3", probably unexpected). The only way to suppress this error for the programmer is to use parenthesis.
57 lines
1.2 KiB
Text
57 lines
1.2 KiB
Text
int justTrue() { return true; }
|
|
|
|
int test1(int x, int y, int z) method_id(101) {
|
|
return (x > 0) & (y > 0) & (z > 0);
|
|
}
|
|
|
|
int test2(int x, int y, int z) method_id(102) {
|
|
return x > (0 & (y > 0) & (z > 0));
|
|
}
|
|
|
|
int test3(int x, int y, int z) method_id(103) {
|
|
if ((x < 0) | (y < 0)) {
|
|
return z < 0;
|
|
}
|
|
return (x > 0) & (y > 0);
|
|
}
|
|
|
|
int test4(int x, int y, int mode) method_id(104) {
|
|
if (mode == 1) {
|
|
return (x == 10) | (y == 20);
|
|
} if (mode == 2) {
|
|
return (x == 10) | (y == 20);
|
|
} else {
|
|
return x == (10 | (y == 20));
|
|
}
|
|
}
|
|
|
|
int test5(int status) method_id(105) {
|
|
return justTrue() & (status == 1) & ((justTrue() & status) == 1);
|
|
}
|
|
|
|
int _<p(_ a, _ b) { return true; }
|
|
|
|
() main() {
|
|
;; ok to parse
|
|
var c = [
|
|
(3 & 3) > 0, 3 & (3 > 0), 3 & (_<_(3, 0)),
|
|
3 & _<p(3, 0), (1 & 2) ^ (3 | 4),
|
|
1 & ((1) == 1)
|
|
];
|
|
}
|
|
|
|
{-
|
|
TESTCASE | 101 | 1 2 3 | -1
|
|
TESTCASE | 101 | 1 0 3 | 0
|
|
TESTCASE | 101 | 1 2 -1 | 0
|
|
TESTCASE | 102 | 1 0 0 | -1
|
|
TESTCASE | 103 | -1 -2 -3 | -1
|
|
TESTCASE | 103 | -1 -2 0 | 0
|
|
TESTCASE | 103 | 1 2 0 | -1
|
|
TESTCASE | 103 | 1 0 2 | 0
|
|
TESTCASE | 104 | 10 20 1 | -1
|
|
TESTCASE | 104 | 10 20 2 | -1
|
|
TESTCASE | 104 | 10 20 3 | 0
|
|
TESTCASE | 105 | 1 | -1
|
|
TESTCASE | 105 | 0 | 0
|
|
-}
|