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)); }
bool ISymbol.Equals(ISymbol other, CodeAnalysis.SymbolEqualityComparer equalityComparer) { return(this.Equals(other as Symbol, equalityComparer)); }
protected bool Equals(Symbol other, CodeAnalysis.SymbolEqualityComparer equalityComparer) { return(other is object && UnderlyingSymbol.Equals(other.UnderlyingSymbol, equalityComparer.CompareKind)); }