提交 21ab374c 编写于 作者: C CyrusNajmabadi 提交者: GitHub

Merge pull request #18663 from CyrusNajmabadi/wrongArityClassification

Classify type names, even when arity does not match.
......@@ -279,7 +279,7 @@ public async Task GenericClassNameButOtherArity()
class C
{
A d;
}");
}", Class("A"));
}
[Fact, Trait(Traits.Feature, Traits.Features.Classification)]
......
......@@ -788,9 +788,62 @@ public MyClass(int x)
Punctuation.CloseParen,
Punctuation.OpenCurly,
Punctuation.CloseCurly,
Punctuation.CloseCurly
Punctuation.CloseCurly);
}
[Fact, Trait(Traits.Feature, Traits.Features.Classification)]
public async Task TestGenericTypeWithNoArity()
{
await TestAsync(
@"
using System.Collections.Generic;
class Program : IReadOnlyCollection
{
}",
Keyword("using"),
Identifier("System"),
Operators.Dot,
Identifier("Collections"),
Operators.Dot,
Identifier("Generic"),
Punctuation.Semicolon,
Keyword("class"),
Class("Program"),
Punctuation.Colon,
Interface("IReadOnlyCollection"),
Punctuation.OpenCurly,
Punctuation.CloseCurly);
}
);
[Fact, Trait(Traits.Feature, Traits.Features.Classification)]
public async Task TestGenericTypeWithWrongArity()
{
await TestAsync(
@"
using System.Collections.Generic;
class Program : IReadOnlyCollection<int,string>
{
}",
Keyword("using"),
Identifier("System"),
Operators.Dot,
Identifier("Collections"),
Operators.Dot,
Identifier("Generic"),
Punctuation.Semicolon,
Keyword("class"),
Class("Program"),
Punctuation.Colon,
Identifier("IReadOnlyCollection"),
Punctuation.OpenAngle,
Keyword("int"),
Punctuation.Comma,
Keyword("string"),
Punctuation.CloseAngle,
Punctuation.OpenCurly,
Punctuation.CloseCurly);
}
}
}
}
\ No newline at end of file
......@@ -221,6 +221,18 @@ private static ISymbol TryGetSymbol(NameSyntax name, SymbolInfo symbolInfo, Sema
return firstSymbol;
}
break;
case CandidateReason.WrongArity:
if (name.GetRightmostName().Arity == 0)
{
// When the user writes something like "IList" we don't want to *not* classify
// just because the type bound to "IList<T>". This is also important for use
// cases like "Add-using" where it can be confusing when the using is added for
// "using System.Collection.Generic" but then the type name still does not classify.
return firstSymbol;
}
break;
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册