d: Merge upstream dmd, druntime 4c18eed967, phobos d945686a4.
[official-gcc.git] / gcc / testsuite / gdc.test / fail_compilation / test17425.d
blob7140615cc4277f95e79601d0c588503019037e28
1 /* TEST_OUTPUT:
2 ---
3 fail_compilation/test17425.d(24): Error: parameter index must be in range 0..4 not 4
4 fail_compilation/test17425.d(27): Error: first argument to `__traits(getParameterStorageClasses, i, 4)` is not a function or a function call
5 fail_compilation/test17425.d(29): Error: expression expected as second argument of `__traits(getParameterStorageClasses, foo, int)`
6 fail_compilation/test17425.d(31): Error: expected 2 arguments for `getParameterStorageClasses` but had 3
7 ---
8 */
10 // https://issues.dlang.org/show_bug.cgi?id=17425
12 ref int foo(return ref const int* p, scope int* a, out int b, lazy int c);
14 //pragma(msg, __traits(getParameterStorageClasses, foo, 0));
16 static assert(__traits(getParameterStorageClasses, foo, 0)[0] == "return");
17 static assert(__traits(getParameterStorageClasses, foo, 0)[1] == "ref");
19 //pragma(msg, __traits(getParameterStorageClasses, foo, 1));
20 static assert(__traits(getParameterStorageClasses, foo, 1)[0] == "scope");
21 static assert(__traits(getParameterStorageClasses, foo, 2)[0] == "out");
22 static assert(__traits(getParameterStorageClasses, typeof(&foo), 3)[0] == "lazy");
24 enum a1 = __traits(getParameterStorageClasses, foo, 4);
26 int i;
27 enum a2 = __traits(getParameterStorageClasses, i, 4);
29 enum a3 = __traits(getParameterStorageClasses, foo, int);
31 enum a4 = __traits(getParameterStorageClasses, foo, 0, 1);