Mercurial > projects > dil
annotate trunk/src/dil/ast/DefaultVisitor.d @ 696:c67d2c3c0b3d
Wrote code for SemanticPass2.visit(ImportExpression).
author | Aziz K?ksal <aziz.koeksal@gmail.com> |
---|---|
date | Thu, 24 Jan 2008 19:09:48 +0100 |
parents | 170ddcdc9711 |
children | 7917811f8116 |
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; |
680
6b3e397229c5
Renamed Statements, Declarations and EnumMember.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
673
diff
changeset
|
31 static if (is(D == CompoundDeclaration)) |
696
c67d2c3c0b3d
Wrote code for SemanticPass2.visit(ImportExpression).
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
695
diff
changeset
|
32 foreach (decl; d.decls) |
c67d2c3c0b3d
Wrote code for SemanticPass2.visit(ImportExpression).
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
695
diff
changeset
|
33 visitD(decl); |
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 == TypedefDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
39 visitD(d.decl); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
40 static if (is(D == EnumDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
41 { |
667
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
42 d.baseType && visitT(d.baseType); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
43 foreach (member; d.members) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
44 visitD(member); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
45 } |
680
6b3e397229c5
Renamed Statements, Declarations and EnumMember.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
673
diff
changeset
|
46 static if (is(D == EnumMemberDeclaration)) |
667
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
47 d.value && visitE(d.value); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
48 static if (is(D == ClassDeclaration) || is( D == InterfaceDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
49 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
50 d.tparams && visitN(d.tparams); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
51 foreach (base; d.bases) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
52 visitT(base); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
53 d.decls && visitD(d.decls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
54 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
55 static if (is(D == StructDeclaration) || is(D == UnionDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
56 d.tparams && visitN(d.tparams), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
57 d.decls && visitD(d.decls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
58 static if (is(D == ConstructorDeclaration)) |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
59 visitN(d.params), visitS(d.funcBody); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
60 static if (is(D == StaticConstructorDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
61 is(D == DestructorDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
62 is(D == StaticDestructorDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
63 is(D == InvariantDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
64 is(D == UnittestDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
65 visitS(d.funcBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
66 static if (is(D == FunctionDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
67 visitT(d.returnType), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
68 d.tparams && visitN(d.tparams), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
69 visitN(d.params), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
70 visitS(d.funcBody); |
673
64fec49651cf
Renamed VariableDeclaration to VariablesDeclaration.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
672
diff
changeset
|
71 static if (is(D == VariablesDeclaration)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
72 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
73 d.typeNode && visitT(d.typeNode); |
683
1ae72234db26
Implemented some methods in SemanticPass1.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
682
diff
changeset
|
74 foreach(init; d.inits) |
1ae72234db26
Implemented some methods in SemanticPass1.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
682
diff
changeset
|
75 init && visitE(init); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
76 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
77 static if (is(D == DebugDeclaration) || is(D == VersionDeclaration)) |
672
d422e5f2f3ea
Added '--asttable' option to command 'statistics'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
671
diff
changeset
|
78 d.decls && visitD(d.decls), |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
79 d.elseDecls && visitD(d.elseDecls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
80 static if (is(D == StaticIfDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
81 visitE(d.condition), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
82 visitD(d.ifDecls), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
83 d.elseDecls && visitD(d.elseDecls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
84 static if (is(D == StaticAssertDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
85 visitE(d.condition), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
86 d.message && visitE(d.message); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
87 static if (is(D == TemplateDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
88 d.tparams && visitN(d.tparams), |
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 == NewDeclaration) || is(D == DeleteDeclaration)) |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
91 visitN(d.params), |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
92 visitS(d.funcBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
93 static if (is(D == ProtectionDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
94 is(D == StorageClassDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
95 is(D == LinkageDeclaration) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
96 is(D == AlignDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
97 visitD(d.decls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
98 static if (is(D == PragmaDeclaration)) |
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 foreach (arg; d.args) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
101 visitE(arg); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
102 visitD(d.decls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
103 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
104 static if (is(D == MixinDeclaration)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
105 d.templateExpr ? visitE(d.templateExpr) : visitE(d.argument); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
106 } |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
107 else |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
108 static if (is(T : Expression)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
109 { |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
110 alias T E; |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
111 static if (is(E == IllegalExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
112 {} |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
113 else |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
114 static if (is(E : CondExpression)) |
694
19a34b69cc7d
Renamed some members of BinaryExpression and QualifiedType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
689
diff
changeset
|
115 visitE(e.condition), visitE(e.lhs), visitE(e.rhs); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
116 else |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
117 static if (is(E : BinaryExpression)) |
694
19a34b69cc7d
Renamed some members of BinaryExpression and QualifiedType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
689
diff
changeset
|
118 visitE(e.lhs), visitE(e.rhs); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
119 else |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
120 static if (is(E : UnaryExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
121 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
122 static if (is(E == CastExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
123 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
|
124 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
|
125 static if (is(E == IndexExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
126 foreach (arg; e.args) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
127 visitE(arg); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
128 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
|
129 e.left && (visitE(e.left), visitE(e.right)); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
130 static if (is(E == AsmPostBracketExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
131 visitE(e.e2); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
132 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
133 else |
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 static if (is(E == NewExpression)) |
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 foreach (arg; e.newArgs) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
138 visitE(arg); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
139 visitT(e.type); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
140 foreach (arg; e.ctorArgs) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
141 visitE(arg); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
142 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
143 static if (is(E == NewAnonClassExpression)) |
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 foreach (arg; e.newArgs) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
146 visitE(arg); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
147 foreach (base; e.bases) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
148 visitT(base); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
149 foreach (arg; e.ctorArgs) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
150 visitE(arg); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
151 visitD(e.decls); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
152 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
153 static if (is(E == AsmBracketExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
154 visitE(e.e); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
155 static if (is(E == TemplateInstanceExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
156 e.targs && visitN(e.targs); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
157 static if (is(E == ArrayLiteralExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
158 foreach (value; e.values) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
159 visitE(value); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
160 static if (is(E == AArrayLiteralExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
161 foreach (i, key; e.keys) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
162 visitE(key), visitE(e.values[i]); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
163 static if (is(E == AssertExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
164 visitE(e.expr), e.msg && visitE(e.msg); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
165 static if (is(E == MixinExpression) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
166 is(E == ImportExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
167 visitE(e.expr); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
168 static if (is(E == TypeofExpression) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
169 is(E == TypeDotIdExpression) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
170 is(E == TypeidExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
171 visitT(e.type); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
172 static if (is(E == IsExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
173 visitT(e.type), e.specType && visitT(e.specType), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
174 e.tparams && visitN(e.tparams); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
175 static if (is(E == FunctionLiteralExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
176 e.returnType && visitT(e.returnType), |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
177 e.params && visitN(e.params), |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
178 visitS(e.funcBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
179 static if (is(E == ParenExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
180 visitE(e.next); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
181 static if (is(E == TraitsExpression)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
182 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
|
183 // VoidInitializer has no subnodes. |
695
170ddcdc9711
Renamed VoidInitializer, ArrayInitializer and StructInitializer.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
694
diff
changeset
|
184 static if (is(E == ArrayInitExpression)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
185 foreach (i, key; e.keys) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
186 key && visitE(key), visitE(e.values[i]); |
695
170ddcdc9711
Renamed VoidInitializer, ArrayInitializer and StructInitializer.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
694
diff
changeset
|
187 static if (is(E == StructInitExpression)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
188 foreach (value; e.values) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
189 visitE(value); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
190 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
191 } |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
192 else |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
193 static if (is(T : Statement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
194 { |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
195 alias T S; |
680
6b3e397229c5
Renamed Statements, Declarations and EnumMember.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
673
diff
changeset
|
196 static if (is(S == CompoundStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
197 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
|
198 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
|
199 //IllegalStatement has no subnodes. |
682
7541c64fc423
Renamed FunctionBody, CatchBody and FinallyBody.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
681
diff
changeset
|
200 static if (is(S == FuncBodyStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
201 s.funcBody && visitS(s.funcBody), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
202 s.inBody && visitS(s.inBody), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
203 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
|
204 static if (is(S == ScopeStatement) || is(S == LabeledStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
205 visitS(s.s); |
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 == ExpressionStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
207 visitE(s.e); |
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 == DeclarationStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
209 visitD(s.decl); |
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 == IfStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
211 { |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
212 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
|
213 visitS(s.ifBody), s.elseBody && visitS(s.elseBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
214 } |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
215 static if (is(S == WhileStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
216 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
|
217 static if (is(S == DoWhileStatement)) |
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
218 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
|
219 static if (is(S == ForStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
220 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
|
221 s.condition && visitE(s.condition), |
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
222 s.increment && visitE(s.increment), |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
223 visitS(s.forBody); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
224 static if (is(S == ForeachStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
225 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
|
226 static if (is(S == ForeachRangeStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
227 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
|
228 static if (is(S == SwitchStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
229 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
|
230 static if (is(S == CaseStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
231 { |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
232 foreach (value; s.values) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
233 visitE(value); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
234 visitS(s.caseBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
235 } |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
236 static if (is(S == DefaultStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
237 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
|
238 //ContinueStatement, |
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
239 //BreakStatement have no subnodes. |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
240 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
|
241 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
|
242 static if (is(S == GotoStatement)) |
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
243 s.caseExpr && visitE(s.caseExpr); |
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
244 static if (is(S == WithStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
245 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
|
246 static if (is(S == SynchronizedStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
247 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
|
248 static if (is(S == TryStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
249 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
250 visitS(s.tryBody); |
682
7541c64fc423
Renamed FunctionBody, CatchBody and FinallyBody.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
681
diff
changeset
|
251 foreach (catchBody; s.catchBodies) |
7541c64fc423
Renamed FunctionBody, CatchBody and FinallyBody.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
681
diff
changeset
|
252 visitS(catchBody); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
253 s.finallyBody && visitS(s.finallyBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
254 } |
682
7541c64fc423
Renamed FunctionBody, CatchBody and FinallyBody.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
681
diff
changeset
|
255 static if (is(S == CatchStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
256 s.param && visitN(s.param), visitS(s.catchBody); |
682
7541c64fc423
Renamed FunctionBody, CatchBody and FinallyBody.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
681
diff
changeset
|
257 static if (is(S == FinallyStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
258 visitS(s.finallyBody); |
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 == ScopeGuardStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
260 visitS(s.scopeBody); |
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 == ThrowStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
262 visitE(s.e); |
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 == VolatileStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
264 s.volatileBody && visitS(s.volatileBody); |
681
95a3c28c0f64
Renamed AsmStatement->AsmBlockStatement and AsnInstruction->AsmStatement.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
680
diff
changeset
|
265 static if (is(S == AsmBlockStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
266 visitS(s.statements); |
681
95a3c28c0f64
Renamed AsmStatement->AsmBlockStatement and AsnInstruction->AsmStatement.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
680
diff
changeset
|
267 static if (is(S == AsmStatement)) |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
268 foreach (op; s.operands) |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
269 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
|
270 //AsmAlignStatement has no subnodes. |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
271 static if (is(S == PragmaStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
272 { |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
273 foreach (arg; s.args) |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
274 visitE(arg); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
275 visitS(s.pragmaBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
276 } |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
277 static if (is(S == MixinStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
278 visitE(s.templateExpr); |
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 == StaticIfStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
280 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
|
281 static if (is(S == StaticAssertStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
282 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
|
283 static if (is(S == DebugStatement) || is(S == VersionStatement)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
284 visitS(s.mainBody), s.elseBody && visitS(s.elseBody); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
285 } |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
286 else |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
287 static if (is(T : TypeNode)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
288 { |
671
f1325a4506de
Removed enum TID from dil.ast.Types.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
668
diff
changeset
|
289 //IllegalType, |
667
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
290 //IntegralType, |
1ac758cd952a
Fixed a few things in DefaultVisitor.d and Pass1.d
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
666
diff
changeset
|
291 //IdentifierType have no subnodes. |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
292 static if (is(T == QualifiedType)) |
694
19a34b69cc7d
Renamed some members of BinaryExpression and QualifiedType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
689
diff
changeset
|
293 visitT(t.lhs), visitT(t.rhs); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
294 static if (is(T == TypeofType)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
295 visitE(t.e); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
296 static if (is(T == TemplateInstanceType)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
297 t.targs && visitN(t.targs); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
298 static if (is(T == PointerType)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
299 visitT(t.next); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
300 static if (is(T == ArrayType)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
301 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
302 visitT(t.next); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
303 if (t.assocType) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
304 visitT(t.assocType); |
689
8e38774d562b
Added some methods to ArrayType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
683
diff
changeset
|
305 else if (t.e1) |
8e38774d562b
Added some methods to ArrayType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
683
diff
changeset
|
306 visitE(t.e1), t.e2 && visitE(t.e2); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
307 } |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
308 static if (is(T == FunctionType) || is(T == DelegateType)) |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
309 visitT(t.returnType), visitN(t.params); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
310 static if (is(T == CFuncPointerType)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
311 visitT(t.next), t.params && visitN(t.params); |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
312 static if (is(T == ModuleScopeType) || |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
313 is(T == BaseClassType) || |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
314 is(T == ConstType) || |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
315 is(T == InvariantType)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
316 visitT(t.next); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
317 } |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
318 else |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
319 static if (is(T == Parameter)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
320 { |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
321 n.type && visitT(n.type); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
322 n.defValue && visitE(n.defValue); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
323 } |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
324 else |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
325 static if (is(T == Parameters) || |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
326 is(T == TemplateParameters) || |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
327 is(T == TemplateArguments)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
328 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
329 foreach (node; n.children) |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
330 visitN(node); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
331 } |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
332 else |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
333 static if (is(T : TemplateParameter)) |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
334 { |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
335 static if (is(N == TemplateAliasParameter) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
336 is(N == TemplateTypeParameter) || |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
337 is(N == TemplateThisParameter)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
338 n.specType && visitN(n.specType), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
339 n.defType && visitN(n.defType); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
340 static if (is(N == TemplateValueParameter)) |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
341 visitT(n.valueType), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
342 n.specValue && visitN(n.specValue), |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
343 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
|
344 //TemplateTupleParameter has no subnodes. |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
345 } |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
346 else |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
347 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
|
348 return t; |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
349 } |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
655
diff
changeset
|
350 |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
351 /++ |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
352 Generate default visit methods. |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
353 E.g: |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
354 private mixin .visitDefault!(ClassDeclaration) _ClassDeclaration; |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
355 override returnType!("ClassDeclaration") visit(ClassDeclaration node) |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
356 { return _ClassDeclaration.visitDefault(node); } |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
357 +/ |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
358 char[] generateDefaultVisitMethods() |
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[] text; |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
361 foreach (className; classNames) |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
362 text ~= "private mixin .visitDefault!("~className~") _"~className~";\n" |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
363 "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
|
364 return text; |
642
be45f982ee3e
Added module dil.ast.DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
365 } |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
366 // pragma(msg, generateDefaultVisitMethods()); |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
367 |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
368 /++ |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
369 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
|
370 +/ |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
371 class DefaultVisitor : Visitor |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
372 { |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
667
diff
changeset
|
373 // Comment out if too many errors are shown. |
666
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
374 mixin(generateDefaultVisitMethods()); |
8d96a7b50982
Revamped DefaultVisitor class.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
375 } |