Mercurial > projects > dil
annotate trunk/src/dil/ast/DefaultVisitor.d @ 667:1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Returning parameter node in visit() methods in module Visitor.
Added member type to TypeNode class.
author | Aziz K?ksal <aziz.koeksal@gmail.com> |
---|---|
date | Thu, 17 Jan 2008 00:21:16 +0100 |
parents | 8d96a7b50982 |
children | a1f8d8f2db38 |
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; |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
15 import common; |
642
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
16 |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
17 /++ |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
18 This huge template function, when instantiated for a certain node class, |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
19 generates a body of visit method calls on the subnodes. |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
20 +/ |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
21 returnType!(T.stringof) visitDefault(T)(T t) |
642
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
22 { |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
23 assert(t !is null, "node passed to visitDefault() is null"); |
667
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
24 //Stdout(t).newline; |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
25 |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
26 alias t d, s, e, n; // Variable aliases of t. |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
27 |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
28 static if (is(T : Declaration)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
29 { |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
30 alias T D; |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
31 static if (is(D == Declarations)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
32 foreach (node; d.children) |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
33 visitN(node); |
667
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
34 //EmptyDeclaration, |
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
35 //IllegalDeclaration, |
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
36 //ModuleDeclaration have no subnodes. |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
37 static if (is(D == AliasDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
38 is(D == AliasDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
39 is(D == TypedefDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
40 visitD(d.decl); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
41 static if (is(D == EnumDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
42 { |
667
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
43 d.baseType && visitT(d.baseType); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
44 foreach (member; d.members) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
45 visitD(member); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
46 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
47 static if (is(D == EnumMember)) |
667
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
48 d.value && visitE(d.value); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
49 static if (is(D == ClassDeclaration) || is( D == InterfaceDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
50 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
51 d.tparams && visitN(d.tparams); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
52 foreach (base; d.bases) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
53 visitT(base); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
54 d.decls && visitD(d.decls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
55 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
56 static if (is(D == StructDeclaration) || is(D == UnionDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
57 d.tparams && visitN(d.tparams), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
58 d.decls && visitD(d.decls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
59 static if (is(D == ConstructorDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
60 visitN(d.parameters), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
61 visitS(d.funcBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
62 static if (is(D == StaticConstructorDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
63 is(D == DestructorDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
64 is(D == StaticDestructorDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
65 is(D == InvariantDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
66 is(D == UnittestDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
67 visitS(d.funcBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
68 static if (is(D == FunctionDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
69 visitT(d.returnType), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
70 d.tparams && visitN(d.tparams), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
71 visitN(d.params), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
72 visitS(d.funcBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
73 static if (is(D == VariableDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
74 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
75 d.typeNode && visitT(d.typeNode); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
76 foreach(value; d.values) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
77 value && visitE(value); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
78 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
79 static if (is(D == DebugDeclaration) || is(D == VersionDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
80 visitD(d.decls), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
81 d.elseDecls && visitD(d.elseDecls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
82 static if (is(D == StaticIfDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
83 visitE(d.condition), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
84 visitD(d.ifDecls), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
85 d.elseDecls && visitD(d.elseDecls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
86 static if (is(D == StaticAssertDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
87 visitE(d.condition), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
88 d.message && visitE(d.message); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
89 static if (is(D == TemplateDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
90 d.tparams && visitN(d.tparams), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
91 visitD(d.decls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
92 static if (is(D == NewDeclaration) || is(D == DeleteDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
93 visitN(d.parameters), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
94 visitS(d.funcBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
95 static if (is(D == ProtectionDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
96 is(D == StorageClassDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
97 is(D == LinkageDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
98 is(D == AlignDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
99 visitD(d.decls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
100 static if (is(D == PragmaDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
101 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
102 foreach (arg; d.args) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
103 visitE(arg); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
104 visitD(d.decls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
105 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
106 static if (is(D == MixinDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
107 d.templateExpr ? visitE(d.templateExpr) : visitE(d.argument); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
108 } |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
109 else |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
110 static if (is(T : Expression)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
111 { |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
112 alias T E; |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
113 static if (is(E == IllegalExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
114 {} |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
115 else |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
116 static if (is(E : CondExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
117 visitE(e.condition), visitE(e.left), visitE(e.right); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
118 else |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
119 static if (is(E : BinaryExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
120 visitE(e.left), visitE(e.right); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
121 else |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
122 static if (is(E : UnaryExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
123 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
124 static if (is(E == CastExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
125 visitT(e.type); |
667
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
126 visitE(e.e); // Visit member in base class UnaryExpression. |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
127 static if (is(E == IndexExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
128 foreach (arg; e.args) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
129 visitE(arg); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
130 static if (is(E == SliceExpression)) |
667
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
131 e.left && (visitE(e.left), visitE(e.right)); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
132 static if (is(E == AsmPostBracketExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
133 visitE(e.e2); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
134 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
135 else |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
136 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
137 static if (is(E == NewExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
138 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
139 foreach (arg; e.newArgs) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
140 visitE(arg); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
141 visitT(e.type); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
142 foreach (arg; e.ctorArgs) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
143 visitE(arg); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
144 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
145 static if (is(E == NewAnonClassExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
146 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
147 foreach (arg; e.newArgs) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
148 visitE(arg); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
149 foreach (base; e.bases) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
150 visitT(base); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
151 foreach (arg; e.ctorArgs) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
152 visitE(arg); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
153 visitD(e.decls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
154 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
155 static if (is(E == AsmBracketExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
156 visitE(e.e); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
157 static if (is(E == TemplateInstanceExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
158 e.targs && visitN(e.targs); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
159 static if (is(E == ArrayLiteralExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
160 foreach (value; e.values) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
161 visitE(value); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
162 static if (is(E == AArrayLiteralExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
163 foreach (i, key; e.keys) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
164 visitE(key), visitE(e.values[i]); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
165 static if (is(E == AssertExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
166 visitE(e.expr), e.msg && visitE(e.msg); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
167 static if (is(E == MixinExpression) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
168 is(E == ImportExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
169 visitE(e.expr); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
170 static if (is(E == TypeofExpression) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
171 is(E == TypeDotIdExpression) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
172 is(E == TypeidExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
173 visitT(e.type); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
174 static if (is(E == IsExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
175 visitT(e.type), e.specType && visitT(e.specType), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
176 e.tparams && visitN(e.tparams); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
177 static if (is(E == FunctionLiteralExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
178 e.returnType && visitT(e.returnType), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
179 e.parameters && visitN(e.parameters), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
180 visitS(e.funcBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
181 static if (is(E == ParenExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
182 visitE(e.next); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
183 static if (is(E == TraitsExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
184 visitN(e.targs); |
667
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
185 // VoidInitializer has no subnodes. |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
186 static if (is(E == ArrayInitializer)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
187 foreach (i, key; e.keys) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
188 key && visitE(key), visitE(e.values[i]); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
189 static if (is(E == StructInitializer)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
190 foreach (value; e.values) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
191 visitE(value); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
192 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
193 } |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
194 else |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
195 static if (is(T : Statement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
196 { |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
197 alias T S; |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
198 static if (is(S == Statements)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
199 foreach (node; s.children) |
667
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
200 visitS(cast(Statement)cast(void*)node); |
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
201 //IllegalStatement has no subnodes. |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
202 static if (is(S == FunctionBody)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
203 s.funcBody && visitS(s.funcBody), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
204 s.inBody && visitS(s.inBody), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
205 s.outBody && visitS(s.outBody); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
206 static if (is(S == ScopeStatement) || is(S == LabeledStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
207 visitS(s.s); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
208 static if (is(S == ExpressionStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
209 visitE(s.e); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
210 static if (is(S == DeclarationStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
211 visitD(s.decl); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
212 static if (is(S == IfStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
213 { |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
214 s.variable ? cast(Node)visitS(s.variable) : visitE(s.condition); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
215 visitS(s.ifBody), s.elseBody && visitS(s.elseBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
216 } |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
217 static if (is(S == WhileStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
218 visitE(s.condition), visitS(s.whileBody); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
219 static if (is(S == DoWhileStatement)) |
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
220 visitS(s.doBody), visitE(s.condition); |
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
221 static if (is(S == ForStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
222 s.init && visitS(s.init), |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
223 s.condition && visitE(s.condition), |
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
224 s.increment && visitE(s.increment), |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
225 visitS(s.forBody); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
226 static if (is(S == ForeachStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
227 visitN(s.params), visitE(s.aggregate), visitS(s.forBody); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
228 static if (is(S == ForeachRangeStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
229 visitN(s.params), visitE(s.lower), visitE(s.upper), visitS(s.forBody); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
230 static if (is(S == SwitchStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
231 visitE(s.condition), visitS(s.switchBody); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
232 static if (is(S == CaseStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
233 { |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
234 foreach (value; s.values) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
235 visitE(value); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
236 visitS(s.caseBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
237 } |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
238 static if (is(S == DefaultStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
239 visitS(s.defaultBody); |
667
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
240 //ContinueStatement, |
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
241 //BreakStatement have no subnodes. |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
242 static if (is(S == ReturnStatement)) |
667
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
243 s.e && visitE(s.e); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
244 static if (is(S == GotoStatement)) |
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
245 s.caseExpr && visitE(s.caseExpr); |
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
246 static if (is(S == WithStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
247 visitE(s.e), visitS(s.withBody); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
248 static if (is(S == SynchronizedStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
249 s.e && visitE(s.e), visitS(s.syncBody); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
250 static if (is(S == TryStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
251 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
252 visitS(s.tryBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
253 foreach (body_; s.catchBodies) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
254 visitS(body_); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
255 s.finallyBody && visitS(s.finallyBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
256 } |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
257 static if (is(S == CatchBody)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
258 s.param && visitN(s.param), visitS(s.catchBody); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
259 static if (is(S == FinallyBody)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
260 visitS(s.finallyBody); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
261 static if (is(S == ScopeGuardStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
262 visitS(s.scopeBody); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
263 static if (is(S == ThrowStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
264 visitE(s.e); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
265 static if (is(S == VolatileStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
266 s.volatileBody && visitS(s.volatileBody); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
267 static if (is(S == AsmStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
268 visitS(s.statements); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
269 static if (is(S == AsmInstruction)) |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
270 foreach (op; s.operands) |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
271 visitE(op); |
667
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
272 //AsmAlignStatement has no subnodes. |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
273 static if (is(S == PragmaStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
274 { |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
275 foreach (arg; s.args) |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
276 visitE(arg); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
277 visitS(s.pragmaBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
278 } |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
279 static if (is(S == MixinStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
280 visitE(s.templateExpr); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
281 static if (is(S == StaticIfStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
282 visitE(s.condition), visitS(s.ifBody), s.elseBody && visitS(s.elseBody); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
283 static if (is(S == StaticAssertStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
284 visitE(s.condition), s.message && visitE(s.message); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
285 static if (is(S == DebugStatement) || is(S == VersionStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
286 visitS(s.mainBody), s.elseBody && visitS(s.elseBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
287 } |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
288 else |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
289 static if (is(T : TypeNode)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
290 { |
667
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
291 //UndefinedType, |
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
292 //IntegralType, |
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
293 //IdentifierType have no subnodes. |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
294 static if (is(T == QualifiedType)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
295 visitT(t.left), visitT(t.right); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
296 static if (is(T == TypeofType)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
297 visitE(t.e); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
298 static if (is(T == TemplateInstanceType)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
299 t.targs && visitN(t.targs); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
300 static if (is(T == PointerType)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
301 visitT(t.next); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
302 static if (is(T == ArrayType)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
303 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
304 visitT(t.next); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
305 if (t.assocType) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
306 visitT(t.assocType); |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
307 else if (t.e) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
308 visitE(t.e), t.e2 && visitE(t.e2); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
309 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
310 static if (is(T == FunctionType) || is(T == DelegateType)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
311 visitT(t.returnType), visitN(t.parameters); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
312 static if (is(T == CFuncPointerType)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
313 visitT(t.next), t.params && visitN(t.params); |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
314 static if (is(T == ModuleScopeType) || |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
315 is(T == BaseClass) || |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
316 is(T == ConstType) || |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
317 is(T == InvariantType)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
318 visitT(t.next); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
319 } |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
320 else |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
321 static if (is(T == Parameter)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
322 { |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
323 n.type && visitT(n.type); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
324 n.defValue && visitE(n.defValue); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
325 } |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
326 else |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
327 static if (is(T == Parameters) || |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
328 is(T == TemplateParameters) || |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
329 is(T == TemplateArguments)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
330 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
331 foreach (node; n.children) |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
332 visitN(node); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
333 } |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
334 else |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
335 static if (is(T : TemplateParameter)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
336 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
337 static if (is(N == TemplateAliasParameter) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
338 is(N == TemplateTypeParameter) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
339 is(N == TemplateThisParameter)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
340 n.specType && visitN(n.specType), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
341 n.defType && visitN(n.defType); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
342 static if (is(N == TemplateValueParameter)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
343 visitT(n.valueType), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
344 n.specValue && visitN(n.specValue), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
345 n.defValue && visitN(n.defValue); |
667
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
346 //TemplateTupleParameter has no subnodes. |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
347 } |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
348 else |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
349 assert(0, "Missing default visit method for: "~t.classinfo.name); |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
350 return t; |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
351 } |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
352 |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
353 /++ |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
354 Generate default visit methods. |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
355 E.g: |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
356 private mixin .visitDefault!(ClassDeclaration) _ClassDeclaration; |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
357 override returnType!("ClassDeclaration") visit(ClassDeclaration node) |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
358 { return _ClassDeclaration.visitDefault(node); } |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
359 +/ |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
360 char[] generateDefaultVisitMethods() |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
361 { |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
362 char[] text; |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
363 foreach (className; classNames) |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
364 text ~= "private mixin .visitDefault!("~className~") _"~className~";\n" |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
365 "override returnType!(\""~className~"\") visit("~className~" node){return _"~className~".visitDefault(node);}\n"; |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
366 return text; |
642
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
367 } |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
368 // pragma(msg, generateDefaultVisitMethods()); |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
369 |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
370 /++ |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
371 This class provides default methods for traversing nodes in a syntax tree. |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
372 +/ |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
373 class DefaultVisitor : Visitor |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
374 { |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
375 mixin(generateDefaultVisitMethods()); |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
376 } |