d: Merge upstream dmd ff57fec515, druntime ff57fec515, phobos 17bafda79.
[official-gcc.git] / gcc / testsuite / gdc.test / compilable / issue16020.d
blob38a5d624320788d882b136369995689c6e7aff0b
1 // function type aliases
2 module issue16020;
4 alias F1 = const(int)(); const(int) f1(){return 42;}
5 static assert (is(F1 == typeof(f1)));
7 alias F2 = float(float); float f2(float p){return p;}
8 static assert (is(F2 == typeof(f2)));
10 alias F3 = void(); void f3(){}
11 static assert (is(F3 == typeof(f3)));
13 alias void F41() @safe;
14 alias F42 = void() @safe;
15 alias F43 = @safe void();
16 static assert (is(F41 == F42));
17 static assert (is(F43 == F42));
19 alias void F51() @system;
20 alias F52 = void() @safe;
21 static assert (!is(F51 == F52));
23 alias F61 = int() const shared;
24 alias int F62() const shared ;
25 alias F63 = const shared int();
26 static assert (is(F61 == F62));
27 static assert (is(F63 == F62));
29 alias F71 = int() immutable inout;
30 alias int F72() immutable inout;
31 alias F73 = immutable inout int();
32 static assert (is(F71 == F72));
33 static assert (is(F73 == F72));
35 alias FunTemplate(T) = void(T t);
36 alias Specialized = FunTemplate!int;
37 alias Compared = void(int);
38 static assert(is(Specialized == Compared));
40 // type suffixes
41 alias FT = const(int)*();
42 static assert(is(FT* == const(int)* function()));
43 alias FT2 = int*[2]() pure;
44 static assert(is(FT2* == int*[2] function() pure));