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; } }