aboutsummaryrefslogtreecommitdiff
path: root/tests/conformance/3-expressions/prec_left_xor.zc
diff options
context:
space:
mode:
Diffstat (limited to 'tests/conformance/3-expressions/prec_left_xor.zc')
-rw-r--r--tests/conformance/3-expressions/prec_left_xor.zc41
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/conformance/3-expressions/prec_left_xor.zc b/tests/conformance/3-expressions/prec_left_xor.zc
new file mode 100644
index 0000000..a977688
--- /dev/null
+++ b/tests/conformance/3-expressions/prec_left_xor.zc
@@ -0,0 +1,41 @@
+// expect: 1/1/1/1/7/7/2/2/4/4/7/7/8/8/4/4/-3/-3/-2/-2/3/3/-3/-3/12/12/-8/-8/87/87/-2/-2/3/3/
+// 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(5 ^ -8 || 9);
+ { int a = 5, b = -8, c = 9; pn(a ^ b || c); }
+ pn(-2 ^ 5 && -3);
+ { int a = -2, b = 5, c = -3; pn(a ^ b && c); }
+ pn(7 ^ 4 | 4);
+ { int a = 7, b = 4, c = 4; pn(a ^ b | c); }
+ pn(7 ^ -1 & 5);
+ { int a = 7, b = -1, c = 5; pn(a ^ b & c); }
+ pn(4 ^ 4 == 6);
+ { int a = 4, b = 4, c = 6; pn(a ^ b == c); }
+ pn(6 ^ -8 != 12);
+ { int a = 6, b = -8, c = 12; pn(a ^ b != c); }
+ pn(8 ^ -1 < -1);
+ { int a = 8, b = -1, c = -1; pn(a ^ b < c); }
+ pn(4 ^ 2 > 5);
+ { int a = 4, b = 2, c = 5; pn(a ^ b > c); }
+ pn(-3 ^ 8 <= 6);
+ { int a = -3, b = 8, c = 6; pn(a ^ b <= c); }
+ pn(-2 ^ -8 >= 1);
+ { int a = -2, b = -8, c = 1; pn(a ^ b >= c); }
+ pn(3 ^ 0 << 2);
+ { int a = 3, b = 0, c = 2; pn(a ^ b << c); }
+ pn(2 ^ -2 >> 2);
+ { int a = 2, b = -2, c = 2; pn(a ^ b >> c); }
+ pn(9 ^ -2 + 7);
+ { int a = 9, b = -2, c = 7; pn(a ^ b + c); }
+ pn(3 ^ -8 - -3);
+ { int a = 3, b = -8, c = -3; pn(a ^ b - c); }
+ pn(6 ^ 9 * 9);
+ { int a = 6, b = 9, c = 9; pn(a ^ b * c); }
+ pn(-2 ^ -2 / -8);
+ { int a = -2, b = -2, c = -8; pn(a ^ b / c); }
+ pn(3 ^ 12 % -3);
+ { int a = 3, b = 12, c = -3; pn(a ^ b % c); }
+ return 0;
+}