]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/testsuite/gdc.test/fail_compilation/traits.d
d: Import dmd b8384668f, druntime e6caaab9, phobos 5ab9ad256 (v2.098.0-beta.1)
[thirdparty/gcc.git] / gcc / testsuite / gdc.test / fail_compilation / traits.d
CommitLineData
c5e94699
IB
1/************************************************************/
2
3/*
4TEST_OUTPUT:
5---
6fail_compilation/traits.d(100): Error: `getTargetInfo` key `"not_a_target_info"` not supported by this implementation
7fail_compilation/traits.d(101): Error: string expected as argument of __traits `getTargetInfo` instead of `100`
8fail_compilation/traits.d(102): Error: expected 1 arguments for `getTargetInfo` but had 2
9fail_compilation/traits.d(103): Error: expected 1 arguments for `getTargetInfo` but had 0
10fail_compilation/traits.d(200): Error: undefined identifier `imports.nonexistent`
11fail_compilation/traits.d(201): Error: undefined identifier `imports.nonexistent`
12fail_compilation/traits.d(202): Error: expected 1 arguments for `isPackage` but had 0
13fail_compilation/traits.d(203): Error: expected 1 arguments for `isModule` but had 0
5fee5ec3
IB
14fail_compilation/traits.d(300): Error: In expression `__traits(allMembers, float)` `float` can't have members
15fail_compilation/traits.d(300): `float` must evaluate to either a module, a struct, an union, a class, an interface or a template instantiation
16fail_compilation/traits.d(306): Error: In expression `__traits(allMembers, TemplatedStruct)` struct `TemplatedStruct(T)` has no members
17fail_compilation/traits.d(306): `TemplatedStruct(T)` must evaluate to either a module, a struct, an union, a class, an interface or a template instantiation
18fail_compilation/traits.d(309): Error: In expression `__traits(derivedMembers, float)` `float` can't have members
19fail_compilation/traits.d(309): `float` must evaluate to either a module, a struct, an union, a class, an interface or a template instantiation
20fail_compilation/traits.d(316): Error: In expression `__traits(derivedMembers, TemplatedStruct)` struct `TemplatedStruct(T)` has no members
21fail_compilation/traits.d(316): `TemplatedStruct(T)` must evaluate to either a module, a struct, an union, a class, an interface or a template instantiation
22fail_compilation/traits.d(404): Error: function `traits.func1` circular reference in `__traits(GetCppNamespaces,...)`
23fail_compilation/traits.d(413): Error: function `traits.foo1.func1` circular reference in `__traits(GetCppNamespaces,...)`
c5e94699
IB
24---
25*/
26
27#line 100
28enum A1 = __traits(getTargetInfo, "not_a_target_info");
29enum B1 = __traits(getTargetInfo, 100);
30enum C1 = __traits(getTargetInfo, "cppRuntimeLibrary", "bits");
31enum D1 = __traits(getTargetInfo);
32
33#line 200
34enum A2 = __traits(isPackage, imports.nonexistent);
35enum B2 = __traits(isModule, imports.nonexistent);
36enum C2 = __traits(isPackage);
37enum D2 = __traits(isModule);
5fee5ec3
IB
38
39interface Interface {}
40struct TemplatedStruct(T) {}
41struct Struct {}
42union Union {}
43class Class {}
44
45#line 300
46enum AM0 = __traits(allMembers, float); // compile error
47enum AM1 = __traits(allMembers, Struct); // no error
48enum AM2 = __traits(allMembers, Union); // no error
49enum AM3 = __traits(allMembers, Class); // no error
50enum AM4 = __traits(allMembers, Interface); // no error
51enum AM5 = __traits(allMembers, TemplatedStruct!float); // no error
52enum AM6 = __traits(allMembers, TemplatedStruct); // compile error
53enum AM7 = __traits(allMembers, mixin(__MODULE__)); // no error
54
55enum DM0 = __traits(derivedMembers, float); // compile error
56enum DM1 = __traits(derivedMembers, Struct); // no error
57enum DM2 = __traits(derivedMembers, Struct); // no error
58enum DM3 = __traits(derivedMembers, Union); // no error
59enum DM4 = __traits(derivedMembers, Class); // no error
60enum DM5 = __traits(derivedMembers, Interface); // no error
61enum DM6 = __traits(derivedMembers, TemplatedStruct!float); // no error
62enum DM7 = __traits(derivedMembers, TemplatedStruct); // compile error
63enum DM8 = __traits(derivedMembers, mixin(__MODULE__)); // no error
64
65#line 400
66extern(C++, "bar")
67extern(C++, __traits(getCppNamespaces, func1)) void func () {}
68
69extern(C++, "foo")
70extern(C++, __traits(getCppNamespaces, func2)) void func1 () {}
71
72extern(C++, "foobar")
73extern(C++, __traits(getCppNamespaces, func)) void func2 () {}
74
75extern(C++, bar1)
76extern(C++, __traits(getCppNamespaces, foo1.func1)) void func () {}
77
78extern(C++, foo1)
79extern(C++, __traits(getCppNamespaces, foobar1.func2)) void func1 () {}
80
81extern(C++, foobar1)
82extern(C++, __traits(getCppNamespaces, bar1.func)) void func2 () {}
83
84/********************************************
85https://issues.dlang.org/show_bug.cgi?id=21918
86
87TEST_OUTPUT:
88---
89fail_compilation/traits.d(501): Error: undefined identifier `T`
90fail_compilation/traits.d(502): while evaluating `pragma(msg, __traits(getParameterStorageClasses, yip, 0))`
91---
92*/
93#line 500
94
95auto yip(int f) {return T[];}
96pragma(msg, __traits(getParameterStorageClasses, yip, 0));
97
98
99/********************************************
100TEST_OUTPUT:
101---
102fail_compilation/traits.d(602): Error: expected 1 arguments for `hasCopyConstructor` but had 0
103fail_compilation/traits.d(602): while evaluating `pragma(msg, __traits(hasCopyConstructor))`
104fail_compilation/traits.d(603): Error: type expected as second argument of __traits `hasCopyConstructor` instead of `S()`
105fail_compilation/traits.d(603): while evaluating `pragma(msg, __traits(hasCopyConstructor, S()))`
106fail_compilation/traits.d(604): Error: expected 1 arguments for `hasPostblit` but had 0
107fail_compilation/traits.d(604): while evaluating `pragma(msg, __traits(hasPostblit))`
108fail_compilation/traits.d(605): Error: type expected as second argument of __traits `hasPostblit` instead of `S()`
109fail_compilation/traits.d(605): while evaluating `pragma(msg, __traits(hasPostblit, S()))`
110---
111*/
112#line 600
113
114struct S { this (ref S rhs) {} }
115pragma(msg, __traits(hasCopyConstructor));
116pragma(msg, __traits(hasCopyConstructor, S()));
117pragma(msg, __traits(hasPostblit));
118pragma(msg, __traits(hasPostblit, S()));