private TextSpan GetTextSpan(ExpressionSyntax expression, SyntaxToken openBracket) { if (openBracket.Parent is BracketedArgumentListSyntax) { return(CompleteElementAccessExpression.GetTextSpan(expression, openBracket)); } else if (openBracket.Parent is ArrayRankSpecifierSyntax) { return(IncompleteElementAccessExpression.GetTextSpan(expression, openBracket)); } throw ExceptionUtilities.Unreachable; }
private TextSpan GetTextSpan(ExpressionSyntax expression, SyntaxToken openBracket) { if (openBracket.Parent is BracketedArgumentListSyntax) { if (expression.Parent is ConditionalAccessExpressionSyntax conditional) { return(TextSpan.FromBounds(conditional.Span.Start, openBracket.FullSpan.End)); } else { return(CompleteElementAccessExpression.GetTextSpan(expression, openBracket)); } } else if (openBracket.Parent is ArrayRankSpecifierSyntax) { return(IncompleteElementAccessExpression.GetTextSpan(expression, openBracket)); } throw ExceptionUtilities.Unreachable; }
private static bool TryGetElementAccessExpression( SyntaxNode root, int position, ISyntaxFactsService syntaxFacts, SignatureHelpTriggerReason triggerReason, CancellationToken cancellationToken, [NotNullWhen(true)] out ExpressionSyntax?identifier, out SyntaxToken openBrace ) { return(CompleteElementAccessExpression.TryGetSyntax( root, position, syntaxFacts, triggerReason, cancellationToken, out identifier, out openBrace ) || IncompleteElementAccessExpression.TryGetSyntax( root, position, syntaxFacts, triggerReason, cancellationToken, out identifier, out openBrace ) || ConditionalAccessExpression.TryGetSyntax( root, position, syntaxFacts, triggerReason, cancellationToken, out identifier, out openBrace )); }