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