Files
2026-08-27 10:56:38 -06:00

45 lines
1.8 KiB
C#

using System.Collections.Generic;
namespace Microsoft.CodeAnalysis.CSharp.Symbols;
internal sealed class SymbolEqualityComparer : EqualityComparer<Symbol>
{
internal static readonly EqualityComparer<Symbol> ConsiderEverything = new SymbolEqualityComparer((TypeCompareKind)0);
internal static readonly EqualityComparer<Symbol> IgnoringTupleNamesAndNullability = new SymbolEqualityComparer((TypeCompareKind)12);
internal static readonly EqualityComparer<Symbol> IgnoringDynamicTupleNamesAndNullability = new SymbolEqualityComparer((TypeCompareKind)14);
internal static readonly EqualityComparer<Symbol> IgnoringNullable = new SymbolEqualityComparer((TypeCompareKind)8);
internal static readonly EqualityComparer<Symbol> ObliviousNullableModifierMatchesAny = new SymbolEqualityComparer((TypeCompareKind)16);
internal static readonly EqualityComparer<Symbol> AllIgnoreOptions = new SymbolEqualityComparer((TypeCompareKind)63);
internal static readonly EqualityComparer<Symbol> AllIgnoreOptionsPlusNullableWithUnknownMatchesAny = new SymbolEqualityComparer((TypeCompareKind)55);
internal static readonly EqualityComparer<Symbol> CLRSignature = new SymbolEqualityComparer((TypeCompareKind)62);
private readonly TypeCompareKind _comparison;
internal static EqualityComparer<Symbol> IncludeNullability => ConsiderEverything;
private SymbolEqualityComparer(TypeCompareKind comparison)
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
_comparison = comparison;
}
public override int GetHashCode(Symbol obj)
{
return obj?.GetHashCode() ?? 0;
}
public override bool Equals(Symbol x, Symbol y)
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
return x?.Equals(y, _comparison) ?? ((object)y == null);
}
}