Mercurial > projects > dil
annotate src/dil/ast/Parameters.d @ 821:09a64d96967a
Started the interpreter. Made a couple changes in other parts -- CharExpression now has an IntExpression of a character type as its value member and its type is set accordingly.
author | Jarrett Billingsley <jarrett.billingsley@gmail.com> |
---|---|
date | Fri, 14 Mar 2008 11:01:05 -0400 |
parents | bcb74c9b895c |
children | 451ede0105e0 |
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 } |
821
09a64d96967a
Started the interpreter. Made a couple changes in other parts -- CharExpression now has an IntExpression of a character type as its value member and its type is set accordingly.
Jarrett Billingsley <jarrett.billingsley@gmail.com>
parents:
806
diff
changeset
|
56 |
09a64d96967a
Started the interpreter. Made a couple changes in other parts -- CharExpression now has an IntExpression of a character type as its value member and its type is set accordingly.
Jarrett Billingsley <jarrett.billingsley@gmail.com>
parents:
806
diff
changeset
|
57 /// Returns true if this parameter is lazy. |
09a64d96967a
Started the interpreter. Made a couple changes in other parts -- CharExpression now has an IntExpression of a character type as its value member and its type is set accordingly.
Jarrett Billingsley <jarrett.billingsley@gmail.com>
parents:
806
diff
changeset
|
58 bool isLazy() |
09a64d96967a
Started the interpreter. Made a couple changes in other parts -- CharExpression now has an IntExpression of a character type as its value member and its type is set accordingly.
Jarrett Billingsley <jarrett.billingsley@gmail.com>
parents:
806
diff
changeset
|
59 { |
09a64d96967a
Started the interpreter. Made a couple changes in other parts -- CharExpression now has an IntExpression of a character type as its value member and its type is set accordingly.
Jarrett Billingsley <jarrett.billingsley@gmail.com>
parents:
806
diff
changeset
|
60 return !!(stc & StorageClass.Lazy); |
09a64d96967a
Started the interpreter. Made a couple changes in other parts -- CharExpression now has an IntExpression of a character type as its value member and its type is set accordingly.
Jarrett Billingsley <jarrett.billingsley@gmail.com>
parents:
806
diff
changeset
|
61 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
786
diff
changeset
|
62 |
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
786
diff
changeset
|
63 mixin(copyMethod); |
604
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 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
66 /// Array of parameters. |
604
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
67 class Parameters : Node |
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 this() |
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 super(NodeCategory.Other); |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
72 mixin(set_kind); |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
73 } |
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 bool hasVariadic() |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
76 { |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
77 if (children.length != 0) |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
78 return items[$-1].isVariadic(); |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
79 return false; |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
80 } |
821
09a64d96967a
Started the interpreter. Made a couple changes in other parts -- CharExpression now has an IntExpression of a character type as its value member and its type is set accordingly.
Jarrett Billingsley <jarrett.billingsley@gmail.com>
parents:
806
diff
changeset
|
81 |
09a64d96967a
Started the interpreter. Made a couple changes in other parts -- CharExpression now has an IntExpression of a character type as its value member and its type is set accordingly.
Jarrett Billingsley <jarrett.billingsley@gmail.com>
parents:
806
diff
changeset
|
82 bool hasLazy() |
09a64d96967a
Started the interpreter. Made a couple changes in other parts -- CharExpression now has an IntExpression of a character type as its value member and its type is set accordingly.
Jarrett Billingsley <jarrett.billingsley@gmail.com>
parents:
806
diff
changeset
|
83 { |
09a64d96967a
Started the interpreter. Made a couple changes in other parts -- CharExpression now has an IntExpression of a character type as its value member and its type is set accordingly.
Jarrett Billingsley <jarrett.billingsley@gmail.com>
parents:
806
diff
changeset
|
84 foreach(param; items) |
09a64d96967a
Started the interpreter. Made a couple changes in other parts -- CharExpression now has an IntExpression of a character type as its value member and its type is set accordingly.
Jarrett Billingsley <jarrett.billingsley@gmail.com>
parents:
806
diff
changeset
|
85 if(param.isLazy()) |
09a64d96967a
Started the interpreter. Made a couple changes in other parts -- CharExpression now has an IntExpression of a character type as its value member and its type is set accordingly.
Jarrett Billingsley <jarrett.billingsley@gmail.com>
parents:
806
diff
changeset
|
86 return true; |
09a64d96967a
Started the interpreter. Made a couple changes in other parts -- CharExpression now has an IntExpression of a character type as its value member and its type is set accordingly.
Jarrett Billingsley <jarrett.billingsley@gmail.com>
parents:
806
diff
changeset
|
87 return false; |
09a64d96967a
Started the interpreter. Made a couple changes in other parts -- CharExpression now has an IntExpression of a character type as its value member and its type is set accordingly.
Jarrett Billingsley <jarrett.billingsley@gmail.com>
parents:
806
diff
changeset
|
88 } |
604
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
89 |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
90 void opCatAssign(Parameter param) |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
91 { addChild(param); } |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
92 |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
93 Parameter[] items() |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
94 { return cast(Parameter[])children; } |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
95 |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
96 size_t length() |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
97 { return children.length; } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
786
diff
changeset
|
98 |
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
786
diff
changeset
|
99 mixin(copyMethod); |
604
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
100 } |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
101 |
747
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
102 /*~~~~~~~~~~~~~~~~~~~~~~ |
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
103 ~ Template parameters: ~ |
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
104 ~~~~~~~~~~~~~~~~~~~~~~*/ |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
105 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
106 /// 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
|
107 abstract class TemplateParameter : Node |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
108 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
109 Identifier* ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
110 this(Identifier* ident) |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
111 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
112 super(NodeCategory.Other); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
113 this.ident = ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
114 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
786
diff
changeset
|
115 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
|
116 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
117 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
118 /// 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
|
119 class TemplateAliasParameter : 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 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
786
diff
changeset
|
132 mixin(copyMethod); |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
133 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
134 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
135 /// 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
|
136 class TemplateTypeParameter : TemplateParameter |
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 TypeNode specType, defType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
139 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
|
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 addOptChild(specType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
144 addOptChild(defType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
145 this.ident = ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
146 this.specType = specType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
147 this.defType = defType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
148 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
786
diff
changeset
|
149 mixin(copyMethod); |
605
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 |
635 | 152 // version(D2) |
153 // { | |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
154 /// 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
|
155 class TemplateThisParameter : TemplateParameter |
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 TypeNode specType, defType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
158 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
|
159 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
160 super(ident); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
161 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
162 addOptChild(specType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
163 addOptChild(defType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
164 this.ident = ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
165 this.specType = specType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
166 this.defType = defType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
167 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
786
diff
changeset
|
168 mixin(copyMethod); |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
169 } |
635 | 170 // } |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
171 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
172 /// E.g.: (T) |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
173 class TemplateValueParameter : TemplateParameter |
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 TypeNode valueType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
176 Expression specValue, defValue; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
177 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
|
178 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
179 super(ident); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
180 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
181 addChild(valueType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
182 addOptChild(specValue); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
183 addOptChild(defValue); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
184 this.valueType = valueType; |
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 this.specValue = specValue; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
187 this.defValue = defValue; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
188 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
786
diff
changeset
|
189 mixin(copyMethod); |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
190 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
191 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
192 /// E.g.: (T...) |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
193 class TemplateTupleParameter : TemplateParameter |
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 this(Identifier* ident) |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
196 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
197 super(ident); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
198 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
199 this.ident = ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
200 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
786
diff
changeset
|
201 mixin(copyMethod); |
605
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 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
204 /// 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
|
205 class TemplateParameters : Node |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
206 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
207 this() |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
208 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
209 super(NodeCategory.Other); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
210 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
211 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
212 |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
213 void opCatAssign(TemplateParameter parameter) |
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 addChild(parameter); |
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 |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
218 TemplateParameter[] items() |
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 return cast(TemplateParameter[])children; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
221 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
786
diff
changeset
|
222 |
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
786
diff
changeset
|
223 mixin(copyMethod); |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
224 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
225 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
226 /// 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
|
227 class TemplateArguments : Node |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
228 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
229 this() |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
230 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
231 super(NodeCategory.Other); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
232 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
233 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
234 |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
235 void opCatAssign(Node argument) |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
236 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
237 addChild(argument); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
238 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
786
diff
changeset
|
239 |
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
786
diff
changeset
|
240 mixin(copyMethod); |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
241 } |