aboutsummaryrefslogtreecommitdiff
path: root/tests/conformance/3-expressions/prec_left_mul.zc
diff options
context:
space:
mode:
Diffstat (limited to 'tests/conformance/3-expressions/prec_left_mul.zc')
-rw-r--r--tests/conformance/3-expressions/prec_left_mul.zc39
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/conformance/3-expressions/prec_left_mul.zc b/tests/conformance/3-expressions/prec_left_mul.zc
new file mode 100644
index 0000000..4e2dacc
--- /dev/null
+++ b/tests/conformance/3-expressions/prec_left_mul.zc
@@ -0,0 +1,39 @@
+// expect: 1/1/1/1/-2/-2/27/27/0/0/0/0/1/1/1/1/1/1/1/1/1/1/4/4/106/106/7/7/-36/-36/0/0/
+// first operator * followed by each other binary operator; operands chosen so that the two groupings differ
+include rt;
+void pn(int x) { rt.put_n(x); rt.put_c(10); }
+fn main() {
+ pn(4 * -2 || -8);
+ { int a = 4, b = -2, c = -8; pn(a * b || c); }
+ pn(4 * 12 && 100);
+ { int a = 4, b = 12, c = 100; pn(a * b && c); }
+ pn(-2 * 5 | -2);
+ { int a = -2, b = 5, c = -2; pn(a * b | c); }
+ pn(4 * 7 ^ 7);
+ { int a = 4, b = 7, c = 7; pn(a * b ^ c); }
+ pn(6 * 8 & 9);
+ { int a = 6, b = 8, c = 9; pn(a * b & c); }
+ pn(-3 * 8 == 8);
+ { int a = -3, b = 8, c = 8; pn(a * b == c); }
+ pn(6 * 5 != -2);
+ { int a = 6, b = 5, c = -2; pn(a * b != c); }
+ pn(8 * -2 < -3);
+ { int a = 8, b = -2, c = -3; pn(a * b < c); }
+ pn(-2 * -3 > 3);
+ { int a = -2, b = -3, c = 3; pn(a * b > c); }
+ pn(-3 * 9 <= 2);
+ { int a = -3, b = 9, c = 2; pn(a * b <= c); }
+ pn(2 * 12 >= 9);
+ { int a = 2, b = 12, c = 9; pn(a * b >= c); }
+ pn(3 * 100 >> 6);
+ { int a = 3, b = 100, c = 6; pn(a * b >> c); }
+ pn(-3 * -2 + 100);
+ { int a = -3, b = -2, c = 100; pn(a * b + c); }
+ pn(-2 * -2 - -3);
+ { int a = -2, b = -2, c = -3; pn(a * b - c); }
+ pn(-8 * 9 / 2);
+ { int a = -8, b = 9, c = 2; pn(a * b / c); }
+ pn(6 * 9 % 6);
+ { int a = 6, b = 9, c = 6; pn(a * b % c); }
+ return 0;
+}