Skip to content

Commit 7803b8b

Browse files
committed
ValueObjectEqualityMemberAttribute is obsolete because we have ValueObjectMemberEqualityComparerAttribute
1 parent 7024155 commit 7803b8b

File tree

3 files changed

+15
-21
lines changed

3 files changed

+15
-21
lines changed

src/Thinktecture.Runtime.Extensions.SourceGenerator/CodeAnalysis/ValueObjects/ValueObjectMemberSettings.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,10 @@ private ValueObjectMemberSettings(
4040

4141
public static ValueObjectMemberSettings Create(ISymbol member, ITypeSymbol type)
4242
{
43-
var equalityMemberAttr = member.FindAttribute(static type => type.Name == "ValueObjectEqualityMemberAttribute" && type.ContainingNamespace is { Name: "Thinktecture", ContainingNamespace.IsGlobalNamespace: true });
4443
var equalityComparerAttr = member.FindAttribute(static type => type.Name == "ValueObjectMemberEqualityComparerAttribute" && type.ContainingNamespace is { Name: "Thinktecture", ContainingNamespace.IsGlobalNamespace: true });
4544
var comparerAttr = member.FindAttribute(static type => type.Name == "ValueObjectMemberComparerAttribute" && type.ContainingNamespace is { Name: "Thinktecture", ContainingNamespace.IsGlobalNamespace: true });
4645

47-
if (equalityMemberAttr is null && equalityComparerAttr is null && comparerAttr is null)
46+
if (equalityComparerAttr is null && comparerAttr is null)
4847
return None;
4948

5049
var equalityComparerGenericTypes = equalityComparerAttr?.GetComparerTypes();

src/Thinktecture.Runtime.Extensions/ValueObjectEqualityMemberAttribute.cs

Lines changed: 0 additions & 9 deletions
This file was deleted.

test/Thinktecture.Runtime.Extensions.SourceGenerator.Tests/SourceGeneratorTests/ValueObjectSourceGeneratorTests.cs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4173,7 +4173,7 @@ public static bool TryParse(string? s, global::System.IFormatProvider? provider,
41734173
}
41744174

41754175
[Fact]
4176-
public void Should_generate_IComperable_if_member_is_not_IComperable_but_has_custom_comparer()
4176+
public void Should_generate_IComparable_if_member_is_not_IComparable_but_has_custom_comparer()
41774177
{
41784178
var source = @"
41794179
using System;
@@ -4184,7 +4184,7 @@ namespace Thinktecture.Tests
41844184
[ValueObject]
41854185
public partial class TestValueObject
41864186
{
4187-
[ValueObjectEqualityMember(Comparer = ""Comparer<Foo>.Default"")]
4187+
[ValueObjectMemberEqualityComparer<ComparerAccessors.Default<Foo>, Foo>]
41884188
public readonly Foo ReferenceField;
41894189
}
41904190
@@ -4354,13 +4354,15 @@ public bool Equals(global::Thinktecture.Tests.TestValueObject? other)
43544354
if (global::System.Object.ReferenceEquals(this, other))
43554355
return true;
43564356
4357-
return (this.ReferenceField is null ? other.ReferenceField is null : this.ReferenceField.Equals(other.ReferenceField));
4357+
return global::Thinktecture.ComparerAccessors.Default<global::Thinktecture.Tests.Foo>.EqualityComparer.Equals(this.ReferenceField, other.ReferenceField);
43584358
}
43594359
43604360
/// <inheritdoc />
43614361
public override int GetHashCode()
43624362
{
4363-
return global::System.HashCode.Combine(this.ReferenceField);
4363+
var hashCode = new global::System.HashCode();
4364+
hashCode.Add(this.ReferenceField, global::Thinktecture.ComparerAccessors.Default<global::Thinktecture.Tests.Foo>.EqualityComparer);
4365+
return hashCode.ToHashCode();
43644366
}
43654367
43664368
/// <inheritdoc />
@@ -4386,10 +4388,10 @@ namespace Thinktecture.Tests
43864388
[ValueObject]
43874389
public partial class TestValueObject
43884390
{
4389-
[ValueObjectEqualityMember(EqualityComparer = nameof(StringComparer.OrdinalIgnoreCase))]
4391+
[ValueObjectMemberEqualityComparer<ComparerAccessors.StringOrdinalIgnoreCase, string>]
43904392
public readonly string ReferenceField;
43914393
4392-
[ValueObjectEqualityMember]
4394+
[ValueObjectMemberEqualityComparer<ComparerAccessors.Default<int>, int>]
43934395
public readonly int StructField;
43944396
43954397
public string ReferenceProperty { get; }
@@ -4551,15 +4553,17 @@ public bool Equals(global::Thinktecture.Tests.TestValueObject? other)
45514553
if (global::System.Object.ReferenceEquals(this, other))
45524554
return true;
45534555
4554-
return (this.ReferenceField is null ? other.ReferenceField is null : this.ReferenceField.Equals(other.ReferenceField))
4555-
&& this.StructField.Equals(other.StructField);
4556+
return global::Thinktecture.ComparerAccessors.StringOrdinalIgnoreCase.EqualityComparer.Equals(this.ReferenceField, other.ReferenceField)
4557+
&& global::Thinktecture.ComparerAccessors.Default<int>.EqualityComparer.Equals(this.StructField, other.StructField);
45564558
}
45574559
45584560
/// <inheritdoc />
45594561
public override int GetHashCode()
45604562
{
4561-
return global::System.HashCode.Combine(this.ReferenceField,
4562-
this.StructField);
4563+
var hashCode = new global::System.HashCode();
4564+
hashCode.Add(this.ReferenceField, global::Thinktecture.ComparerAccessors.StringOrdinalIgnoreCase.EqualityComparer);
4565+
hashCode.Add(this.StructField, global::Thinktecture.ComparerAccessors.Default<int>.EqualityComparer);
4566+
return hashCode.ToHashCode();
45634567
}
45644568
45654569
/// <inheritdoc />

0 commit comments

Comments
 (0)