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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }