public override void VisitPrimaryConstructorBaseType(PrimaryConstructorBaseTypeSyntax node) { Binder enclosing = _enclosing.WithAdditionalFlags(BinderFlags.ConstructorInitializer); AddToMap(node, enclosing); VisitConstructorInitializerArgumentList(node, node.ArgumentList, enclosing); }
private bool TryGetBaseTypeSyntax( SyntaxNode root, int position, ISyntaxFactsService syntaxFacts, SignatureHelpTriggerReason triggerReason, CancellationToken cancellationToken, out PrimaryConstructorBaseTypeSyntax expression ) { if ( !CommonSignatureHelpUtilities.TryGetSyntax( root, position, syntaxFacts, triggerReason, IsTriggerToken, IsArgumentListToken, cancellationToken, out expression ) ) { return(false); } return(expression.ArgumentList != null);
private Doc PrintPrimaryConstructorBaseTypeSyntax( PrimaryConstructorBaseTypeSyntax node) { return(Concat( this.Print(node.Type), this.PrintArgumentListSyntax(node.ArgumentList) )); }
static bool IsArgumentListToken( PrimaryConstructorBaseTypeSyntax expression, SyntaxToken token ) { return(expression.ArgumentList != null && expression.ArgumentList.Span.Contains(token.SpanStart) && token != expression.ArgumentList.CloseParenToken); }
internal override bool TryGetSpeculativeSemanticModelCore( SyntaxTreeSemanticModel parentModel, int position, PrimaryConstructorBaseTypeSyntax constructorInitializer, out SemanticModel speculativeModel ) { throw ExceptionUtilities.Unreachable; }
internal override bool TryGetSpeculativeSemanticModelCore( SyntaxTreeSemanticModel parentModel, int position, PrimaryConstructorBaseTypeSyntax constructorInitializer, out SemanticModel speculativeModel ) { speculativeModel = null; return(false); }
private static IEnumerable <ImmutableArray <IParameterSymbol> > GetParameterLists( SemanticModel semanticModel, int position, SyntaxNode invocableNode, CancellationToken cancellationToken) { return(invocableNode switch { InvocationExpressionSyntax invocationExpression => GetInvocationExpressionParameterLists(semanticModel, position, invocationExpression, cancellationToken), ConstructorInitializerSyntax constructorInitializer => GetConstructorInitializerParameterLists(semanticModel, position, constructorInitializer, cancellationToken), ElementAccessExpressionSyntax elementAccessExpression => GetElementAccessExpressionParameterLists(semanticModel, position, elementAccessExpression, cancellationToken), BaseObjectCreationExpressionSyntax objectCreationExpression => GetObjectCreationExpressionParameterLists(semanticModel, position, objectCreationExpression, cancellationToken), PrimaryConstructorBaseTypeSyntax recordBaseType => GetRecordBaseTypeParameterLists(semanticModel, position, recordBaseType, cancellationToken), _ => null, });
> GetRecordBaseTypeParameterLists( SemanticModel semanticModel, int position, PrimaryConstructorBaseTypeSyntax recordBaseType, CancellationToken cancellationToken ) { var within = semanticModel.GetEnclosingNamedTypeOrAssembly(position, cancellationToken); if (within != null) { var type = semanticModel.GetTypeInfo(recordBaseType.Type, cancellationToken).Type as INamedTypeSymbol; return type?.InstanceConstructors.Where(m => m.IsAccessibleWithin(within)) .Select(m => m.Parameters); } return null; }
protected T CompileAndGetModelAndPrimaryConstructorInitializer <T>(string program, Func <SemanticModel, PrimaryConstructorBaseTypeSyntax, T> analysisDelegate, params MetadataReference[] references) { var comp = CreateCompilation(program, parseOptions: TestOptions.RegularPreview, references: references); var tree = comp.SyntaxTrees[0]; var model = comp.GetSemanticModel(tree); int start = program.IndexOf(StartString, StringComparison.Ordinal) + StartString.Length; int end = program.IndexOf(EndString, StringComparison.Ordinal); PrimaryConstructorBaseTypeSyntax syntaxToBind = null; foreach (var expr in GetSyntaxNodeList(tree).OfType <PrimaryConstructorBaseTypeSyntax>()) { if (expr.SpanStart >= start && expr.Span.End <= end) { syntaxToBind = expr; break; } } Assert.NotNull(syntaxToBind); return(analysisDelegate(model, syntaxToBind)); }
public override void VisitPrimaryConstructorBaseType(PrimaryConstructorBaseTypeSyntax node) { Log(node, "Unsupported Syntax !"); }
public static Doc Print(PrimaryConstructorBaseTypeSyntax node) { return(Doc.Concat(Node.Print(node.Type), ArgumentList.Print(node.ArgumentList))); }