Mercurial > projects > dil
annotate src/dil/ast/Parameters.d @ 806:bcb74c9b895c
Moved out files in the trunk folder to the root.
author | Aziz K?ksal <aziz.koeksal@gmail.com> |
---|---|
date | Sun, 09 Mar 2008 00:12:19 +0100 |
parents | trunk/src/dil/ast/Parameters.d@5fe89bb8cbdd |
children | 09a64d96967a |
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; |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
786
diff
changeset
|
10 import dil.ast.NodeCopier; |
604
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
11 import dil.lexer.Identifier; |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
12 import dil.Enums; |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
13 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
14 /// A function or foreach parameter. |
604
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
15 class Parameter : Node |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
16 { |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
17 StorageClass stc; /// The storage classes of the parameter. |
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
18 TypeNode type; /// The parameter's type. |
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
19 Identifier* name; /// The name of the parameter. |
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
20 Expression defValue; /// The default initialization value. |
604
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
21 |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
654
diff
changeset
|
22 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
|
23 { |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
24 super(NodeCategory.Other); |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
25 mixin(set_kind); |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
26 // 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
|
27 addOptChild(type); |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
28 addOptChild(defValue); |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
29 |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
30 this.stc = stc; |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
31 this.type = type; |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
654
diff
changeset
|
32 this.name = name; |
604
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
33 this.defValue = defValue; |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
34 } |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
35 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
36 /// Returns true if this is a D-style variadic parameter. |
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
37 /// E.g.: func(int[] values ...) |
747
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
38 bool isDVariadic() |
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
39 { |
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
40 return isVariadic && !isCVariadic; |
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
41 } |
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
42 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
43 /// Returns true if this is a C-style variadic parameter. |
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
44 /// E.g.: func(...) |
747
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
45 bool isCVariadic() |
604
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 return stc == StorageClass.Variadic && |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
654
diff
changeset
|
48 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
|
49 } |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
50 |
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
51 /// Returns true if this is a D- or C-style variadic parameter. |
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
52 bool isVariadic() |
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
53 { |
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
54 return !!(stc & StorageClass.Variadic); |
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
55 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
786
diff
changeset
|
56 |
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
786
diff
changeset
|
57 mixin(copyMethod); |
604
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
58 } |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
59 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
60 /// Array of parameters. |
604
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
61 class Parameters : Node |
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 this() |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
64 { |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
65 super(NodeCategory.Other); |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
66 mixin(set_kind); |
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 bool hasVariadic() |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
70 { |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
71 if (children.length != 0) |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
72 return items[$-1].isVariadic(); |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
73 return false; |
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 |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
76 void opCatAssign(Parameter param) |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
77 { addChild(param); } |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
78 |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
79 Parameter[] items() |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
80 { return cast(Parameter[])children; } |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
81 |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
82 size_t length() |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
83 { return children.length; } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
786
diff
changeset
|
84 |
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
786
diff
changeset
|
85 mixin(copyMethod); |
604
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
86 } |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
87 |
747
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
88 /*~~~~~~~~~~~~~~~~~~~~~~ |
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
89 ~ Template parameters: ~ |
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
90 ~~~~~~~~~~~~~~~~~~~~~~*/ |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
91 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
92 /// Abstract base class for all template parameters. |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
93 abstract class TemplateParameter : Node |
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 Identifier* ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
96 this(Identifier* ident) |
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(NodeCategory.Other); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
99 this.ident = ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
100 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
786
diff
changeset
|
101 override abstract TemplateParameter copy(); |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
102 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
103 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
104 /// E.g.: (alias T) |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
105 class TemplateAliasParameter : TemplateParameter |
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 TypeNode specType, defType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
108 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
|
109 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
110 super(ident); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
111 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
112 addOptChild(specType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
113 addOptChild(defType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
114 this.ident = ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
115 this.specType = specType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
116 this.defType = defType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
117 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
786
diff
changeset
|
118 mixin(copyMethod); |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
119 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
120 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
121 /// E.g.: (T t) |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
122 class TemplateTypeParameter : TemplateParameter |
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 TypeNode specType, defType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
125 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
|
126 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
127 super(ident); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
128 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
129 addOptChild(specType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
130 addOptChild(defType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
131 this.ident = ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
132 this.specType = specType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
133 this.defType = defType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
134 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
786
diff
changeset
|
135 mixin(copyMethod); |
605
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 |
635 | 138 // version(D2) |
139 // { | |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
140 /// E.g.: (this T) |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
141 class TemplateThisParameter : 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 specType, defType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
144 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
|
145 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
146 super(ident); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
147 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
148 addOptChild(specType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
149 addOptChild(defType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
150 this.ident = ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
151 this.specType = specType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
152 this.defType = defType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
153 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
786
diff
changeset
|
154 mixin(copyMethod); |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
155 } |
635 | 156 // } |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
157 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
158 /// E.g.: (T) |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
159 class TemplateValueParameter : 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 TypeNode valueType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
162 Expression specValue, defValue; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
163 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
|
164 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
165 super(ident); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
166 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
167 addChild(valueType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
168 addOptChild(specValue); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
169 addOptChild(defValue); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
170 this.valueType = valueType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
171 this.ident = ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
172 this.specValue = specValue; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
173 this.defValue = defValue; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
174 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
786
diff
changeset
|
175 mixin(copyMethod); |
605
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 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
178 /// E.g.: (T...) |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
179 class TemplateTupleParameter : TemplateParameter |
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 this(Identifier* ident) |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
182 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
183 super(ident); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
184 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
185 this.ident = ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
186 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
786
diff
changeset
|
187 mixin(copyMethod); |
605
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 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
190 /// Array of template parameters. |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
191 class TemplateParameters : Node |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
192 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
193 this() |
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 super(NodeCategory.Other); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
196 mixin(set_kind); |
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 |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
199 void opCatAssign(TemplateParameter parameter) |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
200 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
201 addChild(parameter); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
202 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
203 |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
204 TemplateParameter[] items() |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
205 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
206 return cast(TemplateParameter[])children; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
207 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
786
diff
changeset
|
208 |
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
786
diff
changeset
|
209 mixin(copyMethod); |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
210 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
211 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
212 /// Array of template arguments. |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
213 class TemplateArguments : Node |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
214 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
215 this() |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
216 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
217 super(NodeCategory.Other); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
218 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
219 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
220 |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
221 void opCatAssign(Node argument) |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
222 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
223 addChild(argument); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
224 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
786
diff
changeset
|
225 |
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
786
diff
changeset
|
226 mixin(copyMethod); |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
227 } |