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
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);
27 enum a2
= __traits(getParameterStorageClasses
, i
, 4);
29 enum a3
= __traits(getParameterStorageClasses
, foo
, int);
31 enum a4
= __traits(getParameterStorageClasses
, foo
, 0, 1);