Exemple #1
0
        protected bool Equals(
            TypeSymbol otherType,
            CodeAnalysis.SymbolEqualityComparer equalityComparer
            )
        {
            if (otherType is null)
            {
                return(false);
            }
            else if ((object)otherType == this)
            {
                return(true);
            }

            var compareKind = equalityComparer.CompareKind;

            if (
                NullableAnnotation != otherType.NullableAnnotation &&
                (compareKind & TypeCompareKind.IgnoreNullableModifiersForReferenceTypes) == 0 &&
                (
                    (compareKind & TypeCompareKind.ObliviousNullableModifierMatchesAny) == 0 ||
                    (
                        NullableAnnotation != CodeAnalysis.NullableAnnotation.None &&
                        otherType.NullableAnnotation != CodeAnalysis.NullableAnnotation.None
                    )
                ) &&
                !(UnderlyingTypeSymbol.IsValueType && !UnderlyingTypeSymbol.IsNullableType())
                )
            {
                return(false);
            }

            return(UnderlyingTypeSymbol.Equals(otherType.UnderlyingTypeSymbol, compareKind));
        }
Exemple #2
0
 bool ISymbol.Equals(ISymbol other, CodeAnalysis.SymbolEqualityComparer equalityComparer)
 {
     return(this.Equals(other as Symbol, equalityComparer));
 }
Exemple #3
0
 protected bool Equals(Symbol other, CodeAnalysis.SymbolEqualityComparer equalityComparer)
 {
     return(other is object && UnderlyingSymbol.Equals(other.UnderlyingSymbol, equalityComparer.CompareKind));
 }