// // IAstVisitor.cs // // Author: // Mike Krüger // // Copyright (c) 2010 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. namespace ICSharpCode.Decompiler.CSharp.Syntax { /// /// AST visitor with a default implementation that visits all node depth-first. /// public abstract class DepthFirstAstVisitor : IAstVisitor { protected virtual void VisitChildren(AstNode 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 child. next = child.NextSibling; child.AcceptVisitor(this); } } public virtual void VisitNullNode(AstNode nullNode) { // Should we call VisitChildren here? // We usually want to ignore null nodes. // Older NR versions (before VisitNullNode was introduced) didn't call VisitChildren() with null nodes; // so changing this might break VisitChildren() overrides that expect the node to be part of the AST. } public virtual void VisitSyntaxTree(SyntaxTree syntaxTree) { VisitChildren(syntaxTree); } public virtual void VisitComment(Comment comment) { VisitChildren(comment); } public virtual void VisitDocumentationReference(DocumentationReference documentationReference) { VisitChildren(documentationReference); } public virtual void VisitPreProcessorDirective(PreProcessorDirective preProcessorDirective) { VisitChildren(preProcessorDirective); } public virtual void VisitIdentifier(Identifier identifier) { VisitChildren(identifier); } public virtual void VisitCSharpTokenNode(CSharpTokenNode token) { VisitChildren(token); } public virtual void VisitPrimitiveType(PrimitiveType primitiveType) { VisitChildren(primitiveType); } public virtual void VisitComposedType(ComposedType composedType) { VisitChildren(composedType); } public virtual void VisitSimpleType(SimpleType simpleType) { VisitChildren(simpleType); } public virtual void VisitMemberType(MemberType memberType) { VisitChildren(memberType); } public virtual void VisitTupleType(TupleAstType tupleType) { VisitChildren(tupleType); } public virtual void VisitTupleTypeElement(TupleTypeElement tupleTypeElement) { VisitChildren(tupleTypeElement); } public virtual void VisitFunctionPointerType(FunctionPointerAstType functionPointerType) { VisitChildren(functionPointerType); } public virtual void VisitInvocationType(InvocationAstType invocationType) { VisitChildren(invocationType); } public virtual void VisitAttribute(Attribute attribute) { VisitChildren(attribute); } public virtual void VisitAttributeSection(AttributeSection attributeSection) { VisitChildren(attributeSection); } public virtual void VisitDelegateDeclaration(DelegateDeclaration delegateDeclaration) { VisitChildren(delegateDeclaration); } public virtual void VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration) { VisitChildren(namespaceDeclaration); } public virtual void VisitTypeDeclaration(TypeDeclaration typeDeclaration) { VisitChildren(typeDeclaration); } public virtual void VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration) { VisitChildren(typeParameterDeclaration); } public virtual void VisitEnumMemberDeclaration(EnumMemberDeclaration enumMemberDeclaration) { VisitChildren(enumMemberDeclaration); } public virtual void VisitUsingDeclaration(UsingDeclaration usingDeclaration) { VisitChildren(usingDeclaration); } public virtual void VisitUsingAliasDeclaration(UsingAliasDeclaration usingDeclaration) { VisitChildren(usingDeclaration); } public virtual void VisitExternAliasDeclaration(ExternAliasDeclaration externAliasDeclaration) { VisitChildren(externAliasDeclaration); } public virtual void VisitConstructorDeclaration(ConstructorDeclaration constructorDeclaration) { VisitChildren(constructorDeclaration); } public virtual void VisitConstructorInitializer(ConstructorInitializer constructorInitializer) { VisitChildren(constructorInitializer); } public virtual void VisitDestructorDeclaration(DestructorDeclaration destructorDeclaration) { VisitChildren(destructorDeclaration); } public virtual void VisitEventDeclaration(EventDeclaration eventDeclaration) { VisitChildren(eventDeclaration); } public virtual void VisitCustomEventDeclaration(CustomEventDeclaration eventDeclaration) { VisitChildren(eventDeclaration); } public virtual void VisitFieldDeclaration(FieldDeclaration fieldDeclaration) { VisitChildren(fieldDeclaration); } public virtual void VisitFixedFieldDeclaration(FixedFieldDeclaration fixedFieldDeclaration) { VisitChildren(fixedFieldDeclaration); } public virtual void VisitFixedVariableInitializer(FixedVariableInitializer fixedVariableInitializer) { VisitChildren(fixedVariableInitializer); } public virtual void VisitIndexerDeclaration(IndexerDeclaration indexerDeclaration) { VisitChildren(indexerDeclaration); } public virtual void VisitMethodDeclaration(MethodDeclaration methodDeclaration) { VisitChildren(methodDeclaration); } public virtual void VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration) { VisitChildren(operatorDeclaration); } public virtual void VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration) { VisitChildren(propertyDeclaration); } public virtual void VisitAccessor(Accessor accessor) { VisitChildren(accessor); } public virtual void VisitVariableInitializer(VariableInitializer variableInitializer) { VisitChildren(variableInitializer); } public virtual void VisitParameterDeclaration(ParameterDeclaration parameterDeclaration) { VisitChildren(parameterDeclaration); } public virtual void VisitConstraint(Constraint constraint) { VisitChildren(constraint); } public virtual void VisitBlockStatement(BlockStatement blockStatement) { VisitChildren(blockStatement); } public virtual void VisitExpressionStatement(ExpressionStatement expressionStatement) { VisitChildren(expressionStatement); } public virtual void VisitBreakStatement(BreakStatement breakStatement) { VisitChildren(breakStatement); } public virtual void VisitCheckedStatement(CheckedStatement checkedStatement) { VisitChildren(checkedStatement); } public virtual void VisitContinueStatement(ContinueStatement continueStatement) { VisitChildren(continueStatement); } public virtual void VisitDoWhileStatement(DoWhileStatement doWhileStatement) { VisitChildren(doWhileStatement); } public virtual void VisitEmptyStatement(EmptyStatement emptyStatement) { VisitChildren(emptyStatement); } public virtual void VisitFixedStatement(FixedStatement fixedStatement) { VisitChildren(fixedStatement); } public virtual void VisitForeachStatement(ForeachStatement foreachStatement) { VisitChildren(foreachStatement); } public virtual void VisitForStatement(ForStatement forStatement) { VisitChildren(forStatement); } public virtual void VisitGotoCaseStatement(GotoCaseStatement gotoCaseStatement) { VisitChildren(gotoCaseStatement); } public virtual void VisitGotoDefaultStatement(GotoDefaultStatement gotoDefaultStatement) { VisitChildren(gotoDefaultStatement); } public virtual void VisitGotoStatement(GotoStatement gotoStatement) { VisitChildren(gotoStatement); } public virtual void VisitIfElseStatement(IfElseStatement ifElseStatement) { VisitChildren(ifElseStatement); } public virtual void VisitLabelStatement(LabelStatement labelStatement) { VisitChildren(labelStatement); } public virtual void VisitLockStatement(LockStatement lockStatement) { VisitChildren(lockStatement); } public virtual void VisitReturnStatement(ReturnStatement returnStatement) { VisitChildren(returnStatement); } public virtual void VisitSwitchStatement(SwitchStatement switchStatement) { VisitChildren(switchStatement); } public virtual void VisitSwitchSection(SwitchSection switchSection) { VisitChildren(switchSection); } public virtual void VisitCaseLabel(CaseLabel caseLabel) { VisitChildren(caseLabel); } public virtual void VisitSwitchExpression(SwitchExpression switchExpression) { VisitChildren(switchExpression); } public virtual void VisitSwitchExpressionSection(SwitchExpressionSection switchExpressionSection) { VisitChildren(switchExpressionSection); } public virtual void VisitThrowStatement(ThrowStatement throwStatement) { VisitChildren(throwStatement); } public virtual void VisitTryCatchStatement(TryCatchStatement tryCatchStatement) { VisitChildren(tryCatchStatement); } public virtual void VisitCatchClause(CatchClause catchClause) { VisitChildren(catchClause); } public virtual void VisitUncheckedStatement(UncheckedStatement uncheckedStatement) { VisitChildren(uncheckedStatement); } public virtual void VisitUnsafeStatement(UnsafeStatement unsafeStatement) { VisitChildren(unsafeStatement); } public virtual void VisitUsingStatement(UsingStatement usingStatement) { VisitChildren(usingStatement); } public virtual void VisitVariableDeclarationStatement(VariableDeclarationStatement variableDeclarationStatement) { VisitChildren(variableDeclarationStatement); } public virtual void VisitLocalFunctionDeclarationStatement(LocalFunctionDeclarationStatement localFunctionDeclarationStatement) { VisitChildren(localFunctionDeclarationStatement); } public virtual void VisitWhileStatement(WhileStatement whileStatement) { VisitChildren(whileStatement); } public virtual void VisitYieldBreakStatement(YieldBreakStatement yieldBreakStatement) { VisitChildren(yieldBreakStatement); } public virtual void VisitYieldReturnStatement(YieldReturnStatement yieldReturnStatement) { VisitChildren(yieldReturnStatement); } public virtual void VisitAnonymousMethodExpression(AnonymousMethodExpression anonymousMethodExpression) { VisitChildren(anonymousMethodExpression); } public virtual void VisitLambdaExpression(LambdaExpression lambdaExpression) { VisitChildren(lambdaExpression); } public virtual void VisitAssignmentExpression(AssignmentExpression assignmentExpression) { VisitChildren(assignmentExpression); } public virtual void VisitBaseReferenceExpression(BaseReferenceExpression baseReferenceExpression) { VisitChildren(baseReferenceExpression); } public virtual void VisitBinaryOperatorExpression(BinaryOperatorExpression binaryOperatorExpression) { VisitChildren(binaryOperatorExpression); } public virtual void VisitCastExpression(CastExpression castExpression) { VisitChildren(castExpression); } public virtual void VisitCheckedExpression(CheckedExpression checkedExpression) { VisitChildren(checkedExpression); } public virtual void VisitConditionalExpression(ConditionalExpression conditionalExpression) { VisitChildren(conditionalExpression); } public virtual void VisitIdentifierExpression(IdentifierExpression identifierExpression) { VisitChildren(identifierExpression); } public virtual void VisitIndexerExpression(IndexerExpression indexerExpression) { VisitChildren(indexerExpression); } public virtual void VisitInterpolatedStringExpression(InterpolatedStringExpression interpolatedStringExpression) { VisitChildren(interpolatedStringExpression); } public virtual void VisitInterpolation(Interpolation interpolation) { VisitChildren(interpolation); } public virtual void VisitInterpolatedStringText(InterpolatedStringText interpolatedStringText) { VisitChildren(interpolatedStringText); } public virtual void VisitInvocationExpression(InvocationExpression invocationExpression) { VisitChildren(invocationExpression); } public virtual void VisitDirectionExpression(DirectionExpression directionExpression) { VisitChildren(directionExpression); } public virtual void VisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression) { VisitChildren(memberReferenceExpression); } public virtual void VisitNullReferenceExpression(NullReferenceExpression nullReferenceExpression) { VisitChildren(nullReferenceExpression); } public virtual void VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression) { VisitChildren(objectCreateExpression); } public virtual void VisitDeclarationExpression(DeclarationExpression declarationExpression) { VisitChildren(declarationExpression); } public virtual void VisitRecursivePatternExpression(RecursivePatternExpression recursivePatternExpression) { VisitChildren(recursivePatternExpression); } public virtual void VisitOutVarDeclarationExpression(OutVarDeclarationExpression outVarDeclarationExpression) { VisitChildren(outVarDeclarationExpression); } public virtual void VisitAnonymousTypeCreateExpression(AnonymousTypeCreateExpression anonymousTypeCreateExpression) { VisitChildren(anonymousTypeCreateExpression); } public virtual void VisitArrayCreateExpression(ArrayCreateExpression arrayCreateExpression) { VisitChildren(arrayCreateExpression); } public virtual void VisitParenthesizedExpression(ParenthesizedExpression parenthesizedExpression) { VisitChildren(parenthesizedExpression); } public virtual void VisitPointerReferenceExpression(PointerReferenceExpression pointerReferenceExpression) { VisitChildren(pointerReferenceExpression); } public virtual void VisitPrimitiveExpression(PrimitiveExpression primitiveExpression) { VisitChildren(primitiveExpression); } public virtual void VisitSizeOfExpression(SizeOfExpression sizeOfExpression) { VisitChildren(sizeOfExpression); } public virtual void VisitStackAllocExpression(StackAllocExpression stackAllocExpression) { VisitChildren(stackAllocExpression); } public virtual void VisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression) { VisitChildren(thisReferenceExpression); } public virtual void VisitThrowExpression(ThrowExpression throwExpression) { VisitChildren(throwExpression); } public virtual void VisitTupleExpression(TupleExpression tupleExpression) { VisitChildren(tupleExpression); } public virtual void VisitTypeOfExpression(TypeOfExpression typeOfExpression) { VisitChildren(typeOfExpression); } public virtual void VisitTypeReferenceExpression(TypeReferenceExpression typeReferenceExpression) { VisitChildren(typeReferenceExpression); } public virtual void VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression) { VisitChildren(unaryOperatorExpression); } public virtual void VisitUncheckedExpression(UncheckedExpression uncheckedExpression) { VisitChildren(uncheckedExpression); } public virtual void VisitQueryExpression(QueryExpression queryExpression) { VisitChildren(queryExpression); } public virtual void VisitQueryContinuationClause(QueryContinuationClause queryContinuationClause) { VisitChildren(queryContinuationClause); } public virtual void VisitQueryFromClause(QueryFromClause queryFromClause) { VisitChildren(queryFromClause); } public virtual void VisitQueryLetClause(QueryLetClause queryLetClause) { VisitChildren(queryLetClause); } public virtual void VisitQueryWhereClause(QueryWhereClause queryWhereClause) { VisitChildren(queryWhereClause); } public virtual void VisitQueryJoinClause(QueryJoinClause queryJoinClause) { VisitChildren(queryJoinClause); } public virtual void VisitQueryOrderClause(QueryOrderClause queryOrderClause) { VisitChildren(queryOrderClause); } public virtual void VisitQueryOrdering(QueryOrdering queryOrdering) { VisitChildren(queryOrdering); } public virtual void VisitQuerySelectClause(QuerySelectClause querySelectClause) { VisitChildren(querySelectClause); } public virtual void VisitQueryGroupClause(QueryGroupClause queryGroupClause) { VisitChildren(queryGroupClause); } public virtual void VisitAsExpression(AsExpression asExpression) { VisitChildren(asExpression); } public virtual void VisitIsExpression(IsExpression isExpression) { VisitChildren(isExpression); } public virtual void VisitDefaultValueExpression(DefaultValueExpression defaultValueExpression) { VisitChildren(defaultValueExpression); } public virtual void VisitUndocumentedExpression(UndocumentedExpression undocumentedExpression) { VisitChildren(undocumentedExpression); } public virtual void VisitArrayInitializerExpression(ArrayInitializerExpression arrayInitializerExpression) { VisitChildren(arrayInitializerExpression); } public virtual void VisitArraySpecifier(ArraySpecifier arraySpecifier) { VisitChildren(arraySpecifier); } public virtual void VisitNamedArgumentExpression(NamedArgumentExpression namedArgumentExpression) { VisitChildren(namedArgumentExpression); } public virtual void VisitNamedExpression(NamedExpression namedExpression) { VisitChildren(namedExpression); } public virtual void VisitSingleVariableDesignation(SingleVariableDesignation singleVariableDesignation) { VisitChildren(singleVariableDesignation); } public virtual void VisitParenthesizedVariableDesignation(ParenthesizedVariableDesignation parenthesizedVariableDesignation) { VisitChildren(parenthesizedVariableDesignation); } public virtual void VisitErrorNode(AstNode errorNode) { VisitChildren(errorNode); } public virtual void VisitPatternPlaceholder(AstNode placeholder, PatternMatching.Pattern pattern) { VisitChildren(placeholder); } public virtual void VisitWithInitializerExpression(WithInitializerExpression withInitializerExpression) { VisitChildren(withInitializerExpression); } } /// /// AST visitor with a default implementation that visits all node depth-first. /// public abstract class DepthFirstAstVisitor : IAstVisitor { protected virtual T? VisitChildren(AstNode 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 child. next = child.NextSibling; child.AcceptVisitor(this); } return default(T); } public virtual T? VisitNullNode(AstNode nullNode) { // Should we call VisitChildren here? // We usually want to ignore null nodes. // Older NR versions (before VisitNullNode was introduced) didn't call VisitChildren() with null nodes; // so changing this might break VisitChildren() overrides that expect the node to be part of the AST. return default(T); } public virtual T VisitSyntaxTree(SyntaxTree unit) { return VisitChildren(unit); } public virtual T VisitComment(Comment comment) { return VisitChildren(comment); } public virtual T VisitDocumentationReference(DocumentationReference documentationReference) { return VisitChildren(documentationReference); } public virtual T VisitPreProcessorDirective(PreProcessorDirective preProcessorDirective) { return VisitChildren(preProcessorDirective); } public virtual T VisitIdentifier(Identifier identifier) { return VisitChildren(identifier); } public virtual T VisitCSharpTokenNode(CSharpTokenNode token) { return VisitChildren(token); } public virtual T VisitPrimitiveType(PrimitiveType primitiveType) { return VisitChildren(primitiveType); } public virtual T VisitComposedType(ComposedType composedType) { return VisitChildren(composedType); } public virtual T VisitSimpleType(SimpleType simpleType) { return VisitChildren(simpleType); } public virtual T VisitMemberType(MemberType memberType) { return VisitChildren(memberType); } public virtual T VisitTupleType(TupleAstType tupleType) { return VisitChildren(tupleType); } public virtual T VisitTupleTypeElement(TupleTypeElement tupleTypeElement) { return VisitChildren(tupleTypeElement); } public virtual T VisitFunctionPointerType(FunctionPointerAstType functionPointerType) { return VisitChildren(functionPointerType); } public virtual T VisitInvocationType(InvocationAstType invocationType) { return VisitChildren(invocationType); } public virtual T VisitAttribute(Attribute attribute) { return VisitChildren(attribute); } public virtual T VisitAttributeSection(AttributeSection attributeSection) { return VisitChildren(attributeSection); } public virtual T VisitDelegateDeclaration(DelegateDeclaration delegateDeclaration) { return VisitChildren(delegateDeclaration); } public virtual T VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration) { return VisitChildren(namespaceDeclaration); } public virtual T VisitTypeDeclaration(TypeDeclaration typeDeclaration) { return VisitChildren(typeDeclaration); } public virtual T VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration) { return VisitChildren(typeParameterDeclaration); } public virtual T VisitEnumMemberDeclaration(EnumMemberDeclaration enumMemberDeclaration) { return VisitChildren(enumMemberDeclaration); } public virtual T VisitUsingDeclaration(UsingDeclaration usingDeclaration) { return VisitChildren(usingDeclaration); } public virtual T VisitUsingAliasDeclaration(UsingAliasDeclaration usingDeclaration) { return VisitChildren(usingDeclaration); } public virtual T VisitExternAliasDeclaration(ExternAliasDeclaration externAliasDeclaration) { return VisitChildren(externAliasDeclaration); } public virtual T VisitConstructorDeclaration(ConstructorDeclaration constructorDeclaration) { return VisitChildren(constructorDeclaration); } public virtual T VisitConstructorInitializer(ConstructorInitializer constructorInitializer) { return VisitChildren(constructorInitializer); } public virtual T VisitDestructorDeclaration(DestructorDeclaration destructorDeclaration) { return VisitChildren(destructorDeclaration); } public virtual T VisitEventDeclaration(EventDeclaration eventDeclaration) { return VisitChildren(eventDeclaration); } public virtual T VisitCustomEventDeclaration(CustomEventDeclaration eventDeclaration) { return VisitChildren(eventDeclaration); } public virtual T VisitFieldDeclaration(FieldDeclaration fieldDeclaration) { return VisitChildren(fieldDeclaration); } public virtual T VisitFixedFieldDeclaration(FixedFieldDeclaration fixedFieldDeclaration) { return VisitChildren(fixedFieldDeclaration); } public virtual T VisitFixedVariableInitializer(FixedVariableInitializer fixedVariableInitializer) { return VisitChildren(fixedVariableInitializer); } public virtual T VisitIndexerDeclaration(IndexerDeclaration indexerDeclaration) { return VisitChildren(indexerDeclaration); } public virtual T VisitMethodDeclaration(MethodDeclaration methodDeclaration) { return VisitChildren(methodDeclaration); } public virtual T VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration) { return VisitChildren(operatorDeclaration); } public virtual T VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration) { return VisitChildren(propertyDeclaration); } public virtual T VisitAccessor(Accessor accessor) { return VisitChildren(accessor); } public virtual T VisitVariableInitializer(VariableInitializer variableInitializer) { return VisitChildren(variableInitializer); } public virtual T VisitParameterDeclaration(ParameterDeclaration parameterDeclaration) { return VisitChildren(parameterDeclaration); } public virtual T VisitConstraint(Constraint constraint) { return VisitChildren(constraint); } public virtual T VisitBlockStatement(BlockStatement blockStatement) { return VisitChildren(blockStatement); } public virtual T VisitExpressionStatement(ExpressionStatement expressionStatement) { return VisitChildren(expressionStatement); } public virtual T VisitBreakStatement(BreakStatement breakStatement) { return VisitChildren(breakStatement); } public virtual T VisitCheckedStatement(CheckedStatement checkedStatement) { return VisitChildren(checkedStatement); } public virtual T VisitContinueStatement(ContinueStatement continueStatement) { return VisitChildren(continueStatement); } public virtual T VisitDoWhileStatement(DoWhileStatement doWhileStatement) { return VisitChildren(doWhileStatement); } public virtual T VisitEmptyStatement(EmptyStatement emptyStatement) { return VisitChildren(emptyStatement); } public virtual T VisitFixedStatement(FixedStatement fixedStatement) { return VisitChildren(fixedStatement); } public virtual T VisitForeachStatement(ForeachStatement foreachStatement) { return VisitChildren(foreachStatement); } public virtual T VisitForStatement(ForStatement forStatement) { return VisitChildren(forStatement); } public virtual T VisitGotoCaseStatement(GotoCaseStatement gotoCaseStatement) { return VisitChildren(gotoCaseStatement); } public virtual T VisitGotoDefaultStatement(GotoDefaultStatement gotoDefaultStatement) { return VisitChildren(gotoDefaultStatement); } public virtual T VisitGotoStatement(GotoStatement gotoStatement) { return VisitChildren(gotoStatement); } public virtual T VisitIfElseStatement(IfElseStatement ifElseStatement) { return VisitChildren(ifElseStatement); } public virtual T VisitLabelStatement(LabelStatement labelStatement) { return VisitChildren(labelStatement); } public virtual T VisitLockStatement(LockStatement lockStatement) { return VisitChildren(lockStatement); } public virtual T VisitReturnStatement(ReturnStatement returnStatement) { return VisitChildren(returnStatement); } public virtual T VisitSwitchStatement(SwitchStatement switchStatement) { return VisitChildren(switchStatement); } public virtual T VisitSwitchSection(SwitchSection switchSection) { return VisitChildren(switchSection); } public virtual T VisitCaseLabel(CaseLabel caseLabel) { return VisitChildren(caseLabel); } public virtual T VisitSwitchExpression(SwitchExpression switchExpression) { return VisitChildren(switchExpression); } public virtual T VisitSwitchExpressionSection(SwitchExpressionSection switchExpressionSection) { return VisitChildren(switchExpressionSection); } public virtual T VisitThrowStatement(ThrowStatement throwStatement) { return VisitChildren(throwStatement); } public virtual T VisitTryCatchStatement(TryCatchStatement tryCatchStatement) { return VisitChildren(tryCatchStatement); } public virtual T VisitCatchClause(CatchClause catchClause) { return VisitChildren(catchClause); } public virtual T VisitUncheckedStatement(UncheckedStatement uncheckedStatement) { return VisitChildren(uncheckedStatement); } public virtual T VisitUnsafeStatement(UnsafeStatement unsafeStatement) { return VisitChildren(unsafeStatement); } public virtual T VisitUsingStatement(UsingStatement usingStatement) { return VisitChildren(usingStatement); } public virtual T VisitVariableDeclarationStatement(VariableDeclarationStatement variableDeclarationStatement) { return VisitChildren(variableDeclarationStatement); } public virtual T VisitLocalFunctionDeclarationStatement(LocalFunctionDeclarationStatement localFunctionDeclarationStatement) { return VisitChildren(localFunctionDeclarationStatement); } public virtual T VisitWhileStatement(WhileStatement whileStatement) { return VisitChildren(whileStatement); } public virtual T VisitYieldBreakStatement(YieldBreakStatement yieldBreakStatement) { return VisitChildren(yieldBreakStatement); } public virtual T VisitYieldReturnStatement(YieldReturnStatement yieldReturnStatement) { return VisitChildren(yieldReturnStatement); } public virtual T VisitAnonymousMethodExpression(AnonymousMethodExpression anonymousMethodExpression) { return VisitChildren(anonymousMethodExpression); } public virtual T VisitLambdaExpression(LambdaExpression lambdaExpression) { return VisitChildren(lambdaExpression); } public virtual T VisitAssignmentExpression(AssignmentExpression assignmentExpression) { return VisitChildren(assignmentExpression); } public virtual T VisitBaseReferenceExpression(BaseReferenceExpression baseReferenceExpression) { return VisitChildren(baseReferenceExpression); } public virtual T VisitBinaryOperatorExpression(BinaryOperatorExpression binaryOperatorExpression) { return VisitChildren(binaryOperatorExpression); } public virtual T VisitCastExpression(CastExpression castExpression) { return VisitChildren(castExpression); } public virtual T VisitCheckedExpression(CheckedExpression checkedExpression) { return VisitChildren(checkedExpression); } public virtual T VisitConditionalExpression(ConditionalExpression conditionalExpression) { return VisitChildren(conditionalExpression); } public virtual T VisitIdentifierExpression(IdentifierExpression identifierExpression) { return VisitChildren(identifierExpression); } public virtual T VisitIndexerExpression(IndexerExpression indexerExpression) { return VisitChildren(indexerExpression); } public virtual T VisitInterpolatedStringExpression(InterpolatedStringExpression interpolatedStringExpression) { return VisitChildren(interpolatedStringExpression); } public virtual T VisitInterpolation(Interpolation interpolation) { return VisitChildren(interpolation); } public virtual T VisitInterpolatedStringText(InterpolatedStringText interpolatedStringText) { return VisitChildren(interpolatedStringText); } public virtual T VisitInvocationExpression(InvocationExpression invocationExpression) { return VisitChildren(invocationExpression); } public virtual T VisitDirectionExpression(DirectionExpression directionExpression) { return VisitChildren(directionExpression); } public virtual T VisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression) { return VisitChildren(memberReferenceExpression); } public virtual T VisitNullReferenceExpression(NullReferenceExpression nullReferenceExpression) { return VisitChildren(nullReferenceExpression); } public virtual T VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression) { return VisitChildren(objectCreateExpression); } public virtual T VisitDeclarationExpression(DeclarationExpression declarationExpression) { return VisitChildren(declarationExpression); } public virtual T VisitRecursivePatternExpression(RecursivePatternExpression recursivePatternExpression) { return VisitChildren(recursivePatternExpression); } public virtual T VisitOutVarDeclarationExpression(OutVarDeclarationExpression outVarDeclarationExpression) { return VisitChildren(outVarDeclarationExpression); } public virtual T VisitAnonymousTypeCreateExpression(AnonymousTypeCreateExpression anonymousTypeCreateExpression) { return VisitChildren(anonymousTypeCreateExpression); } public virtual T VisitArrayCreateExpression(ArrayCreateExpression arrayCreateExpression) { return VisitChildren(arrayCreateExpression); } public virtual T VisitParenthesizedExpression(ParenthesizedExpression parenthesizedExpression) { return VisitChildren(parenthesizedExpression); } public virtual T VisitPointerReferenceExpression(PointerReferenceExpression pointerReferenceExpression) { return VisitChildren(pointerReferenceExpression); } public virtual T VisitPrimitiveExpression(PrimitiveExpression primitiveExpression) { return VisitChildren(primitiveExpression); } public virtual T VisitSizeOfExpression(SizeOfExpression sizeOfExpression) { return VisitChildren(sizeOfExpression); } public virtual T VisitStackAllocExpression(StackAllocExpression stackAllocExpression) { return VisitChildren(stackAllocExpression); } public virtual T VisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression) { return VisitChildren(thisReferenceExpression); } public virtual T VisitThrowExpression(ThrowExpression throwExpression) { return VisitChildren(throwExpression); } public virtual T VisitTupleExpression(TupleExpression tupleExpression) { return VisitChildren(tupleExpression); } public virtual T VisitTypeOfExpression(TypeOfExpression typeOfExpression) { return VisitChildren(typeOfExpression); } public virtual T VisitTypeReferenceExpression(TypeReferenceExpression typeReferenceExpression) { return VisitChildren(typeReferenceExpression); } public virtual T VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression) { return VisitChildren(unaryOperatorExpression); } public virtual T VisitUncheckedExpression(UncheckedExpression uncheckedExpression) { return VisitChildren(uncheckedExpression); } public virtual T VisitQueryExpression(QueryExpression queryExpression) { return VisitChildren(queryExpression); } public virtual T VisitQueryContinuationClause(QueryContinuationClause queryContinuationClause) { return VisitChildren(queryContinuationClause); } public virtual T VisitQueryFromClause(QueryFromClause queryFromClause) { return VisitChildren(queryFromClause); } public virtual T VisitQueryLetClause(QueryLetClause queryLetClause) { return VisitChildren(queryLetClause); } public virtual T VisitQueryWhereClause(QueryWhereClause queryWhereClause) { return VisitChildren(queryWhereClause); } public virtual T VisitQueryJoinClause(QueryJoinClause queryJoinClause) { return VisitChildren(queryJoinClause); } public virtual T VisitQueryOrderClause(QueryOrderClause queryOrderClause) { return VisitChildren(queryOrderClause); } public virtual T VisitQueryOrdering(QueryOrdering queryOrdering) { return VisitChildren(queryOrdering); } public virtual T VisitQuerySelectClause(QuerySelectClause querySelectClause) { return VisitChildren(querySelectClause); } public virtual T VisitQueryGroupClause(QueryGroupClause queryGroupClause) { return VisitChildren(queryGroupClause); } public virtual T VisitAsExpression(AsExpression asExpression) { return VisitChildren(asExpression); } public virtual T VisitIsExpression(IsExpression isExpression) { return VisitChildren(isExpression); } public virtual T VisitDefaultValueExpression(DefaultValueExpression defaultValueExpression) { return VisitChildren(defaultValueExpression); } public virtual T VisitUndocumentedExpression(UndocumentedExpression undocumentedExpression) { return VisitChildren(undocumentedExpression); } public virtual T VisitArrayInitializerExpression(ArrayInitializerExpression arrayInitializerExpression) { return VisitChildren(arrayInitializerExpression); } public virtual T VisitArraySpecifier(ArraySpecifier arraySpecifier) { return VisitChildren(arraySpecifier); } public virtual T VisitNamedArgumentExpression(NamedArgumentExpression namedArgumentExpression) { return VisitChildren(namedArgumentExpression); } public virtual T VisitNamedExpression(NamedExpression namedExpression) { return VisitChildren(namedExpression); } public virtual T VisitSingleVariableDesignation(SingleVariableDesignation singleVariableDesignation) { return VisitChildren(singleVariableDesignation); } public virtual T VisitParenthesizedVariableDesignation(ParenthesizedVariableDesignation parenthesizedVariableDesignation) { return VisitChildren(parenthesizedVariableDesignation); } public virtual T VisitErrorNode(AstNode errorNode) { return VisitChildren(errorNode); } public virtual T VisitPatternPlaceholder(AstNode placeholder, PatternMatching.Pattern pattern) { return VisitChildren(placeholder); } public virtual T VisitWithInitializerExpression(WithInitializerExpression withInitializerExpression) { return VisitChildren(withInitializerExpression); } } /// /// AST visitor with a default implementation that visits all node depth-first. /// public abstract class DepthFirstAstVisitor : IAstVisitor { protected virtual S? VisitChildren(AstNode node, T data) { AstNode? next; for (var child = node.FirstChild; child != null; child = next) { // Store next to allow the loop to continue // if the visitor removes/replaces child. next = child.NextSibling; child.AcceptVisitor(this, data); } return default(S); } public virtual S? VisitNullNode(AstNode nullNode, T data) { // Should we call VisitChildren here? // We usually want to ignore null nodes. // Older NR versions (before VisitNullNode was introduced) didn't call VisitChildren() with null nodes; // so changing this might break VisitChildren() overrides that expect the node to be part of the AST. return default(S); } public virtual S? VisitSyntaxTree(SyntaxTree unit, T data) { return VisitChildren(unit, data); } public virtual S? VisitComment(Comment comment, T data) { return VisitChildren(comment, data); } public virtual S? VisitDocumentationReference(DocumentationReference documentationReference, T data) { return VisitChildren(documentationReference, data); } public virtual S? VisitPreProcessorDirective(PreProcessorDirective preProcessorDirective, T data) { return VisitChildren(preProcessorDirective, data); } public virtual S? VisitIdentifier(Identifier identifier, T data) { return VisitChildren(identifier, data); } public virtual S? VisitCSharpTokenNode(CSharpTokenNode token, T data) { return VisitChildren(token, data); } public virtual S? VisitPrimitiveType(PrimitiveType primitiveType, T data) { return VisitChildren(primitiveType, data); } public virtual S? VisitComposedType(ComposedType composedType, T data) { return VisitChildren(composedType, data); } public virtual S? VisitSimpleType(SimpleType simpleType, T data) { return VisitChildren(simpleType, data); } public virtual S? VisitMemberType(MemberType memberType, T data) { return VisitChildren(memberType, data); } public virtual S? VisitTupleType(TupleAstType tupleType, T data) { return VisitChildren(tupleType, data); } public virtual S? VisitTupleTypeElement(TupleTypeElement tupleTypeElement, T data) { return VisitChildren(tupleTypeElement, data); } public virtual S? VisitFunctionPointerType(FunctionPointerAstType functionPointerType, T data) { return VisitChildren(functionPointerType, data); } public virtual S? VisitInvocationType(InvocationAstType invocationType, T data) { return VisitChildren(invocationType, data); } public virtual S? VisitAttribute(Attribute attribute, T data) { return VisitChildren(attribute, data); } public virtual S? VisitAttributeSection(AttributeSection attributeSection, T data) { return VisitChildren(attributeSection, data); } public virtual S? VisitDelegateDeclaration(DelegateDeclaration delegateDeclaration, T data) { return VisitChildren(delegateDeclaration, data); } public virtual S? VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration, T data) { return VisitChildren(namespaceDeclaration, data); } public virtual S? VisitTypeDeclaration(TypeDeclaration typeDeclaration, T data) { return VisitChildren(typeDeclaration, data); } public virtual S? VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration, T data) { return VisitChildren(typeParameterDeclaration, data); } public virtual S? VisitEnumMemberDeclaration(EnumMemberDeclaration enumMemberDeclaration, T data) { return VisitChildren(enumMemberDeclaration, data); } public virtual S? VisitUsingDeclaration(UsingDeclaration usingDeclaration, T data) { return VisitChildren(usingDeclaration, data); } public virtual S? VisitUsingAliasDeclaration(UsingAliasDeclaration usingDeclaration, T data) { return VisitChildren(usingDeclaration, data); } public virtual S? VisitExternAliasDeclaration(ExternAliasDeclaration externAliasDeclaration, T data) { return VisitChildren(externAliasDeclaration, data); } public virtual S? VisitConstructorDeclaration(ConstructorDeclaration constructorDeclaration, T data) { return VisitChildren(constructorDeclaration, data); } public virtual S? VisitConstructorInitializer(ConstructorInitializer constructorInitializer, T data) { return VisitChildren(constructorInitializer, data); } public virtual S? VisitDestructorDeclaration(DestructorDeclaration destructorDeclaration, T data) { return VisitChildren(destructorDeclaration, data); } public virtual S? VisitEventDeclaration(EventDeclaration eventDeclaration, T data) { return VisitChildren(eventDeclaration, data); } public virtual S? VisitCustomEventDeclaration(CustomEventDeclaration eventDeclaration, T data) { return VisitChildren(eventDeclaration, data); } public virtual S? VisitFieldDeclaration(FieldDeclaration fieldDeclaration, T data) { return VisitChildren(fieldDeclaration, data); } public virtual S? VisitFixedFieldDeclaration(FixedFieldDeclaration fixedFieldDeclaration, T data) { return VisitChildren(fixedFieldDeclaration, data); } public virtual S? VisitFixedVariableInitializer(FixedVariableInitializer fixedVariableInitializer, T data) { return VisitChildren(fixedVariableInitializer, data); } public virtual S? VisitIndexerDeclaration(IndexerDeclaration indexerDeclaration, T data) { return VisitChildren(indexerDeclaration, data); } public virtual S? VisitMethodDeclaration(MethodDeclaration methodDeclaration, T data) { return VisitChildren(methodDeclaration, data); } public virtual S? VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration, T data) { return VisitChildren(operatorDeclaration, data); } public virtual S? VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration, T data) { return VisitChildren(propertyDeclaration, data); } public virtual S? VisitAccessor(Accessor accessor, T data) { return VisitChildren(accessor, data); } public virtual S? VisitVariableInitializer(VariableInitializer variableInitializer, T data) { return VisitChildren(variableInitializer, data); } public virtual S? VisitParameterDeclaration(ParameterDeclaration parameterDeclaration, T data) { return VisitChildren(parameterDeclaration, data); } public virtual S? VisitConstraint(Constraint constraint, T data) { return VisitChildren(constraint, data); } public virtual S? VisitBlockStatement(BlockStatement blockStatement, T data) { return VisitChildren(blockStatement, data); } public virtual S? VisitExpressionStatement(ExpressionStatement expressionStatement, T data) { return VisitChildren(expressionStatement, data); } public virtual S? VisitBreakStatement(BreakStatement breakStatement, T data) { return VisitChildren(breakStatement, data); } public virtual S? VisitCheckedStatement(CheckedStatement checkedStatement, T data) { return VisitChildren(checkedStatement, data); } public virtual S? VisitContinueStatement(ContinueStatement continueStatement, T data) { return VisitChildren(continueStatement, data); } public virtual S? VisitDoWhileStatement(DoWhileStatement doWhileStatement, T data) { return VisitChildren(doWhileStatement, data); } public virtual S? VisitEmptyStatement(EmptyStatement emptyStatement, T data) { return VisitChildren(emptyStatement, data); } public virtual S? VisitFixedStatement(FixedStatement fixedStatement, T data) { return VisitChildren(fixedStatement, data); } public virtual S? VisitForeachStatement(ForeachStatement foreachStatement, T data) { return VisitChildren(foreachStatement, data); } public virtual S? VisitForStatement(ForStatement forStatement, T data) { return VisitChildren(forStatement, data); } public virtual S? VisitGotoCaseStatement(GotoCaseStatement gotoCaseStatement, T data) { return VisitChildren(gotoCaseStatement, data); } public virtual S? VisitGotoDefaultStatement(GotoDefaultStatement gotoDefaultStatement, T data) { return VisitChildren(gotoDefaultStatement, data); } public virtual S? VisitGotoStatement(GotoStatement gotoStatement, T data) { return VisitChildren(gotoStatement, data); } public virtual S? VisitIfElseStatement(IfElseStatement ifElseStatement, T data) { return VisitChildren(ifElseStatement, data); } public virtual S? VisitLabelStatement(LabelStatement labelStatement, T data) { return VisitChildren(labelStatement, data); } public virtual S? VisitLockStatement(LockStatement lockStatement, T data) { return VisitChildren(lockStatement, data); } public virtual S? VisitReturnStatement(ReturnStatement returnStatement, T data) { return VisitChildren(returnStatement, data); } public virtual S? VisitSwitchStatement(SwitchStatement switchStatement, T data) { return VisitChildren(switchStatement, data); } public virtual S? VisitSwitchSection(SwitchSection switchSection, T data) { return VisitChildren(switchSection, data); } public virtual S? VisitCaseLabel(CaseLabel caseLabel, T data) { return VisitChildren(caseLabel, data); } public virtual S? VisitSwitchExpression(SwitchExpression switchExpression, T data) { return VisitChildren(switchExpression, data); } public virtual S? VisitSwitchExpressionSection(SwitchExpressionSection switchExpressionSection, T data) { return VisitChildren(switchExpressionSection, data); } public virtual S? VisitThrowStatement(ThrowStatement throwStatement, T data) { return VisitChildren(throwStatement, data); } public virtual S? VisitTryCatchStatement(TryCatchStatement tryCatchStatement, T data) { return VisitChildren(tryCatchStatement, data); } public virtual S? VisitCatchClause(CatchClause catchClause, T data) { return VisitChildren(catchClause, data); } public virtual S? VisitUncheckedStatement(UncheckedStatement uncheckedStatement, T data) { return VisitChildren(uncheckedStatement, data); } public virtual S? VisitUnsafeStatement(UnsafeStatement unsafeStatement, T data) { return VisitChildren(unsafeStatement, data); } public virtual S? VisitUsingStatement(UsingStatement usingStatement, T data) { return VisitChildren(usingStatement, data); } public virtual S? VisitVariableDeclarationStatement(VariableDeclarationStatement variableDeclarationStatement, T data) { return VisitChildren(variableDeclarationStatement, data); } public virtual S? VisitLocalFunctionDeclarationStatement(LocalFunctionDeclarationStatement localFunctionDeclarationStatement, T data) { return VisitChildren(localFunctionDeclarationStatement, data); } public virtual S? VisitWhileStatement(WhileStatement whileStatement, T data) { return VisitChildren(whileStatement, data); } public virtual S? VisitYieldBreakStatement(YieldBreakStatement yieldBreakStatement, T data) { return VisitChildren(yieldBreakStatement, data); } public virtual S? VisitYieldReturnStatement(YieldReturnStatement yieldReturnStatement, T data) { return VisitChildren(yieldReturnStatement, data); } public virtual S? VisitAnonymousMethodExpression(AnonymousMethodExpression anonymousMethodExpression, T data) { return VisitChildren(anonymousMethodExpression, data); } public virtual S? VisitLambdaExpression(LambdaExpression lambdaExpression, T data) { return VisitChildren(lambdaExpression, data); } public virtual S? VisitAssignmentExpression(AssignmentExpression assignmentExpression, T data) { return VisitChildren(assignmentExpression, data); } public virtual S? VisitBaseReferenceExpression(BaseReferenceExpression baseReferenceExpression, T data) { return VisitChildren(baseReferenceExpression, data); } public virtual S? VisitBinaryOperatorExpression(BinaryOperatorExpression binaryOperatorExpression, T data) { return VisitChildren(binaryOperatorExpression, data); } public virtual S? VisitCastExpression(CastExpression castExpression, T data) { return VisitChildren(castExpression, data); } public virtual S? VisitCheckedExpression(CheckedExpression checkedExpression, T data) { return VisitChildren(checkedExpression, data); } public virtual S? VisitConditionalExpression(ConditionalExpression conditionalExpression, T data) { return VisitChildren(conditionalExpression, data); } public virtual S? VisitIdentifierExpression(IdentifierExpression identifierExpression, T data) { return VisitChildren(identifierExpression, data); } public virtual S? VisitIndexerExpression(IndexerExpression indexerExpression, T data) { return VisitChildren(indexerExpression, data); } public virtual S? VisitInterpolatedStringExpression(InterpolatedStringExpression interpolatedStringExpression, T data) { return VisitChildren(interpolatedStringExpression, data); } public virtual S? VisitInterpolation(Interpolation interpolation, T data) { return VisitChildren(interpolation, data); } public virtual S? VisitInterpolatedStringText(InterpolatedStringText interpolatedStringText, T data) { return VisitChildren(interpolatedStringText, data); } public virtual S? VisitInvocationExpression(InvocationExpression invocationExpression, T data) { return VisitChildren(invocationExpression, data); } public virtual S? VisitDirectionExpression(DirectionExpression directionExpression, T data) { return VisitChildren(directionExpression, data); } public virtual S? VisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression, T data) { return VisitChildren(memberReferenceExpression, data); } public virtual S? VisitNullReferenceExpression(NullReferenceExpression nullReferenceExpression, T data) { return VisitChildren(nullReferenceExpression, data); } public virtual S? VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression, T data) { return VisitChildren(objectCreateExpression, data); } public virtual S? VisitDeclarationExpression(DeclarationExpression declarationExpression, T data) { return VisitChildren(declarationExpression, data); } public virtual S? VisitRecursivePatternExpression(RecursivePatternExpression recursivePatternExpression, T data) { return VisitChildren(recursivePatternExpression, data); } public virtual S? VisitOutVarDeclarationExpression(OutVarDeclarationExpression outVarDeclarationExpression, T data) { return VisitChildren(outVarDeclarationExpression, data); } public virtual S? VisitAnonymousTypeCreateExpression(AnonymousTypeCreateExpression anonymousTypeCreateExpression, T data) { return VisitChildren(anonymousTypeCreateExpression, data); } public virtual S? VisitArrayCreateExpression(ArrayCreateExpression arrayCreateExpression, T data) { return VisitChildren(arrayCreateExpression, data); } public virtual S? VisitParenthesizedExpression(ParenthesizedExpression parenthesizedExpression, T data) { return VisitChildren(parenthesizedExpression, data); } public virtual S? VisitPointerReferenceExpression(PointerReferenceExpression pointerReferenceExpression, T data) { return VisitChildren(pointerReferenceExpression, data); } public virtual S? VisitPrimitiveExpression(PrimitiveExpression primitiveExpression, T data) { return VisitChildren(primitiveExpression, data); } public virtual S? VisitSizeOfExpression(SizeOfExpression sizeOfExpression, T data) { return VisitChildren(sizeOfExpression, data); } public virtual S? VisitStackAllocExpression(StackAllocExpression stackAllocExpression, T data) { return VisitChildren(stackAllocExpression, data); } public virtual S? VisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression, T data) { return VisitChildren(thisReferenceExpression, data); } public virtual S? VisitThrowExpression(ThrowExpression throwExpression, T data) { return VisitChildren(throwExpression, data); } public virtual S? VisitTupleExpression(TupleExpression tupleExpression, T data) { return VisitChildren(tupleExpression, data); } public virtual S? VisitTypeOfExpression(TypeOfExpression typeOfExpression, T data) { return VisitChildren(typeOfExpression, data); } public virtual S? VisitTypeReferenceExpression(TypeReferenceExpression typeReferenceExpression, T data) { return VisitChildren(typeReferenceExpression, data); } public virtual S? VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression, T data) { return VisitChildren(unaryOperatorExpression, data); } public virtual S? VisitUncheckedExpression(UncheckedExpression uncheckedExpression, T data) { return VisitChildren(uncheckedExpression, data); } public virtual S? VisitQueryExpression(QueryExpression queryExpression, T data) { return VisitChildren(queryExpression, data); } public virtual S? VisitQueryContinuationClause(QueryContinuationClause queryContinuationClause, T data) { return VisitChildren(queryContinuationClause, data); } public virtual S? VisitQueryFromClause(QueryFromClause queryFromClause, T data) { return VisitChildren(queryFromClause, data); } public virtual S? VisitQueryLetClause(QueryLetClause queryLetClause, T data) { return VisitChildren(queryLetClause, data); } public virtual S? VisitQueryWhereClause(QueryWhereClause queryWhereClause, T data) { return VisitChildren(queryWhereClause, data); } public virtual S? VisitQueryJoinClause(QueryJoinClause queryJoinClause, T data) { return VisitChildren(queryJoinClause, data); } public virtual S? VisitQueryOrderClause(QueryOrderClause queryOrderClause, T data) { return VisitChildren(queryOrderClause, data); } public virtual S? VisitQueryOrdering(QueryOrdering queryOrdering, T data) { return VisitChildren(queryOrdering, data); } public virtual S? VisitQuerySelectClause(QuerySelectClause querySelectClause, T data) { return VisitChildren(querySelectClause, data); } public virtual S? VisitQueryGroupClause(QueryGroupClause queryGroupClause, T data) { return VisitChildren(queryGroupClause, data); } public virtual S? VisitAsExpression(AsExpression asExpression, T data) { return VisitChildren(asExpression, data); } public virtual S? VisitIsExpression(IsExpression isExpression, T data) { return VisitChildren(isExpression, data); } public virtual S? VisitDefaultValueExpression(DefaultValueExpression defaultValueExpression, T data) { return VisitChildren(defaultValueExpression, data); } public virtual S? VisitUndocumentedExpression(UndocumentedExpression undocumentedExpression, T data) { return VisitChildren(undocumentedExpression, data); } public virtual S? VisitArrayInitializerExpression(ArrayInitializerExpression arrayInitializerExpression, T data) { return VisitChildren(arrayInitializerExpression, data); } public virtual S? VisitArraySpecifier(ArraySpecifier arraySpecifier, T data) { return VisitChildren(arraySpecifier, data); } public virtual S? VisitNamedArgumentExpression(NamedArgumentExpression namedArgumentExpression, T data) { return VisitChildren(namedArgumentExpression, data); } public virtual S? VisitNamedExpression(NamedExpression namedExpression, T data) { return VisitChildren(namedExpression, data); } public virtual S? VisitSingleVariableDesignation(SingleVariableDesignation singleVariableDesignation, T data) { return VisitChildren(singleVariableDesignation, data); } public virtual S? VisitParenthesizedVariableDesignation(ParenthesizedVariableDesignation parenthesizedVariableDesignation, T data) { return VisitChildren(parenthesizedVariableDesignation, data); } public virtual S? VisitErrorNode(AstNode errorNode, T data) { return VisitChildren(errorNode, data); } public virtual S? VisitPatternPlaceholder(AstNode placeholder, PatternMatching.Pattern pattern, T data) { return VisitChildren(placeholder, data); } public virtual S? VisitWithInitializerExpression(WithInitializerExpression withInitializerExpression, T data) { return VisitChildren(withInitializerExpression, data); } } }