0
|
1 module dmd.TypeExp;
|
|
2
|
|
3 import dmd.Expression;
|
|
4 import dmd.backend.elem;
|
|
5 import dmd.Type;
|
|
6 import dmd.OutBuffer;
|
|
7 import dmd.Loc;
|
|
8 import dmd.Scope;
|
|
9 import dmd.IRState;
|
|
10 import dmd.HdrGenState;
|
|
11 import dmd.TOK;
|
|
12
|
|
13 class TypeExp : Expression
|
|
14 {
|
|
15 this(Loc loc, Type type)
|
|
16 {
|
|
17 super(loc, TOK.TOKtype, TypeExp.sizeof);
|
|
18 //printf("TypeExp::TypeExp(%s)\n", type->toChars());
|
|
19 this.type = type;
|
|
20 }
|
|
21
|
|
22 version (DumbClone) {
|
|
23 } else {
|
|
24 Type clone()
|
|
25 {
|
|
26 assert(false);
|
|
27 }
|
|
28 }
|
|
29 Expression syntaxCopy()
|
|
30 {
|
|
31 //printf("TypeExp.syntaxCopy()\n");
|
|
32 return new TypeExp(loc, type.syntaxCopy());
|
|
33 }
|
|
34
|
|
35 Expression semantic(Scope sc)
|
|
36 {
|
|
37 //printf("TypeExp::semantic(%s)\n", type->toChars());
|
|
38 type = type.semantic(loc, sc);
|
|
39 return this;
|
|
40 }
|
|
41
|
|
42 void rvalue()
|
|
43 {
|
|
44 assert(false);
|
|
45 }
|
|
46
|
|
47 void toCBuffer(OutBuffer buf, HdrGenState* hgs)
|
|
48 {
|
|
49 assert(false);
|
|
50 }
|
|
51
|
|
52 Expression optimize(int result)
|
|
53 {
|
|
54 return this;
|
|
55 }
|
|
56
|
|
57 elem* toElem(IRState* irs)
|
|
58 {
|
|
59 assert(false);
|
|
60 }
|
|
61 }
|
|
62
|