public static void AddVariables( ExpressionAst expression, List <Tuple <ITypeName, VariableExpressionAst> > variables) { var visitor = new DelegateParameterVisitor(); visitor._variables = variables; expression.Visit(visitor); }
public object VisitAssignmentStatement(AssignmentStatementAst assignmentStatementAst) { _paramBlockExtent = assignmentStatementAst.Left.Extent; DelegateParameterVisitor.AddVariables( assignmentStatementAst.Left, _variables); var pipeline = assignmentStatementAst.Right as PipelineAst; if (pipeline == null) { return(null); } var commandAst = pipeline.PipelineElements[0] as CommandAst; if (commandAst == null || commandAst.GetCommandName() != Strings.DelegateSyntaxCommandName || commandAst.CommandElements.Count != 2) { return(null); } if (commandAst.CommandElements[1] is ScriptBlockExpressionAst sbAst) { return(sbAst.ScriptBlock.EndBlock); } var expression = commandAst.CommandElements[1] as ExpressionAst; var statements = new StatementAst[] { new CommandExpressionAst( expression.Extent, (ExpressionAst)expression.Copy(), s_emptyRedirections) }; var statementBlockAst = new StatementBlockAst( commandAst.CommandElements[1].Extent, statements, s_emptyTraps); return(new NamedBlockAst( commandAst.CommandElements[1].Extent, TokenKind.End, statementBlockAst, unnamed: true)); }