提交 3a405601 编写于 作者: B Brett Forsgren

Merge pull request #5151 from brettfo/element-access-sig-help-with-qualified-name

when generating sig help, use SymbolInfo if TypeInfo resolution fails
......@@ -208,7 +208,10 @@ private bool TryGetIndexers(int position, SemanticModel semanticModel, Expressio
if (expressionType is IErrorTypeSymbol)
{
expressionType = (expressionType as IErrorTypeSymbol).CandidateSymbols.FirstOrDefault().GetSymbolType();
// If `expression` is a QualifiedNameSyntax then GetTypeInfo().Type won't have any CandidateSymbols, so
// we should then fall back to getting the actual symbol for the expression.
expressionType = (expressionType as IErrorTypeSymbol).CandidateSymbols.FirstOrDefault().GetSymbolType()
?? semanticModel.GetSymbolInfo(expression).GetAnySymbol().GetSymbolType();
}
indexers = semanticModel.LookupSymbols(position, expressionType, WellKnownMemberNames.Indexer).OfType<IPropertySymbol>();
......
......@@ -833,6 +833,30 @@ public void InvokedWithNoToken()
Test(markup);
}
[WorkItem(2482, "https://github.com/dotnet/roslyn/issues/2482")]
[Fact, Trait(Traits.Feature, Traits.Features.SignatureHelp)]
public void WhereExpressionLooksLikeArrayTypeSyntaxOfQualifiedName()
{
var markup = @"
class WithIndexer
{
public int this[int index] { get { return 0; } }
}
class TestClass
{
public WithIndexer Item { get; set; }
public void Method(TestClass tc)
{
// `tc.Item[]` parses as ArrayTypeSyntax with an ElementType of QualifiedNameSyntax
tc.Item[$$]
}
}
";
Test(markup, new[] { new SignatureHelpTestItem("int WithIndexer[int index]") }, usePreviousCharAsTrigger: true);
}
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册