public override AstVisitAction VisitMergingRedirection(MergingRedirectionAst redirectionAst) { if (redirectionAst.ToStream != RedirectionStream.Output) { ThrowError(new ScriptBlockToPowerShellNotSupportedException("CanConvertOneOutputErrorRedir", null, AutomationExceptions.CanConvertOneOutputErrorRedir, new object[0]), redirectionAst); } return AstVisitAction.Continue; }
/// <summary/> public virtual object VisitMergingRedirection(MergingRedirectionAst mergingRedirectionAst) { return _decorated.VisitMergingRedirection(mergingRedirectionAst); }
/// <summary> /// Visit merging redirection /// </summary> /// <param name="mergingRedirectionAst"></param> /// <returns></returns> public object VisitMergingRedirection(MergingRedirectionAst mergingRedirectionAst) { return null; }
public override AstVisitAction VisitMergingRedirection(MergingRedirectionAst ast) { return CheckParent(ast); }
public object VisitMergingRedirection(MergingRedirectionAst mergingRedirectionAst) { return(false); }
public object VisitMergingRedirection(MergingRedirectionAst mergingRedirectionAst) { throw PSTraceSource.NewArgumentException("ast"); }
public override AstVisitAction VisitMergingRedirection(MergingRedirectionAst ast) { return(Check(ast)); }
public virtual AstVisitAction VisitMergingRedirection(MergingRedirectionAst redirectionAst) { return AstVisitAction.Continue; }
public override AstVisitAction VisitMergingRedirection(MergingRedirectionAst mergingRedirectionAst) { this.ReportError(mergingRedirectionAst, () => ParserStrings.RedirectionNotSupportedInDataSection, new object[0]); return(AstVisitAction.Continue); }
public object VisitMergingRedirection(MergingRedirectionAst mergingRedirectionAst) { throw new UnexpectedElementException(); }
/// <summary/> public virtual AstVisitAction VisitMergingRedirection(MergingRedirectionAst redirectionAst) => DefaultVisit(redirectionAst);
public object VisitMergingRedirection(MergingRedirectionAst mergingRedirectionAst) { return new MergingRedirection(mergingRedirectionAst.FromStream, mergingRedirectionAst.ToStream); }
private RedirectionAst RedirectionRule(RedirectionToken redirectionToken, RedirectionAst[] redirections, ref IScriptExtent extent) { RedirectionAst fileRedirectionAst; string allStream; FileRedirectionToken fileRedirectionToken = redirectionToken as FileRedirectionToken; if (fileRedirectionToken != null || redirectionToken as InputRedirectionToken != null) { ExpressionAst singleCommandArgument = this.GetSingleCommandArgument(Parser.CommandArgumentContext.FileName); if (singleCommandArgument == null) { this.ReportError(Parser.After(redirectionToken), ParserStrings.MissingFileSpecification, new object[0]); singleCommandArgument = new ErrorExpressionAst(redirectionToken.Extent, null); } if (fileRedirectionToken != null) { fileRedirectionAst = new FileRedirectionAst(Parser.ExtentOf(fileRedirectionToken, singleCommandArgument), fileRedirectionToken.FromStream, singleCommandArgument, fileRedirectionToken.Append); } else { object[] text = new object[1]; text[0] = redirectionToken.Text; this.ReportError(redirectionToken.Extent, ParserStrings.RedirectionNotSupported, text); extent = Parser.ExtentOf(redirectionToken, singleCommandArgument); return null; } } else { MergingRedirectionToken mergingRedirectionToken = (MergingRedirectionToken)redirectionToken; RedirectionStream fromStream = mergingRedirectionToken.FromStream; RedirectionStream toStream = mergingRedirectionToken.ToStream; if (toStream == RedirectionStream.Output) { if (fromStream == toStream) { object[] objArray = new object[1]; objArray[0] = mergingRedirectionToken.Text; this.ReportError(redirectionToken.Extent, ParserStrings.RedirectionNotSupported, objArray); } } else { object[] text1 = new object[1]; text1[0] = mergingRedirectionToken.Text; this.ReportError(redirectionToken.Extent, ParserStrings.RedirectionNotSupported, text1); toStream = RedirectionStream.Output; } fileRedirectionAst = new MergingRedirectionAst(mergingRedirectionToken.Extent, mergingRedirectionToken.FromStream, toStream); } if (redirections[(int)fileRedirectionAst.FromStream] != null) { RedirectionStream redirectionStream = fileRedirectionAst.FromStream; if (redirectionStream == RedirectionStream.All) { allStream = ParserStrings.AllStream; } else if (redirectionStream == RedirectionStream.Output) { allStream = ParserStrings.OutputStream; } else if (redirectionStream == RedirectionStream.Error) { allStream = ParserStrings.ErrorStream; } else if (redirectionStream == RedirectionStream.Warning) { allStream = ParserStrings.WarningStream; } else if (redirectionStream == RedirectionStream.Verbose) { allStream = ParserStrings.VerboseStream; } else if (redirectionStream == RedirectionStream.Debug) { allStream = ParserStrings.DebugStream; } else if (redirectionStream == RedirectionStream.Host) { allStream = ParserStrings.HostStream; } else { throw PSTraceSource.NewArgumentOutOfRangeException("result.FromStream", (object)fileRedirectionAst.FromStream); } object[] objArray1 = new object[1]; objArray1[0] = allStream; this.ReportError(fileRedirectionAst.Extent, ParserStrings.StreamAlreadyRedirected, objArray1); } else { redirections[(int)fileRedirectionAst.FromStream] = fileRedirectionAst; } extent = fileRedirectionAst.Extent; return fileRedirectionAst; }
private RedirectionAst RedirectionRule(RedirectionToken redirectionToken, RedirectionAst[] redirections, ref IScriptExtent extent) { //G redirections: //G redirection //G redirections redirection //G redirection: //G merging-redirection-operator //G file-redirection-operator redirected-file-name //G redirected-file-name: //G command-argument //G primary-expression RedirectionAst result; var fileRedirectionToken = redirectionToken as FileRedirectionToken; if (fileRedirectionToken != null || (redirectionToken is InputRedirectionToken)) { // get location var filename = GetSingleCommandArgument(CommandArgumentContext.FileName); if (filename == null) { // ErrorRecovery: Just pretend we have a filename and continue parsing. ReportError(After(redirectionToken), () => ParserStrings.MissingFileSpecification); filename = new ErrorExpressionAst(redirectionToken.Extent); } if (fileRedirectionToken == null) { // Must be an input redirection ReportError(redirectionToken.Extent, () => ParserStrings.RedirectionNotSupported, redirectionToken.Text); extent = ExtentOf(redirectionToken, filename); return null; } result = new FileRedirectionAst(ExtentOf(fileRedirectionToken, filename), fileRedirectionToken.FromStream, filename, fileRedirectionToken.Append); } else { var mergingRedirectionToken = (MergingRedirectionToken)redirectionToken; RedirectionStream fromStream = mergingRedirectionToken.FromStream; RedirectionStream toStream = mergingRedirectionToken.ToStream; if (toStream != RedirectionStream.Output) { // Have we seen something like 1>&2 or 2>&3 // ErrorRecovery: This is just a semantic error, so no special recovery. ReportError(redirectionToken.Extent, () => ParserStrings.RedirectionNotSupported, mergingRedirectionToken.Text); toStream = RedirectionStream.Output; } else if (fromStream == toStream) { // Make sure 1>&1, 2>&2, etc. is an error. // ErrorRecovery: This is just a semantic error, so no special recovery. ReportError(redirectionToken.Extent, () => ParserStrings.RedirectionNotSupported, mergingRedirectionToken.Text); } result = new MergingRedirectionAst(mergingRedirectionToken.Extent, mergingRedirectionToken.FromStream, toStream); } if (redirections[(int)result.FromStream] == null) { redirections[(int)result.FromStream] = result; } else { string errorStream; switch (result.FromStream) { case RedirectionStream.All: errorStream = ParserStrings.AllStream; break; case RedirectionStream.Output: errorStream = ParserStrings.OutputStream; break; case RedirectionStream.Error: errorStream = ParserStrings.ErrorStream; break; case RedirectionStream.Warning: errorStream = ParserStrings.WarningStream; break; case RedirectionStream.Verbose: errorStream = ParserStrings.VerboseStream; break; case RedirectionStream.Debug: errorStream = ParserStrings.DebugStream; break; case RedirectionStream.Information: errorStream = ParserStrings.InformationStream; break; default: throw PSTraceSource.NewArgumentOutOfRangeException("result.FromStream", result.FromStream); } ReportError(result.Extent, () => ParserStrings.StreamAlreadyRedirected, errorStream); } extent = result.Extent; return result; }
public System.Object VisitMergingRedirection(System.Management.Automation.Language.MergingRedirectionAst mergingRedirectionAst) { IScriptExtent mappedExtent = MapExtent(mergingRedirectionAst.Extent); return(new MergingRedirectionAst(mappedExtent, mergingRedirectionAst.FromStream, mergingRedirectionAst.ToStream)); }
public override AstVisitAction VisitMergingRedirection(MergingRedirectionAst ast) { return this.Check(ast); }
public override AstVisitAction VisitMergingRedirection(MergingRedirectionAst redirectionAst) { throw new NotImplementedException(); //VisitMergingRedirection(redirectionAst); }
public object VisitMergingRedirection(MergingRedirectionAst mergingRedirectionAst) { return AutomationNull.Value; }
/// <summary/> public virtual object VisitMergingRedirection(MergingRedirectionAst mergingRedirectionAst) { return(null); }
public object VisitMergingRedirection(MergingRedirectionAst mergingRedirectionAst) { return false; }
public object VisitMergingRedirection(MergingRedirectionAst mergingRedirectionAst) { // Most Visit* methods return a Linq.Expression, this method being an exception. VisitPipeline // may be able to pass a compile time array of redirections if all of the redirections are // constant. Merging redirections never vary at runtime, so there is no sense in deferring // the creation of the merging object until runtime. return new MergingRedirection(mergingRedirectionAst.FromStream, mergingRedirectionAst.ToStream); }
/// <summary/> public virtual AstVisitAction VisitMergingRedirection(MergingRedirectionAst redirectionAst) { return(AstVisitAction.Continue); }
public override AstVisitAction VisitMergingRedirection(MergingRedirectionAst mergingRedirectionAst) { this.ReportError(mergingRedirectionAst, () => ParserStrings.RedirectionNotSupportedInDataSection, new object[0]); return AstVisitAction.Continue; }
public object VisitMergingRedirection(MergingRedirectionAst mergingRedirectionAst) { return(AutomationNull.Value); }
public object VisitMergingRedirection(MergingRedirectionAst mergingRedirectionAst) { throw new NotImplementedException(); }