47 lines
1.3 KiB
C#
47 lines
1.3 KiB
C#
using Roslyn.Utilities;
|
|
|
|
namespace Microsoft.CodeAnalysis.CSharp;
|
|
|
|
internal static class LookupResultKindExtensions
|
|
{
|
|
public static CandidateReason ToCandidateReason(this LookupResultKind resultKind)
|
|
{
|
|
return (CandidateReason)(resultKind switch
|
|
{
|
|
LookupResultKind.Empty => 0,
|
|
LookupResultKind.NotATypeOrNamespace => 1,
|
|
LookupResultKind.NotAnAttributeType => 4,
|
|
LookupResultKind.WrongArity => 5,
|
|
LookupResultKind.Inaccessible => 8,
|
|
LookupResultKind.NotCreatable => 6,
|
|
LookupResultKind.NotReferencable => 7,
|
|
LookupResultKind.NotAValue => 9,
|
|
LookupResultKind.NotAVariable => 10,
|
|
LookupResultKind.NotInvocable => 11,
|
|
LookupResultKind.StaticInstanceMismatch => 12,
|
|
LookupResultKind.OverloadResolutionFailure => 13,
|
|
LookupResultKind.Ambiguous => 15,
|
|
LookupResultKind.MemberGroup => 16,
|
|
LookupResultKind.Viable => 0,
|
|
_ => throw ExceptionUtilities.UnexpectedValue((object)resultKind),
|
|
});
|
|
}
|
|
|
|
public static LookupResultKind WorseResultKind(this LookupResultKind resultKind1, LookupResultKind resultKind2)
|
|
{
|
|
if (resultKind1 == LookupResultKind.Empty)
|
|
{
|
|
return resultKind2;
|
|
}
|
|
if (resultKind2 == LookupResultKind.Empty)
|
|
{
|
|
return resultKind1;
|
|
}
|
|
if ((int)resultKind1 < (int)resultKind2)
|
|
{
|
|
return resultKind1;
|
|
}
|
|
return resultKind2;
|
|
}
|
|
}
|