@@ -21,6 +21,11 @@ public sealed class TypeEqualityComparer : IEqualityComparer<IType>, IEqualityCo
2121 /// </summary>
2222 public static readonly TypeEqualityComparer CaseInsensitive = new TypeEqualityComparer ( SigComparerOptions . CaseInsensitiveAll ) ;
2323
24+ /// <summary>
25+ /// Compares definitions in same module using reference comparison instead of comparing them by name, signature, etc.
26+ /// </summary>
27+ public static readonly TypeEqualityComparer CompareReferenceInSameModule = new TypeEqualityComparer ( SigComparerOptions . ReferenceCompareForMemberDefsInSameModule ) ;
28+
2429 /// <summary>
2530 /// Constructor
2631 /// </summary>
@@ -96,6 +101,11 @@ public sealed class FieldEqualityComparer : IEqualityComparer<IField>, IEquality
96101 /// </summary>
97102 public static readonly FieldEqualityComparer CaseInsensitiveDontCompareDeclaringTypes = new FieldEqualityComparer ( SigComparerOptions . CaseInsensitiveAll ) ;
98103
104+ /// <summary>
105+ /// Compares definitions in same module using reference comparison instead of comparing them by name, signature, etc.
106+ /// </summary>
107+ public static readonly FieldEqualityComparer CompareReferenceInSameModule = new FieldEqualityComparer ( SigComparerOptions . ReferenceCompareForMemberDefsInSameModule ) ;
108+
99109 /// <summary>
100110 /// Constructor
101111 /// </summary>
@@ -147,6 +157,11 @@ public sealed class MethodEqualityComparer : IEqualityComparer<IMethod>, IEquali
147157 /// </summary>
148158 public static readonly MethodEqualityComparer CaseInsensitiveDontCompareDeclaringTypes = new MethodEqualityComparer ( SigComparerOptions . CaseInsensitiveAll ) ;
149159
160+ /// <summary>
161+ /// Compares definitions in same module using reference comparison instead of comparing them by name, signature, etc.
162+ /// </summary>
163+ public static readonly MethodEqualityComparer CompareReferenceInSameModule = new MethodEqualityComparer ( SigComparerOptions . ReferenceCompareForMemberDefsInSameModule ) ;
164+
150165 /// <summary>
151166 /// Constructor
152167 /// </summary>
@@ -210,6 +225,11 @@ public sealed class PropertyEqualityComparer : IEqualityComparer<PropertyDef> {
210225 /// </summary>
211226 public static readonly PropertyEqualityComparer CaseInsensitiveDontCompareDeclaringTypes = new PropertyEqualityComparer ( SigComparerOptions . CaseInsensitiveAll ) ;
212227
228+ /// <summary>
229+ /// Compares definitions in same module using reference comparison instead of comparing them by name, signature, etc.
230+ /// </summary>
231+ public static readonly PropertyEqualityComparer CompareReferenceInSameModule = new PropertyEqualityComparer ( SigComparerOptions . ReferenceCompareForMemberDefsInSameModule ) ;
232+
213233 /// <summary>
214234 /// Constructor
215235 /// </summary>
@@ -249,6 +269,11 @@ public sealed class EventEqualityComparer : IEqualityComparer<EventDef> {
249269 /// </summary>
250270 public static readonly EventEqualityComparer CaseInsensitiveDontCompareDeclaringTypes = new EventEqualityComparer ( SigComparerOptions . CaseInsensitiveAll ) ;
251271
272+ /// <summary>
273+ /// Compares definitions in same module using reference comparison instead of comparing them by name, signature, etc.
274+ /// </summary>
275+ public static readonly EventEqualityComparer CompareReferenceInSameModule = new EventEqualityComparer ( SigComparerOptions . ReferenceCompareForMemberDefsInSameModule ) ;
276+
252277 /// <summary>
253278 /// Constructor
254279 /// </summary>
@@ -487,10 +512,10 @@ public enum SigComparerOptions : uint {
487512 IgnoreMultiDimensionalArrayLowerBoundsAndSizes = 0x800000 ,
488513
489514 /// <summary>
490- /// When comparing MemberDefs in same module, comparing reference only can avoid conflict when members have same signature.
491- /// If this flag is set, these members are compared just like any other members .
515+ /// When comparing MemberDefs in same module, use regular reference comparison instead
516+ /// comparing the signature, name, and other properties .
492517 /// </summary>
493- DisableCompareReferenceOnlyForMemberDefsInSameModule = 0x1000000 ,
518+ ReferenceCompareForMemberDefsInSameModule = 0x1000000 ,
494519 }
495520
496521 /// <summary>
@@ -541,7 +566,7 @@ public struct SigComparer {
541566 bool DontProjectWinMDRefs => ( options & SigComparerOptions . DontProjectWinMDRefs ) != 0 ;
542567 bool DontCheckTypeEquivalence => ( options & SigComparerOptions . DontCheckTypeEquivalence ) != 0 ;
543568 bool IgnoreMultiDimensionalArrayLowerBoundsAndSizes => ( options & SigComparerOptions . IgnoreMultiDimensionalArrayLowerBoundsAndSizes ) != 0 ;
544- bool CompareReferenceOnlyForMemberDefsInSameModule => ( options & SigComparerOptions . DisableCompareReferenceOnlyForMemberDefsInSameModule ) = = 0 ;
569+ bool ReferenceCompareForMemberDefsInSameModule => ( options & SigComparerOptions . ReferenceCompareForMemberDefsInSameModule ) ! = 0 ;
545570
546571 /// <summary>
547572 /// Constructor
@@ -1482,7 +1507,7 @@ public bool Equals(TypeDef a, TypeDef b) {
14821507 return true ;
14831508 if ( a is null || b is null )
14841509 return false ;
1485- if ( CompareReferenceOnlyForMemberDefsInSameModule && InSameModule ( a , b ) )
1510+ if ( ReferenceCompareForMemberDefsInSameModule && InSameModule ( a , b ) )
14861511 return false ;
14871512 if ( ! recursionCounter . Increment ( ) )
14881513 return false ;
@@ -2614,7 +2639,7 @@ public bool Equals(MethodDef a, MethodDef b) {
26142639 return true ;
26152640 if ( a is null || b is null )
26162641 return false ;
2617- if ( CompareReferenceOnlyForMemberDefsInSameModule && InSameModule ( a , b ) )
2642+ if ( ReferenceCompareForMemberDefsInSameModule && InSameModule ( a , b ) )
26182643 return false ;
26192644 if ( ! recursionCounter . Increment ( ) )
26202645 return false ;
@@ -2944,7 +2969,7 @@ public bool Equals(FieldDef a, FieldDef b) {
29442969 return true ;
29452970 if ( a is null || b is null )
29462971 return false ;
2947- if ( CompareReferenceOnlyForMemberDefsInSameModule && InSameModule ( a , b ) )
2972+ if ( ReferenceCompareForMemberDefsInSameModule && InSameModule ( a , b ) )
29482973 return false ;
29492974 if ( ! recursionCounter . Increment ( ) )
29502975 return false ;
@@ -2991,7 +3016,7 @@ public bool Equals(PropertyDef a, PropertyDef b) {
29913016 return true ;
29923017 if ( a is null || b is null )
29933018 return false ;
2994- if ( CompareReferenceOnlyForMemberDefsInSameModule && InSameModule ( a , b ) )
3019+ if ( ReferenceCompareForMemberDefsInSameModule && InSameModule ( a , b ) )
29953020 return false ;
29963021 if ( ! recursionCounter . Increment ( ) )
29973022 return false ;
@@ -3039,7 +3064,7 @@ public bool Equals(EventDef a, EventDef b) {
30393064 return true ;
30403065 if ( a is null || b is null )
30413066 return false ;
3042- if ( CompareReferenceOnlyForMemberDefsInSameModule && InSameModule ( a , b ) )
3067+ if ( ReferenceCompareForMemberDefsInSameModule && InSameModule ( a , b ) )
30433068 return false ;
30443069 if ( ! recursionCounter . Increment ( ) )
30453070 return false ;
0 commit comments