2
// ObservableAstVisitor.cs
5
// Mike KrĆ¼ger <mkrueger@novell.com>
7
// Copyright (c) 2011 Novell, Inc (http://www.novell.com)
9
// Permission is hereby granted, free of charge, to any person obtaining a copy
10
// of this software and associated documentation files (the "Software"), to deal
11
// in the Software without restriction, including without limitation the rights
12
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
// copies of the Software, and to permit persons to whom the Software is
14
// furnished to do so, subject to the following conditions:
16
// The above copyright notice and this permission notice shall be included in
17
// all copies or substantial portions of the Software.
19
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
29
namespace ICSharpCode.NRefactory.CSharp
31
public class ObservableAstVisitor : IAstVisitor
33
void Visit<T>(Action<T> enter, Action<T> leave, T node) where T : AstNode
38
for (var child = node.FirstChild; child != null; child = next) {
39
// Store next to allow the loop to continue
40
// if the visitor removes/replaces children.
41
next = child.NextSibling;
42
child.AcceptVisitor (this);
48
public event Action<SyntaxTree> EnterSyntaxTree, LeaveSyntaxTree;
50
void IAstVisitor.VisitSyntaxTree(SyntaxTree unit)
52
Visit(EnterSyntaxTree, LeaveSyntaxTree, unit);
55
public event Action<Comment> EnterComment, LeaveComment;
57
void IAstVisitor.VisitComment(Comment comment)
59
Visit(EnterComment, LeaveComment, comment);
62
public event Action<NewLineNode> EnterNewLine, LeaveNewLine;
64
void IAstVisitor.VisitNewLine(NewLineNode newLineNode)
66
Visit(EnterNewLine, LeaveNewLine, newLineNode);
69
public event Action<WhitespaceNode> EnterWhitespace, LeaveWhitespace;
71
void IAstVisitor.VisitWhitespace(WhitespaceNode whitespace)
73
Visit(EnterWhitespace, LeaveWhitespace, whitespace);
76
public event Action<TextNode> EnterText, LeaveText;
78
void IAstVisitor.VisitText(TextNode textNode)
80
Visit(EnterText, LeaveText, textNode);
83
public event Action<PreProcessorDirective> EnterPreProcessorDirective, LeavePreProcessorDirective;
84
void IAstVisitor.VisitPreProcessorDirective(PreProcessorDirective preProcessorDirective)
86
Visit(EnterPreProcessorDirective, LeavePreProcessorDirective, preProcessorDirective);
89
public event Action<DocumentationReference> EnterDocumentationReference, LeaveDocumentationReference;
91
void IAstVisitor.VisitDocumentationReference(DocumentationReference documentationReference)
93
Visit(EnterDocumentationReference, LeaveDocumentationReference, documentationReference);
96
public event Action<Identifier> EnterIdentifier, LeaveIdentifier;
98
void IAstVisitor.VisitIdentifier(Identifier identifier)
100
Visit(EnterIdentifier, LeaveIdentifier, identifier);
103
public event Action<CSharpTokenNode> EnterCSharpTokenNode, LeaveCSharpTokenNode;
105
void IAstVisitor.VisitCSharpTokenNode(CSharpTokenNode token)
107
Visit(EnterCSharpTokenNode, LeaveCSharpTokenNode, token);
110
public event Action<PrimitiveType> EnterPrimitiveType, LeavePrimitiveType;
112
void IAstVisitor.VisitPrimitiveType(PrimitiveType primitiveType)
114
Visit(EnterPrimitiveType, LeavePrimitiveType, primitiveType);
117
public event Action<ComposedType> EnterComposedType, LeaveComposedType;
119
void IAstVisitor.VisitComposedType(ComposedType composedType)
121
Visit(EnterComposedType, LeaveComposedType, composedType);
124
public event Action<SimpleType> EnterSimpleType, LeaveSimpleType;
126
void IAstVisitor.VisitSimpleType(SimpleType simpleType)
128
Visit(EnterSimpleType, LeaveSimpleType, simpleType);
131
public event Action<MemberType> EnterMemberType, LeaveMemberType;
133
void IAstVisitor.VisitMemberType(MemberType memberType)
135
Visit(EnterMemberType, LeaveMemberType, memberType);
138
public event Action<Attribute> EnterAttribute, LeaveAttribute;
140
void IAstVisitor.VisitAttribute(Attribute attribute)
142
Visit(EnterAttribute, LeaveAttribute, attribute);
145
public event Action<AttributeSection> EnterAttributeSection, LeaveAttributeSection;
147
void IAstVisitor.VisitAttributeSection(AttributeSection attributeSection)
149
Visit(EnterAttributeSection, LeaveAttributeSection, attributeSection);
152
public event Action<DelegateDeclaration> EnterDelegateDeclaration, LeaveDelegateDeclaration;
154
void IAstVisitor.VisitDelegateDeclaration(DelegateDeclaration delegateDeclaration)
156
Visit(EnterDelegateDeclaration, LeaveDelegateDeclaration, delegateDeclaration);
159
public event Action<NamespaceDeclaration> EnterNamespaceDeclaration, LeaveNamespaceDeclaration;
161
void IAstVisitor.VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration)
163
Visit(EnterNamespaceDeclaration, LeaveNamespaceDeclaration, namespaceDeclaration);
166
public event Action<TypeDeclaration> EnterTypeDeclaration, LeaveTypeDeclaration;
168
void IAstVisitor.VisitTypeDeclaration(TypeDeclaration typeDeclaration)
170
Visit(EnterTypeDeclaration, LeaveTypeDeclaration, typeDeclaration);
173
public event Action<TypeParameterDeclaration> EnterTypeParameterDeclaration, LeaveTypeParameterDeclaration;
175
void IAstVisitor.VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration)
177
Visit(EnterTypeParameterDeclaration, LeaveTypeParameterDeclaration, typeParameterDeclaration);
180
public event Action<EnumMemberDeclaration> EnterEnumMemberDeclaration, LeaveEnumMemberDeclaration;
182
void IAstVisitor.VisitEnumMemberDeclaration(EnumMemberDeclaration enumMemberDeclaration)
184
Visit(EnterEnumMemberDeclaration, LeaveEnumMemberDeclaration, enumMemberDeclaration);
187
public event Action<UsingDeclaration> EnterUsingDeclaration, LeaveUsingDeclaration;
189
void IAstVisitor.VisitUsingDeclaration(UsingDeclaration usingDeclaration)
191
Visit(EnterUsingDeclaration, LeaveUsingDeclaration, usingDeclaration);
194
public event Action<UsingAliasDeclaration> EnterUsingAliasDeclaration, LeaveUsingAliasDeclaration;
196
void IAstVisitor.VisitUsingAliasDeclaration(UsingAliasDeclaration usingDeclaration)
198
Visit(EnterUsingAliasDeclaration, LeaveUsingAliasDeclaration, usingDeclaration);
201
public event Action<ExternAliasDeclaration> EnterExternAliasDeclaration, LeaveExternAliasDeclaration;
203
void IAstVisitor.VisitExternAliasDeclaration(ExternAliasDeclaration externAliasDeclaration)
205
Visit(EnterExternAliasDeclaration, LeaveExternAliasDeclaration, externAliasDeclaration);
208
public event Action<ConstructorDeclaration> EnterConstructorDeclaration, LeaveConstructorDeclaration;
210
void IAstVisitor.VisitConstructorDeclaration(ConstructorDeclaration constructorDeclaration)
212
Visit(EnterConstructorDeclaration, LeaveConstructorDeclaration, constructorDeclaration);
215
public event Action<ConstructorInitializer> EnterConstructorInitializer, LeaveConstructorInitializer;
217
void IAstVisitor.VisitConstructorInitializer(ConstructorInitializer constructorInitializer)
219
Visit(EnterConstructorInitializer, LeaveConstructorInitializer, constructorInitializer);
222
public event Action<DestructorDeclaration> EnterDestructorDeclaration, LeaveDestructorDeclaration;
224
void IAstVisitor.VisitDestructorDeclaration(DestructorDeclaration destructorDeclaration)
226
Visit(EnterDestructorDeclaration, LeaveDestructorDeclaration, destructorDeclaration);
229
public event Action<EventDeclaration> EnterEventDeclaration, LeaveEventDeclaration;
231
void IAstVisitor.VisitEventDeclaration(EventDeclaration eventDeclaration)
233
Visit(EnterEventDeclaration, LeaveEventDeclaration, eventDeclaration);
236
public event Action<CustomEventDeclaration> EnterCustomEventDeclaration, LeaveCustomEventDeclaration;
238
void IAstVisitor.VisitCustomEventDeclaration(CustomEventDeclaration eventDeclaration)
240
Visit(EnterCustomEventDeclaration, LeaveCustomEventDeclaration, eventDeclaration);
243
public event Action<FieldDeclaration> EnterFieldDeclaration, LeaveFieldDeclaration;
245
void IAstVisitor.VisitFieldDeclaration(FieldDeclaration fieldDeclaration)
247
Visit(EnterFieldDeclaration, LeaveFieldDeclaration, fieldDeclaration);
250
public event Action<FixedFieldDeclaration> EnterFixedFieldDeclaration, LeaveFixedFieldDeclaration;
252
void IAstVisitor.VisitFixedFieldDeclaration(FixedFieldDeclaration fixedFieldDeclaration)
254
Visit(EnterFixedFieldDeclaration, LeaveFixedFieldDeclaration, fixedFieldDeclaration);
257
public event Action<FixedVariableInitializer> EnterFixedVariableInitializer, LeaveFixedVariableInitializer;
259
void IAstVisitor.VisitFixedVariableInitializer(FixedVariableInitializer fixedVariableInitializer)
261
Visit(EnterFixedVariableInitializer, LeaveFixedVariableInitializer, fixedVariableInitializer);
264
public event Action<IndexerDeclaration> EnterIndexerDeclaration, LeaveIndexerDeclaration;
266
void IAstVisitor.VisitIndexerDeclaration(IndexerDeclaration indexerDeclaration)
268
Visit(EnterIndexerDeclaration, LeaveIndexerDeclaration, indexerDeclaration);
271
public event Action<MethodDeclaration> EnterMethodDeclaration, LeaveMethodDeclaration;
273
void IAstVisitor.VisitMethodDeclaration(MethodDeclaration methodDeclaration)
275
Visit(EnterMethodDeclaration, LeaveMethodDeclaration, methodDeclaration);
278
public event Action<OperatorDeclaration> EnterOperatorDeclaration, LeaveOperatorDeclaration;
280
void IAstVisitor.VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration)
282
Visit(EnterOperatorDeclaration, LeaveOperatorDeclaration, operatorDeclaration);
285
public event Action<PropertyDeclaration> EnterPropertyDeclaration, LeavePropertyDeclaration;
287
void IAstVisitor.VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration)
289
Visit(EnterPropertyDeclaration, LeavePropertyDeclaration, propertyDeclaration);
292
public event Action<Accessor> EnterAccessor, LeaveAccessor;
294
void IAstVisitor.VisitAccessor(Accessor accessor)
296
Visit(EnterAccessor, LeaveAccessor, accessor);
299
public event Action<VariableInitializer> EnterVariableInitializer, LeaveVariableInitializer;
301
void IAstVisitor.VisitVariableInitializer(VariableInitializer variableInitializer)
303
Visit(EnterVariableInitializer, LeaveVariableInitializer, variableInitializer);
306
public event Action<ParameterDeclaration> EnterParameterDeclaration, LeaveParameterDeclaration;
308
void IAstVisitor.VisitParameterDeclaration(ParameterDeclaration parameterDeclaration)
310
Visit(EnterParameterDeclaration, LeaveParameterDeclaration, parameterDeclaration);
313
public event Action<Constraint> EnterConstraint, LeaveConstraint;
315
void IAstVisitor.VisitConstraint(Constraint constraint)
317
Visit(EnterConstraint, LeaveConstraint, constraint);
320
public event Action<BlockStatement> EnterBlockStatement, LeaveBlockStatement;
322
void IAstVisitor.VisitBlockStatement(BlockStatement blockStatement)
324
Visit(EnterBlockStatement, LeaveBlockStatement, blockStatement);
327
public event Action<ExpressionStatement> EnterExpressionStatement, LeaveExpressionStatement;
329
void IAstVisitor.VisitExpressionStatement(ExpressionStatement expressionStatement)
331
Visit(EnterExpressionStatement, LeaveExpressionStatement, expressionStatement);
334
public event Action<BreakStatement> EnterBreakStatement, LeaveBreakStatement;
336
void IAstVisitor.VisitBreakStatement(BreakStatement breakStatement)
338
Visit(EnterBreakStatement, LeaveBreakStatement, breakStatement);
341
public event Action<CheckedStatement> EnterCheckedStatement, LeaveCheckedStatement;
343
void IAstVisitor.VisitCheckedStatement(CheckedStatement checkedStatement)
345
Visit(EnterCheckedStatement, LeaveCheckedStatement, checkedStatement);
348
public event Action<ContinueStatement> EnterContinueStatement, LeaveContinueStatement;
350
void IAstVisitor.VisitContinueStatement(ContinueStatement continueStatement)
352
Visit(EnterContinueStatement, LeaveContinueStatement, continueStatement);
355
public event Action<DoWhileStatement> EnterDoWhileStatement, LeaveDoWhileStatement;
357
void IAstVisitor.VisitDoWhileStatement(DoWhileStatement doWhileStatement)
359
Visit(EnterDoWhileStatement, LeaveDoWhileStatement, doWhileStatement);
362
public event Action<EmptyStatement> EnterEmptyStatement, LeaveEmptyStatement;
364
void IAstVisitor.VisitEmptyStatement(EmptyStatement emptyStatement)
366
Visit(EnterEmptyStatement, LeaveEmptyStatement, emptyStatement);
369
public event Action<FixedStatement> EnterFixedStatement, LeaveFixedStatement;
371
void IAstVisitor.VisitFixedStatement(FixedStatement fixedStatement)
373
Visit(EnterFixedStatement, LeaveFixedStatement, fixedStatement);
376
public event Action<ForeachStatement> EnterForeachStatement, LeaveForeachStatement;
378
void IAstVisitor.VisitForeachStatement(ForeachStatement foreachStatement)
380
Visit(EnterForeachStatement, LeaveForeachStatement, foreachStatement);
383
public event Action<ForStatement> EnterForStatement, LeaveForStatement;
385
void IAstVisitor.VisitForStatement(ForStatement forStatement)
387
Visit(EnterForStatement, LeaveForStatement, forStatement);
390
public event Action<GotoCaseStatement> EnterGotoCaseStatement, LeaveGotoCaseStatement;
392
void IAstVisitor.VisitGotoCaseStatement(GotoCaseStatement gotoCaseStatement)
394
Visit(EnterGotoCaseStatement, LeaveGotoCaseStatement, gotoCaseStatement);
397
public event Action<GotoDefaultStatement> EnterGotoDefaultStatement, LeaveGotoDefaultStatement;
399
void IAstVisitor.VisitGotoDefaultStatement(GotoDefaultStatement gotoDefaultStatement)
401
Visit(EnterGotoDefaultStatement, LeaveGotoDefaultStatement, gotoDefaultStatement);
404
public event Action<GotoStatement> EnterGotoStatement, LeaveGotoStatement;
406
void IAstVisitor.VisitGotoStatement(GotoStatement gotoStatement)
408
Visit(EnterGotoStatement, LeaveGotoStatement, gotoStatement);
411
public event Action<IfElseStatement> EnterIfElseStatement, LeaveIfElseStatement;
413
void IAstVisitor.VisitIfElseStatement(IfElseStatement ifElseStatement)
415
Visit(EnterIfElseStatement, LeaveIfElseStatement, ifElseStatement);
418
public event Action<LabelStatement> EnterLabelStatement, LeaveLabelStatement;
420
void IAstVisitor.VisitLabelStatement(LabelStatement labelStatement)
422
Visit(EnterLabelStatement, LeaveLabelStatement, labelStatement);
425
public event Action<LockStatement> EnterLockStatement, LeaveLockStatement;
427
void IAstVisitor.VisitLockStatement(LockStatement lockStatement)
429
Visit(EnterLockStatement, LeaveLockStatement, lockStatement);
432
public event Action<ReturnStatement> EnterReturnStatement, LeaveReturnStatement;
434
void IAstVisitor.VisitReturnStatement(ReturnStatement returnStatement)
436
Visit(EnterReturnStatement, LeaveReturnStatement, returnStatement);
439
public event Action<SwitchStatement> EnterSwitchStatement, LeaveSwitchStatement;
441
void IAstVisitor.VisitSwitchStatement(SwitchStatement switchStatement)
443
Visit(EnterSwitchStatement, LeaveSwitchStatement, switchStatement);
446
public event Action<SwitchSection> EnterSwitchSection, LeaveSwitchSection;
448
void IAstVisitor.VisitSwitchSection(SwitchSection switchSection)
450
Visit(EnterSwitchSection, LeaveSwitchSection, switchSection);
453
public event Action<CaseLabel> EnterCaseLabel, LeaveCaseLabel;
455
void IAstVisitor.VisitCaseLabel(CaseLabel caseLabel)
457
Visit(EnterCaseLabel, LeaveCaseLabel, caseLabel);
460
public event Action<ThrowStatement> EnterThrowStatement, LeaveThrowStatement;
462
void IAstVisitor.VisitThrowStatement(ThrowStatement throwStatement)
464
Visit(EnterThrowStatement, LeaveThrowStatement, throwStatement);
467
public event Action<TryCatchStatement> EnterTryCatchStatement, LeaveTryCatchStatement;
469
void IAstVisitor.VisitTryCatchStatement(TryCatchStatement tryCatchStatement)
471
Visit(EnterTryCatchStatement, LeaveTryCatchStatement, tryCatchStatement);
474
public event Action<CatchClause> EnterCatchClause, LeaveCatchClause;
476
void IAstVisitor.VisitCatchClause(CatchClause catchClause)
478
Visit(EnterCatchClause, LeaveCatchClause, catchClause);
481
public event Action<UncheckedStatement> EnterUncheckedStatement, LeaveUncheckedStatement;
483
void IAstVisitor.VisitUncheckedStatement(UncheckedStatement uncheckedStatement)
485
Visit(EnterUncheckedStatement, LeaveUncheckedStatement, uncheckedStatement);
488
public event Action<UnsafeStatement> EnterUnsafeStatement, LeaveUnsafeStatement;
490
void IAstVisitor.VisitUnsafeStatement(UnsafeStatement unsafeStatement)
492
Visit(EnterUnsafeStatement, LeaveUnsafeStatement, unsafeStatement);
495
public event Action<UsingStatement> EnterUsingStatement, LeaveUsingStatement;
497
void IAstVisitor.VisitUsingStatement(UsingStatement usingStatement)
499
Visit(EnterUsingStatement, LeaveUsingStatement, usingStatement);
502
public event Action<VariableDeclarationStatement> EnterVariableDeclarationStatement, LeaveVariableDeclarationStatement;
504
void IAstVisitor.VisitVariableDeclarationStatement(VariableDeclarationStatement variableDeclarationStatement)
506
Visit(EnterVariableDeclarationStatement, LeaveVariableDeclarationStatement, variableDeclarationStatement);
509
public event Action<WhileStatement> EnterWhileStatement, LeaveWhileStatement;
511
void IAstVisitor.VisitWhileStatement(WhileStatement whileStatement)
513
Visit(EnterWhileStatement, LeaveWhileStatement, whileStatement);
516
public event Action<YieldBreakStatement> EnterYieldBreakStatement, LeaveYieldBreakStatement;
518
void IAstVisitor.VisitYieldBreakStatement(YieldBreakStatement yieldBreakStatement)
520
Visit(EnterYieldBreakStatement, LeaveYieldBreakStatement, yieldBreakStatement);
523
public event Action<YieldReturnStatement> EnterYieldReturnStatement, LeaveYieldReturnStatement;
525
void IAstVisitor.VisitYieldReturnStatement(YieldReturnStatement yieldStatement)
527
Visit(EnterYieldReturnStatement, LeaveYieldReturnStatement, yieldStatement);
530
public event Action<AnonymousMethodExpression> EnterAnonymousMethodExpression, LeaveAnonymousMethodExpression;
532
void IAstVisitor.VisitAnonymousMethodExpression(AnonymousMethodExpression anonymousMethodExpression)
534
Visit(EnterAnonymousMethodExpression, LeaveAnonymousMethodExpression, anonymousMethodExpression);
537
public event Action<LambdaExpression> EnterLambdaExpression, LeaveLambdaExpression;
539
void IAstVisitor.VisitLambdaExpression(LambdaExpression lambdaExpression)
541
Visit(EnterLambdaExpression, LeaveLambdaExpression, lambdaExpression);
544
public event Action<AssignmentExpression> EnterAssignmentExpression, LeaveAssignmentExpression;
546
void IAstVisitor.VisitAssignmentExpression(AssignmentExpression assignmentExpression)
548
Visit(EnterAssignmentExpression, LeaveAssignmentExpression, assignmentExpression);
551
public event Action<BaseReferenceExpression> EnterBaseReferenceExpression, LeaveBaseReferenceExpression;
553
void IAstVisitor.VisitBaseReferenceExpression(BaseReferenceExpression baseReferenceExpression)
555
Visit(EnterBaseReferenceExpression, LeaveBaseReferenceExpression, baseReferenceExpression);
558
public event Action<BinaryOperatorExpression> EnterBinaryOperatorExpression, LeaveBinaryOperatorExpression;
560
void IAstVisitor.VisitBinaryOperatorExpression(BinaryOperatorExpression binaryOperatorExpression)
562
Visit(EnterBinaryOperatorExpression, LeaveBinaryOperatorExpression, binaryOperatorExpression);
565
public event Action<CastExpression> EnterCastExpression, LeaveCastExpression;
567
void IAstVisitor.VisitCastExpression(CastExpression castExpression)
569
Visit(EnterCastExpression, LeaveCastExpression, castExpression);
572
public event Action<CheckedExpression> EnterCheckedExpression, LeaveCheckedExpression;
574
void IAstVisitor.VisitCheckedExpression(CheckedExpression checkedExpression)
576
Visit(EnterCheckedExpression, LeaveCheckedExpression, checkedExpression);
579
public event Action<ConditionalExpression> EnterConditionalExpression, LeaveConditionalExpression;
581
void IAstVisitor.VisitConditionalExpression(ConditionalExpression conditionalExpression)
583
Visit(EnterConditionalExpression, LeaveConditionalExpression, conditionalExpression);
586
public event Action<IdentifierExpression> EnterIdentifierExpression, LeaveIdentifierExpression;
588
void IAstVisitor.VisitIdentifierExpression(IdentifierExpression identifierExpression)
590
Visit(EnterIdentifierExpression, LeaveIdentifierExpression, identifierExpression);
593
public event Action<IndexerExpression> EnterIndexerExpression, LeaveIndexerExpression;
595
void IAstVisitor.VisitIndexerExpression(IndexerExpression indexerExpression)
597
Visit(EnterIndexerExpression, LeaveIndexerExpression, indexerExpression);
600
public event Action<InvocationExpression> EnterInvocationExpression, LeaveInvocationExpression;
602
void IAstVisitor.VisitInvocationExpression(InvocationExpression invocationExpression)
604
Visit(EnterInvocationExpression, LeaveInvocationExpression, invocationExpression);
607
public event Action<DirectionExpression> EnterDirectionExpression, LeaveDirectionExpression;
609
void IAstVisitor.VisitDirectionExpression(DirectionExpression directionExpression)
611
Visit(EnterDirectionExpression, LeaveDirectionExpression, directionExpression);
614
public event Action<MemberReferenceExpression> EnterMemberReferenceExpression, LeaveMemberReferenceExpression;
616
void IAstVisitor.VisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression)
618
Visit(EnterMemberReferenceExpression, LeaveMemberReferenceExpression, memberReferenceExpression);
621
public event Action<NullReferenceExpression> EnterNullReferenceExpression, LeaveNullReferenceExpression;
623
void IAstVisitor.VisitNullReferenceExpression(NullReferenceExpression nullReferenceExpression)
625
Visit(EnterNullReferenceExpression, LeaveNullReferenceExpression, nullReferenceExpression);
628
public event Action<ObjectCreateExpression> EnterObjectCreateExpression, LeaveObjectCreateExpression;
630
void IAstVisitor.VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression)
632
Visit(EnterObjectCreateExpression, LeaveObjectCreateExpression, objectCreateExpression);
635
public event Action<AnonymousTypeCreateExpression> EnterAnonymousTypeCreateExpression, LeaveAnonymousTypeCreateExpression;
637
void IAstVisitor.VisitAnonymousTypeCreateExpression(AnonymousTypeCreateExpression anonymousTypeCreateExpression)
639
Visit(EnterAnonymousTypeCreateExpression, LeaveAnonymousTypeCreateExpression, anonymousTypeCreateExpression);
642
public event Action<ArrayCreateExpression> EnterArrayCreateExpression, LeaveArrayCreateExpression;
644
void IAstVisitor.VisitArrayCreateExpression(ArrayCreateExpression arraySCreateExpression)
646
Visit(EnterArrayCreateExpression, LeaveArrayCreateExpression, arraySCreateExpression);
649
public event Action<ParenthesizedExpression> EnterParenthesizedExpression, LeaveParenthesizedExpression;
651
void IAstVisitor.VisitParenthesizedExpression(ParenthesizedExpression parenthesizedExpression)
653
Visit(EnterParenthesizedExpression, LeaveParenthesizedExpression, parenthesizedExpression);
656
public event Action<PointerReferenceExpression> EnterPointerReferenceExpression, LeavePointerReferenceExpression;
658
void IAstVisitor.VisitPointerReferenceExpression(PointerReferenceExpression pointerReferenceExpression)
660
Visit(EnterPointerReferenceExpression, LeavePointerReferenceExpression, pointerReferenceExpression);
663
public event Action<PrimitiveExpression> EnterPrimitiveExpression, LeavePrimitiveExpression;
665
void IAstVisitor.VisitPrimitiveExpression(PrimitiveExpression primitiveExpression)
667
Visit(EnterPrimitiveExpression, LeavePrimitiveExpression, primitiveExpression);
670
public event Action<SizeOfExpression> EnterSizeOfExpression, LeaveSizeOfExpression;
672
void IAstVisitor.VisitSizeOfExpression(SizeOfExpression sizeOfExpression)
674
Visit(EnterSizeOfExpression, LeaveSizeOfExpression, sizeOfExpression);
677
public event Action<StackAllocExpression> EnterStackAllocExpression, LeaveStackAllocExpression;
679
void IAstVisitor.VisitStackAllocExpression(StackAllocExpression stackAllocExpression)
681
Visit(EnterStackAllocExpression, LeaveStackAllocExpression, stackAllocExpression);
684
public event Action<ThisReferenceExpression> EnterThisReferenceExpression, LeaveThisReferenceExpression;
686
void IAstVisitor.VisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression)
688
Visit(EnterThisReferenceExpression, LeaveThisReferenceExpression, thisReferenceExpression);
691
public event Action<TypeOfExpression> EnterTypeOfExpression, LeaveTypeOfExpression;
693
void IAstVisitor.VisitTypeOfExpression(TypeOfExpression typeOfExpression)
695
Visit(EnterTypeOfExpression, LeaveTypeOfExpression, typeOfExpression);
698
public event Action<TypeReferenceExpression> EnterTypeReferenceExpression, LeaveTypeReferenceExpression;
700
void IAstVisitor.VisitTypeReferenceExpression(TypeReferenceExpression typeReferenceExpression)
702
Visit(EnterTypeReferenceExpression, LeaveTypeReferenceExpression, typeReferenceExpression);
705
public event Action<UnaryOperatorExpression> EnterUnaryOperatorExpression, LeaveUnaryOperatorExpression;
707
void IAstVisitor.VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression)
709
Visit(EnterUnaryOperatorExpression, LeaveUnaryOperatorExpression, unaryOperatorExpression);
712
public event Action<UncheckedExpression> EnterUncheckedExpression, LeaveUncheckedExpression;
714
void IAstVisitor.VisitUncheckedExpression(UncheckedExpression uncheckedExpression)
716
Visit(EnterUncheckedExpression, LeaveUncheckedExpression, uncheckedExpression);
719
public event Action<QueryExpression> EnterQueryExpression, LeaveQueryExpression;
721
void IAstVisitor.VisitQueryExpression(QueryExpression queryExpression)
723
Visit(EnterQueryExpression, LeaveQueryExpression, queryExpression);
726
public event Action<QueryContinuationClause> EnterQueryContinuationClause, LeaveQueryContinuationClause;
728
void IAstVisitor.VisitQueryContinuationClause(QueryContinuationClause queryContinuationClause)
730
Visit(EnterQueryContinuationClause, LeaveQueryContinuationClause, queryContinuationClause);
733
public event Action<QueryFromClause> EnterQueryFromClause, LeaveQueryFromClause;
735
void IAstVisitor.VisitQueryFromClause(QueryFromClause queryFromClause)
737
Visit(EnterQueryFromClause, LeaveQueryFromClause, queryFromClause);
740
public event Action<QueryLetClause> EnterQueryLetClause, LeaveQueryLetClause;
742
void IAstVisitor.VisitQueryLetClause(QueryLetClause queryLetClause)
744
Visit(EnterQueryLetClause, LeaveQueryLetClause, queryLetClause);
747
public event Action<QueryWhereClause> EnterQueryWhereClause, LeaveQueryWhereClause;
749
void IAstVisitor.VisitQueryWhereClause(QueryWhereClause queryWhereClause)
751
Visit(EnterQueryWhereClause, LeaveQueryWhereClause, queryWhereClause);
754
public event Action<QueryJoinClause> EnterQueryJoinClause, LeaveQueryJoinClause;
756
void IAstVisitor.VisitQueryJoinClause(QueryJoinClause queryJoinClause)
758
Visit(EnterQueryJoinClause, LeaveQueryJoinClause, queryJoinClause);
761
public event Action<QueryOrderClause> EnterQueryOrderClause, LeaveQueryOrderClause;
763
void IAstVisitor.VisitQueryOrderClause(QueryOrderClause queryOrderClause)
765
Visit(EnterQueryOrderClause, LeaveQueryOrderClause, queryOrderClause);
768
public event Action<QueryOrdering> EnterQueryOrdering, LeaveQueryOrdering;
770
void IAstVisitor.VisitQueryOrdering(QueryOrdering queryOrdering)
772
Visit(EnterQueryOrdering, LeaveQueryOrdering, queryOrdering);
775
public event Action<QuerySelectClause> EnterQuerySelectClause, LeaveQuerySelectClause;
777
void IAstVisitor.VisitQuerySelectClause(QuerySelectClause querySelectClause)
779
Visit(EnterQuerySelectClause, LeaveQuerySelectClause, querySelectClause);
782
public event Action<QueryGroupClause> EnterQueryGroupClause, LeaveQueryGroupClause;
784
void IAstVisitor.VisitQueryGroupClause(QueryGroupClause queryGroupClause)
786
Visit(EnterQueryGroupClause, LeaveQueryGroupClause, queryGroupClause);
789
public event Action<AsExpression> EnterAsExpression, LeaveAsExpression;
791
void IAstVisitor.VisitAsExpression(AsExpression asExpression)
793
Visit(EnterAsExpression, LeaveAsExpression, asExpression);
796
public event Action<IsExpression> EnterIsExpression, LeaveIsExpression;
798
void IAstVisitor.VisitIsExpression(IsExpression isExpression)
800
Visit(EnterIsExpression, LeaveIsExpression, isExpression);
803
public event Action<DefaultValueExpression> EnterDefaultValueExpression, LeaveDefaultValueExpression;
805
void IAstVisitor.VisitDefaultValueExpression(DefaultValueExpression defaultValueExpression)
807
Visit(EnterDefaultValueExpression, LeaveDefaultValueExpression, defaultValueExpression);
810
public event Action<UndocumentedExpression> EnterUndocumentedExpression, LeaveUndocumentedExpression;
812
void IAstVisitor.VisitUndocumentedExpression(UndocumentedExpression undocumentedExpression)
814
Visit(EnterUndocumentedExpression, LeaveUndocumentedExpression, undocumentedExpression);
817
public event Action<ArrayInitializerExpression> EnterArrayInitializerExpression, LeaveArrayInitializerExpression;
819
void IAstVisitor.VisitArrayInitializerExpression(ArrayInitializerExpression arrayInitializerExpression)
821
Visit(EnterArrayInitializerExpression, LeaveArrayInitializerExpression, arrayInitializerExpression);
824
public event Action<ArraySpecifier> EnterArraySpecifier, LeaveArraySpecifier;
826
void IAstVisitor.VisitArraySpecifier(ArraySpecifier arraySpecifier)
828
Visit(EnterArraySpecifier, LeaveArraySpecifier, arraySpecifier);
831
public event Action<NamedArgumentExpression> EnterNamedArgumentExpression, LeaveNamedArgumentExpression;
833
void IAstVisitor.VisitNamedArgumentExpression(NamedArgumentExpression namedArgumentExpression)
835
Visit(EnterNamedArgumentExpression, LeaveNamedArgumentExpression, namedArgumentExpression);
838
public event Action<NamedExpression> EnterNamedExpression, LeaveNamedExpression;
840
void IAstVisitor.VisitNamedExpression(NamedExpression namedExpression)
842
Visit(EnterNamedExpression, LeaveNamedExpression, namedExpression);
845
public event Action<EmptyExpression> EnterEmptyExpression, LeaveEmptyExpression;
847
void IAstVisitor.VisitEmptyExpression(EmptyExpression emptyExpression)
849
Visit(EnterEmptyExpression, LeaveEmptyExpression, emptyExpression);
852
void IAstVisitor.VisitPatternPlaceholder(AstNode placeholder, PatternMatching.Pattern pattern)