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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 608
diff changeset
123 // version(D2)
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 608
diff changeset
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
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 608
diff changeset
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 }