未验证 提交 991ae7e7 编写于 作者: J Julien Couvreur 提交者: GitHub

SignatureHelp: fix display or ref-returning indexer (#24359)

上级 dbb58503
......@@ -52,6 +52,52 @@ void Goo()
await TestAsync(markup, expectedOrderedItems);
}
[Fact, Trait(Traits.Feature, Traits.Features.SignatureHelp)]
[WorkItem(24311, "https://github.com/dotnet/roslyn/issues/24311")]
public async Task TestInvocationWithParametersOn1_WithRefReturn()
{
var markup = @"
class C
{
public ref int this[int a]
{
get { throw null; }
}
void Goo(C c)
{
[|c[$$]|]
}
}";
var expectedOrderedItems = new List<SignatureHelpTestItem>();
expectedOrderedItems.Add(new SignatureHelpTestItem("ref int C[int a]", string.Empty, string.Empty, currentParameterIndex: 0));
await TestAsync(markup, expectedOrderedItems);
}
[Fact, Trait(Traits.Feature, Traits.Features.SignatureHelp)]
[WorkItem(24311, "https://github.com/dotnet/roslyn/issues/24311")]
public async Task TestInvocationWithParametersOn1_WithRefReadonlyReturn()
{
var markup = @"
class C
{
public ref readonly int this[int a]
{
get { throw null; }
}
void Goo(C c)
{
[|c[$$]|]
}
}";
var expectedOrderedItems = new List<SignatureHelpTestItem>();
expectedOrderedItems.Add(new SignatureHelpTestItem("ref readonly int C[int a]", string.Empty, string.Empty, currentParameterIndex: 0));
await TestAsync(markup, expectedOrderedItems);
}
[WorkItem(636117, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/636117")]
[Fact, Trait(Traits.Feature, Traits.Features.SignatureHelp)]
public async Task TestInvocationOnExpression()
......
......@@ -246,6 +246,19 @@ public override SignatureHelpState GetCurrentArgumentState(SyntaxNode root, int
{
var result = new List<SymbolDisplayPart>();
if (indexer.ReturnsByRef)
{
result.Add(Keyword(SyntaxKind.RefKeyword));
result.Add(Space());
}
else if (indexer.ReturnsByRefReadonly)
{
result.Add(Keyword(SyntaxKind.RefKeyword));
result.Add(Space());
result.Add(Keyword(SyntaxKind.ReadOnlyKeyword));
result.Add(Space());
}
result.AddRange(indexer.Type.ToMinimalDisplayParts(semanticModel, position));
result.Add(Space());
result.AddRange(indexer.ContainingType.ToMinimalDisplayParts(semanticModel, position));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册