// // ObservableAstVisitor.cs // // Author: // Mike Krüger // // Copyright (c) 2011 Novell, Inc (http://www.novell.com) // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. using System; namespace ICSharpCode.NRefactory.CSharp { public class ObservableAstVisitor : IAstVisitor { void Visit(Action enter, Action leave, T node) where T : AstNode { if (enter != null) enter(node); AstNode next; for (var child = node.FirstChild; child != null; child = next) { // Store next to allow the loop to continue // if the visitor removes/replaces children. next = child.NextSibling; child.AcceptVisitor (this); } if (leave != null) leave(node); } void IAstVisitor.VisitNullNode(AstNode nullNode) { } void IAstVisitor.VisitErrorNode(AstNode nullNode) { } public event Action EnterSyntaxTree, LeaveSyntaxTree; void IAstVisitor.VisitSyntaxTree(SyntaxTree unit) { Visit(EnterSyntaxTree, LeaveSyntaxTree, unit); } public event Action EnterComment, LeaveComment; void IAstVisitor.VisitComment(Comment comment) { Visit(EnterComment, LeaveComment, comment); } public event Action EnterNewLine, LeaveNewLine; void IAstVisitor.VisitNewLine(NewLineNode newLineNode) { Visit(EnterNewLine, LeaveNewLine, newLineNode); } public event Action EnterWhitespace, LeaveWhitespace; void IAstVisitor.VisitWhitespace(WhitespaceNode whitespace) { Visit(EnterWhitespace, LeaveWhitespace, whitespace); } public event Action EnterText, LeaveText; void IAstVisitor.VisitText(TextNode textNode) { Visit(EnterText, LeaveText, textNode); } public event Action EnterPreProcessorDirective, LeavePreProcessorDirective; void IAstVisitor.VisitPreProcessorDirective(PreProcessorDirective preProcessorDirective) { Visit(EnterPreProcessorDirective, LeavePreProcessorDirective, preProcessorDirective); } public event Action EnterDocumentationReference, LeaveDocumentationReference; void IAstVisitor.VisitDocumentationReference(DocumentationReference documentationReference) { Visit(EnterDocumentationReference, LeaveDocumentationReference, documentationReference); } public event Action EnterIdentifier, LeaveIdentifier; void IAstVisitor.VisitIdentifier(Identifier identifier) { Visit(EnterIdentifier, LeaveIdentifier, identifier); } public event Action EnterCSharpTokenNode, LeaveCSharpTokenNode; void IAstVisitor.VisitCSharpTokenNode(CSharpTokenNode token) { Visit(EnterCSharpTokenNode, LeaveCSharpTokenNode, token); } public event Action EnterPrimitiveType, LeavePrimitiveType; void IAstVisitor.VisitPrimitiveType(PrimitiveType primitiveType) { Visit(EnterPrimitiveType, LeavePrimitiveType, primitiveType); } public event Action EnterComposedType, LeaveComposedType; void IAstVisitor.VisitComposedType(ComposedType composedType) { Visit(EnterComposedType, LeaveComposedType, composedType); } public event Action EnterSimpleType, LeaveSimpleType; void IAstVisitor.VisitSimpleType(SimpleType simpleType) { Visit(EnterSimpleType, LeaveSimpleType, simpleType); } public event Action EnterMemberType, LeaveMemberType; void IAstVisitor.VisitMemberType(MemberType memberType) { Visit(EnterMemberType, LeaveMemberType, memberType); } public event Action EnterAttribute, LeaveAttribute; void IAstVisitor.VisitAttribute(Attribute attribute) { Visit(EnterAttribute, LeaveAttribute, attribute); } public event Action EnterAttributeSection, LeaveAttributeSection; void IAstVisitor.VisitAttributeSection(AttributeSection attributeSection) { Visit(EnterAttributeSection, LeaveAttributeSection, attributeSection); } public event Action EnterDelegateDeclaration, LeaveDelegateDeclaration; void IAstVisitor.VisitDelegateDeclaration(DelegateDeclaration delegateDeclaration) { Visit(EnterDelegateDeclaration, LeaveDelegateDeclaration, delegateDeclaration); } public event Action EnterNamespaceDeclaration, LeaveNamespaceDeclaration; void IAstVisitor.VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration) { Visit(EnterNamespaceDeclaration, LeaveNamespaceDeclaration, namespaceDeclaration); } public event Action EnterTypeDeclaration, LeaveTypeDeclaration; void IAstVisitor.VisitTypeDeclaration(TypeDeclaration typeDeclaration) { Visit(EnterTypeDeclaration, LeaveTypeDeclaration, typeDeclaration); } public event Action EnterTypeParameterDeclaration, LeaveTypeParameterDeclaration; void IAstVisitor.VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration) { Visit(EnterTypeParameterDeclaration, LeaveTypeParameterDeclaration, typeParameterDeclaration); } public event Action EnterEnumMemberDeclaration, LeaveEnumMemberDeclaration; void IAstVisitor.VisitEnumMemberDeclaration(EnumMemberDeclaration enumMemberDeclaration) { Visit(EnterEnumMemberDeclaration, LeaveEnumMemberDeclaration, enumMemberDeclaration); } public event Action EnterUsingDeclaration, LeaveUsingDeclaration; void IAstVisitor.VisitUsingDeclaration(UsingDeclaration usingDeclaration) { Visit(EnterUsingDeclaration, LeaveUsingDeclaration, usingDeclaration); } public event Action EnterUsingAliasDeclaration, LeaveUsingAliasDeclaration; void IAstVisitor.VisitUsingAliasDeclaration(UsingAliasDeclaration usingDeclaration) { Visit(EnterUsingAliasDeclaration, LeaveUsingAliasDeclaration, usingDeclaration); } public event Action EnterExternAliasDeclaration, LeaveExternAliasDeclaration; void IAstVisitor.VisitExternAliasDeclaration(ExternAliasDeclaration externAliasDeclaration) { Visit(EnterExternAliasDeclaration, LeaveExternAliasDeclaration, externAliasDeclaration); } public event Action EnterConstructorDeclaration, LeaveConstructorDeclaration; void IAstVisitor.VisitConstructorDeclaration(ConstructorDeclaration constructorDeclaration) { Visit(EnterConstructorDeclaration, LeaveConstructorDeclaration, constructorDeclaration); } public event Action EnterConstructorInitializer, LeaveConstructorInitializer; void IAstVisitor.VisitConstructorInitializer(ConstructorInitializer constructorInitializer) { Visit(EnterConstructorInitializer, LeaveConstructorInitializer, constructorInitializer); } public event Action EnterDestructorDeclaration, LeaveDestructorDeclaration; void IAstVisitor.VisitDestructorDeclaration(DestructorDeclaration destructorDeclaration) { Visit(EnterDestructorDeclaration, LeaveDestructorDeclaration, destructorDeclaration); } public event Action EnterEventDeclaration, LeaveEventDeclaration; void IAstVisitor.VisitEventDeclaration(EventDeclaration eventDeclaration) { Visit(EnterEventDeclaration, LeaveEventDeclaration, eventDeclaration); } public event Action EnterCustomEventDeclaration, LeaveCustomEventDeclaration; void IAstVisitor.VisitCustomEventDeclaration(CustomEventDeclaration eventDeclaration) { Visit(EnterCustomEventDeclaration, LeaveCustomEventDeclaration, eventDeclaration); } public event Action EnterFieldDeclaration, LeaveFieldDeclaration; void IAstVisitor.VisitFieldDeclaration(FieldDeclaration fieldDeclaration) { Visit(EnterFieldDeclaration, LeaveFieldDeclaration, fieldDeclaration); } public event Action EnterFixedFieldDeclaration, LeaveFixedFieldDeclaration; void IAstVisitor.VisitFixedFieldDeclaration(FixedFieldDeclaration fixedFieldDeclaration) { Visit(EnterFixedFieldDeclaration, LeaveFixedFieldDeclaration, fixedFieldDeclaration); } public event Action EnterFixedVariableInitializer, LeaveFixedVariableInitializer; void IAstVisitor.VisitFixedVariableInitializer(FixedVariableInitializer fixedVariableInitializer) { Visit(EnterFixedVariableInitializer, LeaveFixedVariableInitializer, fixedVariableInitializer); } public event Action EnterIndexerDeclaration, LeaveIndexerDeclaration; void IAstVisitor.VisitIndexerDeclaration(IndexerDeclaration indexerDeclaration) { Visit(EnterIndexerDeclaration, LeaveIndexerDeclaration, indexerDeclaration); } public event Action EnterMethodDeclaration, LeaveMethodDeclaration; void IAstVisitor.VisitMethodDeclaration(MethodDeclaration methodDeclaration) { Visit(EnterMethodDeclaration, LeaveMethodDeclaration, methodDeclaration); } public event Action EnterOperatorDeclaration, LeaveOperatorDeclaration; void IAstVisitor.VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration) { Visit(EnterOperatorDeclaration, LeaveOperatorDeclaration, operatorDeclaration); } public event Action EnterPropertyDeclaration, LeavePropertyDeclaration; void IAstVisitor.VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration) { Visit(EnterPropertyDeclaration, LeavePropertyDeclaration, propertyDeclaration); } public event Action EnterAccessor, LeaveAccessor; void IAstVisitor.VisitAccessor(Accessor accessor) { Visit(EnterAccessor, LeaveAccessor, accessor); } public event Action EnterVariableInitializer, LeaveVariableInitializer; void IAstVisitor.VisitVariableInitializer(VariableInitializer variableInitializer) { Visit(EnterVariableInitializer, LeaveVariableInitializer, variableInitializer); } public event Action EnterParameterDeclaration, LeaveParameterDeclaration; void IAstVisitor.VisitParameterDeclaration(ParameterDeclaration parameterDeclaration) { Visit(EnterParameterDeclaration, LeaveParameterDeclaration, parameterDeclaration); } public event Action EnterConstraint, LeaveConstraint; void IAstVisitor.VisitConstraint(Constraint constraint) { Visit(EnterConstraint, LeaveConstraint, constraint); } public event Action EnterBlockStatement, LeaveBlockStatement; void IAstVisitor.VisitBlockStatement(BlockStatement blockStatement) { Visit(EnterBlockStatement, LeaveBlockStatement, blockStatement); } public event Action EnterExpressionStatement, LeaveExpressionStatement; void IAstVisitor.VisitExpressionStatement(ExpressionStatement expressionStatement) { Visit(EnterExpressionStatement, LeaveExpressionStatement, expressionStatement); } public event Action EnterBreakStatement, LeaveBreakStatement; void IAstVisitor.VisitBreakStatement(BreakStatement breakStatement) { Visit(EnterBreakStatement, LeaveBreakStatement, breakStatement); } public event Action EnterCheckedStatement, LeaveCheckedStatement; void IAstVisitor.VisitCheckedStatement(CheckedStatement checkedStatement) { Visit(EnterCheckedStatement, LeaveCheckedStatement, checkedStatement); } public event Action EnterContinueStatement, LeaveContinueStatement; void IAstVisitor.VisitContinueStatement(ContinueStatement continueStatement) { Visit(EnterContinueStatement, LeaveContinueStatement, continueStatement); } public event Action EnterDoWhileStatement, LeaveDoWhileStatement; void IAstVisitor.VisitDoWhileStatement(DoWhileStatement doWhileStatement) { Visit(EnterDoWhileStatement, LeaveDoWhileStatement, doWhileStatement); } public event Action EnterEmptyStatement, LeaveEmptyStatement; void IAstVisitor.VisitEmptyStatement(EmptyStatement emptyStatement) { Visit(EnterEmptyStatement, LeaveEmptyStatement, emptyStatement); } public event Action EnterFixedStatement, LeaveFixedStatement; void IAstVisitor.VisitFixedStatement(FixedStatement fixedStatement) { Visit(EnterFixedStatement, LeaveFixedStatement, fixedStatement); } public event Action EnterForeachStatement, LeaveForeachStatement; void IAstVisitor.VisitForeachStatement(ForeachStatement foreachStatement) { Visit(EnterForeachStatement, LeaveForeachStatement, foreachStatement); } public event Action EnterForStatement, LeaveForStatement; void IAstVisitor.VisitForStatement(ForStatement forStatement) { Visit(EnterForStatement, LeaveForStatement, forStatement); } public event Action EnterGotoCaseStatement, LeaveGotoCaseStatement; void IAstVisitor.VisitGotoCaseStatement(GotoCaseStatement gotoCaseStatement) { Visit(EnterGotoCaseStatement, LeaveGotoCaseStatement, gotoCaseStatement); } public event Action EnterGotoDefaultStatement, LeaveGotoDefaultStatement; void IAstVisitor.VisitGotoDefaultStatement(GotoDefaultStatement gotoDefaultStatement) { Visit(EnterGotoDefaultStatement, LeaveGotoDefaultStatement, gotoDefaultStatement); } public event Action EnterGotoStatement, LeaveGotoStatement; void IAstVisitor.VisitGotoStatement(GotoStatement gotoStatement) { Visit(EnterGotoStatement, LeaveGotoStatement, gotoStatement); } public event Action EnterIfElseStatement, LeaveIfElseStatement; void IAstVisitor.VisitIfElseStatement(IfElseStatement ifElseStatement) { Visit(EnterIfElseStatement, LeaveIfElseStatement, ifElseStatement); } public event Action EnterLabelStatement, LeaveLabelStatement; void IAstVisitor.VisitLabelStatement(LabelStatement labelStatement) { Visit(EnterLabelStatement, LeaveLabelStatement, labelStatement); } public event Action EnterLockStatement, LeaveLockStatement; void IAstVisitor.VisitLockStatement(LockStatement lockStatement) { Visit(EnterLockStatement, LeaveLockStatement, lockStatement); } public event Action EnterReturnStatement, LeaveReturnStatement; void IAstVisitor.VisitReturnStatement(ReturnStatement returnStatement) { Visit(EnterReturnStatement, LeaveReturnStatement, returnStatement); } public event Action EnterSwitchStatement, LeaveSwitchStatement; void IAstVisitor.VisitSwitchStatement(SwitchStatement switchStatement) { Visit(EnterSwitchStatement, LeaveSwitchStatement, switchStatement); } public event Action EnterSwitchSection, LeaveSwitchSection; void IAstVisitor.VisitSwitchSection(SwitchSection switchSection) { Visit(EnterSwitchSection, LeaveSwitchSection, switchSection); } public event Action EnterCaseLabel, LeaveCaseLabel; void IAstVisitor.VisitCaseLabel(CaseLabel caseLabel) { Visit(EnterCaseLabel, LeaveCaseLabel, caseLabel); } public event Action EnterThrowStatement, LeaveThrowStatement; void IAstVisitor.VisitThrowStatement(ThrowStatement throwStatement) { Visit(EnterThrowStatement, LeaveThrowStatement, throwStatement); } public event Action EnterTryCatchStatement, LeaveTryCatchStatement; void IAstVisitor.VisitTryCatchStatement(TryCatchStatement tryCatchStatement) { Visit(EnterTryCatchStatement, LeaveTryCatchStatement, tryCatchStatement); } public event Action EnterCatchClause, LeaveCatchClause; void IAstVisitor.VisitCatchClause(CatchClause catchClause) { Visit(EnterCatchClause, LeaveCatchClause, catchClause); } public event Action EnterUncheckedStatement, LeaveUncheckedStatement; void IAstVisitor.VisitUncheckedStatement(UncheckedStatement uncheckedStatement) { Visit(EnterUncheckedStatement, LeaveUncheckedStatement, uncheckedStatement); } public event Action EnterUnsafeStatement, LeaveUnsafeStatement; void IAstVisitor.VisitUnsafeStatement(UnsafeStatement unsafeStatement) { Visit(EnterUnsafeStatement, LeaveUnsafeStatement, unsafeStatement); } public event Action EnterUsingStatement, LeaveUsingStatement; void IAstVisitor.VisitUsingStatement(UsingStatement usingStatement) { Visit(EnterUsingStatement, LeaveUsingStatement, usingStatement); } public event Action EnterVariableDeclarationStatement, LeaveVariableDeclarationStatement; void IAstVisitor.VisitVariableDeclarationStatement(VariableDeclarationStatement variableDeclarationStatement) { Visit(EnterVariableDeclarationStatement, LeaveVariableDeclarationStatement, variableDeclarationStatement); } public event Action EnterWhileStatement, LeaveWhileStatement; void IAstVisitor.VisitWhileStatement(WhileStatement whileStatement) { Visit(EnterWhileStatement, LeaveWhileStatement, whileStatement); } public event Action EnterYieldBreakStatement, LeaveYieldBreakStatement; void IAstVisitor.VisitYieldBreakStatement(YieldBreakStatement yieldBreakStatement) { Visit(EnterYieldBreakStatement, LeaveYieldBreakStatement, yieldBreakStatement); } public event Action EnterYieldReturnStatement, LeaveYieldReturnStatement; void IAstVisitor.VisitYieldReturnStatement(YieldReturnStatement yieldStatement) { Visit(EnterYieldReturnStatement, LeaveYieldReturnStatement, yieldStatement); } public event Action EnterAnonymousMethodExpression, LeaveAnonymousMethodExpression; void IAstVisitor.VisitAnonymousMethodExpression(AnonymousMethodExpression anonymousMethodExpression) { Visit(EnterAnonymousMethodExpression, LeaveAnonymousMethodExpression, anonymousMethodExpression); } public event Action EnterLambdaExpression, LeaveLambdaExpression; void IAstVisitor.VisitLambdaExpression(LambdaExpression lambdaExpression) { Visit(EnterLambdaExpression, LeaveLambdaExpression, lambdaExpression); } public event Action EnterAssignmentExpression, LeaveAssignmentExpression; void IAstVisitor.VisitAssignmentExpression(AssignmentExpression assignmentExpression) { Visit(EnterAssignmentExpression, LeaveAssignmentExpression, assignmentExpression); } public event Action EnterBaseReferenceExpression, LeaveBaseReferenceExpression; void IAstVisitor.VisitBaseReferenceExpression(BaseReferenceExpression baseReferenceExpression) { Visit(EnterBaseReferenceExpression, LeaveBaseReferenceExpression, baseReferenceExpression); } public event Action EnterBinaryOperatorExpression, LeaveBinaryOperatorExpression; void IAstVisitor.VisitBinaryOperatorExpression(BinaryOperatorExpression binaryOperatorExpression) { Visit(EnterBinaryOperatorExpression, LeaveBinaryOperatorExpression, binaryOperatorExpression); } public event Action EnterCastExpression, LeaveCastExpression; void IAstVisitor.VisitCastExpression(CastExpression castExpression) { Visit(EnterCastExpression, LeaveCastExpression, castExpression); } public event Action EnterCheckedExpression, LeaveCheckedExpression; void IAstVisitor.VisitCheckedExpression(CheckedExpression checkedExpression) { Visit(EnterCheckedExpression, LeaveCheckedExpression, checkedExpression); } public event Action EnterConditionalExpression, LeaveConditionalExpression; void IAstVisitor.VisitConditionalExpression(ConditionalExpression conditionalExpression) { Visit(EnterConditionalExpression, LeaveConditionalExpression, conditionalExpression); } public event Action EnterIdentifierExpression, LeaveIdentifierExpression; void IAstVisitor.VisitIdentifierExpression(IdentifierExpression identifierExpression) { Visit(EnterIdentifierExpression, LeaveIdentifierExpression, identifierExpression); } public event Action EnterIndexerExpression, LeaveIndexerExpression; void IAstVisitor.VisitIndexerExpression(IndexerExpression indexerExpression) { Visit(EnterIndexerExpression, LeaveIndexerExpression, indexerExpression); } public event Action EnterInvocationExpression, LeaveInvocationExpression; void IAstVisitor.VisitInvocationExpression(InvocationExpression invocationExpression) { Visit(EnterInvocationExpression, LeaveInvocationExpression, invocationExpression); } public event Action EnterDirectionExpression, LeaveDirectionExpression; void IAstVisitor.VisitDirectionExpression(DirectionExpression directionExpression) { Visit(EnterDirectionExpression, LeaveDirectionExpression, directionExpression); } public event Action EnterMemberReferenceExpression, LeaveMemberReferenceExpression; void IAstVisitor.VisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression) { Visit(EnterMemberReferenceExpression, LeaveMemberReferenceExpression, memberReferenceExpression); } public event Action EnterNullReferenceExpression, LeaveNullReferenceExpression; void IAstVisitor.VisitNullReferenceExpression(NullReferenceExpression nullReferenceExpression) { Visit(EnterNullReferenceExpression, LeaveNullReferenceExpression, nullReferenceExpression); } public event Action EnterObjectCreateExpression, LeaveObjectCreateExpression; void IAstVisitor.VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression) { Visit(EnterObjectCreateExpression, LeaveObjectCreateExpression, objectCreateExpression); } public event Action EnterAnonymousTypeCreateExpression, LeaveAnonymousTypeCreateExpression; void IAstVisitor.VisitAnonymousTypeCreateExpression(AnonymousTypeCreateExpression anonymousTypeCreateExpression) { Visit(EnterAnonymousTypeCreateExpression, LeaveAnonymousTypeCreateExpression, anonymousTypeCreateExpression); } public event Action EnterArrayCreateExpression, LeaveArrayCreateExpression; void IAstVisitor.VisitArrayCreateExpression(ArrayCreateExpression arraySCreateExpression) { Visit(EnterArrayCreateExpression, LeaveArrayCreateExpression, arraySCreateExpression); } public event Action EnterParenthesizedExpression, LeaveParenthesizedExpression; void IAstVisitor.VisitParenthesizedExpression(ParenthesizedExpression parenthesizedExpression) { Visit(EnterParenthesizedExpression, LeaveParenthesizedExpression, parenthesizedExpression); } public event Action EnterPointerReferenceExpression, LeavePointerReferenceExpression; void IAstVisitor.VisitPointerReferenceExpression(PointerReferenceExpression pointerReferenceExpression) { Visit(EnterPointerReferenceExpression, LeavePointerReferenceExpression, pointerReferenceExpression); } public event Action EnterPrimitiveExpression, LeavePrimitiveExpression; void IAstVisitor.VisitPrimitiveExpression(PrimitiveExpression primitiveExpression) { Visit(EnterPrimitiveExpression, LeavePrimitiveExpression, primitiveExpression); } public event Action EnterSizeOfExpression, LeaveSizeOfExpression; void IAstVisitor.VisitSizeOfExpression(SizeOfExpression sizeOfExpression) { Visit(EnterSizeOfExpression, LeaveSizeOfExpression, sizeOfExpression); } public event Action EnterStackAllocExpression, LeaveStackAllocExpression; void IAstVisitor.VisitStackAllocExpression(StackAllocExpression stackAllocExpression) { Visit(EnterStackAllocExpression, LeaveStackAllocExpression, stackAllocExpression); } public event Action EnterThisReferenceExpression, LeaveThisReferenceExpression; void IAstVisitor.VisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression) { Visit(EnterThisReferenceExpression, LeaveThisReferenceExpression, thisReferenceExpression); } public event Action EnterTypeOfExpression, LeaveTypeOfExpression; void IAstVisitor.VisitTypeOfExpression(TypeOfExpression typeOfExpression) { Visit(EnterTypeOfExpression, LeaveTypeOfExpression, typeOfExpression); } public event Action EnterTypeReferenceExpression, LeaveTypeReferenceExpression; void IAstVisitor.VisitTypeReferenceExpression(TypeReferenceExpression typeReferenceExpression) { Visit(EnterTypeReferenceExpression, LeaveTypeReferenceExpression, typeReferenceExpression); } public event Action EnterUnaryOperatorExpression, LeaveUnaryOperatorExpression; void IAstVisitor.VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression) { Visit(EnterUnaryOperatorExpression, LeaveUnaryOperatorExpression, unaryOperatorExpression); } public event Action EnterUncheckedExpression, LeaveUncheckedExpression; void IAstVisitor.VisitUncheckedExpression(UncheckedExpression uncheckedExpression) { Visit(EnterUncheckedExpression, LeaveUncheckedExpression, uncheckedExpression); } public event Action EnterQueryExpression, LeaveQueryExpression; void IAstVisitor.VisitQueryExpression(QueryExpression queryExpression) { Visit(EnterQueryExpression, LeaveQueryExpression, queryExpression); } public event Action EnterQueryContinuationClause, LeaveQueryContinuationClause; void IAstVisitor.VisitQueryContinuationClause(QueryContinuationClause queryContinuationClause) { Visit(EnterQueryContinuationClause, LeaveQueryContinuationClause, queryContinuationClause); } public event Action EnterQueryFromClause, LeaveQueryFromClause; void IAstVisitor.VisitQueryFromClause(QueryFromClause queryFromClause) { Visit(EnterQueryFromClause, LeaveQueryFromClause, queryFromClause); } public event Action EnterQueryLetClause, LeaveQueryLetClause; void IAstVisitor.VisitQueryLetClause(QueryLetClause queryLetClause) { Visit(EnterQueryLetClause, LeaveQueryLetClause, queryLetClause); } public event Action EnterQueryWhereClause, LeaveQueryWhereClause; void IAstVisitor.VisitQueryWhereClause(QueryWhereClause queryWhereClause) { Visit(EnterQueryWhereClause, LeaveQueryWhereClause, queryWhereClause); } public event Action EnterQueryJoinClause, LeaveQueryJoinClause; void IAstVisitor.VisitQueryJoinClause(QueryJoinClause queryJoinClause) { Visit(EnterQueryJoinClause, LeaveQueryJoinClause, queryJoinClause); } public event Action EnterQueryOrderClause, LeaveQueryOrderClause; void IAstVisitor.VisitQueryOrderClause(QueryOrderClause queryOrderClause) { Visit(EnterQueryOrderClause, LeaveQueryOrderClause, queryOrderClause); } public event Action EnterQueryOrdering, LeaveQueryOrdering; void IAstVisitor.VisitQueryOrdering(QueryOrdering queryOrdering) { Visit(EnterQueryOrdering, LeaveQueryOrdering, queryOrdering); } public event Action EnterQuerySelectClause, LeaveQuerySelectClause; void IAstVisitor.VisitQuerySelectClause(QuerySelectClause querySelectClause) { Visit(EnterQuerySelectClause, LeaveQuerySelectClause, querySelectClause); } public event Action EnterQueryGroupClause, LeaveQueryGroupClause; void IAstVisitor.VisitQueryGroupClause(QueryGroupClause queryGroupClause) { Visit(EnterQueryGroupClause, LeaveQueryGroupClause, queryGroupClause); } public event Action EnterAsExpression, LeaveAsExpression; void IAstVisitor.VisitAsExpression(AsExpression asExpression) { Visit(EnterAsExpression, LeaveAsExpression, asExpression); } public event Action EnterIsExpression, LeaveIsExpression; void IAstVisitor.VisitIsExpression(IsExpression isExpression) { Visit(EnterIsExpression, LeaveIsExpression, isExpression); } public event Action EnterDefaultValueExpression, LeaveDefaultValueExpression; void IAstVisitor.VisitDefaultValueExpression(DefaultValueExpression defaultValueExpression) { Visit(EnterDefaultValueExpression, LeaveDefaultValueExpression, defaultValueExpression); } public event Action EnterUndocumentedExpression, LeaveUndocumentedExpression; void IAstVisitor.VisitUndocumentedExpression(UndocumentedExpression undocumentedExpression) { Visit(EnterUndocumentedExpression, LeaveUndocumentedExpression, undocumentedExpression); } public event Action EnterArrayInitializerExpression, LeaveArrayInitializerExpression; void IAstVisitor.VisitArrayInitializerExpression(ArrayInitializerExpression arrayInitializerExpression) { Visit(EnterArrayInitializerExpression, LeaveArrayInitializerExpression, arrayInitializerExpression); } public event Action EnterArraySpecifier, LeaveArraySpecifier; void IAstVisitor.VisitArraySpecifier(ArraySpecifier arraySpecifier) { Visit(EnterArraySpecifier, LeaveArraySpecifier, arraySpecifier); } public event Action EnterNamedArgumentExpression, LeaveNamedArgumentExpression; void IAstVisitor.VisitNamedArgumentExpression(NamedArgumentExpression namedArgumentExpression) { Visit(EnterNamedArgumentExpression, LeaveNamedArgumentExpression, namedArgumentExpression); } public event Action EnterNamedExpression, LeaveNamedExpression; void IAstVisitor.VisitNamedExpression(NamedExpression namedExpression) { Visit(EnterNamedExpression, LeaveNamedExpression, namedExpression); } void IAstVisitor.VisitPatternPlaceholder(AstNode placeholder, PatternMatching.Pattern pattern) { } } }