MATCH: Improve `A CMP 0 ? A : -A` set of patterns to use bitwise_equal_p.
[official-gcc.git] / gcc / testsuite / gdc.test / fail_compilation / nogc2.d
blob9016dd9e9696d6af4f8ae5228f4f30b37002e1b9
1 // REQUIRED_ARGS: -o-
3 /***************** CatExp *******************/
5 /*
6 TEST_OUTPUT:
7 ---
8 fail_compilation/nogc2.d(20): Error: cannot use operator `~` in `@nogc` function `nogc2.testCat`
9 fail_compilation/nogc2.d(21): Error: cannot use operator `~` in `@nogc` function `nogc2.testCat`
10 fail_compilation/nogc2.d(22): Error: cannot use operator `~` in `@nogc` function `nogc2.testCat`
11 fail_compilation/nogc2.d(24): Error: cannot use operator `~` in `@nogc` function `nogc2.testCat`
12 fail_compilation/nogc2.d(25): Error: cannot use operator `~` in `@nogc` function `nogc2.testCat`
13 fail_compilation/nogc2.d(26): Error: cannot use operator `~` in `@nogc` function `nogc2.testCat`
14 fail_compilation/nogc2.d(27): Error: cannot use operator `~` in `@nogc` function `nogc2.testCat`
15 fail_compilation/nogc2.d(28): Error: cannot use operator `~` in `@nogc` function `nogc2.testCat`
16 ---
18 @nogc void testCat(int[] a, string s)
20 int[] a1 = a ~ a;
21 int[] a2 = a ~ 1;
22 int[] a3 = 1 ~ a;
24 string s1 = s ~ s;
25 string s2 = s ~ "a";
26 string s3 = "a" ~ s;
27 string s4 = s ~ 'c';
28 string s5 = 'c' ~ s;
30 string s6 = "a" ~ "b"; // no error
31 string s7 = "a" ~ 'c'; // no error
32 string s8 = 'c' ~ "b"; // no error
35 /***************** CatAssignExp *******************/
38 TEST_OUTPUT:
39 ---
40 fail_compilation/nogc2.d(47): Error: cannot use operator `~=` in `@nogc` function `nogc2.testCatAssign`
41 fail_compilation/nogc2.d(49): Error: cannot use operator `~=` in `@nogc` function `nogc2.testCatAssign`
42 fail_compilation/nogc2.d(50): Error: cannot use operator `~=` in `@nogc` function `nogc2.testCatAssign`
43 ---
45 @nogc void testCatAssign(int[] a, string s)
47 a ~= 1;
49 s ~= "a";
50 s ~= 'c';
53 /***************** ArrayLiteralExp *******************/
55 @nogc int* barA();
58 TEST_OUTPUT:
59 ---
60 fail_compilation/nogc2.d(69): Error: array literal in `@nogc` function `nogc2.testArray` may cause a GC allocation
61 fail_compilation/nogc2.d(70): Error: array literal in `@nogc` function `nogc2.testArray` may cause a GC allocation
62 ---
64 @nogc void testArray()
66 enum arrLiteral = [null, null];
68 int* p;
69 auto a = [p, p, barA()];
70 a = arrLiteral;
73 /***************** AssocArrayLiteralExp *******************/
76 TEST_OUTPUT:
77 ---
78 fail_compilation/nogc2.d(86): Error: associative array literal in `@nogc` function `nogc2.testAssocArray` may cause a GC allocation
79 fail_compilation/nogc2.d(87): Error: associative array literal in `@nogc` function `nogc2.testAssocArray` may cause a GC allocation
80 ---
82 @nogc void testAssocArray()
84 enum aaLiteral = [10: 100];
86 auto aa = [1:1, 2:3, 4:5];
87 aa = aaLiteral;
90 /***************** IndexExp *******************/
93 TEST_OUTPUT:
94 ---
95 fail_compilation/nogc2.d(100): Error: assigning an associative array element in `@nogc` function `nogc2.testIndex` may cause a GC allocation
96 ---
98 @nogc void testIndex(int[int] aa)
100 aa[1] = 0;
101 int n = aa[1];