public System.Object VisitScriptBlockExpression(System.Management.Automation.Language.ScriptBlockExpressionAst scriptBlockExpressionAst) { IScriptExtent mappedExtent = MapExtent(scriptBlockExpressionAst.Extent); ScriptBlockAst mappedScriptBlock = (ScriptBlockAst)VisitScriptBlock(scriptBlockExpressionAst.ScriptBlock); return(new ScriptBlockExpressionAst(mappedExtent, mappedScriptBlock)); }
/// <summary/> public virtual object VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { return _decorated.VisitScriptBlockExpression(scriptBlockExpressionAst); }
/// <summary> /// Visit ScriptBlockExpression /// </summary> /// <param name="scriptBlockExpressionAst"></param> /// <returns></returns> public object VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { // Don't recurse into the script block, it's variables are distinct from the script block // we're currently analyzing. return null; }
public override AstVisitAction VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { this.ReportError(scriptBlockExpressionAst, () => ParserStrings.ScriptBlockNotSupportedInDataSection, new object[0]); return AstVisitAction.Continue; }
public object VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { // The script block is not visited until it is executed, executing a script block expression node simply // builds a new script block without analyzing it. // // A wrapper is returned so we can cache the script block and return clones that are pre-compiled if // the expression is evaluated more than once (e.g. in a loop, or if the containing function/script // is called again.) return Expression.Call( Expression.Constant(new ScriptBlockExpressionWrapper(scriptBlockExpressionAst.ScriptBlock)), CachedReflectionInfo.ScriptBlockExpressionWrapper_GetScriptBlock, _executionContextParameter, ExpressionCache.Constant(false) ); }
public object VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { return(ScriptBlock.Create(scriptBlockExpressionAst.Extent.Text)); }
public object VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { return new ScriptBlock(scriptBlockExpressionAst.ScriptBlock, false); }
public override AstVisitAction VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { if (scriptBlockExpressionAst.Extent.ContainsLineAndColumn(_breakpoint.Line, _breakpoint.Column)) { _result = true; return AstVisitAction.StopVisit; } // We don't need to visit the body, we're just checking extents of the topmost functions. // We'll visit the bodies eventually, but only when the nested function/script is executed. return AstVisitAction.SkipChildren; }
/// <summary/> public virtual AstVisitAction VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) => DefaultVisit(scriptBlockExpressionAst);
public override AstVisitAction VisitScriptBlockExpression(ScriptBlockExpressionAst ast) { return(CheckScriptBlock(ast)); }
/// <summary/> public virtual object VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { return(null); }
public object VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { return Expression.Call(Expression.Constant(new ScriptBlockExpressionWrapper(scriptBlockExpressionAst.ScriptBlock)), CachedReflectionInfo.ScriptBlockExpressionWrapper_GetScriptBlock, _executionContextParameter, ExpressionCache.Constant(false)); }
public object VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { return(this.CheckingAttributeArgument); }
public override AstVisitAction VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { return AstVisitAction.SkipChildren; }
public override AstVisitAction VisitScriptBlockExpression(ScriptBlockExpressionAst ast) { return CheckParent(ast); }
public override AstVisitAction VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { _symbolTable.EnterScope(scriptBlockExpressionAst.ScriptBlock, ScopeType.ScriptBlock); return AstVisitAction.Continue; }
public override AstVisitAction VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { ConfigurationDefinitionAst configAst = Ast.GetAncestorAst<ConfigurationDefinitionAst>(scriptBlockExpressionAst); // // Check within a configuration statement, if there is undefined DSC resources (DynamicKeyword) was used // for example, // // Configuration TestConfig // { // SomeDSCResource bla // { // Property = "value" // } // } // // SomeDSCResource is not default DSC Resource, in this case, a parse error should be generated to // indicate that SomeDSCResource is not defined. Parser generates a command call (CommandAst) to function // "SomeDSCResource" followed by a ScriptBlockExpressionAst. Following code check if there are patterns // that one ScriptBlockExpressionAst follows a CommandAst, and report Parser error(s) if true. // if (configAst != null) { var ast = scriptBlockExpressionAst.Parent; // Traverse all ancestor ast to find NamedBlockAst PipelineAst statementAst = null; // The nearest ancestor PipelineAst of the 'scriptBlockExpressionAst' int ancestorNodeLevel = 0; // The nearest ancestor PipelineAst should be two level above the 'scriptBlockExpressionAst' while ((ast != null) && (ancestorNodeLevel <= 2)) { // // Find nearest ancestor NamedBlockAst // var namedBlockedAst = ast as NamedBlockAst; if ((namedBlockedAst != null) && (statementAst != null) && (ancestorNodeLevel == 2)) { int index = namedBlockedAst.Statements.IndexOf(statementAst); if (index > 0) { // // Check if previous Statement is CommandAst // var pipelineAst = namedBlockedAst.Statements[index - 1] as PipelineAst; if (pipelineAst != null && pipelineAst.PipelineElements.Count == 1) { var commandAst = pipelineAst.PipelineElements[0] as CommandAst; if (commandAst != null && commandAst.CommandElements.Count <= 2 && commandAst.DefiningKeyword == null) { // Here indicates a CommandAst followed by a ScriptBlockExpression, // which is invalid if the DSC resource is not defined var commandNameAst = commandAst.CommandElements[0] as StringConstantExpressionAst; if (commandNameAst != null) { _parser.ReportError(commandNameAst.Extent, () => ParserStrings.ResourceNotDefined, commandNameAst.Extent.Text); } } } } break; } statementAst = ast as PipelineAst; ancestorNodeLevel++; ast = ast.Parent; } } return AstVisitAction.Continue; }
public override AstVisitAction VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { if (scriptBlockExpressionAst.Extent.ContainsLineAndColumn(this._breakpoint.Line, this._breakpoint.Column)) { this._result = true; return AstVisitAction.StopVisit; } return AstVisitAction.SkipChildren; }
public virtual AstVisitAction VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { return AstVisitAction.Continue; }
public object VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { throw new UnexpectedElementException(); }
/// <summary/> public virtual AstVisitAction VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { return(AstVisitAction.Continue); }
public override AstVisitAction VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { this.ReportError(scriptBlockExpressionAst, () => ParserStrings.ScriptBlockNotSupportedInDataSection, new object[0]); return(AstVisitAction.Continue); }
public object VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { // Returning a ScriptBlock instance itself is OK, bad stuff only happens // when invoking one (which is blocked) return(true); }
public override AstVisitAction VisitScriptBlockExpression(ScriptBlockExpressionAst ast) { return this.CheckScriptBlock(ast); }
public override AstVisitAction VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { _symbolTable.EnterScope(scriptBlockExpressionAst.ScriptBlock, ScopeType.ScriptBlock); return(AstVisitAction.Continue); }
public object VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { CheckIsConstant(scriptBlockExpressionAst, "Caller to verify ast is constant"); return(new ScriptBlock(scriptBlockExpressionAst.ScriptBlock, isFilter: false)); }
public object VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { return null; }
public object VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { // A script block expression is a constant when we're generating metadata, but when // we're generating code, we need to create new script blocks so we can't use a constant. // Also - we have no way to describe a script block when generating .Net metadata, so // we must disallow script blocks as attribute arguments on/inside a class. return CheckingAttributeArgument && !CheckingClassAttributeArguments; }
/// <summary> /// Visit ScriptBlock /// </summary> /// <param name="scriptBlockExpressionAst"></param> /// <returns></returns> public override AstVisitAction VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { // We don't want to discover any variables in script block expressions - they get their own scope. return AstVisitAction.Continue; }
public object VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { CheckIsConstant(scriptBlockExpressionAst, "Caller to verify ast is constant"); return new ScriptBlock(scriptBlockExpressionAst.ScriptBlock, isFilter: false); }
public override AstVisitAction VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { ThrowError(new ScriptBlockToPowerShellNotSupportedException( "CantConvertWithScriptBlocks", null, AutomationExceptions.CantConvertWithScriptBlocks), scriptBlockExpressionAst); return AstVisitAction.SkipChildren; }
public object VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { // Returning a ScriptBlock instance itself is OK, bad stuff only happens // when invoking one (which is blocked) return true; }
public override object VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { _symbolResolver._symbolTable.LeaveScope(); return null; }
public object VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { return ScriptBlock.Create(scriptBlockExpressionAst.Extent.Text); }
public override AstVisitAction VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { this._pipelineCommandRuntime.WriteObject(new ScriptBlock(scriptBlockExpressionAst.ScriptBlock)); return AstVisitAction.SkipChildren; }
public override object VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { _symbolResolver._symbolTable.LeaveScope(); return(null); }
public override AstVisitAction VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { throw new NotImplementedException(); //VisitScriptBlockExpression(scriptBlockExpressionAst); }
/// <summary> /// Similar to visitnamedblock /// </summary> /// <param name="sbAst"></param> /// <returns></returns> public override AstVisitAction VisitScriptBlockExpression(ScriptBlockExpressionAst sbAst) { return VisitActionHelper(sbAst); }
public object VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { return this.CheckingAttributeArgument; }
public object VisitScriptBlockExpression(ScriptBlockExpressionAst scriptBlockExpressionAst) { var endBlock = scriptBlockExpressionAst.ScriptBlock.EndBlock; foreach (var statement in endBlock.Statements) { Visit(statement); } return unit; }