2 /* Compiler implementation of the D programming language
3 * Copyright (C) 2013-2018 by The D Language Foundation, All Rights Reserved
4 * http://www.digitalmars.com
5 * Distributed under the Boost Software License, Version 1.0.
6 * http://www.boost.org/LICENSE_1_0.txt
7 * https://github.com/dlang/dmd/blob/master/src/dmd/visitor.h
18 class DtorExpStatement
;
19 class CompileStatement
;
20 class CompoundStatement
;
21 class CompoundDeclarationStatement
;
22 class UnrolledLoopStatement
;
24 class ForwardingStatement
;
28 class ForeachStatement
;
29 class ForeachRangeStatement
;
30 class StaticForeachStatement
;
32 class ConditionalStatement
;
33 class PragmaStatement
;
34 class StaticAssertStatement
;
35 class SwitchStatement
;
37 class CaseRangeStatement
;
38 class DefaultStatement
;
39 class GotoDefaultStatement
;
40 class GotoCaseStatement
;
41 class SwitchErrorStatement
;
42 class ReturnStatement
;
44 class ContinueStatement
;
45 class SynchronizedStatement
;
47 class TryCatchStatement
;
48 class TryFinallyStatement
;
49 class OnScopeStatement
;
55 class InlineAsmStatement
;
56 class GccAsmStatement
;
57 class CompoundAsmStatement
;
58 class ImportStatement
;
96 class AttribDeclaration
;
97 class StorageClassDeclaration
;
98 class DeprecatedDeclaration
;
99 class LinkDeclaration
;
100 class CPPMangleDeclaration
;
101 class ProtDeclaration
;
102 class AlignDeclaration
;
103 class AnonDeclaration
;
104 class PragmaDeclaration
;
105 class ConditionalDeclaration
;
106 class StaticIfDeclaration
;
107 class CompileDeclaration
;
108 class StaticForeachDeclaration
;
109 class UserAttributeDeclaration
;
112 class TemplateDeclaration
;
113 class TemplateInstance
;
115 class EnumDeclaration
;
118 class WithScopeSymbol
;
119 class ArrayScopeSymbol
;
122 class AggregateDeclaration
;
123 class StructDeclaration
;
124 class UnionDeclaration
;
125 class ClassDeclaration
;
126 class InterfaceDeclaration
;
129 class TupleDeclaration
;
130 class AliasDeclaration
;
131 class OverDeclaration
;
132 class VarDeclaration
;
133 class SymbolDeclaration
;
134 class ThisDeclaration
;
136 class TypeInfoDeclaration
;
137 class TypeInfoStructDeclaration
;
138 class TypeInfoClassDeclaration
;
139 class TypeInfoInterfaceDeclaration
;
140 class TypeInfoPointerDeclaration
;
141 class TypeInfoArrayDeclaration
;
142 class TypeInfoStaticArrayDeclaration
;
143 class TypeInfoAssociativeArrayDeclaration
;
144 class TypeInfoEnumDeclaration
;
145 class TypeInfoFunctionDeclaration
;
146 class TypeInfoDelegateDeclaration
;
147 class TypeInfoTupleDeclaration
;
148 class TypeInfoConstDeclaration
;
149 class TypeInfoInvariantDeclaration
;
150 class TypeInfoSharedDeclaration
;
151 class TypeInfoWildDeclaration
;
152 class TypeInfoVectorDeclaration
;
154 class FuncDeclaration
;
155 class FuncAliasDeclaration
;
156 class FuncLiteralDeclaration
;
157 class CtorDeclaration
;
158 class PostBlitDeclaration
;
159 class DtorDeclaration
;
160 class StaticCtorDeclaration
;
161 class SharedStaticCtorDeclaration
;
162 class StaticDtorDeclaration
;
163 class SharedStaticDtorDeclaration
;
164 class InvariantDeclaration
;
165 class UnitTestDeclaration
;
166 class NewDeclaration
;
167 class DeleteDeclaration
;
170 class VoidInitializer
;
171 class ErrorInitializer
;
172 class StructInitializer
;
173 class ArrayInitializer
;
174 class ExpInitializer
;
189 class ArrayLiteralExp
;
190 class AssocArrayLiteralExp
;
191 class StructLiteralExp
;
196 class NewAnonClassExp
;
202 class DeclarationExp
;
214 class DotTemplateExp
;
216 class DotTemplateInstanceExp
;
230 class ArrayLengthExp
;
232 class DelegatePtrExp
;
233 class DelegateFuncptrExp
;
277 class DefaultInitExp
;
282 class PrettyFuncInitExp
;
283 class ClassReferenceExp
;
285 class ThrownExceptionExp
;
287 class TemplateParameter
;
288 class TemplateTypeParameter
;
289 class TemplateThisParameter
;
290 class TemplateValueParameter
;
291 class TemplateAliasParameter
;
292 class TemplateTupleParameter
;
296 class DebugCondition
;
297 class VersionCondition
;
298 class StaticIfCondition
;
305 virtual void visit(Statement
*) { assert(0); }
306 virtual void visit(ErrorStatement
*s
) { visit((Statement
*)s
); }
307 virtual void visit(PeelStatement
*s
) { visit((Statement
*)s
); }
308 virtual void visit(ExpStatement
*s
) { visit((Statement
*)s
); }
309 virtual void visit(DtorExpStatement
*s
) { visit((ExpStatement
*)s
); }
310 virtual void visit(CompileStatement
*s
) { visit((Statement
*)s
); }
311 virtual void visit(CompoundStatement
*s
) { visit((Statement
*)s
); }
312 virtual void visit(CompoundDeclarationStatement
*s
) { visit((CompoundStatement
*)s
); }
313 virtual void visit(UnrolledLoopStatement
*s
) { visit((Statement
*)s
); }
314 virtual void visit(ScopeStatement
*s
) { visit((Statement
*)s
); }
315 virtual void visit(ForwardingStatement
*s
) { visit((Statement
*)s
); }
316 virtual void visit(WhileStatement
*s
) { visit((Statement
*)s
); }
317 virtual void visit(DoStatement
*s
) { visit((Statement
*)s
); }
318 virtual void visit(ForStatement
*s
) { visit((Statement
*)s
); }
319 virtual void visit(ForeachStatement
*s
) { visit((Statement
*)s
); }
320 virtual void visit(ForeachRangeStatement
*s
) { visit((Statement
*)s
); }
321 virtual void visit(StaticForeachStatement
*s
) { visit((Statement
*)s
); }
322 virtual void visit(IfStatement
*s
) { visit((Statement
*)s
); }
323 virtual void visit(ConditionalStatement
*s
) { visit((Statement
*)s
); }
324 virtual void visit(PragmaStatement
*s
) { visit((Statement
*)s
); }
325 virtual void visit(StaticAssertStatement
*s
) { visit((Statement
*)s
); }
326 virtual void visit(SwitchStatement
*s
) { visit((Statement
*)s
); }
327 virtual void visit(CaseStatement
*s
) { visit((Statement
*)s
); }
328 virtual void visit(CaseRangeStatement
*s
) { visit((Statement
*)s
); }
329 virtual void visit(DefaultStatement
*s
) { visit((Statement
*)s
); }
330 virtual void visit(GotoDefaultStatement
*s
) { visit((Statement
*)s
); }
331 virtual void visit(GotoCaseStatement
*s
) { visit((Statement
*)s
); }
332 virtual void visit(SwitchErrorStatement
*s
) { visit((Statement
*)s
); }
333 virtual void visit(ReturnStatement
*s
) { visit((Statement
*)s
); }
334 virtual void visit(BreakStatement
*s
) { visit((Statement
*)s
); }
335 virtual void visit(ContinueStatement
*s
) { visit((Statement
*)s
); }
336 virtual void visit(SynchronizedStatement
*s
) { visit((Statement
*)s
); }
337 virtual void visit(WithStatement
*s
) { visit((Statement
*)s
); }
338 virtual void visit(TryCatchStatement
*s
) { visit((Statement
*)s
); }
339 virtual void visit(TryFinallyStatement
*s
) { visit((Statement
*)s
); }
340 virtual void visit(OnScopeStatement
*s
) { visit((Statement
*)s
); }
341 virtual void visit(ThrowStatement
*s
) { visit((Statement
*)s
); }
342 virtual void visit(DebugStatement
*s
) { visit((Statement
*)s
); }
343 virtual void visit(GotoStatement
*s
) { visit((Statement
*)s
); }
344 virtual void visit(LabelStatement
*s
) { visit((Statement
*)s
); }
345 virtual void visit(AsmStatement
*s
) { visit((Statement
*)s
); }
346 virtual void visit(InlineAsmStatement
*s
) { visit((AsmStatement
*)s
); }
347 virtual void visit(GccAsmStatement
*s
) { visit((AsmStatement
*)s
); }
348 virtual void visit(CompoundAsmStatement
*s
) { visit((CompoundStatement
*)s
); }
349 virtual void visit(ImportStatement
*s
) { visit((Statement
*)s
); }
351 virtual void visit(Type
*) { assert(0); }
352 virtual void visit(TypeError
*t
) { visit((Type
*)t
); }
353 virtual void visit(TypeNext
*t
) { visit((Type
*)t
); }
354 virtual void visit(TypeBasic
*t
) { visit((Type
*)t
); }
355 virtual void visit(TypeVector
*t
) { visit((Type
*)t
); }
356 virtual void visit(TypeArray
*t
) { visit((TypeNext
*)t
); }
357 virtual void visit(TypeSArray
*t
) { visit((TypeArray
*)t
); }
358 virtual void visit(TypeDArray
*t
) { visit((TypeArray
*)t
); }
359 virtual void visit(TypeAArray
*t
) { visit((TypeArray
*)t
); }
360 virtual void visit(TypePointer
*t
) { visit((TypeNext
*)t
); }
361 virtual void visit(TypeReference
*t
) { visit((TypeNext
*)t
); }
362 virtual void visit(TypeFunction
*t
) { visit((TypeNext
*)t
); }
363 virtual void visit(TypeDelegate
*t
) { visit((TypeNext
*)t
); }
364 virtual void visit(TypeQualified
*t
) { visit((Type
*)t
); }
365 virtual void visit(TypeIdentifier
*t
) { visit((TypeQualified
*)t
); }
366 virtual void visit(TypeInstance
*t
) { visit((TypeQualified
*)t
); }
367 virtual void visit(TypeTypeof
*t
) { visit((TypeQualified
*)t
); }
368 virtual void visit(TypeReturn
*t
) { visit((TypeQualified
*)t
); }
369 virtual void visit(TypeStruct
*t
) { visit((Type
*)t
); }
370 virtual void visit(TypeEnum
*t
) { visit((Type
*)t
); }
371 virtual void visit(TypeClass
*t
) { visit((Type
*)t
); }
372 virtual void visit(TypeTuple
*t
) { visit((Type
*)t
); }
373 virtual void visit(TypeSlice
*t
) { visit((TypeNext
*)t
); }
374 virtual void visit(TypeNull
*t
) { visit((Type
*)t
); }
376 virtual void visit(Dsymbol
*) { assert(0); }
378 virtual void visit(StaticAssert
*s
) { visit((Dsymbol
*)s
); }
379 virtual void visit(DebugSymbol
*s
) { visit((Dsymbol
*)s
); }
380 virtual void visit(VersionSymbol
*s
) { visit((Dsymbol
*)s
); }
381 virtual void visit(EnumMember
*s
) { visit((VarDeclaration
*)s
); }
382 virtual void visit(Import
*s
) { visit((Dsymbol
*)s
); }
383 virtual void visit(OverloadSet
*s
) { visit((Dsymbol
*)s
); }
384 virtual void visit(LabelDsymbol
*s
) { visit((Dsymbol
*)s
); }
385 virtual void visit(AliasThis
*s
) { visit((Dsymbol
*)s
); }
387 virtual void visit(AttribDeclaration
*s
) { visit((Dsymbol
*)s
); }
388 virtual void visit(StorageClassDeclaration
*s
) { visit((AttribDeclaration
*)s
); }
389 virtual void visit(DeprecatedDeclaration
*s
) { visit((StorageClassDeclaration
*)s
); }
390 virtual void visit(LinkDeclaration
*s
) { visit((AttribDeclaration
*)s
); }
391 virtual void visit(CPPMangleDeclaration
*s
) { visit((AttribDeclaration
*)s
); }
392 virtual void visit(ProtDeclaration
*s
) { visit((AttribDeclaration
*)s
); }
393 virtual void visit(AlignDeclaration
*s
) { visit((AttribDeclaration
*)s
); }
394 virtual void visit(AnonDeclaration
*s
) { visit((AttribDeclaration
*)s
); }
395 virtual void visit(PragmaDeclaration
*s
) { visit((AttribDeclaration
*)s
); }
396 virtual void visit(ConditionalDeclaration
*s
) { visit((AttribDeclaration
*)s
); }
397 virtual void visit(StaticIfDeclaration
*s
) { visit((ConditionalDeclaration
*)s
); }
398 virtual void visit(StaticForeachDeclaration
*s
) { visit((AttribDeclaration
*)s
); }
399 virtual void visit(CompileDeclaration
*s
) { visit((AttribDeclaration
*)s
); }
400 virtual void visit(UserAttributeDeclaration
*s
) { visit((AttribDeclaration
*)s
); }
402 virtual void visit(ScopeDsymbol
*s
) { visit((Dsymbol
*)s
); }
403 virtual void visit(TemplateDeclaration
*s
) { visit((ScopeDsymbol
*)s
); }
404 virtual void visit(TemplateInstance
*s
) { visit((ScopeDsymbol
*)s
); }
405 virtual void visit(TemplateMixin
*s
) { visit((TemplateInstance
*)s
); }
406 virtual void visit(EnumDeclaration
*s
) { visit((ScopeDsymbol
*)s
); }
407 virtual void visit(Package
*s
) { visit((ScopeDsymbol
*)s
); }
408 virtual void visit(Module
*s
) { visit((Package
*)s
); }
409 virtual void visit(WithScopeSymbol
*s
) { visit((ScopeDsymbol
*)s
); }
410 virtual void visit(ArrayScopeSymbol
*s
) { visit((ScopeDsymbol
*)s
); }
411 virtual void visit(Nspace
*s
) { visit((ScopeDsymbol
*)s
); }
413 virtual void visit(AggregateDeclaration
*s
) { visit((ScopeDsymbol
*)s
); }
414 virtual void visit(StructDeclaration
*s
) { visit((AggregateDeclaration
*)s
); }
415 virtual void visit(UnionDeclaration
*s
) { visit((StructDeclaration
*)s
); }
416 virtual void visit(ClassDeclaration
*s
) { visit((AggregateDeclaration
*)s
); }
417 virtual void visit(InterfaceDeclaration
*s
) { visit((ClassDeclaration
*)s
); }
419 virtual void visit(Declaration
*s
) { visit((Dsymbol
*)s
); }
420 virtual void visit(TupleDeclaration
*s
) { visit((Declaration
*)s
); }
421 virtual void visit(AliasDeclaration
*s
) { visit((Declaration
*)s
); }
422 virtual void visit(OverDeclaration
*s
) { visit((Declaration
*)s
); }
423 virtual void visit(VarDeclaration
*s
) { visit((Declaration
*)s
); }
424 virtual void visit(SymbolDeclaration
*s
) { visit((Declaration
*)s
); }
425 virtual void visit(ThisDeclaration
*s
) { visit((VarDeclaration
*)s
); }
427 virtual void visit(TypeInfoDeclaration
*s
) { visit((VarDeclaration
*)s
); }
428 virtual void visit(TypeInfoStructDeclaration
*s
) { visit((TypeInfoDeclaration
*)s
); }
429 virtual void visit(TypeInfoClassDeclaration
*s
) { visit((TypeInfoDeclaration
*)s
); }
430 virtual void visit(TypeInfoInterfaceDeclaration
*s
) { visit((TypeInfoDeclaration
*)s
); }
431 virtual void visit(TypeInfoPointerDeclaration
*s
) { visit((TypeInfoDeclaration
*)s
); }
432 virtual void visit(TypeInfoArrayDeclaration
*s
) { visit((TypeInfoDeclaration
*)s
); }
433 virtual void visit(TypeInfoStaticArrayDeclaration
*s
) { visit((TypeInfoDeclaration
*)s
); }
434 virtual void visit(TypeInfoAssociativeArrayDeclaration
*s
) { visit((TypeInfoDeclaration
*)s
); }
435 virtual void visit(TypeInfoEnumDeclaration
*s
) { visit((TypeInfoDeclaration
*)s
); }
436 virtual void visit(TypeInfoFunctionDeclaration
*s
) { visit((TypeInfoDeclaration
*)s
); }
437 virtual void visit(TypeInfoDelegateDeclaration
*s
) { visit((TypeInfoDeclaration
*)s
); }
438 virtual void visit(TypeInfoTupleDeclaration
*s
) { visit((TypeInfoDeclaration
*)s
); }
439 virtual void visit(TypeInfoConstDeclaration
*s
) { visit((TypeInfoDeclaration
*)s
); }
440 virtual void visit(TypeInfoInvariantDeclaration
*s
) { visit((TypeInfoDeclaration
*)s
); }
441 virtual void visit(TypeInfoSharedDeclaration
*s
) { visit((TypeInfoDeclaration
*)s
); }
442 virtual void visit(TypeInfoWildDeclaration
*s
) { visit((TypeInfoDeclaration
*)s
); }
443 virtual void visit(TypeInfoVectorDeclaration
*s
) { visit((TypeInfoDeclaration
*)s
); }
445 virtual void visit(FuncDeclaration
*s
) { visit((Declaration
*)s
); }
446 virtual void visit(FuncAliasDeclaration
*s
) { visit((FuncDeclaration
*)s
); }
447 virtual void visit(FuncLiteralDeclaration
*s
) { visit((FuncDeclaration
*)s
); }
448 virtual void visit(CtorDeclaration
*s
) { visit((FuncDeclaration
*)s
); }
449 virtual void visit(PostBlitDeclaration
*s
) { visit((FuncDeclaration
*)s
); }
450 virtual void visit(DtorDeclaration
*s
) { visit((FuncDeclaration
*)s
); }
451 virtual void visit(StaticCtorDeclaration
*s
) { visit((FuncDeclaration
*)s
); }
452 virtual void visit(SharedStaticCtorDeclaration
*s
) { visit((StaticCtorDeclaration
*)s
); }
453 virtual void visit(StaticDtorDeclaration
*s
) { visit((FuncDeclaration
*)s
); }
454 virtual void visit(SharedStaticDtorDeclaration
*s
) { visit((StaticDtorDeclaration
*)s
); }
455 virtual void visit(InvariantDeclaration
*s
) { visit((FuncDeclaration
*)s
); }
456 virtual void visit(UnitTestDeclaration
*s
) { visit((FuncDeclaration
*)s
); }
457 virtual void visit(NewDeclaration
*s
) { visit((FuncDeclaration
*)s
); }
458 virtual void visit(DeleteDeclaration
*s
) { visit((FuncDeclaration
*)s
); }
460 virtual void visit(Initializer
*) { assert(0); }
461 virtual void visit(VoidInitializer
*i
) { visit((Initializer
*)i
); }
462 virtual void visit(ErrorInitializer
*i
) { visit((Initializer
*)i
); }
463 virtual void visit(StructInitializer
*i
) { visit((Initializer
*)i
); }
464 virtual void visit(ArrayInitializer
*i
) { visit((Initializer
*)i
); }
465 virtual void visit(ExpInitializer
*i
) { visit((Initializer
*)i
); }
467 virtual void visit(Expression
*) { assert(0); }
468 virtual void visit(IntegerExp
*e
) { visit((Expression
*)e
); }
469 virtual void visit(ErrorExp
*e
) { visit((Expression
*)e
); }
470 virtual void visit(RealExp
*e
) { visit((Expression
*)e
); }
471 virtual void visit(ComplexExp
*e
) { visit((Expression
*)e
); }
472 virtual void visit(IdentifierExp
*e
) { visit((Expression
*)e
); }
473 virtual void visit(DollarExp
*e
) { visit((IdentifierExp
*)e
); }
474 virtual void visit(DsymbolExp
*e
) { visit((Expression
*)e
); }
475 virtual void visit(ThisExp
*e
) { visit((Expression
*)e
); }
476 virtual void visit(SuperExp
*e
) { visit((ThisExp
*)e
); }
477 virtual void visit(NullExp
*e
) { visit((Expression
*)e
); }
478 virtual void visit(StringExp
*e
) { visit((Expression
*)e
); }
479 virtual void visit(TupleExp
*e
) { visit((Expression
*)e
); }
480 virtual void visit(ArrayLiteralExp
*e
) { visit((Expression
*)e
); }
481 virtual void visit(AssocArrayLiteralExp
*e
) { visit((Expression
*)e
); }
482 virtual void visit(StructLiteralExp
*e
) { visit((Expression
*)e
); }
483 virtual void visit(TypeExp
*e
) { visit((Expression
*)e
); }
484 virtual void visit(ScopeExp
*e
) { visit((Expression
*)e
); }
485 virtual void visit(TemplateExp
*e
) { visit((Expression
*)e
); }
486 virtual void visit(NewExp
*e
) { visit((Expression
*)e
); }
487 virtual void visit(NewAnonClassExp
*e
) { visit((Expression
*)e
); }
488 virtual void visit(SymbolExp
*e
) { visit((Expression
*)e
); }
489 virtual void visit(SymOffExp
*e
) { visit((SymbolExp
*)e
); }
490 virtual void visit(VarExp
*e
) { visit((SymbolExp
*)e
); }
491 virtual void visit(OverExp
*e
) { visit((Expression
*)e
); }
492 virtual void visit(FuncExp
*e
) { visit((Expression
*)e
); }
493 virtual void visit(DeclarationExp
*e
) { visit((Expression
*)e
); }
494 virtual void visit(TypeidExp
*e
) { visit((Expression
*)e
); }
495 virtual void visit(TraitsExp
*e
) { visit((Expression
*)e
); }
496 virtual void visit(HaltExp
*e
) { visit((Expression
*)e
); }
497 virtual void visit(IsExp
*e
) { visit((Expression
*)e
); }
498 virtual void visit(UnaExp
*e
) { visit((Expression
*)e
); }
499 virtual void visit(BinExp
*e
) { visit((Expression
*)e
); }
500 virtual void visit(BinAssignExp
*e
) { visit((BinExp
*)e
); }
501 virtual void visit(CompileExp
*e
) { visit((UnaExp
*)e
); }
502 virtual void visit(ImportExp
*e
) { visit((UnaExp
*)e
); }
503 virtual void visit(AssertExp
*e
) { visit((UnaExp
*)e
); }
504 virtual void visit(DotIdExp
*e
) { visit((UnaExp
*)e
); }
505 virtual void visit(DotTemplateExp
*e
) { visit((UnaExp
*)e
); }
506 virtual void visit(DotVarExp
*e
) { visit((UnaExp
*)e
); }
507 virtual void visit(DotTemplateInstanceExp
*e
) { visit((UnaExp
*)e
); }
508 virtual void visit(DelegateExp
*e
) { visit((UnaExp
*)e
); }
509 virtual void visit(DotTypeExp
*e
) { visit((UnaExp
*)e
); }
510 virtual void visit(CallExp
*e
) { visit((UnaExp
*)e
); }
511 virtual void visit(AddrExp
*e
) { visit((UnaExp
*)e
); }
512 virtual void visit(PtrExp
*e
) { visit((UnaExp
*)e
); }
513 virtual void visit(NegExp
*e
) { visit((UnaExp
*)e
); }
514 virtual void visit(UAddExp
*e
) { visit((UnaExp
*)e
); }
515 virtual void visit(ComExp
*e
) { visit((UnaExp
*)e
); }
516 virtual void visit(NotExp
*e
) { visit((UnaExp
*)e
); }
517 virtual void visit(DeleteExp
*e
) { visit((UnaExp
*)e
); }
518 virtual void visit(CastExp
*e
) { visit((UnaExp
*)e
); }
519 virtual void visit(VectorExp
*e
) { visit((UnaExp
*)e
); }
520 virtual void visit(SliceExp
*e
) { visit((UnaExp
*)e
); }
521 virtual void visit(ArrayLengthExp
*e
) { visit((UnaExp
*)e
); }
522 virtual void visit(IntervalExp
*e
) { visit((Expression
*)e
); }
523 virtual void visit(DelegatePtrExp
*e
) { visit((UnaExp
*)e
); }
524 virtual void visit(DelegateFuncptrExp
*e
) { visit((UnaExp
*)e
); }
525 virtual void visit(ArrayExp
*e
) { visit((UnaExp
*)e
); }
526 virtual void visit(DotExp
*e
) { visit((BinExp
*)e
); }
527 virtual void visit(CommaExp
*e
) { visit((BinExp
*)e
); }
528 virtual void visit(IndexExp
*e
) { visit((BinExp
*)e
); }
529 virtual void visit(PostExp
*e
) { visit((BinExp
*)e
); }
530 virtual void visit(PreExp
*e
) { visit((UnaExp
*)e
); }
531 virtual void visit(AssignExp
*e
) { visit((BinExp
*)e
); }
532 virtual void visit(ConstructExp
*e
) { visit((AssignExp
*)e
); }
533 virtual void visit(BlitExp
*e
) { visit((AssignExp
*)e
); }
534 virtual void visit(AddAssignExp
*e
) { visit((BinAssignExp
*)e
); }
535 virtual void visit(MinAssignExp
*e
) { visit((BinAssignExp
*)e
); }
536 virtual void visit(MulAssignExp
*e
) { visit((BinAssignExp
*)e
); }
537 virtual void visit(DivAssignExp
*e
) { visit((BinAssignExp
*)e
); }
538 virtual void visit(ModAssignExp
*e
) { visit((BinAssignExp
*)e
); }
539 virtual void visit(AndAssignExp
*e
) { visit((BinAssignExp
*)e
); }
540 virtual void visit(OrAssignExp
*e
) { visit((BinAssignExp
*)e
); }
541 virtual void visit(XorAssignExp
*e
) { visit((BinAssignExp
*)e
); }
542 virtual void visit(PowAssignExp
*e
) { visit((BinAssignExp
*)e
); }
543 virtual void visit(ShlAssignExp
*e
) { visit((BinAssignExp
*)e
); }
544 virtual void visit(ShrAssignExp
*e
) { visit((BinAssignExp
*)e
); }
545 virtual void visit(UshrAssignExp
*e
) { visit((BinAssignExp
*)e
); }
546 virtual void visit(CatAssignExp
*e
) { visit((BinAssignExp
*)e
); }
547 virtual void visit(AddExp
*e
) { visit((BinExp
*)e
); }
548 virtual void visit(MinExp
*e
) { visit((BinExp
*)e
); }
549 virtual void visit(CatExp
*e
) { visit((BinExp
*)e
); }
550 virtual void visit(MulExp
*e
) { visit((BinExp
*)e
); }
551 virtual void visit(DivExp
*e
) { visit((BinExp
*)e
); }
552 virtual void visit(ModExp
*e
) { visit((BinExp
*)e
); }
553 virtual void visit(PowExp
*e
) { visit((BinExp
*)e
); }
554 virtual void visit(ShlExp
*e
) { visit((BinExp
*)e
); }
555 virtual void visit(ShrExp
*e
) { visit((BinExp
*)e
); }
556 virtual void visit(UshrExp
*e
) { visit((BinExp
*)e
); }
557 virtual void visit(AndExp
*e
) { visit((BinExp
*)e
); }
558 virtual void visit(OrExp
*e
) { visit((BinExp
*)e
); }
559 virtual void visit(XorExp
*e
) { visit((BinExp
*)e
); }
560 virtual void visit(OrOrExp
*e
) { visit((BinExp
*)e
); }
561 virtual void visit(AndAndExp
*e
) { visit((BinExp
*)e
); }
562 virtual void visit(CmpExp
*e
) { visit((BinExp
*)e
); }
563 virtual void visit(InExp
*e
) { visit((BinExp
*)e
); }
564 virtual void visit(RemoveExp
*e
) { visit((BinExp
*)e
); }
565 virtual void visit(EqualExp
*e
) { visit((BinExp
*)e
); }
566 virtual void visit(IdentityExp
*e
) { visit((BinExp
*)e
); }
567 virtual void visit(CondExp
*e
) { visit((BinExp
*)e
); }
568 virtual void visit(DefaultInitExp
*e
) { visit((Expression
*)e
); }
569 virtual void visit(FileInitExp
*e
) { visit((DefaultInitExp
*)e
); }
570 virtual void visit(LineInitExp
*e
) { visit((DefaultInitExp
*)e
); }
571 virtual void visit(ModuleInitExp
*e
) { visit((DefaultInitExp
*)e
); }
572 virtual void visit(FuncInitExp
*e
) { visit((DefaultInitExp
*)e
); }
573 virtual void visit(PrettyFuncInitExp
*e
) { visit((DefaultInitExp
*)e
); }
574 virtual void visit(ClassReferenceExp
*e
) { visit((Expression
*)e
); }
575 virtual void visit(VoidInitExp
*e
) { visit((Expression
*)e
); }
576 virtual void visit(ThrownExceptionExp
*e
) { visit((Expression
*)e
); }
578 virtual void visit(TemplateParameter
*) { assert(0); }
579 virtual void visit(TemplateTypeParameter
*tp
) { visit((TemplateParameter
*)tp
); }
580 virtual void visit(TemplateThisParameter
*tp
) { visit((TemplateTypeParameter
*)tp
); }
581 virtual void visit(TemplateValueParameter
*tp
) { visit((TemplateParameter
*)tp
); }
582 virtual void visit(TemplateAliasParameter
*tp
) { visit((TemplateParameter
*)tp
); }
583 virtual void visit(TemplateTupleParameter
*tp
) { visit((TemplateParameter
*)tp
); }
585 virtual void visit(Condition
*) { assert(0); }
586 virtual void visit(DVCondition
*c
) { visit((Condition
*)c
); }
587 virtual void visit(DebugCondition
*c
) { visit((DVCondition
*)c
); }
588 virtual void visit(VersionCondition
*c
) { visit((DVCondition
*)c
); }
589 virtual void visit(StaticIfCondition
*c
) { visit((Condition
*)c
); }
591 virtual void visit(Parameter
*) { assert(0); }
594 class StoppableVisitor
: public Visitor
598 StoppableVisitor() : stop(false) {}