Mercurial > projects > dil
annotate trunk/src/dil/ast/Parameters.d @ 654:2a71e2f50e13
Moved class Declaration to its own module.
author | Aziz K?ksal <aziz.koeksal@gmail.com> |
---|---|
date | Tue, 15 Jan 2008 16:22:49 +0100 |
parents | b2fc028d8b55 |
children | a1f8d8f2db38 |
rev | line source |
---|---|
604
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
1 /++ |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
2 Author: Aziz Köksal |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
3 License: GPL3 |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
4 +/ |
608
fac9e8b258fc
Moved dil.ast.Parameter to dil.ast.Parameters.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
605
diff
changeset
|
5 module dil.ast.Parameters; |
604
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
6 |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
7 import dil.ast.Node; |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
8 import dil.ast.Types; |
654
2a71e2f50e13
Moved class Declaration to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
635
diff
changeset
|
9 import dil.ast.Expression; |
604
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
10 import dil.lexer.Identifier; |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
11 import dil.Enums; |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
12 |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
13 class Parameter : Node |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
14 { |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
15 StorageClass stc; |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
16 TypeNode type; |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
17 Identifier* ident; |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
18 Expression defValue; |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
19 |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
20 this(StorageClass stc, TypeNode type, Identifier* ident, Expression defValue) |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
21 { |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
22 super(NodeCategory.Other); |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
23 mixin(set_kind); |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
24 // type can be null when param in foreach statement |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
25 addOptChild(type); |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
26 addOptChild(defValue); |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
27 |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
28 this.stc = stc; |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
29 this.type = type; |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
30 this.ident = ident; |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
31 this.defValue = defValue; |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
32 } |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
33 |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
34 /// func(...) or func(int[] values ...) |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
35 bool isVariadic() |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
36 { |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
37 return !!(stc & StorageClass.Variadic); |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
38 } |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
39 |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
40 /// func(...) |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
41 bool isOnlyVariadic() |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
42 { |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
43 return stc == StorageClass.Variadic && |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
44 type is null && ident is null; |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
45 } |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
46 } |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
47 |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
48 class Parameters : Node |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
49 { |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
50 this() |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
51 { |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
52 super(NodeCategory.Other); |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
53 mixin(set_kind); |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
54 } |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
55 |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
56 bool hasVariadic() |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
57 { |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
58 if (children.length != 0) |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
59 return items[$-1].isVariadic(); |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
60 return false; |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
61 } |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
62 |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
63 void opCatAssign(Parameter param) |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
64 { addChild(param); } |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
65 |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
66 Parameter[] items() |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
67 { return cast(Parameter[])children; } |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
68 |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
69 size_t length() |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
70 { return children.length; } |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
71 } |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
72 |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
73 /********************* |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
74 Template parameters: |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
75 */ |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
76 |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
77 abstract class TemplateParameter : Node |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
78 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
79 Identifier* ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
80 this(Identifier* ident) |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
81 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
82 super(NodeCategory.Other); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
83 this.ident = ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
84 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
85 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
86 |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
87 class TemplateAliasParameter : TemplateParameter |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
88 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
89 TypeNode specType, defType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
90 this(Identifier* ident, TypeNode specType, TypeNode defType) |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
91 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
92 super(ident); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
93 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
94 addOptChild(specType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
95 addOptChild(defType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
96 this.ident = ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
97 this.specType = specType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
98 this.defType = defType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
99 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
100 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
101 |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
102 class TemplateTypeParameter : TemplateParameter |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
103 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
104 TypeNode specType, defType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
105 this(Identifier* ident, TypeNode specType, TypeNode defType) |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
106 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
107 super(ident); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
108 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
109 addOptChild(specType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
110 addOptChild(defType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
111 this.ident = ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
112 this.specType = specType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
113 this.defType = defType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
114 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
115 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
116 |
635 | 117 // version(D2) |
118 // { | |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
119 class TemplateThisParameter : TemplateParameter |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
120 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
121 TypeNode specType, defType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
122 this(Identifier* ident, TypeNode specType, TypeNode defType) |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
123 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
124 super(ident); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
125 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
126 addOptChild(specType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
127 addOptChild(defType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
128 this.ident = ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
129 this.specType = specType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
130 this.defType = defType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
131 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
132 } |
635 | 133 // } |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
134 |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
135 class TemplateValueParameter : TemplateParameter |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
136 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
137 TypeNode valueType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
138 Expression specValue, defValue; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
139 this(TypeNode valueType, Identifier* ident, Expression specValue, Expression defValue) |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
140 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
141 super(ident); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
142 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
143 addChild(valueType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
144 addOptChild(specValue); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
145 addOptChild(defValue); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
146 this.valueType = valueType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
147 this.ident = ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
148 this.specValue = specValue; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
149 this.defValue = defValue; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
150 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
151 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
152 |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
153 class TemplateTupleParameter : TemplateParameter |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
154 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
155 this(Identifier* ident) |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
156 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
157 super(ident); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
158 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
159 this.ident = ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
160 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
161 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
162 |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
163 class TemplateParameters : Node |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
164 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
165 this() |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
166 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
167 super(NodeCategory.Other); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
168 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
169 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
170 |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
171 void opCatAssign(TemplateParameter parameter) |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
172 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
173 addChild(parameter); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
174 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
175 |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
176 TemplateParameter[] items() |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
177 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
178 return cast(TemplateParameter[])children; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
179 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
180 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
181 |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
182 class TemplateArguments : Node |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
183 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
184 this() |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
185 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
186 super(NodeCategory.Other); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
187 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
188 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
189 |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
190 void opCatAssign(Node argument) |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
191 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
192 addChild(argument); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
193 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
194 } |