]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/testsuite/gdc.test/compilable/protection.d
d: Import dmd b8384668f, druntime e6caaab9, phobos 5ab9ad256 (v2.098.0-beta.1)
[thirdparty/gcc.git] / gcc / testsuite / gdc.test / compilable / protection.d
CommitLineData
b4c522fa 1// REQUIRED_ARGS: -de
5fee5ec3 2// EXTRA_FILES: imports/protectionimp.d
b4c522fa
IB
3import imports.protectionimp;
4
5alias TypeTuple(T...) = T;
6
7private
8{
9 void localF() {}
10 class localC {}
11 struct localS {}
12 union localU {}
13 interface localI {}
14 enum localE { foo }
15 mixin template localMT() {}
16
17 class localTC(T) {}
18 struct localTS(T) {}
19 union localTU(T) {}
20 interface localTI(T) {}
21 void localTF(T)() {}
22}
23
24void main()
25{
26 // Private non-template declarations
27 static assert(!__traits(compiles, privF()));
28 static assert(!__traits(compiles, privC));
29 static assert(!__traits(compiles, privS));
30 static assert(!__traits(compiles, privU));
31 static assert(!__traits(compiles, privI));
32 static assert(!__traits(compiles, privE));
33 static assert(!__traits(compiles, privMT));
34
35 // Private local non-template declarations.
36 static assert( __traits(compiles, localF()));
37 static assert( __traits(compiles, localC));
38 static assert( __traits(compiles, localS));
39 static assert( __traits(compiles, localU));
40 static assert( __traits(compiles, localI));
41 static assert( __traits(compiles, localE));
42 static assert( __traits(compiles, localMT));
43
44 // Private template declarations.
45 static assert(!__traits(compiles, privTF!int()));
46 static assert(!__traits(compiles, privTC!int));
47 static assert(!__traits(compiles, privTS!int));
48 static assert(!__traits(compiles, privTU!int));
49 static assert(!__traits(compiles, privTI!int));
50
51 // Private local template declarations.
52 static assert( __traits(compiles, localTF!int()));
53 static assert( __traits(compiles, localTC!int));
54 static assert( __traits(compiles, localTS!int));
55 static assert( __traits(compiles, localTU!int));
56 static assert( __traits(compiles, localTI!int));
57
58 // Public template function with private type parameters.
59 static assert(!__traits(compiles, publF!privC()));
60 static assert(!__traits(compiles, publF!privS()));
61 static assert(!__traits(compiles, publF!privU()));
62 static assert(!__traits(compiles, publF!privI()));
63 static assert(!__traits(compiles, publF!privE()));
64
65 // Public template function with private alias parameters.
66 static assert(!__traits(compiles, publFA!privC()));
67 static assert(!__traits(compiles, publFA!privS()));
68 static assert(!__traits(compiles, publFA!privU()));
69 static assert(!__traits(compiles, publFA!privI()));
70 static assert(!__traits(compiles, publFA!privE()));
71
72 // Private alias.
73 static assert(!__traits(compiles, privA));
74
75 // Public template mixin.
76 static assert( __traits(compiles, publMT));
77}
78
79/***************************************************/
5fee5ec3 80// https://issues.dlang.org/show_bug.cgi?id=14169
b4c522fa
IB
81
82template staticMap14169(alias fun, T...)
83{
84 static if (T.length > 0)
85 alias staticMap14169 = TypeTuple!(fun!(T[0]), staticMap14169!(fun, T[1..$]));
86 else
87 alias staticMap14169 = TypeTuple!();
88}
89
90class C14169
91{
92 private struct InnerStruct(string NameS)
93 {
94 alias Name = NameS;
95 }
96 alias DimensionNames = staticMap14169!(GetName14169, InnerStruct!"A");
97}