Mercurial > projects > dil
annotate trunk/src/dil/ast/Parameters.d @ 747:00f872d949ea
Added method scanCommentText() to DDocEmitter.
Added method writeParams() and scanCodeSection().
Added method scanMacro() to MacroParser.
Made fixes and improvements to the MacroExpander.
Applied other minor fixes.
author | Aziz K?ksal <aziz.koeksal@gmail.com> |
---|---|
date | Mon, 11 Feb 2008 03:15:45 +0100 |
parents | 65ad2f96df1f |
children | 3b34f6a95a27 |
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; |
701
65ad2f96df1f
Moved TypeNode to new module dil.ast.Type.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
668
diff
changeset
|
8 import dil.ast.Type; |
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; |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
654
diff
changeset
|
17 Identifier* name; |
604
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 |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
654
diff
changeset
|
20 this(StorageClass stc, TypeNode type, Identifier* name, Expression defValue) |
604
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; |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
654
diff
changeset
|
30 this.name = name; |
604
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 |
747
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
40 /// func(int[] values ...) |
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
41 bool isDVariadic() |
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
42 { |
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
43 return isVariadic && !isCVariadic; |
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
44 } |
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
45 |
604
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
46 /// func(...) |
747
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
47 bool isCVariadic() |
604
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
48 { |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
49 return stc == StorageClass.Variadic && |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
654
diff
changeset
|
50 type is null && name is null; |
604
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 } |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
53 |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
54 class Parameters : Node |
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 this() |
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 super(NodeCategory.Other); |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
59 mixin(set_kind); |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
60 } |
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 bool hasVariadic() |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
63 { |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
64 if (children.length != 0) |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
65 return items[$-1].isVariadic(); |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
66 return false; |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
67 } |
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 void opCatAssign(Parameter param) |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
70 { addChild(param); } |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
71 |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
72 Parameter[] items() |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
73 { return cast(Parameter[])children; } |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
74 |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
75 size_t length() |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
76 { return children.length; } |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
77 } |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
78 |
747
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
79 /*~~~~~~~~~~~~~~~~~~~~~~ |
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
80 ~ Template parameters: ~ |
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
81 ~~~~~~~~~~~~~~~~~~~~~~*/ |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
82 |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
83 abstract class TemplateParameter : Node |
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 Identifier* ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
86 this(Identifier* ident) |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
87 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
88 super(NodeCategory.Other); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
89 this.ident = ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
90 } |
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 |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
93 class TemplateAliasParameter : TemplateParameter |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
94 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
95 TypeNode specType, defType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
96 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
|
97 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
98 super(ident); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
99 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
100 addOptChild(specType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
101 addOptChild(defType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
102 this.ident = ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
103 this.specType = specType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
104 this.defType = defType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
105 } |
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 |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
108 class TemplateTypeParameter : TemplateParameter |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
109 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
110 TypeNode specType, defType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
111 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
|
112 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
113 super(ident); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
114 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
115 addOptChild(specType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
116 addOptChild(defType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
117 this.ident = ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
118 this.specType = specType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
119 this.defType = defType; |
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 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
122 |
635 | 123 // version(D2) |
124 // { | |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
125 class TemplateThisParameter : TemplateParameter |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
126 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
127 TypeNode specType, defType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
128 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
|
129 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
130 super(ident); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
131 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
132 addOptChild(specType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
133 addOptChild(defType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
134 this.ident = ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
135 this.specType = specType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
136 this.defType = defType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
137 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
138 } |
635 | 139 // } |
605
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 class TemplateValueParameter : TemplateParameter |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
142 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
143 TypeNode valueType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
144 Expression specValue, defValue; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
145 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
|
146 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
147 super(ident); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
148 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
149 addChild(valueType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
150 addOptChild(specValue); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
151 addOptChild(defValue); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
152 this.valueType = valueType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
153 this.ident = ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
154 this.specValue = specValue; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
155 this.defValue = defValue; |
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 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
158 |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
159 class TemplateTupleParameter : TemplateParameter |
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 this(Identifier* ident) |
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 super(ident); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
164 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
165 this.ident = ident; |
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 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
168 |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
169 class TemplateParameters : Node |
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 this() |
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 super(NodeCategory.Other); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
174 mixin(set_kind); |
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 |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
177 void opCatAssign(TemplateParameter parameter) |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
178 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
179 addChild(parameter); |
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 TemplateParameter[] items() |
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 return cast(TemplateParameter[])children; |
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 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
187 |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
188 class TemplateArguments : Node |
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 this() |
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 super(NodeCategory.Other); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
193 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
194 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
195 |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
196 void opCatAssign(Node argument) |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
197 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
198 addChild(argument); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
199 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
200 } |