Mercurial > projects > dil
annotate trunk/src/dil/ast/DefaultVisitor.d @ 660:085bac570c7e
Implemented class DefaultVisitor.
author | Aziz K?ksal <aziz.koeksal@gmail.com> |
---|---|
date | Tue, 15 Jan 2008 23:26:49 +0100 |
parents | 0acc43b86bf2 |
children | 73bac90f90b2 |
rev | line source |
---|---|
642
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
1 /++ |
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
2 Author: Aziz Köksal |
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
3 License: GPL3 |
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
4 +/ |
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
5 module dil.ast.DefaultVisitor; |
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
6 |
643
3bd947eb72c2
Added module cmd.ASTStats.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
642
diff
changeset
|
7 import dil.ast.Visitor; |
3bd947eb72c2
Added module cmd.ASTStats.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
642
diff
changeset
|
8 |
642
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
9 import dil.ast.Node; |
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
10 import dil.ast.Declarations, |
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
11 dil.ast.Expressions, |
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
12 dil.ast.Statements, |
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
13 dil.ast.Types, |
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
14 dil.ast.Parameters; |
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
15 |
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
16 class DefaultVisitor : Visitor |
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
17 { |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
18 override: // Override methods of the base class. |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
19 Declaration visit(D : Declaration)(D d) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
20 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
21 static if (is(D == Declarations)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
22 foreach (node; d.children) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
23 visitD(node.to!(Declaration)); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
24 static if (is(D == EmptyDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
25 static if (is(D == IllegalDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
26 static if (is(D == ModuleDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
27 static if (is(D == AliasDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
28 is(D == AliasDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
29 is(D == TypedefDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
30 visitD(d.decl); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
31 static if (is(D == EnumDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
32 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
33 foreach (member; d.members) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
34 visitD(member); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
35 visitT(d.baseType); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
36 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
37 static if (is(D == EnumMember)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
38 visitE(d.value); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
39 static if (is(D == ClassDeclaration) || is( D == InterfaceDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
40 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
41 d.tparams && visitN(d.tparams); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
42 foreach (base; d.bases) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
43 visitT(base); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
44 d.decls && visitD(d.decls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
45 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
46 static if (is(D == StructDeclaration) || is(D == UnionDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
47 d.tparams && visitN(d.tparams), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
48 d.decls && visitD(d.decls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
49 static if (is(D == ConstructorDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
50 visitN(d.parameters), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
51 visitS(d.funcBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
52 static if (is(D == StaticConstructorDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
53 is(D == DestructorDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
54 is(D == StaticDestructorDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
55 is(D == InvariantDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
56 is(D == UnittestDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
57 visitS(d.funcBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
58 static if (is(D == FunctionDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
59 visitT(d.returnType), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
60 d.tparams && visitN(d.tparams), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
61 visitN(d.params), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
62 visitS(d.funcBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
63 static if (is(D == VariableDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
64 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
65 d.typeNode && visitT(d.typeNode); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
66 foreach(value; d.values) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
67 value && visitE(value); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
68 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
69 static if (is(D == DebugDeclaration) || is(D == VersionDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
70 visitD(d.decls), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
71 d.elseDecls && visitD(d.elseDecls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
72 static if (is(D == StaticIfDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
73 visitE(d.condition), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
74 visitD(d.ifDecls), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
75 d.elseDecls && visitD(d.elseDecls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
76 static if (is(D == StaticAssertDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
77 visitE(d.condition), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
78 d.message && visitE(d.message); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
79 static if (is(D == TemplateDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
80 d.tparams && visitN(d.tparams), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
81 visitD(d.decls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
82 static if (is(D == NewDeclaration) || is(D == DeleteDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
83 visitN(d.parameters), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
84 visitS(d.funcBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
85 static if (is(D == ProtectionDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
86 is(D == StorageClassDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
87 is(D == LinkageDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
88 is(D == AlignDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
89 visitD(d.decls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
90 static if (is(D == PragmaDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
91 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
92 foreach (arg; d.args) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
93 visitE(arg); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
94 visitD(d.decls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
95 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
96 static if (is(D == MixinDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
97 d.templateExpr ? visitE(d.templateExpr) : visitE(d.argument); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
98 return d; |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
99 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
100 |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
101 mixin visit!(Declarations); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
102 mixin visit!(EmptyDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
103 mixin visit!(IllegalDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
104 mixin visit!(ModuleDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
105 mixin visit!(ImportDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
106 mixin visit!(AliasDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
107 mixin visit!(TypedefDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
108 mixin visit!(EnumDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
109 mixin visit!(EnumMember); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
110 mixin visit!(ClassDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
111 mixin visit!(InterfaceDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
112 mixin visit!(StructDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
113 mixin visit!(UnionDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
114 mixin visit!(ConstructorDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
115 mixin visit!(StaticConstructorDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
116 mixin visit!(DestructorDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
117 mixin visit!(StaticDestructorDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
118 mixin visit!(FunctionDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
119 mixin visit!(VariableDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
120 mixin visit!(InvariantDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
121 mixin visit!(UnittestDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
122 mixin visit!(DebugDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
123 mixin visit!(VersionDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
124 mixin visit!(StaticIfDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
125 mixin visit!(StaticAssertDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
126 mixin visit!(TemplateDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
127 mixin visit!(NewDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
128 mixin visit!(DeleteDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
129 mixin visit!(ProtectionDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
130 mixin visit!(StorageClassDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
131 mixin visit!(LinkageDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
132 mixin visit!(AlignDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
133 mixin visit!(PragmaDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
134 mixin visit!(MixinDeclaration); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
135 |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
136 Expression visit(E : Expression)(E e) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
137 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
138 static if (is(E == IllegalExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
139 {} |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
140 else |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
141 static if (is(E : CondExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
142 visitE(e.condition), visitE(e.left), visitE(e.right); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
143 else |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
144 static if (is(E : BinaryExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
145 visitE(e.left), visitE(e.right); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
146 else |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
147 static if (is(E : UnaryExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
148 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
149 static if (is(E == CastExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
150 visitT(e.type); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
151 visitE(e.e); // member of UnaryExpression |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
152 static if (is(E == IndexExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
153 foreach (arg; e.args) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
154 visitE(arg); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
155 static if (is(E == SliceExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
156 visitE(e.left), visitE(e.right); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
157 static if (is(E == AsmPostBracketExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
158 visitE(e.e2); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
159 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
160 else |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
161 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
162 static if (is(E == NewExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
163 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
164 foreach (arg; e.newArgs) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
165 visitE(arg); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
166 visitT(e.type); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
167 foreach (arg; e.ctorArgs) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
168 visitE(arg); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
169 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
170 static if (is(E == NewAnonClassExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
171 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
172 foreach (arg; e.newArgs) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
173 visitE(arg); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
174 foreach (base; e.bases) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
175 visitT(base); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
176 foreach (arg; e.ctorArgs) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
177 visitE(arg); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
178 visitD(e.decls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
179 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
180 static if (is(E == AsmBracketExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
181 visitE(e.e); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
182 static if (is(E == TemplateInstanceExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
183 e.targs && visitN(e.targs); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
184 static if (is(E == ArrayLiteralExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
185 foreach (value; e.values) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
186 visitE(value); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
187 static if (is(E == AArrayLiteralExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
188 foreach (i, key; e.keys) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
189 visitE(key), visitE(e.values[i]); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
190 static if (is(E == AssertExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
191 visitE(e.expr), e.msg && visitE(e.msg); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
192 static if (is(E == MixinExpression) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
193 is(E == ImportExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
194 visitE(e.expr); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
195 static if (is(E == TypeofExpression) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
196 is(E == TypeDotIdExpression) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
197 is(E == TypeidExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
198 visitT(e.type); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
199 static if (is(E == IsExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
200 visitT(e.type), e.specType && visitT(e.specType), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
201 e.tparams && visitN(e.tparams); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
202 static if (is(E == FunctionLiteralExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
203 e.returnType && visitT(e.returnType), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
204 e.parameters && visitN(e.parameters), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
205 visitS(e.funcBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
206 static if (is(E == ParenExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
207 visitE(e.next); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
208 static if (is(E == TraitsExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
209 visitN(e.targs); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
210 static if (is(E == ArrayInitializer)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
211 foreach (i, key; e.keys) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
212 key && visitE(key), visitE(e.values[i]); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
213 static if (is(E == StructInitializer)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
214 foreach (value; e.values) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
215 visitE(value); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
216 |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
217 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
218 return e; |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
219 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
220 |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
221 mixin visit!(IllegalExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
222 mixin visit!(CondExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
223 mixin visit!(CommaExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
224 mixin visit!(OrOrExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
225 mixin visit!(AndAndExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
226 mixin visit!(OrExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
227 mixin visit!(XorExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
228 mixin visit!(AndExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
229 mixin visit!(EqualExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
230 mixin visit!(IdentityExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
231 mixin visit!(RelExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
232 mixin visit!(InExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
233 mixin visit!(LShiftExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
234 mixin visit!(RShiftExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
235 mixin visit!(URShiftExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
236 mixin visit!(PlusExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
237 mixin visit!(MinusExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
238 mixin visit!(CatExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
239 mixin visit!(MulExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
240 mixin visit!(DivExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
241 mixin visit!(ModExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
242 mixin visit!(AssignExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
243 mixin visit!(LShiftAssignExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
244 mixin visit!(RShiftAssignExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
245 mixin visit!(URShiftAssignExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
246 mixin visit!(OrAssignExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
247 mixin visit!(AndAssignExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
248 mixin visit!(PlusAssignExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
249 mixin visit!(MinusAssignExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
250 mixin visit!(DivAssignExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
251 mixin visit!(MulAssignExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
252 mixin visit!(ModAssignExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
253 mixin visit!(XorAssignExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
254 mixin visit!(CatAssignExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
255 mixin visit!(DotExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
256 |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
257 mixin visit!(AddressExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
258 mixin visit!(PreIncrExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
259 mixin visit!(PreDecrExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
260 mixin visit!(PostIncrExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
261 mixin visit!(PostDecrExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
262 mixin visit!(DerefExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
263 mixin visit!(SignExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
264 mixin visit!(NotExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
265 mixin visit!(CompExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
266 mixin visit!(CallExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
267 mixin visit!(NewExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
268 mixin visit!(NewAnonClassExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
269 mixin visit!(DeleteExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
270 mixin visit!(CastExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
271 mixin visit!(IndexExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
272 mixin visit!(SliceExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
273 mixin visit!(ModuleScopeExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
274 |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
275 mixin visit!(IdentifierExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
276 mixin visit!(SpecialTokenExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
277 mixin visit!(TemplateInstanceExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
278 mixin visit!(ThisExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
279 mixin visit!(SuperExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
280 mixin visit!(NullExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
281 mixin visit!(DollarExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
282 mixin visit!(BoolExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
283 mixin visit!(IntExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
284 mixin visit!(RealExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
285 mixin visit!(ComplexExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
286 mixin visit!(CharExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
287 mixin visit!(StringExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
288 mixin visit!(ArrayLiteralExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
289 mixin visit!(AArrayLiteralExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
290 mixin visit!(AssertExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
291 mixin visit!(MixinExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
292 mixin visit!(ImportExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
293 mixin visit!(TypeofExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
294 mixin visit!(TypeDotIdExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
295 mixin visit!(TypeidExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
296 |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
297 mixin visit!(IsExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
298 mixin visit!(FunctionLiteralExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
299 mixin visit!(ParenExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
300 mixin visit!(TraitsExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
301 mixin visit!(VoidInitializer); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
302 mixin visit!(ArrayInitializer); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
303 mixin visit!(StructInitializer); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
304 mixin visit!(AsmTypeExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
305 |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
306 mixin visit!(AsmOffsetExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
307 mixin visit!(AsmSegExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
308 mixin visit!(AsmPostBracketExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
309 mixin visit!(AsmBracketExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
310 mixin visit!(AsmLocalSizeExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
311 mixin visit!(AsmRegisterExpression); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
312 |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
313 Statement visit(S : Statement)(S s) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
314 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
315 static if (is(T == Statements)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
316 foreach (node; s.children) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
317 visitS(node.to!(Statement)); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
318 //static if (is(T == IllegalStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
319 static if (is(T == FunctionBody)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
320 s.funcBody && visitS(s.funcBody), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
321 s.inBody && visitS(s.inBody), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
322 s.outBody && visitS(s.outBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
323 static if (is(T == ScopeStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
324 visitS(s.s); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
325 static if (is(T == LabeledStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
326 visitS(s.s); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
327 static if (is(T == ExpressionStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
328 visitE(s.e); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
329 static if (is(T == DeclarationStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
330 visitD(s.decl); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
331 static if (is(T == IfStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
332 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
333 s.variable ? visitS(s.variable) : visitS(s.condition); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
334 visitS(s.ifBody), s.elseBody && visitS(s.elseBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
335 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
336 static if (is(T == WhileStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
337 visitE(s.condition), visitS(s.whileBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
338 static if (is(T == DoWhileStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
339 visitE(s.condition), visitS(s.doBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
340 static if (is(T == ForStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
341 s.init && visitS(s.init), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
342 s.condition && visitS(s.condition), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
343 s.increment && visitS(s.increment), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
344 visitS(s.forBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
345 static if (is(T == ForeachStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
346 visitN(s.params), visitE(s.aggregate), visitS(s.forBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
347 static if (is(T == ForeachRangeStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
348 visitN(s.params), visitE(s.lower), visitE(s.upper), visitS(s.forBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
349 static if (is(T == SwitchStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
350 visitE(s.condition), visitS(s.switchBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
351 static if (is(T == CaseStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
352 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
353 foreach (value; values) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
354 visitE(value); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
355 visitS(s.caseBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
356 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
357 static if (is(T == DefaultStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
358 visitS(s.defaultBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
359 //static if (is(T == ContinueStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
360 //static if (is(T == BreakStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
361 static if (is(T == ReturnStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
362 visitS(s.expr); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
363 static if (is(T == GotoStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
364 s.caseExpr && visitS(s.caseExpr); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
365 static if (is(T == WithStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
366 visitE(s.e), visitS(s.withBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
367 static if (is(T == SynchronizedStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
368 s.e && visitE(s.e), visitS(s.syncBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
369 static if (is(T == TryStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
370 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
371 visitS(s.tryBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
372 foreach (body_; s.catchBodies) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
373 visitS(body_); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
374 s.finallyBody && visitS(s.finallyBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
375 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
376 static if (is(T == CatchBody)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
377 s.param && visitN(s.param), visitS(s.catchBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
378 static if (is(T == FinallyBody)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
379 visitS(s.finallyBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
380 static if (is(T == ScopeGuardStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
381 visitS(s.scopeBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
382 static if (is(T == ThrowStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
383 visitE(s.e); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
384 static if (is(T == VolatileStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
385 s.volatileBody && visitS(s.volatileBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
386 static if (is(T == AsmStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
387 visitS(s.statements); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
388 static if (is(T == AsmInstruction)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
389 foreach (e; s.operands) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
390 visitS(e); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
391 //static if (is(T == AsmAlignStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
392 static if (is(T == PragmaStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
393 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
394 foreach (e; s.args) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
395 visitE(e); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
396 visitS(s.pragmaBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
397 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
398 static if (is(T == MixinStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
399 visitE(s.templateExpr); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
400 static if (is(T == StaticIfStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
401 visitE(s.condition), visitS(s.ifBody), s.elseBody && visitS(s.elseBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
402 static if (is(T == StaticAssertStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
403 visitE(s.condition), s.message && visitE(s.message); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
404 static if (is(T == DebugStatement) || is(T == VersionStatement)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
405 visitS(s.mainBody), s.elseBody && visitS(s.elseBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
406 return s; |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
407 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
408 |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
409 mixin visit!(Statements); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
410 mixin visit!(IllegalStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
411 mixin visit!(EmptyStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
412 mixin visit!(FunctionBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
413 mixin visit!(ScopeStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
414 mixin visit!(LabeledStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
415 mixin visit!(ExpressionStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
416 mixin visit!(DeclarationStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
417 mixin visit!(IfStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
418 mixin visit!(WhileStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
419 mixin visit!(DoWhileStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
420 mixin visit!(ForStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
421 mixin visit!(ForeachStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
422 mixin visit!(ForeachRangeStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
423 mixin visit!(SwitchStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
424 mixin visit!(CaseStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
425 mixin visit!(DefaultStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
426 mixin visit!(ContinueStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
427 mixin visit!(BreakStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
428 mixin visit!(ReturnStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
429 mixin visit!(GotoStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
430 mixin visit!(WithStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
431 mixin visit!(SynchronizedStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
432 mixin visit!(TryStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
433 mixin visit!(CatchBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
434 mixin visit!(FinallyBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
435 mixin visit!(ScopeGuardStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
436 mixin visit!(ThrowStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
437 mixin visit!(VolatileStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
438 mixin visit!(AsmStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
439 mixin visit!(AsmInstruction); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
440 mixin visit!(AsmAlignStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
441 mixin visit!(IllegalAsmInstruction); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
442 mixin visit!(PragmaStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
443 mixin visit!(MixinStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
444 mixin visit!(StaticIfStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
445 mixin visit!(StaticAssertStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
446 mixin visit!(DebugStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
447 mixin visit!(VersionStatement); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
448 |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
449 TypeNode visit(T : TypeNode)(T t) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
450 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
451 //static if (is(T == UndefinedType)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
452 //static if (is(T == IntegralType)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
453 //static if (is(T == IdentifierType)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
454 static if (is(T == QualifiedType)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
455 visitT(t.left), visitT(t.right); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
456 static if (is(T == ModuleScopeType)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
457 visitT(t.next); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
458 static if (is(T == TypeofType)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
459 visitE(t.e); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
460 static if (is(T == TemplateInstanceType)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
461 t.targs && visitN(t.targs); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
462 static if (is(T == PointerType)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
463 visitT(t.next); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
464 static if (is(T == ArrayType)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
465 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
466 visitT(t.next); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
467 if (t.assocType) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
468 visitT(t.assocType); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
469 else |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
470 visitE(t.e), t.e2 && visitE(t.e2); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
471 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
472 static if (is(T == FunctionType) || is(T == DelegateType)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
473 visitT(t.returnType), visitN(t.parameters); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
474 static if (is(T == CFuncPointerType)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
475 visitT(t.next), t.params && visitN(t.params); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
476 static if (is(T == BaseClass)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
477 visitT(t.next); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
478 static if (is(T == ConstType) || is(T == InvariantType)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
479 visitT(t.next); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
480 return t; |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
481 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
482 |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
483 mixin visit!(UndefinedType); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
484 mixin visit!(IntegralType); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
485 mixin visit!(IdentifierType); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
486 mixin visit!(QualifiedType); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
487 mixin visit!(ModuleScopeType); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
488 mixin visit!(TypeofType); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
489 mixin visit!(TemplateInstanceType); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
490 mixin visit!(PointerType); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
491 mixin visit!(ArrayType); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
492 mixin visit!(FunctionType); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
493 mixin visit!(DelegateType); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
494 mixin visit!(CFuncPointerType); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
495 mixin visit!(BaseClass); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
496 mixin visit!(ConstType); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
497 mixin visit!(InvariantType); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
498 |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
499 Node visit(N : Parameter)(N n) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
500 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
501 visitT(n.type); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
502 n.defValue && visitE(n.defValue); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
503 return n; |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
504 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
505 |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
506 Node visit(N : Parameters)(N n) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
507 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
508 foreach (node; n.children) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
509 visitN(node.to!(Parameters)); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
510 return n; |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
511 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
512 |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
513 Node visit(N : TemplateParameters)(N n) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
514 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
515 foreach (node; n.children) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
516 visitN(node.to!(TemplateParameters)); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
517 return n; |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
518 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
519 |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
520 Node visit(N : TemplateArguments)(N n) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
521 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
522 foreach (node; n.children) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
523 visitN(node.to!(TemplateArguments)); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
524 return n; |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
525 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
526 |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
527 Node visit(N : TemplateParameter)(N n) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
528 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
529 static if (is(N == TemplateAliasParameter) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
530 is(N == TemplateTypeParameter) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
531 is(N == TemplateThisParameter)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
532 n.specType && visitN(n.specType), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
533 n.defType && visitN(n.defType); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
534 static if (is(N == TemplateValueParameter)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
535 visitT(n.valueType), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
536 n.specValue && visitN(n.specValue), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
537 n.defValue && visitN(n.defValue); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
538 //static if (is(N == TemplateTupleParameter)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
539 return n; |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
540 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
541 |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
542 mixin visit!(Parameter); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
543 mixin visit!(Parameters); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
544 mixin visit!(TemplateAliasParameter); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
545 mixin visit!(TemplateTypeParameter); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
546 mixin visit!(TemplateThisParameter); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
547 mixin visit!(TemplateValueParameter); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
548 mixin visit!(TemplateTupleParameter); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
549 mixin visit!(TemplateParameters); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
550 mixin visit!(TemplateArguments); |
642
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
551 } |