annotate trunk/src/dil/ast/Types.d @ 618:07946b379006

Refactored the way dot expressions are parsed. DotExpression is a binary expression now. Added ModuleScopeExpression. Removed some obsolete expression classes. Added QualifiedType and ModuleScopeType. Removed some obsolete type node classes. Added genAnonymousID() to IdTable. Removed obsolete parser functions. Improved Node.getDocComments(). Added semantic() methods to some declaration classes.
author Aziz K?ksal <aziz.koeksal@gmail.com>
date Fri, 11 Jan 2008 00:42:35 +0100
parents fac9e8b258fc
children b2fc028d8b55
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
94
0fe650a7a8d1 - Renamed Type enum to InfoType in module Information.
aziz
parents:
diff changeset
1 /++
0fe650a7a8d1 - Renamed Type enum to InfoType in module Information.
aziz
parents:
diff changeset
2 Author: Aziz Köksal
249
32d354584b28 - Upgraded license notices to GPL3.
aziz
parents: 248
diff changeset
3 License: GPL3
94
0fe650a7a8d1 - Renamed Type enum to InfoType in module Information.
aziz
parents:
diff changeset
4 +/
588
dcfec202718d Moved dil.Types to dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 586
diff changeset
5 module dil.ast.Types;
562
b0533550d64c Added semantic() to VariableDeclaration.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 521
diff changeset
6
580
fa6d3c52757d Moved SyntaxTree.d to new package 'ast'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 562
diff changeset
7 import dil.ast.Node;
586
e25345656d10 Moved dil.Expressions to dil.ast.Expressions.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 584
diff changeset
8 import dil.ast.Expressions;
608
fac9e8b258fc Moved dil.ast.Parameter to dil.ast.Parameters.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 606
diff changeset
9 import dil.ast.Parameters;
600
041eae272362 Moved dil.Identifier to dil.lexer.Identifier.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 596
diff changeset
10 import dil.lexer.Identifier;
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
11 import dil.Enums;
592
b8dd677e0ace Moved dil.Scope to dil.semantic.Scope.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 588
diff changeset
12 import dil.semantic.Scope;
584
556bfb18dff8 Moved dil.TypeSystem to dil.semantic.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 580
diff changeset
13 import dil.semantic.Types;
94
0fe650a7a8d1 - Renamed Type enum to InfoType in module Information.
aziz
parents:
diff changeset
14
135
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
15 enum TID
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
16 {
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
17 Void = TOK.Void,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
18 Char = TOK.Char,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
19 Wchar = TOK.Wchar,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
20 Dchar = TOK.Dchar,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
21 Bool = TOK.Bool,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
22 Byte = TOK.Byte,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
23 Ubyte = TOK.Ubyte,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
24 Short = TOK.Short,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
25 Ushort = TOK.Ushort,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
26 Int = TOK.Int,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
27 Uint = TOK.Uint,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
28 Long = TOK.Long,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
29 Ulong = TOK.Ulong,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
30 Float = TOK.Float,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
31 Double = TOK.Double,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
32 Real = TOK.Real,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
33 Ifloat = TOK.Ifloat,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
34 Idouble = TOK.Idouble,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
35 Ireal = TOK.Ireal,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
36 Cfloat = TOK.Cfloat,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
37 Cdouble = TOK.Cdouble,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
38 Creal = TOK.Creal,
521
772ffdb18fd4 Fix: added 'Cent' to enum TID.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 512
diff changeset
39 Cent = TOK.Cent,
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
40 Ucent = TOK.Ucent,
135
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
41
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
42 Undefined,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
43 Function,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
44 Delegate,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
45 Pointer,
409
38fccd2640eb Added code for parsing C function pointer declarations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 376
diff changeset
46 CFuncPointer,
135
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
47 Array,
618
07946b379006 Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 608
diff changeset
48 Qualified,
07946b379006 Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 608
diff changeset
49 ModuleScope,
135
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
50 Identifier,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
51 Typeof,
153
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 150
diff changeset
52 TemplateInstance,
269
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
53 Const, // D2
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
54 Invariant, // D2
135
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
55 }
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
56
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
57 abstract class TypeNode : Node
94
0fe650a7a8d1 - Renamed Type enum to InfoType in module Information.
aziz
parents:
diff changeset
58 {
135
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
59 TID tid;
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
60 TypeNode next;
95
0eb4c8a5b32b - Added TOK.Invalid.
aziz
parents: 94
diff changeset
61
135
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
62 this(TID tid)
240
deab661906ae - Classes Declaration, Expression, Statement and Type inherit from Node now.
aziz
parents: 196
diff changeset
63 {
deab661906ae - Classes Declaration, Expression, Statement and Type inherit from Node now.
aziz
parents: 196
diff changeset
64 this(tid, null);
deab661906ae - Classes Declaration, Expression, Statement and Type inherit from Node now.
aziz
parents: 196
diff changeset
65 }
135
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
66
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
67 this(TID tid, TypeNode next)
94
0fe650a7a8d1 - Renamed Type enum to InfoType in module Information.
aziz
parents:
diff changeset
68 {
275
e8de572e4d01 - Changed enum NodeType to NodeCategory.
aziz
parents: 269
diff changeset
69 super(NodeCategory.Type);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
70 addOptChild(next);
135
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
71 this.tid = tid;
95
0eb4c8a5b32b - Added TOK.Invalid.
aziz
parents: 94
diff changeset
72 this.next = next;
94
0fe650a7a8d1 - Renamed Type enum to InfoType in module Information.
aziz
parents:
diff changeset
73 }
562
b0533550d64c Added semantic() to VariableDeclaration.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 521
diff changeset
74
b0533550d64c Added semantic() to VariableDeclaration.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 521
diff changeset
75 Type semantic(Scope scop)
b0533550d64c Added semantic() to VariableDeclaration.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 521
diff changeset
76 {
b0533550d64c Added semantic() to VariableDeclaration.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 521
diff changeset
77 return Types.Error;
b0533550d64c Added semantic() to VariableDeclaration.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 521
diff changeset
78 }
94
0fe650a7a8d1 - Renamed Type enum to InfoType in module Information.
aziz
parents:
diff changeset
79 }
0fe650a7a8d1 - Renamed Type enum to InfoType in module Information.
aziz
parents:
diff changeset
80
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
81 class UndefinedType : TypeNode
134
a31aa0d6dd5e - Added class UndefinedType. Returning it in parseBasicType() when no token matched the basic type list.
aziz
parents: 130
diff changeset
82 {
a31aa0d6dd5e - Added class UndefinedType. Returning it in parseBasicType() when no token matched the basic type list.
aziz
parents: 130
diff changeset
83 this()
a31aa0d6dd5e - Added class UndefinedType. Returning it in parseBasicType() when no token matched the basic type list.
aziz
parents: 130
diff changeset
84 {
279
79c095aae50d - Removed null from calls to super().
aziz
parents: 275
diff changeset
85 super(TID.Undefined);
281
c1fcfbce9499 - BaseClass inherits from Node now.
aziz
parents: 280
diff changeset
86 mixin(set_kind);
134
a31aa0d6dd5e - Added class UndefinedType. Returning it in parseBasicType() when no token matched the basic type list.
aziz
parents: 130
diff changeset
87 }
a31aa0d6dd5e - Added class UndefinedType. Returning it in parseBasicType() when no token matched the basic type list.
aziz
parents: 130
diff changeset
88 }
a31aa0d6dd5e - Added class UndefinedType. Returning it in parseBasicType() when no token matched the basic type list.
aziz
parents: 130
diff changeset
89
618
07946b379006 Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 608
diff changeset
90 class IntegralType : TypeNode
153
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 150
diff changeset
91 {
618
07946b379006 Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 608
diff changeset
92 this(TOK tok)
153
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 150
diff changeset
93 {
618
07946b379006 Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 608
diff changeset
94 super(cast(TID)tok);
281
c1fcfbce9499 - BaseClass inherits from Node now.
aziz
parents: 280
diff changeset
95 mixin(set_kind);
153
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 150
diff changeset
96 }
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 150
diff changeset
97 }
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 150
diff changeset
98
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
99 class IdentifierType : TypeNode
154
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
100 {
505
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 495
diff changeset
101 Identifier* ident;
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 495
diff changeset
102 this(Identifier* ident)
154
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
103 {
279
79c095aae50d - Removed null from calls to super().
aziz
parents: 275
diff changeset
104 super(TID.Identifier);
281
c1fcfbce9499 - BaseClass inherits from Node now.
aziz
parents: 280
diff changeset
105 mixin(set_kind);
154
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
106 this.ident = ident;
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
107 }
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
108 }
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
109
618
07946b379006 Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 608
diff changeset
110 class QualifiedType : TypeNode
488
cfb3805768b6 Added DotExpression and DotType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 409
diff changeset
111 {
618
07946b379006 Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 608
diff changeset
112 alias next left;
07946b379006 Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 608
diff changeset
113 TypeNode right;
07946b379006 Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 608
diff changeset
114 this(TypeNode left, TypeNode right)
488
cfb3805768b6 Added DotExpression and DotType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 409
diff changeset
115 {
618
07946b379006 Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 608
diff changeset
116 super(TID.Qualified, left);
07946b379006 Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 608
diff changeset
117 addChild(right);
07946b379006 Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 608
diff changeset
118 }
07946b379006 Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 608
diff changeset
119 }
07946b379006 Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 608
diff changeset
120
07946b379006 Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 608
diff changeset
121 class ModuleScopeType : TypeNode
07946b379006 Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 608
diff changeset
122 {
07946b379006 Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 608
diff changeset
123 this(TypeNode next)
07946b379006 Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 608
diff changeset
124 {
07946b379006 Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 608
diff changeset
125 super(TID.ModuleScope, next);
488
cfb3805768b6 Added DotExpression and DotType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 409
diff changeset
126 mixin(set_kind);
cfb3805768b6 Added DotExpression and DotType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 409
diff changeset
127 }
cfb3805768b6 Added DotExpression and DotType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 409
diff changeset
128 }
cfb3805768b6 Added DotExpression and DotType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 409
diff changeset
129
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
130 class TypeofType : TypeNode
154
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
131 {
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
132 Expression e;
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
133 this(Expression e)
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
134 {
492
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
135 this();
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
136 addChild(e);
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
137 this.e = e;
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
138 }
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
139
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
140 this()
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
141 {
279
79c095aae50d - Removed null from calls to super().
aziz
parents: 275
diff changeset
142 super(TID.Typeof);
281
c1fcfbce9499 - BaseClass inherits from Node now.
aziz
parents: 280
diff changeset
143 mixin(set_kind);
492
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
144 }
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
145
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
146 bool isTypeofReturn()
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
147 {
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
148 return e is null;
154
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
149 }
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
150 }
95
0eb4c8a5b32b - Added TOK.Invalid.
aziz
parents: 94
diff changeset
151
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
152 class TemplateInstanceType : TypeNode
153
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 150
diff changeset
153 {
505
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 495
diff changeset
154 Identifier* ident;
153
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 150
diff changeset
155 TemplateArguments targs;
505
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 495
diff changeset
156 this(Identifier* ident, TemplateArguments targs)
153
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 150
diff changeset
157 {
279
79c095aae50d - Removed null from calls to super().
aziz
parents: 275
diff changeset
158 super(TID.TemplateInstance);
281
c1fcfbce9499 - BaseClass inherits from Node now.
aziz
parents: 280
diff changeset
159 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
160 addOptChild(targs);
153
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 150
diff changeset
161 this.ident = ident;
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 150
diff changeset
162 this.targs = targs;
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 150
diff changeset
163 }
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 150
diff changeset
164 }
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 150
diff changeset
165
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
166 class PointerType : TypeNode
95
0eb4c8a5b32b - Added TOK.Invalid.
aziz
parents: 94
diff changeset
167 {
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
168 this(TypeNode t)
95
0eb4c8a5b32b - Added TOK.Invalid.
aziz
parents: 94
diff changeset
169 {
135
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
170 super(TID.Pointer, t);
281
c1fcfbce9499 - BaseClass inherits from Node now.
aziz
parents: 280
diff changeset
171 mixin(set_kind);
95
0eb4c8a5b32b - Added TOK.Invalid.
aziz
parents: 94
diff changeset
172 }
0eb4c8a5b32b - Added TOK.Invalid.
aziz
parents: 94
diff changeset
173 }
0eb4c8a5b32b - Added TOK.Invalid.
aziz
parents: 94
diff changeset
174
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
175 class ArrayType : TypeNode
95
0eb4c8a5b32b - Added TOK.Invalid.
aziz
parents: 94
diff changeset
176 {
106
441962b0f526 - Added parseArrayType() method.
aziz
parents: 100
diff changeset
177 Expression e, e2;
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
178 TypeNode assocType;
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
179
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
180 this(TypeNode t)
95
0eb4c8a5b32b - Added TOK.Invalid.
aziz
parents: 94
diff changeset
181 {
135
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
182 super(TID.Array, t);
281
c1fcfbce9499 - BaseClass inherits from Node now.
aziz
parents: 280
diff changeset
183 mixin(set_kind);
106
441962b0f526 - Added parseArrayType() method.
aziz
parents: 100
diff changeset
184 }
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
185
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
186 this(TypeNode t, Expression e, Expression e2)
106
441962b0f526 - Added parseArrayType() method.
aziz
parents: 100
diff changeset
187 {
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
188 addChild(e);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
189 addOptChild(e2);
95
0eb4c8a5b32b - Added TOK.Invalid.
aziz
parents: 94
diff changeset
190 this.e = e;
106
441962b0f526 - Added parseArrayType() method.
aziz
parents: 100
diff changeset
191 this.e2 = e2;
295
75b47c71a34c - Assigning to Node.children in several constructors that inherit from Node.
aziz
parents: 291
diff changeset
192 this(t);
106
441962b0f526 - Added parseArrayType() method.
aziz
parents: 100
diff changeset
193 }
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
194
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
195 this(TypeNode t, TypeNode assocType)
106
441962b0f526 - Added parseArrayType() method.
aziz
parents: 100
diff changeset
196 {
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
197 addChild(assocType);
295
75b47c71a34c - Assigning to Node.children in several constructors that inherit from Node.
aziz
parents: 291
diff changeset
198 this.assocType = assocType;
106
441962b0f526 - Added parseArrayType() method.
aziz
parents: 100
diff changeset
199 this(t);
95
0eb4c8a5b32b - Added TOK.Invalid.
aziz
parents: 94
diff changeset
200 }
0eb4c8a5b32b - Added TOK.Invalid.
aziz
parents: 94
diff changeset
201 }
100
538e8b546669 - Added code for parsing IsExpressions.
aziz
parents: 95
diff changeset
202
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
203 class FunctionType : TypeNode
130
0467f01ed524 - Fix: parameters can have optional identifier.
aziz
parents: 117
diff changeset
204 {
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
205 TypeNode returnType;
130
0467f01ed524 - Fix: parameters can have optional identifier.
aziz
parents: 117
diff changeset
206 Parameters parameters;
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
207 this(TypeNode returnType, Parameters parameters)
130
0467f01ed524 - Fix: parameters can have optional identifier.
aziz
parents: 117
diff changeset
208 {
279
79c095aae50d - Removed null from calls to super().
aziz
parents: 275
diff changeset
209 super(TID.Function);
281
c1fcfbce9499 - BaseClass inherits from Node now.
aziz
parents: 280
diff changeset
210 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
211 addChild(returnType);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
212 addChild(parameters);
130
0467f01ed524 - Fix: parameters can have optional identifier.
aziz
parents: 117
diff changeset
213 this.returnType = returnType;
0467f01ed524 - Fix: parameters can have optional identifier.
aziz
parents: 117
diff changeset
214 this.parameters = parameters;
0467f01ed524 - Fix: parameters can have optional identifier.
aziz
parents: 117
diff changeset
215 }
0467f01ed524 - Fix: parameters can have optional identifier.
aziz
parents: 117
diff changeset
216 }
135
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
217
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
218 class DelegateType : TypeNode
135
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
219 {
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
220 TypeNode returnType;
291
c0e857931ff6 - Changed FunctionType and DelegateType. Both receive return type and parameters.
aziz
parents: 281
diff changeset
221 Parameters parameters;
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
222 this(TypeNode returnType, Parameters parameters)
135
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
223 {
291
c0e857931ff6 - Changed FunctionType and DelegateType. Both receive return type and parameters.
aziz
parents: 281
diff changeset
224 super(TID.Delegate);
281
c1fcfbce9499 - BaseClass inherits from Node now.
aziz
parents: 280
diff changeset
225 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
226 addChild(returnType);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
227 addChild(parameters);
291
c0e857931ff6 - Changed FunctionType and DelegateType. Both receive return type and parameters.
aziz
parents: 281
diff changeset
228 this.returnType = returnType;
c0e857931ff6 - Changed FunctionType and DelegateType. Both receive return type and parameters.
aziz
parents: 281
diff changeset
229 this.parameters = parameters;
135
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
230 }
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
231 }
269
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
232
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
233 class CFuncPointerType : TypeNode
409
38fccd2640eb Added code for parsing C function pointer declarations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 376
diff changeset
234 {
38fccd2640eb Added code for parsing C function pointer declarations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 376
diff changeset
235 Parameters params;
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
236 this(TypeNode type, Parameters params)
409
38fccd2640eb Added code for parsing C function pointer declarations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 376
diff changeset
237 {
38fccd2640eb Added code for parsing C function pointer declarations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 376
diff changeset
238 super(TID.CFuncPointer, type);
38fccd2640eb Added code for parsing C function pointer declarations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 376
diff changeset
239 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
240 addOptChild(params);
409
38fccd2640eb Added code for parsing C function pointer declarations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 376
diff changeset
241 }
38fccd2640eb Added code for parsing C function pointer declarations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 376
diff changeset
242 }
38fccd2640eb Added code for parsing C function pointer declarations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 376
diff changeset
243
269
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
244 version(D2)
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
245 {
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
246 class ConstType : TypeNode
269
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
247 {
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
248 this(TypeNode t)
269
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
249 {
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
250 // If t is null: cast(const)
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
251 super(TID.Const, t);
281
c1fcfbce9499 - BaseClass inherits from Node now.
aziz
parents: 280
diff changeset
252 mixin(set_kind);
269
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
253 }
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
254 }
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
255
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
256 class InvariantType : TypeNode
269
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
257 {
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
258 this(TypeNode t)
269
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
259 {
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
260 // If t is null: cast(invariant)
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
261 super(TID.Invariant, t);
281
c1fcfbce9499 - BaseClass inherits from Node now.
aziz
parents: 280
diff changeset
262 mixin(set_kind);
269
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
263 }
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
264 }
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
265 } // version(D2)