annotate trunk/src/dil/ast/Types.d @ 604:87f09469d337

Moved class Parameter/s to module dil.ast.Parameter.
author Aziz K?ksal <aziz.koeksal@gmail.com>
date Sun, 06 Jan 2008 01:06:36 +0100
parents 041eae272362
children 9daa6c34c45a
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;
604
87f09469d337 Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 600
diff changeset
9 import dil.ast.Parameter;
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
281
c1fcfbce9499 - BaseClass inherits from Node now.
aziz
parents: 280
diff changeset
15 class BaseClass : Node
158
759f437313f9 - Moved enum Protection and class BaseClass to module Types.
aziz
parents: 154
diff changeset
16 {
759f437313f9 - Moved enum Protection and class BaseClass to module Types.
aziz
parents: 154
diff changeset
17 Protection prot;
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
18 TypeNode type;
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
19 this(Protection prot, TypeNode type)
158
759f437313f9 - Moved enum Protection and class BaseClass to module Types.
aziz
parents: 154
diff changeset
20 {
281
c1fcfbce9499 - BaseClass inherits from Node now.
aziz
parents: 280
diff changeset
21 super(NodeCategory.Other);
c1fcfbce9499 - BaseClass inherits from Node now.
aziz
parents: 280
diff changeset
22 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
23 addChild(type);
158
759f437313f9 - Moved enum Protection and class BaseClass to module Types.
aziz
parents: 154
diff changeset
24 this.prot = prot;
759f437313f9 - Moved enum Protection and class BaseClass to module Types.
aziz
parents: 154
diff changeset
25 this.type = type;
759f437313f9 - Moved enum Protection and class BaseClass to module Types.
aziz
parents: 154
diff changeset
26 }
759f437313f9 - Moved enum Protection and class BaseClass to module Types.
aziz
parents: 154
diff changeset
27 }
759f437313f9 - Moved enum Protection and class BaseClass to module Types.
aziz
parents: 154
diff changeset
28
340
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
29 abstract class TemplateParameter : Node
137
b49903801f14 - Implemented parseTemplateParameters().
aziz
parents: 135
diff changeset
30 {
505
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 495
diff changeset
31 Identifier* ident;
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 495
diff changeset
32 this(Identifier* ident)
340
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
33 {
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
34 super(NodeCategory.Other);
505
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 495
diff changeset
35 this.ident = ident;
340
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
36 }
137
b49903801f14 - Implemented parseTemplateParameters().
aziz
parents: 135
diff changeset
37 }
b49903801f14 - Implemented parseTemplateParameters().
aziz
parents: 135
diff changeset
38
340
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
39 class TemplateAliasParameter : TemplateParameter
137
b49903801f14 - Implemented parseTemplateParameters().
aziz
parents: 135
diff changeset
40 {
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
41 TypeNode specType, defType;
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
42 this(Identifier* ident, TypeNode specType, TypeNode defType)
137
b49903801f14 - Implemented parseTemplateParameters().
aziz
parents: 135
diff changeset
43 {
505
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 495
diff changeset
44 super(ident);
281
c1fcfbce9499 - BaseClass inherits from Node now.
aziz
parents: 280
diff changeset
45 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
46 addOptChild(specType);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
47 addOptChild(defType);
340
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
48 this.ident = ident;
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
49 this.specType = specType;
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
50 this.defType = defType;
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
51 }
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
52 }
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
53
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
54 class TemplateTypeParameter : TemplateParameter
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
55 {
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
56 TypeNode specType, defType;
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
57 this(Identifier* ident, TypeNode specType, TypeNode defType)
340
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
58 {
505
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 495
diff changeset
59 super(ident);
340
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
60 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
61 addOptChild(specType);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
62 addOptChild(defType);
340
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
63 this.ident = ident;
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
64 this.specType = specType;
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
65 this.defType = defType;
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
66 }
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
67 }
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
68
492
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
69 version(D2)
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
70 {
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
71 class TemplateThisParameter : TemplateParameter
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
72 {
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
73 TypeNode specType, defType;
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
74 this(Identifier* ident, TypeNode specType, TypeNode defType)
492
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
75 {
505
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 495
diff changeset
76 super(ident);
492
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
77 mixin(set_kind);
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
78 addOptChild(specType);
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
79 addOptChild(defType);
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
80 this.ident = ident;
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
81 this.specType = specType;
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
82 this.defType = defType;
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
83 }
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
84 }
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
85 }
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
86
340
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
87 class TemplateValueParameter : TemplateParameter
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
88 {
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
89 TypeNode valueType;
340
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
90 Expression specValue, defValue;
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
91 this(TypeNode valueType, Identifier* ident, Expression specValue, Expression defValue)
340
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
92 {
505
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 495
diff changeset
93 super(ident);
340
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
94 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
95 addChild(valueType);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
96 addOptChild(specValue);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
97 addOptChild(defValue);
137
b49903801f14 - Implemented parseTemplateParameters().
aziz
parents: 135
diff changeset
98 this.valueType = valueType;
150
753bc07bf3a0 - Forgot to pass ident to constructor of TemplateArgument.
aziz
parents: 137
diff changeset
99 this.ident = ident;
137
b49903801f14 - Implemented parseTemplateParameters().
aziz
parents: 135
diff changeset
100 this.specValue = specValue;
b49903801f14 - Implemented parseTemplateParameters().
aziz
parents: 135
diff changeset
101 this.defValue = defValue;
b49903801f14 - Implemented parseTemplateParameters().
aziz
parents: 135
diff changeset
102 }
b49903801f14 - Implemented parseTemplateParameters().
aziz
parents: 135
diff changeset
103 }
b49903801f14 - Implemented parseTemplateParameters().
aziz
parents: 135
diff changeset
104
340
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
105 class TemplateTupleParameter : TemplateParameter
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
106 {
505
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 495
diff changeset
107 this(Identifier* ident)
340
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
108 {
505
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 495
diff changeset
109 super(ident);
340
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
110 mixin(set_kind);
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
111 this.ident = ident;
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
112 }
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
113 }
1accb3013bd2 - Changed class TemplateParameter to an abstract class.
aziz
parents: 327
diff changeset
114
258
112a57f433f2 - Created class TemplateParameters.
aziz
parents: 255
diff changeset
115 class TemplateParameters : Node
112a57f433f2 - Created class TemplateParameters.
aziz
parents: 255
diff changeset
116 {
112a57f433f2 - Created class TemplateParameters.
aziz
parents: 255
diff changeset
117 this()
112a57f433f2 - Created class TemplateParameters.
aziz
parents: 255
diff changeset
118 {
275
e8de572e4d01 - Changed enum NodeType to NodeCategory.
aziz
parents: 269
diff changeset
119 super(NodeCategory.Other);
281
c1fcfbce9499 - BaseClass inherits from Node now.
aziz
parents: 280
diff changeset
120 mixin(set_kind);
258
112a57f433f2 - Created class TemplateParameters.
aziz
parents: 255
diff changeset
121 }
112a57f433f2 - Created class TemplateParameters.
aziz
parents: 255
diff changeset
122
112a57f433f2 - Created class TemplateParameters.
aziz
parents: 255
diff changeset
123 void opCatAssign(TemplateParameter parameter)
112a57f433f2 - Created class TemplateParameters.
aziz
parents: 255
diff changeset
124 {
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
125 addChild(parameter);
295
75b47c71a34c - Assigning to Node.children in several constructors that inherit from Node.
aziz
parents: 291
diff changeset
126 }
75b47c71a34c - Assigning to Node.children in several constructors that inherit from Node.
aziz
parents: 291
diff changeset
127
75b47c71a34c - Assigning to Node.children in several constructors that inherit from Node.
aziz
parents: 291
diff changeset
128 TemplateParameter[] items()
75b47c71a34c - Assigning to Node.children in several constructors that inherit from Node.
aziz
parents: 291
diff changeset
129 {
75b47c71a34c - Assigning to Node.children in several constructors that inherit from Node.
aziz
parents: 291
diff changeset
130 return cast(TemplateParameter[])children;
258
112a57f433f2 - Created class TemplateParameters.
aziz
parents: 255
diff changeset
131 }
112a57f433f2 - Created class TemplateParameters.
aziz
parents: 255
diff changeset
132 }
112a57f433f2 - Created class TemplateParameters.
aziz
parents: 255
diff changeset
133
254
eb6e3f1fbfee - Removed typedef and created a proper TemplateArguments class.
aziz
parents: 253
diff changeset
134 class TemplateArguments : Node
eb6e3f1fbfee - Removed typedef and created a proper TemplateArguments class.
aziz
parents: 253
diff changeset
135 {
eb6e3f1fbfee - Removed typedef and created a proper TemplateArguments class.
aziz
parents: 253
diff changeset
136 this()
eb6e3f1fbfee - Removed typedef and created a proper TemplateArguments class.
aziz
parents: 253
diff changeset
137 {
275
e8de572e4d01 - Changed enum NodeType to NodeCategory.
aziz
parents: 269
diff changeset
138 super(NodeCategory.Other);
281
c1fcfbce9499 - BaseClass inherits from Node now.
aziz
parents: 280
diff changeset
139 mixin(set_kind);
254
eb6e3f1fbfee - Removed typedef and created a proper TemplateArguments class.
aziz
parents: 253
diff changeset
140 }
eb6e3f1fbfee - Removed typedef and created a proper TemplateArguments class.
aziz
parents: 253
diff changeset
141
eb6e3f1fbfee - Removed typedef and created a proper TemplateArguments class.
aziz
parents: 253
diff changeset
142 void opCatAssign(Node argument)
eb6e3f1fbfee - Removed typedef and created a proper TemplateArguments class.
aziz
parents: 253
diff changeset
143 {
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
144 addChild(argument);
254
eb6e3f1fbfee - Removed typedef and created a proper TemplateArguments class.
aziz
parents: 253
diff changeset
145 }
eb6e3f1fbfee - Removed typedef and created a proper TemplateArguments class.
aziz
parents: 253
diff changeset
146 }
150
753bc07bf3a0 - Forgot to pass ident to constructor of TemplateArgument.
aziz
parents: 137
diff changeset
147
135
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
148 enum TID
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
149 {
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
150 Void = TOK.Void,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
151 Char = TOK.Char,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
152 Wchar = TOK.Wchar,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
153 Dchar = TOK.Dchar,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
154 Bool = TOK.Bool,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
155 Byte = TOK.Byte,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
156 Ubyte = TOK.Ubyte,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
157 Short = TOK.Short,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
158 Ushort = TOK.Ushort,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
159 Int = TOK.Int,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
160 Uint = TOK.Uint,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
161 Long = TOK.Long,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
162 Ulong = TOK.Ulong,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
163 Float = TOK.Float,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
164 Double = TOK.Double,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
165 Real = TOK.Real,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
166 Ifloat = TOK.Ifloat,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
167 Idouble = TOK.Idouble,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
168 Ireal = TOK.Ireal,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
169 Cfloat = TOK.Cfloat,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
170 Cdouble = TOK.Cdouble,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
171 Creal = TOK.Creal,
521
772ffdb18fd4 Fix: added 'Cent' to enum TID.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 512
diff changeset
172 Cent = TOK.Cent,
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
173 Ucent = TOK.Ucent,
135
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
174
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
175 Undefined,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
176 Function,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
177 Delegate,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
178 Pointer,
409
38fccd2640eb Added code for parsing C function pointer declarations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 376
diff changeset
179 CFuncPointer,
135
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
180 Array,
488
cfb3805768b6 Added DotExpression and DotType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 409
diff changeset
181 Dot,
154
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
182 DotList,
135
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
183 Identifier,
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
184 Typeof,
153
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 150
diff changeset
185 TemplateInstance,
269
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
186 Const, // D2
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
187 Invariant, // D2
135
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
188 }
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
189
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
190 abstract class TypeNode : Node
94
0fe650a7a8d1 - Renamed Type enum to InfoType in module Information.
aziz
parents:
diff changeset
191 {
135
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
192 TID tid;
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
193 TypeNode next;
95
0eb4c8a5b32b - Added TOK.Invalid.
aziz
parents: 94
diff changeset
194
135
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
195 this(TID tid)
240
deab661906ae - Classes Declaration, Expression, Statement and Type inherit from Node now.
aziz
parents: 196
diff changeset
196 {
deab661906ae - Classes Declaration, Expression, Statement and Type inherit from Node now.
aziz
parents: 196
diff changeset
197 this(tid, null);
deab661906ae - Classes Declaration, Expression, Statement and Type inherit from Node now.
aziz
parents: 196
diff changeset
198 }
135
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
199
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
200 this(TID tid, TypeNode next)
94
0fe650a7a8d1 - Renamed Type enum to InfoType in module Information.
aziz
parents:
diff changeset
201 {
275
e8de572e4d01 - Changed enum NodeType to NodeCategory.
aziz
parents: 269
diff changeset
202 super(NodeCategory.Type);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
203 addOptChild(next);
135
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
204 this.tid = tid;
95
0eb4c8a5b32b - Added TOK.Invalid.
aziz
parents: 94
diff changeset
205 this.next = next;
94
0fe650a7a8d1 - Renamed Type enum to InfoType in module Information.
aziz
parents:
diff changeset
206 }
562
b0533550d64c Added semantic() to VariableDeclaration.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 521
diff changeset
207
b0533550d64c Added semantic() to VariableDeclaration.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 521
diff changeset
208 Type semantic(Scope scop)
b0533550d64c Added semantic() to VariableDeclaration.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 521
diff changeset
209 {
b0533550d64c Added semantic() to VariableDeclaration.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 521
diff changeset
210 return Types.Error;
b0533550d64c Added semantic() to VariableDeclaration.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 521
diff changeset
211 }
94
0fe650a7a8d1 - Renamed Type enum to InfoType in module Information.
aziz
parents:
diff changeset
212 }
0fe650a7a8d1 - Renamed Type enum to InfoType in module Information.
aziz
parents:
diff changeset
213
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
214 class IntegralType : TypeNode
280
1eb54f6f392e - Made class Type abstract.
aziz
parents: 279
diff changeset
215 {
1eb54f6f392e - Made class Type abstract.
aziz
parents: 279
diff changeset
216 this(TOK tok)
1eb54f6f392e - Made class Type abstract.
aziz
parents: 279
diff changeset
217 {
1eb54f6f392e - Made class Type abstract.
aziz
parents: 279
diff changeset
218 super(cast(TID)tok);
281
c1fcfbce9499 - BaseClass inherits from Node now.
aziz
parents: 280
diff changeset
219 mixin(set_kind);
280
1eb54f6f392e - Made class Type abstract.
aziz
parents: 279
diff changeset
220 }
1eb54f6f392e - Made class Type abstract.
aziz
parents: 279
diff changeset
221 }
1eb54f6f392e - Made class Type abstract.
aziz
parents: 279
diff changeset
222
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
223 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
224 {
a31aa0d6dd5e - Added class UndefinedType. Returning it in parseBasicType() when no token matched the basic type list.
aziz
parents: 130
diff changeset
225 this()
a31aa0d6dd5e - Added class UndefinedType. Returning it in parseBasicType() when no token matched the basic type list.
aziz
parents: 130
diff changeset
226 {
279
79c095aae50d - Removed null from calls to super().
aziz
parents: 275
diff changeset
227 super(TID.Undefined);
281
c1fcfbce9499 - BaseClass inherits from Node now.
aziz
parents: 280
diff changeset
228 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
229 }
a31aa0d6dd5e - Added class UndefinedType. Returning it in parseBasicType() when no token matched the basic type list.
aziz
parents: 130
diff changeset
230 }
a31aa0d6dd5e - Added class UndefinedType. Returning it in parseBasicType() when no token matched the basic type list.
aziz
parents: 130
diff changeset
231
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
232 class DotListType : TypeNode
153
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 150
diff changeset
233 {
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
234 TypeNode[] dotList;
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
235 this(TypeNode[] dotList)
153
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 150
diff changeset
236 {
279
79c095aae50d - Removed null from calls to super().
aziz
parents: 275
diff changeset
237 super(TID.DotList);
281
c1fcfbce9499 - BaseClass inherits from Node now.
aziz
parents: 280
diff changeset
238 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
239 addChildren(dotList);
154
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
240 this.dotList = dotList;
153
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 150
diff changeset
241 }
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 150
diff changeset
242 }
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 150
diff changeset
243
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
244 class IdentifierType : TypeNode
154
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
245 {
505
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 495
diff changeset
246 Identifier* ident;
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 495
diff changeset
247 this(Identifier* ident)
154
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
248 {
279
79c095aae50d - Removed null from calls to super().
aziz
parents: 275
diff changeset
249 super(TID.Identifier);
281
c1fcfbce9499 - BaseClass inherits from Node now.
aziz
parents: 280
diff changeset
250 mixin(set_kind);
154
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
251 this.ident = ident;
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
252 }
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
253 }
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
254
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
255 class DotType : TypeNode
488
cfb3805768b6 Added DotExpression and DotType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 409
diff changeset
256 {
cfb3805768b6 Added DotExpression and DotType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 409
diff changeset
257 this()
cfb3805768b6 Added DotExpression and DotType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 409
diff changeset
258 {
cfb3805768b6 Added DotExpression and DotType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 409
diff changeset
259 super(TID.Dot);
cfb3805768b6 Added DotExpression and DotType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 409
diff changeset
260 mixin(set_kind);
cfb3805768b6 Added DotExpression and DotType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 409
diff changeset
261 }
cfb3805768b6 Added DotExpression and DotType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 409
diff changeset
262 }
cfb3805768b6 Added DotExpression and DotType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 409
diff changeset
263
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
264 class TypeofType : TypeNode
154
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
265 {
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
266 Expression e;
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
267 this(Expression e)
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
268 {
492
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
269 this();
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
270 addChild(e);
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
271 this.e = e;
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
272 }
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
273
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
274 this()
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
275 {
279
79c095aae50d - Removed null from calls to super().
aziz
parents: 275
diff changeset
276 super(TID.Typeof);
281
c1fcfbce9499 - BaseClass inherits from Node now.
aziz
parents: 280
diff changeset
277 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
278 }
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
279
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
280 bool isTypeofReturn()
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
281 {
9c208925a3d4 Added module ImportParser and new stuff from DMD2.008.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
282 return e is null;
154
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
283 }
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
284 }
95
0eb4c8a5b32b - Added TOK.Invalid.
aziz
parents: 94
diff changeset
285
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
286 class TemplateInstanceType : TypeNode
153
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 150
diff changeset
287 {
505
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 495
diff changeset
288 Identifier* ident;
153
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 150
diff changeset
289 TemplateArguments targs;
505
3bb94ba21490 Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 495
diff changeset
290 this(Identifier* ident, TemplateArguments targs)
153
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 150
diff changeset
291 {
279
79c095aae50d - Removed null from calls to super().
aziz
parents: 275
diff changeset
292 super(TID.TemplateInstance);
281
c1fcfbce9499 - BaseClass inherits from Node now.
aziz
parents: 280
diff changeset
293 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
294 addOptChild(targs);
153
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 150
diff changeset
295 this.ident = ident;
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 150
diff changeset
296 this.targs = targs;
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 150
diff changeset
297 }
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 150
diff changeset
298 }
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 150
diff changeset
299
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
300 class PointerType : TypeNode
95
0eb4c8a5b32b - Added TOK.Invalid.
aziz
parents: 94
diff changeset
301 {
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
302 this(TypeNode t)
95
0eb4c8a5b32b - Added TOK.Invalid.
aziz
parents: 94
diff changeset
303 {
135
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
304 super(TID.Pointer, t);
281
c1fcfbce9499 - BaseClass inherits from Node now.
aziz
parents: 280
diff changeset
305 mixin(set_kind);
95
0eb4c8a5b32b - Added TOK.Invalid.
aziz
parents: 94
diff changeset
306 }
0eb4c8a5b32b - Added TOK.Invalid.
aziz
parents: 94
diff changeset
307 }
0eb4c8a5b32b - Added TOK.Invalid.
aziz
parents: 94
diff changeset
308
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
309 class ArrayType : TypeNode
95
0eb4c8a5b32b - Added TOK.Invalid.
aziz
parents: 94
diff changeset
310 {
106
441962b0f526 - Added parseArrayType() method.
aziz
parents: 100
diff changeset
311 Expression e, e2;
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
312 TypeNode assocType;
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
313
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
314 this(TypeNode t)
95
0eb4c8a5b32b - Added TOK.Invalid.
aziz
parents: 94
diff changeset
315 {
135
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
316 super(TID.Array, t);
281
c1fcfbce9499 - BaseClass inherits from Node now.
aziz
parents: 280
diff changeset
317 mixin(set_kind);
106
441962b0f526 - Added parseArrayType() method.
aziz
parents: 100
diff changeset
318 }
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
319
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
320 this(TypeNode t, Expression e, Expression e2)
106
441962b0f526 - Added parseArrayType() method.
aziz
parents: 100
diff changeset
321 {
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
322 addChild(e);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
323 addOptChild(e2);
95
0eb4c8a5b32b - Added TOK.Invalid.
aziz
parents: 94
diff changeset
324 this.e = e;
106
441962b0f526 - Added parseArrayType() method.
aziz
parents: 100
diff changeset
325 this.e2 = e2;
295
75b47c71a34c - Assigning to Node.children in several constructors that inherit from Node.
aziz
parents: 291
diff changeset
326 this(t);
106
441962b0f526 - Added parseArrayType() method.
aziz
parents: 100
diff changeset
327 }
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
328
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
329 this(TypeNode t, TypeNode assocType)
106
441962b0f526 - Added parseArrayType() method.
aziz
parents: 100
diff changeset
330 {
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
331 addChild(assocType);
295
75b47c71a34c - Assigning to Node.children in several constructors that inherit from Node.
aziz
parents: 291
diff changeset
332 this.assocType = assocType;
106
441962b0f526 - Added parseArrayType() method.
aziz
parents: 100
diff changeset
333 this(t);
95
0eb4c8a5b32b - Added TOK.Invalid.
aziz
parents: 94
diff changeset
334 }
0eb4c8a5b32b - Added TOK.Invalid.
aziz
parents: 94
diff changeset
335 }
100
538e8b546669 - Added code for parsing IsExpressions.
aziz
parents: 95
diff changeset
336
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
337 class FunctionType : TypeNode
130
0467f01ed524 - Fix: parameters can have optional identifier.
aziz
parents: 117
diff changeset
338 {
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
339 TypeNode returnType;
130
0467f01ed524 - Fix: parameters can have optional identifier.
aziz
parents: 117
diff changeset
340 Parameters parameters;
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
341 this(TypeNode returnType, Parameters parameters)
130
0467f01ed524 - Fix: parameters can have optional identifier.
aziz
parents: 117
diff changeset
342 {
279
79c095aae50d - Removed null from calls to super().
aziz
parents: 275
diff changeset
343 super(TID.Function);
281
c1fcfbce9499 - BaseClass inherits from Node now.
aziz
parents: 280
diff changeset
344 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
345 addChild(returnType);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
346 addChild(parameters);
130
0467f01ed524 - Fix: parameters can have optional identifier.
aziz
parents: 117
diff changeset
347 this.returnType = returnType;
0467f01ed524 - Fix: parameters can have optional identifier.
aziz
parents: 117
diff changeset
348 this.parameters = parameters;
0467f01ed524 - Fix: parameters can have optional identifier.
aziz
parents: 117
diff changeset
349 }
0467f01ed524 - Fix: parameters can have optional identifier.
aziz
parents: 117
diff changeset
350 }
135
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
351
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
352 class DelegateType : TypeNode
135
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
353 {
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
354 TypeNode returnType;
291
c0e857931ff6 - Changed FunctionType and DelegateType. Both receive return type and parameters.
aziz
parents: 281
diff changeset
355 Parameters parameters;
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
356 this(TypeNode returnType, Parameters parameters)
135
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
357 {
291
c0e857931ff6 - Changed FunctionType and DelegateType. Both receive return type and parameters.
aziz
parents: 281
diff changeset
358 super(TID.Delegate);
281
c1fcfbce9499 - BaseClass inherits from Node now.
aziz
parents: 280
diff changeset
359 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
360 addChild(returnType);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
361 addChild(parameters);
291
c0e857931ff6 - Changed FunctionType and DelegateType. Both receive return type and parameters.
aziz
parents: 281
diff changeset
362 this.returnType = returnType;
c0e857931ff6 - Changed FunctionType and DelegateType. Both receive return type and parameters.
aziz
parents: 281
diff changeset
363 this.parameters = parameters;
135
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
364 }
145e0d68ec95 - Added enum TID to module Type.
aziz
parents: 134
diff changeset
365 }
269
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
366
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
367 class CFuncPointerType : TypeNode
409
38fccd2640eb Added code for parsing C function pointer declarations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 376
diff changeset
368 {
38fccd2640eb Added code for parsing C function pointer declarations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 376
diff changeset
369 Parameters params;
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
370 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
371 {
38fccd2640eb Added code for parsing C function pointer declarations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 376
diff changeset
372 super(TID.CFuncPointer, type);
38fccd2640eb Added code for parsing C function pointer declarations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 376
diff changeset
373 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
374 addOptChild(params);
409
38fccd2640eb Added code for parsing C function pointer declarations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 376
diff changeset
375 }
38fccd2640eb Added code for parsing C function pointer declarations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 376
diff changeset
376 }
38fccd2640eb Added code for parsing C function pointer declarations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 376
diff changeset
377
269
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
378 version(D2)
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
379 {
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
380 class ConstType : TypeNode
269
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
381 {
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
382 this(TypeNode t)
269
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
383 {
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
384 // If t is null: cast(const)
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
385 super(TID.Const, t);
281
c1fcfbce9499 - BaseClass inherits from Node now.
aziz
parents: 280
diff changeset
386 mixin(set_kind);
269
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
387 }
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
388 }
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
389
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
390 class InvariantType : TypeNode
269
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
391 {
511
aa73f669c298 Renamed class Type to TypeNode.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 505
diff changeset
392 this(TypeNode t)
269
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
393 {
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
394 // If t is null: cast(invariant)
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
395 super(TID.Invariant, t);
281
c1fcfbce9499 - BaseClass inherits from Node now.
aziz
parents: 280
diff changeset
396 mixin(set_kind);
269
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
397 }
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
398 }
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 264
diff changeset
399 } // version(D2)