/* REQUIRED_ARGS: -betterC RUN_OUTPUT: --- Success --- */ import core.stdc.stdio; void test1() { enum real Two = 2.0; static assert(Two^^3 == 8.0); } void test2() { double x = 5.0; assert(x^^-1 == 1/x); x = -1.0; assert(x^^1 == x); assert((x += 3) ^^ 2.0 == 4.0); assert((x) ^^ 2.0 == 4.0); assert((x *= 5) ^^ 2.0 == (x * x)); assert(x^^-1 == 1.0 / x); assert((x^^-1) ^^ 0.0 == 1.0); } void test3() { int x = 6; assert(x ^^ 0 == 1); assert((x += 3) ^^ 2 == 81); assert(x ^^ 2 == (x ^^ 1) * (x ^^ 1)); static assert(4.0 ^^ -1 == 0.25); } void test4() { // Test that LHS side effects are evaluated. int count = 0; double x() { count++; return 8.0; } assert(x ^^ -1 == 1.0 / 8.0); assert(count == 1); assert(x ^^ 0 == 1.0); assert(count == 2); assert(x ^^ 1 == 8.0); assert(count == 3); assert(x ^^ 2 == 64.0); assert(count == 4); } extern(C) void main() { test1(); test2(); test3(); test4(); printf("Success\n"); }