Add DefaultVisit method to the visitor interface and class (#13258)

This commit is contained in:
Dongbo Wang
2020-07-31 10:16:59 -07:00
committed by GitHub
parent 58b91a89b6
commit 4464d1b414
3 changed files with 431 additions and 190 deletions
@@ -13,136 +13,189 @@ namespace System.Management.Automation.Language
public interface ICustomAstVisitor
{
/// <summary/>
object VisitErrorStatement(ErrorStatementAst errorStatementAst);
object DefaultVisit(Ast ast) => null;
/// <summary/>
object VisitErrorExpression(ErrorExpressionAst errorExpressionAst);
object VisitErrorStatement(ErrorStatementAst errorStatementAst) => DefaultVisit(errorStatementAst);
/// <summary/>
object VisitErrorExpression(ErrorExpressionAst errorExpressionAst) => DefaultVisit(errorExpressionAst);
#region Script Blocks
/// <summary/>
object VisitScriptBlock(ScriptBlockAst scriptBlockAst);
object VisitScriptBlock(ScriptBlockAst scriptBlockAst) => DefaultVisit(scriptBlockAst);
/// <summary/>
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Param")]
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "param")]
object VisitParamBlock(ParamBlockAst paramBlockAst);
object VisitParamBlock(ParamBlockAst paramBlockAst) => DefaultVisit(paramBlockAst);
/// <summary/>
object VisitNamedBlock(NamedBlockAst namedBlockAst);
object VisitNamedBlock(NamedBlockAst namedBlockAst) => DefaultVisit(namedBlockAst);
/// <summary/>
object VisitTypeConstraint(TypeConstraintAst typeConstraintAst);
object VisitTypeConstraint(TypeConstraintAst typeConstraintAst) => DefaultVisit(typeConstraintAst);
/// <summary/>
object VisitAttribute(AttributeAst attributeAst);
object VisitAttribute(AttributeAst attributeAst) => DefaultVisit(attributeAst);
/// <summary/>
object VisitNamedAttributeArgument(NamedAttributeArgumentAst namedAttributeArgumentAst);
object VisitNamedAttributeArgument(NamedAttributeArgumentAst namedAttributeArgumentAst) => DefaultVisit(namedAttributeArgumentAst);
/// <summary/>
object VisitParameter(ParameterAst parameterAst);
object VisitParameter(ParameterAst parameterAst) => DefaultVisit(parameterAst);
#endregion Script Blocks
#region Statements
/// <summary/>
object VisitFunctionDefinition(FunctionDefinitionAst functionDefinitionAst);
object VisitFunctionDefinition(FunctionDefinitionAst functionDefinitionAst) => DefaultVisit(functionDefinitionAst);
/// <summary/>
object VisitStatementBlock(StatementBlockAst statementBlockAst);
object VisitStatementBlock(StatementBlockAst statementBlockAst) => DefaultVisit(statementBlockAst);
/// <summary/>
object VisitIfStatement(IfStatementAst ifStmtAst);
object VisitIfStatement(IfStatementAst ifStmtAst) => DefaultVisit(ifStmtAst);
/// <summary/>
object VisitTrap(TrapStatementAst trapStatementAst);
object VisitTrap(TrapStatementAst trapStatementAst) => DefaultVisit(trapStatementAst);
/// <summary/>
object VisitSwitchStatement(SwitchStatementAst switchStatementAst);
object VisitSwitchStatement(SwitchStatementAst switchStatementAst) => DefaultVisit(switchStatementAst);
/// <summary/>
object VisitDataStatement(DataStatementAst dataStatementAst);
object VisitDataStatement(DataStatementAst dataStatementAst) => DefaultVisit(dataStatementAst);
/// <summary/>
object VisitForEachStatement(ForEachStatementAst forEachStatementAst);
object VisitForEachStatement(ForEachStatementAst forEachStatementAst) => DefaultVisit(forEachStatementAst);
/// <summary/>
object VisitDoWhileStatement(DoWhileStatementAst doWhileStatementAst);
object VisitDoWhileStatement(DoWhileStatementAst doWhileStatementAst) => DefaultVisit(doWhileStatementAst);
/// <summary/>
object VisitForStatement(ForStatementAst forStatementAst);
object VisitForStatement(ForStatementAst forStatementAst) => DefaultVisit(forStatementAst);
/// <summary/>
object VisitWhileStatement(WhileStatementAst whileStatementAst);
object VisitWhileStatement(WhileStatementAst whileStatementAst) => DefaultVisit(whileStatementAst);
/// <summary/>
object VisitCatchClause(CatchClauseAst catchClauseAst);
object VisitCatchClause(CatchClauseAst catchClauseAst) => DefaultVisit(catchClauseAst);
/// <summary/>
object VisitTryStatement(TryStatementAst tryStatementAst);
object VisitTryStatement(TryStatementAst tryStatementAst) => DefaultVisit(tryStatementAst);
/// <summary/>
object VisitBreakStatement(BreakStatementAst breakStatementAst);
object VisitBreakStatement(BreakStatementAst breakStatementAst) => DefaultVisit(breakStatementAst);
/// <summary/>
object VisitContinueStatement(ContinueStatementAst continueStatementAst);
object VisitContinueStatement(ContinueStatementAst continueStatementAst) => DefaultVisit(continueStatementAst);
/// <summary/>
object VisitReturnStatement(ReturnStatementAst returnStatementAst);
object VisitReturnStatement(ReturnStatementAst returnStatementAst) => DefaultVisit(returnStatementAst);
/// <summary/>
object VisitExitStatement(ExitStatementAst exitStatementAst);
object VisitExitStatement(ExitStatementAst exitStatementAst) => DefaultVisit(exitStatementAst);
/// <summary/>
object VisitThrowStatement(ThrowStatementAst throwStatementAst);
object VisitThrowStatement(ThrowStatementAst throwStatementAst) => DefaultVisit(throwStatementAst);
/// <summary/>
object VisitDoUntilStatement(DoUntilStatementAst doUntilStatementAst);
object VisitDoUntilStatement(DoUntilStatementAst doUntilStatementAst) => DefaultVisit(doUntilStatementAst);
/// <summary/>
object VisitAssignmentStatement(AssignmentStatementAst assignmentStatementAst);
object VisitAssignmentStatement(AssignmentStatementAst assignmentStatementAst) => DefaultVisit(assignmentStatementAst);
#endregion Statements
#region Pipelines
/// <summary/>
object VisitPipeline(PipelineAst pipelineAst);
object VisitPipeline(PipelineAst pipelineAst) => DefaultVisit(pipelineAst);
/// <summary/>
object VisitCommand(CommandAst commandAst);
object VisitCommand(CommandAst commandAst) => DefaultVisit(commandAst);
/// <summary/>
object VisitCommandExpression(CommandExpressionAst commandExpressionAst);
object VisitCommandExpression(CommandExpressionAst commandExpressionAst) => DefaultVisit(commandExpressionAst);
/// <summary/>
object VisitCommandParameter(CommandParameterAst commandParameterAst);
object VisitCommandParameter(CommandParameterAst commandParameterAst) => DefaultVisit(commandParameterAst);
/// <summary/>
object VisitFileRedirection(FileRedirectionAst fileRedirectionAst);
object VisitFileRedirection(FileRedirectionAst fileRedirectionAst) => DefaultVisit(fileRedirectionAst);
/// <summary/>
object VisitMergingRedirection(MergingRedirectionAst mergingRedirectionAst);
object VisitMergingRedirection(MergingRedirectionAst mergingRedirectionAst) => DefaultVisit(mergingRedirectionAst);
#endregion Pipelines
#region Expressions
/// <summary/>
object VisitBinaryExpression(BinaryExpressionAst binaryExpressionAst);
object VisitBinaryExpression(BinaryExpressionAst binaryExpressionAst) => DefaultVisit(binaryExpressionAst);
/// <summary/>
object VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst);
object VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) => DefaultVisit(unaryExpressionAst);
/// <summary/>
object VisitConvertExpression(ConvertExpressionAst convertExpressionAst);
object VisitConvertExpression(ConvertExpressionAst convertExpressionAst) => DefaultVisit(convertExpressionAst);
/// <summary/>
object VisitConstantExpression(ConstantExpressionAst constantExpressionAst);
object VisitConstantExpression(ConstantExpressionAst constantExpressionAst) => DefaultVisit(constantExpressionAst);
/// <summary/>
object VisitStringConstantExpression(StringConstantExpressionAst stringConstantExpressionAst);
object VisitStringConstantExpression(StringConstantExpressionAst stringConstantExpressionAst) => DefaultVisit(stringConstantExpressionAst);
/// <summary/>
[SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "SubExpression")]
[SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "subExpression")]
object VisitSubExpression(SubExpressionAst subExpressionAst);
object VisitSubExpression(SubExpressionAst subExpressionAst) => DefaultVisit(subExpressionAst);
/// <summary/>
object VisitUsingExpression(UsingExpressionAst usingExpressionAst);
object VisitUsingExpression(UsingExpressionAst usingExpressionAst) => DefaultVisit(usingExpressionAst);
/// <summary/>
object VisitVariableExpression(VariableExpressionAst variableExpressionAst);
object VisitVariableExpression(VariableExpressionAst variableExpressionAst) => DefaultVisit(variableExpressionAst);
/// <summary/>
object VisitTypeExpression(TypeExpressionAst typeExpressionAst);
object VisitTypeExpression(TypeExpressionAst typeExpressionAst) => DefaultVisit(typeExpressionAst);
/// <summary/>
object VisitMemberExpression(MemberExpressionAst memberExpressionAst);
object VisitMemberExpression(MemberExpressionAst memberExpressionAst) => DefaultVisit(memberExpressionAst);
/// <summary/>
object VisitInvokeMemberExpression(InvokeMemberExpressionAst invokeMemberExpressionAst);
object VisitInvokeMemberExpression(InvokeMemberExpressionAst invokeMemberExpressionAst) => DefaultVisit(invokeMemberExpressionAst);
/// <summary/>
object VisitArrayExpression(ArrayExpressionAst arrayExpressionAst);
object VisitArrayExpression(ArrayExpressionAst arrayExpressionAst) => DefaultVisit(arrayExpressionAst);
/// <summary/>
object VisitArrayLiteral(ArrayLiteralAst arrayLiteralAst);
object VisitArrayLiteral(ArrayLiteralAst arrayLiteralAst) => DefaultVisit(arrayLiteralAst);
/// <summary/>
object VisitHashtable(HashtableAst hashtableAst);
object VisitHashtable(HashtableAst hashtableAst) => DefaultVisit(hashtableAst);
/// <summary/>
object VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst);
object VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) => DefaultVisit(scriptBlockExpressionAst);
/// <summary/>
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Paren")]
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "paren")]
object VisitParenExpression(ParenExpressionAst parenExpressionAst);
object VisitParenExpression(ParenExpressionAst parenExpressionAst) => DefaultVisit(parenExpressionAst);
/// <summary/>
object VisitExpandableStringExpression(ExpandableStringExpressionAst expandableStringExpressionAst);
object VisitExpandableStringExpression(ExpandableStringExpressionAst expandableStringExpressionAst) => DefaultVisit(expandableStringExpressionAst);
/// <summary/>
object VisitIndexExpression(IndexExpressionAst indexExpressionAst);
object VisitIndexExpression(IndexExpressionAst indexExpressionAst) => DefaultVisit(indexExpressionAst);
/// <summary/>
object VisitAttributedExpression(AttributedExpressionAst attributedExpressionAst);
object VisitAttributedExpression(AttributedExpressionAst attributedExpressionAst) => DefaultVisit(attributedExpressionAst);
/// <summary/>
object VisitBlockStatement(BlockStatementAst blockStatementAst);
object VisitBlockStatement(BlockStatementAst blockStatementAst) => DefaultVisit(blockStatementAst);
#endregion Expressions
}
@@ -150,28 +203,26 @@ namespace System.Management.Automation.Language
/// <summary/>
public interface ICustomAstVisitor2 : ICustomAstVisitor
{
private object DefaultVisit(Ast ast) => null;
/// <summary/>
object VisitTypeDefinition(TypeDefinitionAst typeDefinitionAst) => DefaultVisit(typeDefinitionAst);
/// <summary/>
object VisitTypeDefinition(TypeDefinitionAst typeDefinitionAst);
object VisitPropertyMember(PropertyMemberAst propertyMemberAst) => DefaultVisit(propertyMemberAst);
/// <summary/>
object VisitPropertyMember(PropertyMemberAst propertyMemberAst);
object VisitFunctionMember(FunctionMemberAst functionMemberAst) => DefaultVisit(functionMemberAst);
/// <summary/>
object VisitFunctionMember(FunctionMemberAst functionMemberAst);
object VisitBaseCtorInvokeMemberExpression(BaseCtorInvokeMemberExpressionAst baseCtorInvokeMemberExpressionAst) => DefaultVisit(baseCtorInvokeMemberExpressionAst);
/// <summary/>
object VisitBaseCtorInvokeMemberExpression(BaseCtorInvokeMemberExpressionAst baseCtorInvokeMemberExpressionAst);
object VisitUsingStatement(UsingStatementAst usingStatement) => DefaultVisit(usingStatement);
/// <summary/>
object VisitUsingStatement(UsingStatementAst usingStatement);
object VisitConfigurationDefinition(ConfigurationDefinitionAst configurationDefinitionAst) => DefaultVisit(configurationDefinitionAst);
/// <summary/>
object VisitConfigurationDefinition(ConfigurationDefinitionAst configurationDefinitionAst);
/// <summary/>
object VisitDynamicKeywordStatement(DynamicKeywordStatementAst dynamicKeywordAst);
object VisitDynamicKeywordStatement(DynamicKeywordStatementAst dynamicKeywordAst) => DefaultVisit(dynamicKeywordAst);
/// <summary/>
object VisitTernaryExpression(TernaryExpressionAst ternaryExpressionAst) => DefaultVisit(ternaryExpressionAst);
@@ -567,113 +618,169 @@ namespace System.Management.Automation.Language
public abstract class DefaultCustomAstVisitor : ICustomAstVisitor
{
/// <summary/>
public virtual object VisitErrorStatement(ErrorStatementAst errorStatementAst) { return null; }
public virtual object DefaultVisit(Ast ast) => null;
/// <summary/>
public virtual object VisitErrorExpression(ErrorExpressionAst errorExpressionAst) { return null; }
public virtual object VisitErrorStatement(ErrorStatementAst errorStatementAst) => DefaultVisit(errorStatementAst);
/// <summary/>
public virtual object VisitScriptBlock(ScriptBlockAst scriptBlockAst) { return null; }
public virtual object VisitErrorExpression(ErrorExpressionAst errorExpressionAst) => DefaultVisit(errorExpressionAst);
/// <summary/>
public virtual object VisitParamBlock(ParamBlockAst paramBlockAst) { return null; }
public virtual object VisitScriptBlock(ScriptBlockAst scriptBlockAst) => DefaultVisit(scriptBlockAst);
/// <summary/>
public virtual object VisitNamedBlock(NamedBlockAst namedBlockAst) { return null; }
public virtual object VisitParamBlock(ParamBlockAst paramBlockAst) => DefaultVisit(paramBlockAst);
/// <summary/>
public virtual object VisitTypeConstraint(TypeConstraintAst typeConstraintAst) { return null; }
public virtual object VisitNamedBlock(NamedBlockAst namedBlockAst) => DefaultVisit(namedBlockAst);
/// <summary/>
public virtual object VisitAttribute(AttributeAst attributeAst) { return null; }
public virtual object VisitTypeConstraint(TypeConstraintAst typeConstraintAst) => DefaultVisit(typeConstraintAst);
/// <summary/>
public virtual object VisitNamedAttributeArgument(NamedAttributeArgumentAst namedAttributeArgumentAst) { return null; }
public virtual object VisitAttribute(AttributeAst attributeAst) => DefaultVisit(attributeAst);
/// <summary/>
public virtual object VisitParameter(ParameterAst parameterAst) { return null; }
public virtual object VisitNamedAttributeArgument(NamedAttributeArgumentAst namedAttributeArgumentAst) => DefaultVisit(namedAttributeArgumentAst);
/// <summary/>
public virtual object VisitStatementBlock(StatementBlockAst statementBlockAst) { return null; }
public virtual object VisitParameter(ParameterAst parameterAst) => DefaultVisit(parameterAst);
/// <summary/>
public virtual object VisitIfStatement(IfStatementAst ifStmtAst) { return null; }
public virtual object VisitStatementBlock(StatementBlockAst statementBlockAst) => DefaultVisit(statementBlockAst);
/// <summary/>
public virtual object VisitTrap(TrapStatementAst trapStatementAst) { return null; }
public virtual object VisitIfStatement(IfStatementAst ifStmtAst) => DefaultVisit(ifStmtAst);
/// <summary/>
public virtual object VisitSwitchStatement(SwitchStatementAst switchStatementAst) { return null; }
public virtual object VisitTrap(TrapStatementAst trapStatementAst) => DefaultVisit(trapStatementAst);
/// <summary/>
public virtual object VisitDataStatement(DataStatementAst dataStatementAst) { return null; }
public virtual object VisitSwitchStatement(SwitchStatementAst switchStatementAst) => DefaultVisit(switchStatementAst);
/// <summary/>
public virtual object VisitForEachStatement(ForEachStatementAst forEachStatementAst) { return null; }
public virtual object VisitDataStatement(DataStatementAst dataStatementAst) => DefaultVisit(dataStatementAst);
/// <summary/>
public virtual object VisitDoWhileStatement(DoWhileStatementAst doWhileStatementAst) { return null; }
public virtual object VisitForEachStatement(ForEachStatementAst forEachStatementAst) => DefaultVisit(forEachStatementAst);
/// <summary/>
public virtual object VisitForStatement(ForStatementAst forStatementAst) { return null; }
public virtual object VisitDoWhileStatement(DoWhileStatementAst doWhileStatementAst) => DefaultVisit(doWhileStatementAst);
/// <summary/>
public virtual object VisitWhileStatement(WhileStatementAst whileStatementAst) { return null; }
public virtual object VisitForStatement(ForStatementAst forStatementAst) => DefaultVisit(forStatementAst);
/// <summary/>
public virtual object VisitCatchClause(CatchClauseAst catchClauseAst) { return null; }
public virtual object VisitWhileStatement(WhileStatementAst whileStatementAst) => DefaultVisit(whileStatementAst);
/// <summary/>
public virtual object VisitTryStatement(TryStatementAst tryStatementAst) { return null; }
public virtual object VisitCatchClause(CatchClauseAst catchClauseAst) => DefaultVisit(catchClauseAst);
/// <summary/>
public virtual object VisitBreakStatement(BreakStatementAst breakStatementAst) { return null; }
public virtual object VisitTryStatement(TryStatementAst tryStatementAst) => DefaultVisit(tryStatementAst);
/// <summary/>
public virtual object VisitContinueStatement(ContinueStatementAst continueStatementAst) { return null; }
public virtual object VisitBreakStatement(BreakStatementAst breakStatementAst) => DefaultVisit(breakStatementAst);
/// <summary/>
public virtual object VisitReturnStatement(ReturnStatementAst returnStatementAst) { return null; }
public virtual object VisitContinueStatement(ContinueStatementAst continueStatementAst) => DefaultVisit(continueStatementAst);
/// <summary/>
public virtual object VisitExitStatement(ExitStatementAst exitStatementAst) { return null; }
public virtual object VisitReturnStatement(ReturnStatementAst returnStatementAst) => DefaultVisit(returnStatementAst);
/// <summary/>
public virtual object VisitThrowStatement(ThrowStatementAst throwStatementAst) { return null; }
public virtual object VisitExitStatement(ExitStatementAst exitStatementAst) => DefaultVisit(exitStatementAst);
/// <summary/>
public virtual object VisitDoUntilStatement(DoUntilStatementAst doUntilStatementAst) { return null; }
public virtual object VisitThrowStatement(ThrowStatementAst throwStatementAst) => DefaultVisit(throwStatementAst);
/// <summary/>
public virtual object VisitAssignmentStatement(AssignmentStatementAst assignmentStatementAst) { return null; }
public virtual object VisitDoUntilStatement(DoUntilStatementAst doUntilStatementAst) => DefaultVisit(doUntilStatementAst);
/// <summary/>
public virtual object VisitPipeline(PipelineAst pipelineAst) { return null; }
public virtual object VisitAssignmentStatement(AssignmentStatementAst assignmentStatementAst) => DefaultVisit(assignmentStatementAst);
/// <summary/>
public virtual object VisitCommand(CommandAst commandAst) { return null; }
public virtual object VisitPipeline(PipelineAst pipelineAst) => DefaultVisit(pipelineAst);
/// <summary/>
public virtual object VisitCommandExpression(CommandExpressionAst commandExpressionAst) { return null; }
public virtual object VisitCommand(CommandAst commandAst) => DefaultVisit(commandAst);
/// <summary/>
public virtual object VisitCommandParameter(CommandParameterAst commandParameterAst) { return null; }
public virtual object VisitCommandExpression(CommandExpressionAst commandExpressionAst) => DefaultVisit(commandExpressionAst);
/// <summary/>
public virtual object VisitFileRedirection(FileRedirectionAst fileRedirectionAst) { return null; }
public virtual object VisitCommandParameter(CommandParameterAst commandParameterAst) => DefaultVisit(commandParameterAst);
/// <summary/>
public virtual object VisitMergingRedirection(MergingRedirectionAst mergingRedirectionAst) { return null; }
public virtual object VisitFileRedirection(FileRedirectionAst fileRedirectionAst) => DefaultVisit(fileRedirectionAst);
/// <summary/>
public virtual object VisitBinaryExpression(BinaryExpressionAst binaryExpressionAst) { return null; }
public virtual object VisitMergingRedirection(MergingRedirectionAst mergingRedirectionAst) => DefaultVisit(mergingRedirectionAst);
/// <summary/>
public virtual object VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) { return null; }
public virtual object VisitBinaryExpression(BinaryExpressionAst binaryExpressionAst) => DefaultVisit(binaryExpressionAst);
/// <summary/>
public virtual object VisitConvertExpression(ConvertExpressionAst convertExpressionAst) { return null; }
public virtual object VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) => DefaultVisit(unaryExpressionAst);
/// <summary/>
public virtual object VisitConstantExpression(ConstantExpressionAst constantExpressionAst) { return null; }
public virtual object VisitConvertExpression(ConvertExpressionAst convertExpressionAst) => DefaultVisit(convertExpressionAst);
/// <summary/>
public virtual object VisitStringConstantExpression(StringConstantExpressionAst stringConstantExpressionAst) { return null; }
public virtual object VisitConstantExpression(ConstantExpressionAst constantExpressionAst) => DefaultVisit(constantExpressionAst);
/// <summary/>
public virtual object VisitSubExpression(SubExpressionAst subExpressionAst) { return null; }
public virtual object VisitStringConstantExpression(StringConstantExpressionAst stringConstantExpressionAst) => DefaultVisit(stringConstantExpressionAst);
/// <summary/>
public virtual object VisitUsingExpression(UsingExpressionAst usingExpressionAst) { return null; }
public virtual object VisitSubExpression(SubExpressionAst subExpressionAst) => DefaultVisit(subExpressionAst);
/// <summary/>
public virtual object VisitVariableExpression(VariableExpressionAst variableExpressionAst) { return null; }
public virtual object VisitUsingExpression(UsingExpressionAst usingExpressionAst) => DefaultVisit(usingExpressionAst);
/// <summary/>
public virtual object VisitTypeExpression(TypeExpressionAst typeExpressionAst) { return null; }
public virtual object VisitVariableExpression(VariableExpressionAst variableExpressionAst) => DefaultVisit(variableExpressionAst);
/// <summary/>
public virtual object VisitMemberExpression(MemberExpressionAst memberExpressionAst) { return null; }
public virtual object VisitTypeExpression(TypeExpressionAst typeExpressionAst) => DefaultVisit(typeExpressionAst);
/// <summary/>
public virtual object VisitInvokeMemberExpression(InvokeMemberExpressionAst invokeMemberExpressionAst) { return null; }
public virtual object VisitMemberExpression(MemberExpressionAst memberExpressionAst) => DefaultVisit(memberExpressionAst);
/// <summary/>
public virtual object VisitArrayExpression(ArrayExpressionAst arrayExpressionAst) { return null; }
public virtual object VisitInvokeMemberExpression(InvokeMemberExpressionAst invokeMemberExpressionAst) => DefaultVisit(invokeMemberExpressionAst);
/// <summary/>
public virtual object VisitArrayLiteral(ArrayLiteralAst arrayLiteralAst) { return null; }
public virtual object VisitArrayExpression(ArrayExpressionAst arrayExpressionAst) => DefaultVisit(arrayExpressionAst);
/// <summary/>
public virtual object VisitHashtable(HashtableAst hashtableAst) { return null; }
public virtual object VisitArrayLiteral(ArrayLiteralAst arrayLiteralAst) => DefaultVisit(arrayLiteralAst);
/// <summary/>
public virtual object VisitParenExpression(ParenExpressionAst parenExpressionAst) { return null; }
public virtual object VisitHashtable(HashtableAst hashtableAst) => DefaultVisit(hashtableAst);
/// <summary/>
public virtual object VisitExpandableStringExpression(ExpandableStringExpressionAst expandableStringExpressionAst) { return null; }
public virtual object VisitParenExpression(ParenExpressionAst parenExpressionAst) => DefaultVisit(parenExpressionAst);
/// <summary/>
public virtual object VisitIndexExpression(IndexExpressionAst indexExpressionAst) { return null; }
public virtual object VisitExpandableStringExpression(ExpandableStringExpressionAst expandableStringExpressionAst) => DefaultVisit(expandableStringExpressionAst);
/// <summary/>
public virtual object VisitAttributedExpression(AttributedExpressionAst attributedExpressionAst) { return null; }
public virtual object VisitIndexExpression(IndexExpressionAst indexExpressionAst) => DefaultVisit(indexExpressionAst);
/// <summary/>
public virtual object VisitBlockStatement(BlockStatementAst blockStatementAst) { return null; }
public virtual object VisitAttributedExpression(AttributedExpressionAst attributedExpressionAst) => DefaultVisit(attributedExpressionAst);
/// <summary/>
public virtual object VisitFunctionDefinition(FunctionDefinitionAst functionDefinitionAst) { return null; }
public virtual object VisitBlockStatement(BlockStatementAst blockStatementAst) => DefaultVisit(blockStatementAst);
/// <summary/>
public virtual object VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { return null; }
public virtual object VisitFunctionDefinition(FunctionDefinitionAst functionDefinitionAst) => DefaultVisit(functionDefinitionAst);
/// <summary/>
public virtual object VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) => DefaultVisit(scriptBlockExpressionAst);
}
/// <summary>
@@ -682,22 +789,30 @@ namespace System.Management.Automation.Language
public abstract class DefaultCustomAstVisitor2 : DefaultCustomAstVisitor, ICustomAstVisitor2
{
/// <summary/>
public virtual object VisitPropertyMember(PropertyMemberAst propertyMemberAst) { return null; }
public virtual object VisitPropertyMember(PropertyMemberAst propertyMemberAst) => DefaultVisit(propertyMemberAst);
/// <summary/>
public virtual object VisitBaseCtorInvokeMemberExpression(BaseCtorInvokeMemberExpressionAst baseCtorInvokeMemberExpressionAst) { return null; }
public virtual object VisitBaseCtorInvokeMemberExpression(BaseCtorInvokeMemberExpressionAst baseCtorInvokeMemberExpressionAst) => DefaultVisit(baseCtorInvokeMemberExpressionAst);
/// <summary/>
public virtual object VisitUsingStatement(UsingStatementAst usingStatement) { return null; }
public virtual object VisitUsingStatement(UsingStatementAst usingStatement) => DefaultVisit(usingStatement);
/// <summary/>
public virtual object VisitConfigurationDefinition(ConfigurationDefinitionAst configurationAst) { return null; }
public virtual object VisitConfigurationDefinition(ConfigurationDefinitionAst configurationAst) => DefaultVisit(configurationAst);
/// <summary/>
public virtual object VisitDynamicKeywordStatement(DynamicKeywordStatementAst dynamicKeywordAst) { return null; }
public virtual object VisitDynamicKeywordStatement(DynamicKeywordStatementAst dynamicKeywordAst) => DefaultVisit(dynamicKeywordAst);
/// <summary/>
public virtual object VisitTypeDefinition(TypeDefinitionAst typeDefinitionAst) { return null; }
public virtual object VisitTypeDefinition(TypeDefinitionAst typeDefinitionAst) => DefaultVisit(typeDefinitionAst);
/// <summary/>
public virtual object VisitFunctionMember(FunctionMemberAst functionMemberAst) { return null; }
public virtual object VisitFunctionMember(FunctionMemberAst functionMemberAst) => DefaultVisit(functionMemberAst);
/// <summary/>
public virtual object VisitTernaryExpression(TernaryExpressionAst ternaryExpressionAst) { return null; }
public virtual object VisitTernaryExpression(TernaryExpressionAst ternaryExpressionAst) => DefaultVisit(ternaryExpressionAst);
/// <summary/>
public virtual object VisitPipelineChain(PipelineChainAst statementChainAst) { return null; }
public virtual object VisitPipelineChain(PipelineChainAst statementChainAst) => DefaultVisit(statementChainAst);
}
}
@@ -46,119 +46,175 @@ namespace System.Management.Automation.Language
}
/// <summary/>
public virtual AstVisitAction VisitErrorStatement(ErrorStatementAst errorStatementAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction DefaultVisit(Ast ast) => AstVisitAction.Continue;
/// <summary/>
public virtual AstVisitAction VisitErrorExpression(ErrorExpressionAst errorExpressionAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitErrorStatement(ErrorStatementAst errorStatementAst) => DefaultVisit(errorStatementAst);
/// <summary/>
public virtual AstVisitAction VisitScriptBlock(ScriptBlockAst scriptBlockAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitErrorExpression(ErrorExpressionAst errorExpressionAst) => DefaultVisit(errorExpressionAst);
/// <summary/>
public virtual AstVisitAction VisitScriptBlock(ScriptBlockAst scriptBlockAst) => DefaultVisit(scriptBlockAst);
/// <summary/>
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Param")]
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "param")]
public virtual AstVisitAction VisitParamBlock(ParamBlockAst paramBlockAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitParamBlock(ParamBlockAst paramBlockAst) => DefaultVisit(paramBlockAst);
/// <summary/>
public virtual AstVisitAction VisitNamedBlock(NamedBlockAst namedBlockAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitNamedBlock(NamedBlockAst namedBlockAst) => DefaultVisit(namedBlockAst);
/// <summary/>
public virtual AstVisitAction VisitTypeConstraint(TypeConstraintAst typeConstraintAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitTypeConstraint(TypeConstraintAst typeConstraintAst) => DefaultVisit(typeConstraintAst);
/// <summary/>
public virtual AstVisitAction VisitAttribute(AttributeAst attributeAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitAttribute(AttributeAst attributeAst) => DefaultVisit(attributeAst);
/// <summary/>
public virtual AstVisitAction VisitParameter(ParameterAst parameterAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitParameter(ParameterAst parameterAst) => DefaultVisit(parameterAst);
/// <summary/>
public virtual AstVisitAction VisitTypeExpression(TypeExpressionAst typeExpressionAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitTypeExpression(TypeExpressionAst typeExpressionAst) => DefaultVisit(typeExpressionAst);
/// <summary/>
public virtual AstVisitAction VisitFunctionDefinition(FunctionDefinitionAst functionDefinitionAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitFunctionDefinition(FunctionDefinitionAst functionDefinitionAst) => DefaultVisit(functionDefinitionAst);
/// <summary/>
public virtual AstVisitAction VisitStatementBlock(StatementBlockAst statementBlockAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitStatementBlock(StatementBlockAst statementBlockAst) => DefaultVisit(statementBlockAst);
/// <summary/>
public virtual AstVisitAction VisitIfStatement(IfStatementAst ifStmtAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitIfStatement(IfStatementAst ifStmtAst) => DefaultVisit(ifStmtAst);
/// <summary/>
public virtual AstVisitAction VisitTrap(TrapStatementAst trapStatementAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitTrap(TrapStatementAst trapStatementAst) => DefaultVisit(trapStatementAst);
/// <summary/>
public virtual AstVisitAction VisitSwitchStatement(SwitchStatementAst switchStatementAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitSwitchStatement(SwitchStatementAst switchStatementAst) => DefaultVisit(switchStatementAst);
/// <summary/>
public virtual AstVisitAction VisitDataStatement(DataStatementAst dataStatementAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitDataStatement(DataStatementAst dataStatementAst) => DefaultVisit(dataStatementAst);
/// <summary/>
public virtual AstVisitAction VisitForEachStatement(ForEachStatementAst forEachStatementAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitForEachStatement(ForEachStatementAst forEachStatementAst) => DefaultVisit(forEachStatementAst);
/// <summary/>
public virtual AstVisitAction VisitDoWhileStatement(DoWhileStatementAst doWhileStatementAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitDoWhileStatement(DoWhileStatementAst doWhileStatementAst) => DefaultVisit(doWhileStatementAst);
/// <summary/>
public virtual AstVisitAction VisitForStatement(ForStatementAst forStatementAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitForStatement(ForStatementAst forStatementAst) => DefaultVisit(forStatementAst);
/// <summary/>
public virtual AstVisitAction VisitWhileStatement(WhileStatementAst whileStatementAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitWhileStatement(WhileStatementAst whileStatementAst) => DefaultVisit(whileStatementAst);
/// <summary/>
public virtual AstVisitAction VisitCatchClause(CatchClauseAst catchClauseAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitCatchClause(CatchClauseAst catchClauseAst) => DefaultVisit(catchClauseAst);
/// <summary/>
public virtual AstVisitAction VisitTryStatement(TryStatementAst tryStatementAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitTryStatement(TryStatementAst tryStatementAst) => DefaultVisit(tryStatementAst);
/// <summary/>
public virtual AstVisitAction VisitBreakStatement(BreakStatementAst breakStatementAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitBreakStatement(BreakStatementAst breakStatementAst) => DefaultVisit(breakStatementAst);
/// <summary/>
public virtual AstVisitAction VisitContinueStatement(ContinueStatementAst continueStatementAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitContinueStatement(ContinueStatementAst continueStatementAst) => DefaultVisit(continueStatementAst);
/// <summary/>
public virtual AstVisitAction VisitReturnStatement(ReturnStatementAst returnStatementAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitReturnStatement(ReturnStatementAst returnStatementAst) => DefaultVisit(returnStatementAst);
/// <summary/>
public virtual AstVisitAction VisitExitStatement(ExitStatementAst exitStatementAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitExitStatement(ExitStatementAst exitStatementAst) => DefaultVisit(exitStatementAst);
/// <summary/>
public virtual AstVisitAction VisitThrowStatement(ThrowStatementAst throwStatementAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitThrowStatement(ThrowStatementAst throwStatementAst) => DefaultVisit(throwStatementAst);
/// <summary/>
public virtual AstVisitAction VisitDoUntilStatement(DoUntilStatementAst doUntilStatementAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitDoUntilStatement(DoUntilStatementAst doUntilStatementAst) => DefaultVisit(doUntilStatementAst);
/// <summary/>
public virtual AstVisitAction VisitAssignmentStatement(AssignmentStatementAst assignmentStatementAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitAssignmentStatement(AssignmentStatementAst assignmentStatementAst) => DefaultVisit(assignmentStatementAst);
/// <summary/>
public virtual AstVisitAction VisitPipeline(PipelineAst pipelineAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitPipeline(PipelineAst pipelineAst) => DefaultVisit(pipelineAst);
/// <summary/>
public virtual AstVisitAction VisitCommand(CommandAst commandAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitCommand(CommandAst commandAst) => DefaultVisit(commandAst);
/// <summary/>
public virtual AstVisitAction VisitCommandExpression(CommandExpressionAst commandExpressionAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitCommandExpression(CommandExpressionAst commandExpressionAst) => DefaultVisit(commandExpressionAst);
/// <summary/>
public virtual AstVisitAction VisitCommandParameter(CommandParameterAst commandParameterAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitCommandParameter(CommandParameterAst commandParameterAst) => DefaultVisit(commandParameterAst);
/// <summary/>
public virtual AstVisitAction VisitMergingRedirection(MergingRedirectionAst redirectionAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitMergingRedirection(MergingRedirectionAst redirectionAst) => DefaultVisit(redirectionAst);
/// <summary/>
public virtual AstVisitAction VisitFileRedirection(FileRedirectionAst redirectionAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitFileRedirection(FileRedirectionAst redirectionAst) => DefaultVisit(redirectionAst);
/// <summary/>
public virtual AstVisitAction VisitBinaryExpression(BinaryExpressionAst binaryExpressionAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitBinaryExpression(BinaryExpressionAst binaryExpressionAst) => DefaultVisit(binaryExpressionAst);
/// <summary/>
public virtual AstVisitAction VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) => DefaultVisit(unaryExpressionAst);
/// <summary/>
public virtual AstVisitAction VisitConvertExpression(ConvertExpressionAst convertExpressionAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitConvertExpression(ConvertExpressionAst convertExpressionAst) => DefaultVisit(convertExpressionAst);
/// <summary/>
public virtual AstVisitAction VisitConstantExpression(ConstantExpressionAst constantExpressionAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitConstantExpression(ConstantExpressionAst constantExpressionAst) => DefaultVisit(constantExpressionAst);
/// <summary/>
public virtual AstVisitAction VisitStringConstantExpression(StringConstantExpressionAst stringConstantExpressionAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitStringConstantExpression(StringConstantExpressionAst stringConstantExpressionAst) => DefaultVisit(stringConstantExpressionAst);
/// <summary/>
[SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "SubExpression")]
[SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "subExpression")]
public virtual AstVisitAction VisitSubExpression(SubExpressionAst subExpressionAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitSubExpression(SubExpressionAst subExpressionAst) => DefaultVisit(subExpressionAst);
/// <summary/>
public virtual AstVisitAction VisitUsingExpression(UsingExpressionAst usingExpressionAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitUsingExpression(UsingExpressionAst usingExpressionAst) => DefaultVisit(usingExpressionAst);
/// <summary/>
public virtual AstVisitAction VisitVariableExpression(VariableExpressionAst variableExpressionAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitVariableExpression(VariableExpressionAst variableExpressionAst) => DefaultVisit(variableExpressionAst);
/// <summary/>
public virtual AstVisitAction VisitMemberExpression(MemberExpressionAst memberExpressionAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitMemberExpression(MemberExpressionAst memberExpressionAst) => DefaultVisit(memberExpressionAst);
/// <summary/>
public virtual AstVisitAction VisitInvokeMemberExpression(InvokeMemberExpressionAst methodCallAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitInvokeMemberExpression(InvokeMemberExpressionAst methodCallAst) => DefaultVisit(methodCallAst);
/// <summary/>
public virtual AstVisitAction VisitArrayExpression(ArrayExpressionAst arrayExpressionAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitArrayExpression(ArrayExpressionAst arrayExpressionAst) => DefaultVisit(arrayExpressionAst);
/// <summary/>
public virtual AstVisitAction VisitArrayLiteral(ArrayLiteralAst arrayLiteralAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitArrayLiteral(ArrayLiteralAst arrayLiteralAst) => DefaultVisit(arrayLiteralAst);
/// <summary/>
public virtual AstVisitAction VisitHashtable(HashtableAst hashtableAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitHashtable(HashtableAst hashtableAst) => DefaultVisit(hashtableAst);
/// <summary/>
public virtual AstVisitAction VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) => DefaultVisit(scriptBlockExpressionAst);
/// <summary/>
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Paren")]
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "paren")]
public virtual AstVisitAction VisitParenExpression(ParenExpressionAst parenExpressionAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitParenExpression(ParenExpressionAst parenExpressionAst) => DefaultVisit(parenExpressionAst);
/// <summary/>
public virtual AstVisitAction VisitExpandableStringExpression(ExpandableStringExpressionAst expandableStringExpressionAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitExpandableStringExpression(ExpandableStringExpressionAst expandableStringExpressionAst) => DefaultVisit(expandableStringExpressionAst);
/// <summary/>
public virtual AstVisitAction VisitIndexExpression(IndexExpressionAst indexExpressionAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitIndexExpression(IndexExpressionAst indexExpressionAst) => DefaultVisit(indexExpressionAst);
/// <summary/>
public virtual AstVisitAction VisitAttributedExpression(AttributedExpressionAst attributedExpressionAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitAttributedExpression(AttributedExpressionAst attributedExpressionAst) => DefaultVisit(attributedExpressionAst);
/// <summary/>
public virtual AstVisitAction VisitBlockStatement(BlockStatementAst blockStatementAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitBlockStatement(BlockStatementAst blockStatementAst) => DefaultVisit(blockStatementAst);
/// <summary/>
public virtual AstVisitAction VisitNamedAttributeArgument(NamedAttributeArgumentAst namedAttributeArgumentAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitNamedAttributeArgument(NamedAttributeArgumentAst namedAttributeArgumentAst) => DefaultVisit(namedAttributeArgumentAst);
}
/// <summary>
@@ -167,31 +223,31 @@ namespace System.Management.Automation.Language
public abstract class AstVisitor2 : AstVisitor
{
/// <summary/>
public virtual AstVisitAction VisitTypeDefinition(TypeDefinitionAst typeDefinitionAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitTypeDefinition(TypeDefinitionAst typeDefinitionAst) => DefaultVisit(typeDefinitionAst);
/// <summary/>
public virtual AstVisitAction VisitPropertyMember(PropertyMemberAst propertyMemberAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitPropertyMember(PropertyMemberAst propertyMemberAst) => DefaultVisit(propertyMemberAst);
/// <summary/>
public virtual AstVisitAction VisitFunctionMember(FunctionMemberAst functionMemberAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitFunctionMember(FunctionMemberAst functionMemberAst) => DefaultVisit(functionMemberAst);
/// <summary/>
public virtual AstVisitAction VisitBaseCtorInvokeMemberExpression(BaseCtorInvokeMemberExpressionAst baseCtorInvokeMemberExpressionAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitBaseCtorInvokeMemberExpression(BaseCtorInvokeMemberExpressionAst baseCtorInvokeMemberExpressionAst) => DefaultVisit(baseCtorInvokeMemberExpressionAst);
/// <summary/>
public virtual AstVisitAction VisitUsingStatement(UsingStatementAst usingStatementAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitUsingStatement(UsingStatementAst usingStatementAst) => DefaultVisit(usingStatementAst);
/// <summary/>
public virtual AstVisitAction VisitConfigurationDefinition(ConfigurationDefinitionAst configurationDefinitionAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitConfigurationDefinition(ConfigurationDefinitionAst configurationDefinitionAst) => DefaultVisit(configurationDefinitionAst);
/// <summary/>
public virtual AstVisitAction VisitDynamicKeywordStatement(DynamicKeywordStatementAst dynamicKeywordStatementAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitDynamicKeywordStatement(DynamicKeywordStatementAst dynamicKeywordStatementAst) => DefaultVisit(dynamicKeywordStatementAst);
/// <summary/>
public virtual AstVisitAction VisitTernaryExpression(TernaryExpressionAst ternaryExpressionAst) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitTernaryExpression(TernaryExpressionAst ternaryExpressionAst) => DefaultVisit(ternaryExpressionAst);
/// <summary/>
public virtual AstVisitAction VisitPipelineChain(PipelineChainAst statementChain) { return AstVisitAction.Continue; }
public virtual AstVisitAction VisitPipelineChain(PipelineChainAst statementChain) => DefaultVisit(statementChain);
}
/// <summary>
+70
View File
@@ -0,0 +1,70 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
using System;
using System.Collections.Generic;
using System.Management.Automation.Language;
using Xunit;
namespace PSTests.Parallel
{
internal class MyICustomAstVisitor2 : ICustomAstVisitor2
{
public object DefaultVisit(Ast ast) => ast.GetType().Name;
}
internal class MyDefaultCustomAstVisitor2 : DefaultCustomAstVisitor2
{
public override object DefaultVisit(Ast ast) => ast.GetType().Name;
}
internal class MyAstVisitor2 : AstVisitor2
{
public List<string> Commands { get; }
public MyAstVisitor2()
{
Commands = new List<string>();
}
public override AstVisitAction DefaultVisit(Ast ast)
{
if (ast is CommandAst commandAst && commandAst.CommandElements[0] is StringConstantExpressionAst str)
{
Commands.Add(str.Value);
}
return AstVisitAction.Continue;
}
}
public static class AstDefaultVisitTests
{
[Fact]
public static void TestCustomAstVisitor()
{
var ast = Parser.ParseInput("a | b", out _, out _);
var expected = typeof(NamedBlockAst).Name;
var myVisitor1 = new MyICustomAstVisitor2();
var result1 = ast.EndBlock.Accept(myVisitor1);
Assert.Equal(expected, result1);
var myVisitor2 = new MyDefaultCustomAstVisitor2();
var result2 = ast.EndBlock.Accept(myVisitor2);
Assert.Equal(expected, result2);
}
[Fact]
public static void TestAstVisitor()
{
var ast = Parser.ParseInput("a | b", out _, out _);
var myVisitor = new MyAstVisitor2();
ast.Visit(myVisitor);
Assert.Equal(2, myVisitor.Commands.Count);
Assert.Equal("a", myVisitor.Commands[0]);
Assert.Equal("b", myVisitor.Commands[1]);
}
}
}