提交 7c36f882 编写于 作者: R Ravi Chande 提交者: GitHub

Merge pull request #20509 from rchande/sighelpCrash

Fix crash in element access signature help
......@@ -898,6 +898,48 @@ public void Method(TestClass tc)
";
await TestAsync(markup, new[] { new SignatureHelpTestItem("int WithIndexer[int index]") }, usePreviousCharAsTrigger: true);
}
[WorkItem(20507, "https://github.com/dotnet/roslyn/issues/20507")]
[Fact, Trait(Traits.Feature, Traits.Features.SignatureHelp)]
public async Task InConditionalIndexingFollowedByMemberAccess()
{
var markup = @"
class Indexable
{
public Indexable this[int x] { get => null; }
Indexable Count;
static void Main(string[] args)
{
Indexable x;
x?[$$].Count;
}
}
";
await TestAsync(markup, new[] { new SignatureHelpTestItem("Indexable Indexable[int x]") }, usePreviousCharAsTrigger: false);
}
[WorkItem(20507, "https://github.com/dotnet/roslyn/issues/20507")]
[Fact, Trait(Traits.Feature, Traits.Features.SignatureHelp)]
public async Task InConditionalIndexingFollowedByConditionalAcesss()
{
var markup = @"
class Indexable
{
public Indexable this[int x] { get => null; }
Indexable Count;
static void Main(string[] args)
{
Indexable x;
x?[$$].Count?.Count;
}
}
";
await TestAsync(markup, new[] { new SignatureHelpTestItem("Indexable Indexable[int x]") }, usePreviousCharAsTrigger: false);
}
}
}
}
......@@ -372,7 +372,11 @@ internal static bool TryGetSyntax(SyntaxNode root, int position, ISyntaxFactsSer
{
if (CommonSignatureHelpUtilities.TryGetSyntax(root, position, syntaxFacts, triggerReason, IsTriggerToken, IsArgumentListToken, cancellationToken, out ElementBindingExpressionSyntax elementBindingExpression))
{
identifier = ((ConditionalAccessExpressionSyntax)elementBindingExpression.Parent).Expression;
// Find the first conditional access expression that starts left of our open bracket
var conditionalAccess = elementBindingExpression.FirstAncestorOrSelf<ConditionalAccessExpressionSyntax>(
c => c.SpanStart < elementBindingExpression.SpanStart);
identifier = conditionalAccess.Expression;
openBrace = elementBindingExpression.ArgumentList.OpenBracketToken;
return true;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册