public virtual BaseCtorInvokeMemberExpressionAst VisitBaseCtorInvokeMemberExpression( BaseCtorInvokeMemberExpressionAst baseCtorInvokeMemberExpressionAst) { return(new BaseCtorInvokeMemberExpressionAst( baseCtorInvokeMemberExpressionAst.Extent, baseCtorInvokeMemberExpressionAst.Expression.Extent, baseCtorInvokeMemberExpressionAst.Arguments?.RewriteAll(this, SyntaxKind.Expression))); }
public override AstVisitAction VisitBaseCtorInvokeMemberExpression(BaseCtorInvokeMemberExpressionAst baseCtorInvokeMemberExpressionAst) { // SKIP // Throws exception in DevContainer when for example trying: // PowerShell code sent: class Person {[int]$age ; Person($a) {$this.age = $a}}; class Child : Person {[string]$School ; Child([int]$a, [string]$s ) : base($a) { $this.School = $s } } // #34 AstExplainer(baseCtorInvokeMemberExpressionAst); return(base.VisitBaseCtorInvokeMemberExpression(baseCtorInvokeMemberExpressionAst)); }
/// <summary/> public virtual AstVisitAction VisitBaseCtorInvokeMemberExpression(BaseCtorInvokeMemberExpressionAst baseCtorInvokeMemberExpressionAst) { return(AstVisitAction.Continue); }
/// <summary/> public virtual object VisitBaseCtorInvokeMemberExpression(BaseCtorInvokeMemberExpressionAst baseCtorInvokeMemberExpressionAst) { return(null); }
public object VisitBaseCtorInvokeMemberExpression(BaseCtorInvokeMemberExpressionAst baseCtorInvokeMemberExpressionAst) { throw PSTraceSource.NewArgumentException(nameof(baseCtorInvokeMemberExpressionAst)); }
public object VisitBaseCtorInvokeMemberExpression(BaseCtorInvokeMemberExpressionAst baseCtorInvokeMemberExpressionAst) { throw new System.NotImplementedException(); }
/// <summary/> public virtual AstVisitAction VisitBaseCtorInvokeMemberExpression(BaseCtorInvokeMemberExpressionAst baseCtorInvokeMemberExpressionAst) => DefaultVisit(baseCtorInvokeMemberExpressionAst);
public override BaseCtorInvokeMemberExpressionAst VisitBaseCtorInvokeMemberExpression( BaseCtorInvokeMemberExpressionAst baseCtorInvokeMemberExpressionAst) => VisitOther(base.VisitBaseCtorInvokeMemberExpression(baseCtorInvokeMemberExpressionAst));
private StatementAst MethodDeclarationRule(Token functionNameToken, string className, bool isStaticMethod) { //G method-statement: //G new-lines:opt function-name function-parameter-declaration base-ctor-call:opt '{' script-block '}' //G //G base-ctor-call: // can be present only if function-name == className //G ':' new-lines:opt 'base' new-lines:opt parenthesized-expression new-lines:opt //G //G function-name: //G command-argument var functionName = functionNameToken.Text; List<ParameterAst> parameters; Token lParen = this.PeekToken(); IScriptExtent endErrorStatement = null; Token rParen = null; if (lParen.Kind == TokenKind.LParen) { parameters = this.FunctionParameterDeclarationRule(out endErrorStatement, out rParen); } else { this.ReportIncompleteInput(After(functionNameToken), () => ParserStrings.MissingMethodParameterList); parameters = new List<ParameterAst>(); } bool isCtor = functionName.Equals(className, StringComparison.OrdinalIgnoreCase); List<ExpressionAst> baseCtorCallParams = null; Token baseToken = null; IScriptExtent baseCallLastExtent = null; TokenizerMode oldTokenizerMode; if (isCtor && !isStaticMethod) { this.SkipNewlines(); oldTokenizerMode = _tokenizer.Mode; try { SetTokenizerMode(TokenizerMode.Signature); Token colonToken = PeekToken(); if (colonToken.Kind == TokenKind.Colon) { SkipToken(); this.SkipNewlines(); baseToken = PeekToken(); if (baseToken.Kind == TokenKind.Base) { SkipToken(); this.SkipNewlines(); lParen = PeekToken(); if (lParen.Kind == TokenKind.LParen) { SkipToken(); // we don't allow syntax // : base{ script } // as a short for for // : base( { script } ) baseCtorCallParams = InvokeParamParenListRule(lParen, out baseCallLastExtent); this.SkipNewlines(); } else { endErrorStatement = baseToken.Extent; ReportIncompleteInput(After(baseToken), () => ParserStrings.MissingMethodParameterList); } } else { endErrorStatement = colonToken.Extent; ReportIncompleteInput(After(colonToken), () => ParserStrings.MissingBaseCtorCall); } } } finally { SetTokenizerMode(oldTokenizerMode); } if (baseCtorCallParams == null) { // Assuming implicit default ctor baseCtorCallParams = new List<ExpressionAst>(); } } Token lCurly = NextToken(); if (lCurly.Kind != TokenKind.LCurly) { // ErrorRecovery: If there is no opening curly, assume it hasn't been entered yet and don't consume anything. UngetToken(lCurly); if (endErrorStatement == null) { endErrorStatement = ExtentFromFirstOf(rParen, functionNameToken); ReportIncompleteInput(After(endErrorStatement), () => ParserStrings.MissingFunctionBody); } } if (endErrorStatement != null) { return new ErrorStatementAst(ExtentOf(functionNameToken, endErrorStatement), parameters); } StatementAst baseCtorCallStatement = null; if (isCtor && !isStaticMethod) { IScriptExtent baseCallExtent; IScriptExtent baseKeywordExtent; if (baseToken != null) { baseCallExtent = ExtentOf(baseToken, baseCallLastExtent); baseKeywordExtent = baseToken.Extent; } else { baseCallExtent = PositionUtilities.EmptyExtent; baseKeywordExtent = PositionUtilities.EmptyExtent; } var invokeMemberAst = new BaseCtorInvokeMemberExpressionAst(baseKeywordExtent, baseCallExtent, baseCtorCallParams); baseCtorCallStatement = new CommandExpressionAst(invokeMemberAst.Extent, invokeMemberAst, null); } oldTokenizerMode = _tokenizer.Mode; try { SetTokenizerMode(TokenizerMode.Command); ScriptBlockAst scriptBlock = ScriptBlockRule(lCurly, false, baseCtorCallStatement); var result = new FunctionDefinitionAst(ExtentOf(functionNameToken, scriptBlock), /*isFilter:*/false, /*isWorkflow:*/false, functionNameToken, parameters, scriptBlock); return result; } finally { SetTokenizerMode(oldTokenizerMode); } }
public object VisitBaseCtorInvokeMemberExpression(BaseCtorInvokeMemberExpressionAst baseCtorInvokeMemberExpressionAst) { var target = CompileExpressionOperand(baseCtorInvokeMemberExpressionAst.Expression); var args = CompileInvocationArguments(baseCtorInvokeMemberExpressionAst.Arguments); var baseCtorCallConstraints = GetInvokeMemberConstraints(baseCtorInvokeMemberExpressionAst); return InvokeBaseCtorMethod(baseCtorCallConstraints, target, args); }
/// <summary/> public virtual AstVisitAction VisitBaseCtorInvokeMemberExpression(BaseCtorInvokeMemberExpressionAst baseCtorInvokeMemberExpressionAst) { return AstVisitAction.Continue; }
object ICustomAstVisitor2.VisitBaseCtorInvokeMemberExpression(BaseCtorInvokeMemberExpressionAst baseCtorInvokeMemberExpressionAst) => ProcessRewriter(VisitBaseCtorInvokeMemberExpression, baseCtorInvokeMemberExpressionAst);
public override AstVisitAction VisitBaseCtorInvokeMemberExpression(BaseCtorInvokeMemberExpressionAst baseCtorInvokeMemberExpressionAst) { return(Visit(baseCtorInvokeMemberExpressionAst)); }
public override AstVisitAction VisitBaseCtorInvokeMemberExpression(BaseCtorInvokeMemberExpressionAst baseCtorInvokeMemberExpressionAst) => AstVisitAction.SkipChildren;
public object VisitBaseCtorInvokeMemberExpression(BaseCtorInvokeMemberExpressionAst baseCtorInvokeMemberExpressionAst) { return(false); }
internal static PSMethodInvocationConstraints GetInvokeMemberConstraints(BaseCtorInvokeMemberExpressionAst invokeMemberExpressionAst) { Type targetTypeConstraint = null; var arguments = invokeMemberExpressionAst.Arguments; TypeDefinitionAst typeDefinitionAst = Ast.GetAncestorTypeDefinitionAst(invokeMemberExpressionAst); if (typeDefinitionAst != null) { targetTypeConstraint = (typeDefinitionAst as TypeDefinitionAst).Type.GetTypeInfo().BaseType; } else { Diagnostics.Assert(false, "BaseCtorInvokeMemberExpressionAst must be used only inside TypeDefinitionAst"); } return CombineTypeConstraintForMethodResolution(targetTypeConstraint, arguments != null ? arguments.Select(Compiler.GetTypeConstraintForMethodResolution).ToArray() : null); }
public object VisitBaseCtorInvokeMemberExpression(BaseCtorInvokeMemberExpressionAst baseCtorInvokeMemberExpressionAst) { return(AutomationNull.Value); }
/// <summary/> public virtual object VisitBaseCtorInvokeMemberExpression(BaseCtorInvokeMemberExpressionAst baseCtorInvokeMemberExpressionAst) { return null; }