/* PERMUTE_ARGS: -O RUN_OUTPUT: --- 0 45 45 45 45 45 45 45 10 45 0 5 45 45 --- */ import core.stdc.stdio; version (all) { /************************************/ int func1(int[] data) { int j; for (int i = 0; i < 10; i++) { data[i*10] = i; j = data[0] * 10; } return j; } void test1() { int[100] data = [1,7,6,3,8,9,7,2,2,4, 1,7,6,3,8,9,7,2,2,4, 1,7,6,3,8,9,7,2,2,4, 1,7,6,3,8,9,7,2,2,4, 1,7,6,3,8,9,7,2,2,4, 1,7,6,3,8,9,7,2,2,4, 1,7,6,3,8,9,7,2,2,4, 1,7,6,3,8,9,7,2,2,4, 1,7,6,3,8,9,7,2,2,4, 1,7,6,3,8,9,7,2,2,4, ]; int i = func1(data[]); if (i != 0) assert(0); printf("%d\n", i); } /************************************/ void test2() { int result = 0; for (int i = 0; i < 10; ++i) result += i; printf("%d\n", result); if (result != 45) assert(0); } /************************************/ void test3() { int result = 0; for (int i = 0; i < 10; i++) result += i; printf("%d\n", result); if (result != 45) assert(0); } /************************************/ void test4() { int result = 0; for (int i = 0; i < 10; i += 1) result += i; printf("%d\n", result); if (result != 45) assert(0); } /************************************/ void test5() { int result = 0; for (int i = 0; i < 10; i -= -1) result += i; printf("%d\n", result); if (result != 45) assert(0); } /************************************/ void test6() { int result = 0; for (uint i = 0; i < 10; i++) result += i; printf("%d\n", result); if (result != 45) assert(0); } /************************************/ void test7() { int result = 0; for (long i = 0; i < 10; i++) result += i; printf("%d\n", result); if (result != 45) assert(0); } /************************************/ void test8() { int result = 0; for (ulong i = 0; i < 10; i++) result += i; printf("%d\n", result); if (result != 45) assert(0); } /************************************/ void test9() { int result = 0; for (ulong i = 0; i < 5; i++) result += i; printf("%d\n", result); if (result != 10) assert(0); } /************************************/ void test10() { __gshared int i; int result = 0; for (i = 0; i < 10; i++) result += i; printf("%d\n", result); if (result != 45) assert(0); } /************************************/ void test11() { int result = 0; for (int i = 0; i < 10; i += 10) result += i; printf("%d\n", result); if (result != 0) assert(0); } /************************************/ void test12() { int result = 0; for (int i = 0; i < 10; i += 5) result += i; printf("%d\n", result); if (result != 5) assert(0); } /************************************/ void test13() { int result = 0; int i; int* p = &i; int foo() { return *p; } for (i = 0; i < 10; ++i) { if (foo() != i) assert(0); result += i; } printf("%d\n", result); if (result != 45) assert(0); } /************************************/ void test14() { int result = 0; int i; int foo() { return i; } for (i = 0; i < 10; ++i) { if (foo() != i) assert(0); result += i; } printf("%d\n", result); if (result != 45) assert(0); } /************************************/ void test15() { int result = 0; int i; try { for (i = 0; i < 10; ++i) { if (i == 1) throw new Exception("hello"); result += i; } assert(0); } catch (Exception e) { assert(i == 1); } } /************************************/ int main() { test1(); test2(); test3(); test4(); test5(); test6(); test7(); test8(); test9(); test10(); test11(); test12(); test13(); test14(); test15(); return 0; } } else { void main() { int result = 0; int i; try { for (i = 0; i < 10; ++i) { if (i == 1) throw new Exception("hello"); result += i; } assert(0); } catch (Exception e) { assert(i == 1); } } }