diff --git a/Generator.Equals.SnapshotTests/Classes/BaseEquality.00Generator.Equals.Tests.Classes.BaseEquality.Manager.Generator.Equals.g.verified.cs b/Generator.Equals.SnapshotTests/Classes/BaseEquality.00Generator.Equals.Tests.Classes.BaseEquality.Manager.Generator.Equals.g.verified.cs new file mode 100644 index 0000000..2338ccb --- /dev/null +++ b/Generator.Equals.SnapshotTests/Classes/BaseEquality.00Generator.Equals.Tests.Classes.BaseEquality.Manager.Generator.Equals.g.verified.cs @@ -0,0 +1,66 @@ +//HintName: Generator.Equals.Tests.Classes.BaseEquality.Manager.Generator.Equals.g.cs + +#nullable enable +#pragma warning disable CS0612,CS0618 + +namespace Generator.Equals.Tests.Classes +{ + partial class BaseEquality + { + partial class Manager : global::System.IEquatable + { + /// + /// Indicates whether the object on the left is equal to the object on the right. + /// + /// The left object + /// The right object + /// true if the objects are equal; otherwise, false. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public static bool operator ==( + global::Generator.Equals.Tests.Classes.BaseEquality.Manager? left, + global::Generator.Equals.Tests.Classes.BaseEquality.Manager? right) => + global::Generator.Equals.DefaultEqualityComparer.Default + .Equals(left, right); + + /// + /// Indicates whether the object on the left is not equal to the object on the right. + /// + /// The left object + /// The right object + /// true if the objects are not equal; otherwise, false. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public static bool operator !=(global::Generator.Equals.Tests.Classes.BaseEquality.Manager? left, global::Generator.Equals.Tests.Classes.BaseEquality.Manager? right) => + !(left == right); + + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public override bool Equals(object? obj) + { + var other = obj as global::Generator.Equals.Tests.Classes.BaseEquality.Manager; + return + !ReferenceEquals(other, null) && base.Equals(obj) + && global::Generator.Equals.DefaultEqualityComparer.Default.Equals(this.Department!, other.Department!) + ; + } + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public bool Equals(global::Generator.Equals.Tests.Classes.BaseEquality.Manager? other) => + Equals((object?) other); + + + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public override int GetHashCode() + { + var hashCode = new global::System.HashCode(); + + hashCode.Add(base.GetHashCode()); + hashCode.Add( + this.Department!, + global::Generator.Equals.DefaultEqualityComparer.Default); + + return hashCode.ToHashCode(); + } + } + } +} diff --git a/Generator.Equals.SnapshotTests/Classes/BaseEquality.01Generator.Equals.Tests.Classes.BaseEquality.Person.Generator.Equals.g.verified.cs b/Generator.Equals.SnapshotTests/Classes/BaseEquality.01Generator.Equals.Tests.Classes.BaseEquality.Person.Generator.Equals.g.verified.cs new file mode 100644 index 0000000..c0df4b4 --- /dev/null +++ b/Generator.Equals.SnapshotTests/Classes/BaseEquality.01Generator.Equals.Tests.Classes.BaseEquality.Person.Generator.Equals.g.verified.cs @@ -0,0 +1,66 @@ +//HintName: Generator.Equals.Tests.Classes.BaseEquality.Person.Generator.Equals.g.cs + +#nullable enable +#pragma warning disable CS0612,CS0618 + +namespace Generator.Equals.Tests.Classes +{ + partial class BaseEquality + { + partial class Person : global::System.IEquatable + { + /// + /// Indicates whether the object on the left is equal to the object on the right. + /// + /// The left object + /// The right object + /// true if the objects are equal; otherwise, false. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public static bool operator ==( + global::Generator.Equals.Tests.Classes.BaseEquality.Person? left, + global::Generator.Equals.Tests.Classes.BaseEquality.Person? right) => + global::Generator.Equals.DefaultEqualityComparer.Default + .Equals(left, right); + + /// + /// Indicates whether the object on the left is not equal to the object on the right. + /// + /// The left object + /// The right object + /// true if the objects are not equal; otherwise, false. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public static bool operator !=(global::Generator.Equals.Tests.Classes.BaseEquality.Person? left, global::Generator.Equals.Tests.Classes.BaseEquality.Person? right) => + !(left == right); + + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public override bool Equals(object? obj) + { + var other = obj as global::Generator.Equals.Tests.Classes.BaseEquality.Person; + return + !ReferenceEquals(other, null) && this.GetType() == other.GetType() + && global::Generator.Equals.DefaultEqualityComparer.Default.Equals(this.Age!, other.Age!) + ; + } + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public bool Equals(global::Generator.Equals.Tests.Classes.BaseEquality.Person? other) => + Equals((object?) other); + + + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public override int GetHashCode() + { + var hashCode = new global::System.HashCode(); + + hashCode.Add(this.GetType()); + hashCode.Add( + this.Age!, + global::Generator.Equals.DefaultEqualityComparer.Default); + + return hashCode.ToHashCode(); + } + } + } +} diff --git a/Generator.Equals.SnapshotTests/Classes/BaseEquality.Diagnostics.verified.txt b/Generator.Equals.SnapshotTests/Classes/BaseEquality.Diagnostics.verified.txt new file mode 100644 index 0000000..ad47dbb --- /dev/null +++ b/Generator.Equals.SnapshotTests/Classes/BaseEquality.Diagnostics.verified.txt @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/Generator.Equals.SnapshotTests/Classes/BaseEquality.DotNet6_0.00Generator.Equals.Tests.Classes.BaseEquality.Manager.Generator.Equals.g.received.cs b/Generator.Equals.SnapshotTests/Classes/BaseEquality.DotNet6_0.00Generator.Equals.Tests.Classes.BaseEquality.Manager.Generator.Equals.g.received.cs new file mode 100644 index 0000000..2338ccb --- /dev/null +++ b/Generator.Equals.SnapshotTests/Classes/BaseEquality.DotNet6_0.00Generator.Equals.Tests.Classes.BaseEquality.Manager.Generator.Equals.g.received.cs @@ -0,0 +1,66 @@ +//HintName: Generator.Equals.Tests.Classes.BaseEquality.Manager.Generator.Equals.g.cs + +#nullable enable +#pragma warning disable CS0612,CS0618 + +namespace Generator.Equals.Tests.Classes +{ + partial class BaseEquality + { + partial class Manager : global::System.IEquatable + { + /// + /// Indicates whether the object on the left is equal to the object on the right. + /// + /// The left object + /// The right object + /// true if the objects are equal; otherwise, false. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public static bool operator ==( + global::Generator.Equals.Tests.Classes.BaseEquality.Manager? left, + global::Generator.Equals.Tests.Classes.BaseEquality.Manager? right) => + global::Generator.Equals.DefaultEqualityComparer.Default + .Equals(left, right); + + /// + /// Indicates whether the object on the left is not equal to the object on the right. + /// + /// The left object + /// The right object + /// true if the objects are not equal; otherwise, false. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public static bool operator !=(global::Generator.Equals.Tests.Classes.BaseEquality.Manager? left, global::Generator.Equals.Tests.Classes.BaseEquality.Manager? right) => + !(left == right); + + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public override bool Equals(object? obj) + { + var other = obj as global::Generator.Equals.Tests.Classes.BaseEquality.Manager; + return + !ReferenceEquals(other, null) && base.Equals(obj) + && global::Generator.Equals.DefaultEqualityComparer.Default.Equals(this.Department!, other.Department!) + ; + } + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public bool Equals(global::Generator.Equals.Tests.Classes.BaseEquality.Manager? other) => + Equals((object?) other); + + + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public override int GetHashCode() + { + var hashCode = new global::System.HashCode(); + + hashCode.Add(base.GetHashCode()); + hashCode.Add( + this.Department!, + global::Generator.Equals.DefaultEqualityComparer.Default); + + return hashCode.ToHashCode(); + } + } + } +} diff --git a/Generator.Equals.SnapshotTests/Classes/BaseEquality.DotNet6_0.01Generator.Equals.Tests.Classes.BaseEquality.Person.Generator.Equals.g.received.cs b/Generator.Equals.SnapshotTests/Classes/BaseEquality.DotNet6_0.01Generator.Equals.Tests.Classes.BaseEquality.Person.Generator.Equals.g.received.cs new file mode 100644 index 0000000..c0df4b4 --- /dev/null +++ b/Generator.Equals.SnapshotTests/Classes/BaseEquality.DotNet6_0.01Generator.Equals.Tests.Classes.BaseEquality.Person.Generator.Equals.g.received.cs @@ -0,0 +1,66 @@ +//HintName: Generator.Equals.Tests.Classes.BaseEquality.Person.Generator.Equals.g.cs + +#nullable enable +#pragma warning disable CS0612,CS0618 + +namespace Generator.Equals.Tests.Classes +{ + partial class BaseEquality + { + partial class Person : global::System.IEquatable + { + /// + /// Indicates whether the object on the left is equal to the object on the right. + /// + /// The left object + /// The right object + /// true if the objects are equal; otherwise, false. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public static bool operator ==( + global::Generator.Equals.Tests.Classes.BaseEquality.Person? left, + global::Generator.Equals.Tests.Classes.BaseEquality.Person? right) => + global::Generator.Equals.DefaultEqualityComparer.Default + .Equals(left, right); + + /// + /// Indicates whether the object on the left is not equal to the object on the right. + /// + /// The left object + /// The right object + /// true if the objects are not equal; otherwise, false. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public static bool operator !=(global::Generator.Equals.Tests.Classes.BaseEquality.Person? left, global::Generator.Equals.Tests.Classes.BaseEquality.Person? right) => + !(left == right); + + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public override bool Equals(object? obj) + { + var other = obj as global::Generator.Equals.Tests.Classes.BaseEquality.Person; + return + !ReferenceEquals(other, null) && this.GetType() == other.GetType() + && global::Generator.Equals.DefaultEqualityComparer.Default.Equals(this.Age!, other.Age!) + ; + } + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public bool Equals(global::Generator.Equals.Tests.Classes.BaseEquality.Person? other) => + Equals((object?) other); + + + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public override int GetHashCode() + { + var hashCode = new global::System.HashCode(); + + hashCode.Add(this.GetType()); + hashCode.Add( + this.Age!, + global::Generator.Equals.DefaultEqualityComparer.Default); + + return hashCode.ToHashCode(); + } + } + } +} diff --git a/Generator.Equals.SnapshotTests/Classes/CustomEquality.verified.cs b/Generator.Equals.SnapshotTests/Classes/CustomEquality.verified.cs index da9f007..e7ecaa2 100644 --- a/Generator.Equals.SnapshotTests/Classes/CustomEquality.verified.cs +++ b/Generator.Equals.SnapshotTests/Classes/CustomEquality.verified.cs @@ -34,13 +34,9 @@ partial class Sample : global::System.IEquatable /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public override bool Equals(object? obj) => - Equals(obj as global::Generator.Equals.Tests.Classes.CustomEquality.Sample); - - /// - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public bool Equals(global::Generator.Equals.Tests.Classes.CustomEquality.Sample? other) + public override bool Equals(object? obj) { + var other = obj as global::Generator.Equals.Tests.Classes.CustomEquality.Sample; return !ReferenceEquals(other, null) && this.GetType() == other.GetType() && global::Generator.Equals.Tests.Classes.CustomEquality.Comparer1.Default.Equals(this.Name1!, other.Name1!) @@ -48,6 +44,11 @@ public bool Equals(global::Generator.Equals.Tests.Classes.CustomEquality.Sample? && new global::Generator.Equals.Tests.Classes.CustomEquality.LengthEqualityComparer().Equals(this.Name3!, other.Name3!) ; } + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public bool Equals(global::Generator.Equals.Tests.Classes.CustomEquality.Sample? other) => + Equals((object?) other); + /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] diff --git a/Generator.Equals.SnapshotTests/Classes/DeepEquality.00Generator.Equals.Tests.Classes.DeepEquality.Manager.Generator.Equals.g.verified.cs b/Generator.Equals.SnapshotTests/Classes/DeepEquality.00Generator.Equals.Tests.Classes.DeepEquality.Manager.Generator.Equals.g.verified.cs index 090c1de..5f9b375 100644 --- a/Generator.Equals.SnapshotTests/Classes/DeepEquality.00Generator.Equals.Tests.Classes.DeepEquality.Manager.Generator.Equals.g.verified.cs +++ b/Generator.Equals.SnapshotTests/Classes/DeepEquality.00Generator.Equals.Tests.Classes.DeepEquality.Manager.Generator.Equals.g.verified.cs @@ -34,18 +34,19 @@ partial class Manager : global::System.IEquatable /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public override bool Equals(object? obj) => - Equals(obj as global::Generator.Equals.Tests.Classes.DeepEquality.Manager); - - /// - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public bool Equals(global::Generator.Equals.Tests.Classes.DeepEquality.Manager? other) + public override bool Equals(object? obj) { + var other = obj as global::Generator.Equals.Tests.Classes.DeepEquality.Manager; return - base.Equals(other as global::Generator.Equals.Tests.Classes.DeepEquality.Person) + !ReferenceEquals(other, null) && base.Equals(obj) && global::Generator.Equals.DefaultEqualityComparer.Default.Equals(this.Department!, other.Department!) ; } + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public bool Equals(global::Generator.Equals.Tests.Classes.DeepEquality.Manager? other) => + Equals((object?) other); + /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] diff --git a/Generator.Equals.SnapshotTests/Classes/DeepEquality.01Generator.Equals.Tests.Classes.DeepEquality.Person.Generator.Equals.g.verified.cs b/Generator.Equals.SnapshotTests/Classes/DeepEquality.01Generator.Equals.Tests.Classes.DeepEquality.Person.Generator.Equals.g.verified.cs index f3a0812..ae095e8 100644 --- a/Generator.Equals.SnapshotTests/Classes/DeepEquality.01Generator.Equals.Tests.Classes.DeepEquality.Person.Generator.Equals.g.verified.cs +++ b/Generator.Equals.SnapshotTests/Classes/DeepEquality.01Generator.Equals.Tests.Classes.DeepEquality.Person.Generator.Equals.g.verified.cs @@ -34,18 +34,19 @@ partial class Person : global::System.IEquatable /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public override bool Equals(object? obj) => - Equals(obj as global::Generator.Equals.Tests.Classes.DeepEquality.Person); - - /// - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public bool Equals(global::Generator.Equals.Tests.Classes.DeepEquality.Person? other) + public override bool Equals(object? obj) { + var other = obj as global::Generator.Equals.Tests.Classes.DeepEquality.Person; return !ReferenceEquals(other, null) && this.GetType() == other.GetType() && global::Generator.Equals.DefaultEqualityComparer.Default.Equals(this.Age!, other.Age!) ; } + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public bool Equals(global::Generator.Equals.Tests.Classes.DeepEquality.Person? other) => + Equals((object?) other); + /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] diff --git a/Generator.Equals.SnapshotTests/Classes/DeepEquality.02Generator.Equals.Tests.Classes.DeepEquality.Sample.Generator.Equals.g.verified.cs b/Generator.Equals.SnapshotTests/Classes/DeepEquality.02Generator.Equals.Tests.Classes.DeepEquality.Sample.Generator.Equals.g.verified.cs index 31156ac..f38a463 100644 --- a/Generator.Equals.SnapshotTests/Classes/DeepEquality.02Generator.Equals.Tests.Classes.DeepEquality.Sample.Generator.Equals.g.verified.cs +++ b/Generator.Equals.SnapshotTests/Classes/DeepEquality.02Generator.Equals.Tests.Classes.DeepEquality.Sample.Generator.Equals.g.verified.cs @@ -34,18 +34,19 @@ partial class Sample : global::System.IEquatable /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public override bool Equals(object? obj) => - Equals(obj as global::Generator.Equals.Tests.Classes.DeepEquality.Sample); - - /// - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public bool Equals(global::Generator.Equals.Tests.Classes.DeepEquality.Sample? other) + public override bool Equals(object? obj) { + var other = obj as global::Generator.Equals.Tests.Classes.DeepEquality.Sample; return !ReferenceEquals(other, null) && this.GetType() == other.GetType() && global::Generator.Equals.DefaultEqualityComparer.Default.Equals(this.Person!, other.Person!) ; } + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public bool Equals(global::Generator.Equals.Tests.Classes.DeepEquality.Sample? other) => + Equals((object?) other); + /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] diff --git a/Generator.Equals.SnapshotTests/Classes/DeepEquality.DotNet6_0.00Generator.Equals.Tests.Classes.DeepEquality.Manager.Generator.Equals.g.received.cs b/Generator.Equals.SnapshotTests/Classes/DeepEquality.DotNet6_0.00Generator.Equals.Tests.Classes.DeepEquality.Manager.Generator.Equals.g.received.cs index 090c1de..5f9b375 100644 --- a/Generator.Equals.SnapshotTests/Classes/DeepEquality.DotNet6_0.00Generator.Equals.Tests.Classes.DeepEquality.Manager.Generator.Equals.g.received.cs +++ b/Generator.Equals.SnapshotTests/Classes/DeepEquality.DotNet6_0.00Generator.Equals.Tests.Classes.DeepEquality.Manager.Generator.Equals.g.received.cs @@ -34,18 +34,19 @@ partial class Manager : global::System.IEquatable /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public override bool Equals(object? obj) => - Equals(obj as global::Generator.Equals.Tests.Classes.DeepEquality.Manager); - - /// - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public bool Equals(global::Generator.Equals.Tests.Classes.DeepEquality.Manager? other) + public override bool Equals(object? obj) { + var other = obj as global::Generator.Equals.Tests.Classes.DeepEquality.Manager; return - base.Equals(other as global::Generator.Equals.Tests.Classes.DeepEquality.Person) + !ReferenceEquals(other, null) && base.Equals(obj) && global::Generator.Equals.DefaultEqualityComparer.Default.Equals(this.Department!, other.Department!) ; } + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public bool Equals(global::Generator.Equals.Tests.Classes.DeepEquality.Manager? other) => + Equals((object?) other); + /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] diff --git a/Generator.Equals.SnapshotTests/Classes/DeepEquality.DotNet6_0.01Generator.Equals.Tests.Classes.DeepEquality.Person.Generator.Equals.g.received.cs b/Generator.Equals.SnapshotTests/Classes/DeepEquality.DotNet6_0.01Generator.Equals.Tests.Classes.DeepEquality.Person.Generator.Equals.g.received.cs index f3a0812..ae095e8 100644 --- a/Generator.Equals.SnapshotTests/Classes/DeepEquality.DotNet6_0.01Generator.Equals.Tests.Classes.DeepEquality.Person.Generator.Equals.g.received.cs +++ b/Generator.Equals.SnapshotTests/Classes/DeepEquality.DotNet6_0.01Generator.Equals.Tests.Classes.DeepEquality.Person.Generator.Equals.g.received.cs @@ -34,18 +34,19 @@ partial class Person : global::System.IEquatable /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public override bool Equals(object? obj) => - Equals(obj as global::Generator.Equals.Tests.Classes.DeepEquality.Person); - - /// - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public bool Equals(global::Generator.Equals.Tests.Classes.DeepEquality.Person? other) + public override bool Equals(object? obj) { + var other = obj as global::Generator.Equals.Tests.Classes.DeepEquality.Person; return !ReferenceEquals(other, null) && this.GetType() == other.GetType() && global::Generator.Equals.DefaultEqualityComparer.Default.Equals(this.Age!, other.Age!) ; } + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public bool Equals(global::Generator.Equals.Tests.Classes.DeepEquality.Person? other) => + Equals((object?) other); + /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] diff --git a/Generator.Equals.SnapshotTests/Classes/DeepEquality.DotNet6_0.02Generator.Equals.Tests.Classes.DeepEquality.Sample.Generator.Equals.g.received.cs b/Generator.Equals.SnapshotTests/Classes/DeepEquality.DotNet6_0.02Generator.Equals.Tests.Classes.DeepEquality.Sample.Generator.Equals.g.received.cs index 31156ac..f38a463 100644 --- a/Generator.Equals.SnapshotTests/Classes/DeepEquality.DotNet6_0.02Generator.Equals.Tests.Classes.DeepEquality.Sample.Generator.Equals.g.received.cs +++ b/Generator.Equals.SnapshotTests/Classes/DeepEquality.DotNet6_0.02Generator.Equals.Tests.Classes.DeepEquality.Sample.Generator.Equals.g.received.cs @@ -34,18 +34,19 @@ partial class Sample : global::System.IEquatable /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public override bool Equals(object? obj) => - Equals(obj as global::Generator.Equals.Tests.Classes.DeepEquality.Sample); - - /// - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public bool Equals(global::Generator.Equals.Tests.Classes.DeepEquality.Sample? other) + public override bool Equals(object? obj) { + var other = obj as global::Generator.Equals.Tests.Classes.DeepEquality.Sample; return !ReferenceEquals(other, null) && this.GetType() == other.GetType() && global::Generator.Equals.DefaultEqualityComparer.Default.Equals(this.Person!, other.Person!) ; } + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public bool Equals(global::Generator.Equals.Tests.Classes.DeepEquality.Sample? other) => + Equals((object?) other); + /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] diff --git a/Generator.Equals.SnapshotTests/Classes/DictionaryEquality.verified.cs b/Generator.Equals.SnapshotTests/Classes/DictionaryEquality.verified.cs index 9bc89f3..540046a 100644 --- a/Generator.Equals.SnapshotTests/Classes/DictionaryEquality.verified.cs +++ b/Generator.Equals.SnapshotTests/Classes/DictionaryEquality.verified.cs @@ -34,18 +34,19 @@ partial class Sample : global::System.IEquatable /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public override bool Equals(object? obj) => - Equals(obj as global::Generator.Equals.Tests.Classes.DictionaryEquality.Sample); - - /// - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public bool Equals(global::Generator.Equals.Tests.Classes.DictionaryEquality.Sample? other) + public override bool Equals(object? obj) { + var other = obj as global::Generator.Equals.Tests.Classes.DictionaryEquality.Sample; return !ReferenceEquals(other, null) && this.GetType() == other.GetType() && global::Generator.Equals.DictionaryEqualityComparer.Default.Equals(this.Properties!, other.Properties!) ; } + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public bool Equals(global::Generator.Equals.Tests.Classes.DictionaryEquality.Sample? other) => + Equals((object?) other); + /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] diff --git a/Generator.Equals.SnapshotTests/Classes/ExplicitMode.verified.cs b/Generator.Equals.SnapshotTests/Classes/ExplicitMode.verified.cs index 48eca62..f675958 100644 --- a/Generator.Equals.SnapshotTests/Classes/ExplicitMode.verified.cs +++ b/Generator.Equals.SnapshotTests/Classes/ExplicitMode.verified.cs @@ -34,18 +34,19 @@ partial class Sample : global::System.IEquatable /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public override bool Equals(object? obj) => - Equals(obj as global::Generator.Equals.Tests.Classes.ExplicitMode.Sample); - - /// - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public bool Equals(global::Generator.Equals.Tests.Classes.ExplicitMode.Sample? other) + public override bool Equals(object? obj) { + var other = obj as global::Generator.Equals.Tests.Classes.ExplicitMode.Sample; return !ReferenceEquals(other, null) && this.GetType() == other.GetType() && global::Generator.Equals.DefaultEqualityComparer.Default.Equals(this.Age!, other.Age!) ; } + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public bool Equals(global::Generator.Equals.Tests.Classes.ExplicitMode.Sample? other) => + Equals((object?) other); + /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] diff --git a/Generator.Equals.SnapshotTests/Classes/FieldEquality.verified.cs b/Generator.Equals.SnapshotTests/Classes/FieldEquality.verified.cs index d4c6cea..9ee8417 100644 --- a/Generator.Equals.SnapshotTests/Classes/FieldEquality.verified.cs +++ b/Generator.Equals.SnapshotTests/Classes/FieldEquality.verified.cs @@ -34,18 +34,19 @@ partial class Sample : global::System.IEquatable /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public override bool Equals(object? obj) => - Equals(obj as global::Generator.Equals.Tests.Classes.FieldEquality.Sample); - - /// - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public bool Equals(global::Generator.Equals.Tests.Classes.FieldEquality.Sample? other) + public override bool Equals(object? obj) { + var other = obj as global::Generator.Equals.Tests.Classes.FieldEquality.Sample; return !ReferenceEquals(other, null) && this.GetType() == other.GetType() && global::Generator.Equals.OrderedEqualityComparer.Default.Equals(this._addresses!, other._addresses!) ; } + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public bool Equals(global::Generator.Equals.Tests.Classes.FieldEquality.Sample? other) => + Equals((object?) other); + /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] diff --git a/Generator.Equals.SnapshotTests/Classes/GenericParameterEquality.verified.cs b/Generator.Equals.SnapshotTests/Classes/GenericParameterEquality.verified.cs index a115001..969504d 100644 --- a/Generator.Equals.SnapshotTests/Classes/GenericParameterEquality.verified.cs +++ b/Generator.Equals.SnapshotTests/Classes/GenericParameterEquality.verified.cs @@ -34,19 +34,20 @@ partial class Sample : global::System.IEquatable [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public override bool Equals(object? obj) => - Equals(obj as global::Generator.Equals.Tests.Classes.GenericParameterEquality.Sample); - - /// - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public bool Equals(global::Generator.Equals.Tests.Classes.GenericParameterEquality.Sample? other) + public override bool Equals(object? obj) { + var other = obj as global::Generator.Equals.Tests.Classes.GenericParameterEquality.Sample; return !ReferenceEquals(other, null) && this.GetType() == other.GetType() && global::Generator.Equals.DefaultEqualityComparer.Default.Equals(this.Name!, other.Name!) && global::Generator.Equals.DefaultEqualityComparer.Default.Equals(this.Age!, other.Age!) ; } + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public bool Equals(global::Generator.Equals.Tests.Classes.GenericParameterEquality.Sample? other) => + Equals((object?) other); + /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] diff --git a/Generator.Equals.SnapshotTests/Classes/IgnoreEquality.verified.cs b/Generator.Equals.SnapshotTests/Classes/IgnoreEquality.verified.cs index e866913..7e47c72 100644 --- a/Generator.Equals.SnapshotTests/Classes/IgnoreEquality.verified.cs +++ b/Generator.Equals.SnapshotTests/Classes/IgnoreEquality.verified.cs @@ -34,18 +34,19 @@ partial class Sample : global::System.IEquatable /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public override bool Equals(object? obj) => - Equals(obj as global::Generator.Equals.Tests.Classes.IgnoreEquality.Sample); - - /// - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public bool Equals(global::Generator.Equals.Tests.Classes.IgnoreEquality.Sample? other) + public override bool Equals(object? obj) { + var other = obj as global::Generator.Equals.Tests.Classes.IgnoreEquality.Sample; return !ReferenceEquals(other, null) && this.GetType() == other.GetType() && global::Generator.Equals.DefaultEqualityComparer.Default.Equals(this.Name!, other.Name!) ; } + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public bool Equals(global::Generator.Equals.Tests.Classes.IgnoreEquality.Sample? other) => + Equals((object?) other); + /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] diff --git a/Generator.Equals.SnapshotTests/Classes/IgnoreInheritedMembers.verified.cs b/Generator.Equals.SnapshotTests/Classes/IgnoreInheritedMembers.verified.cs index 9b634a5..64090e1 100644 --- a/Generator.Equals.SnapshotTests/Classes/IgnoreInheritedMembers.verified.cs +++ b/Generator.Equals.SnapshotTests/Classes/IgnoreInheritedMembers.verified.cs @@ -34,18 +34,19 @@ partial class Sample : global::System.IEquatable /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public override bool Equals(object? obj) => - Equals(obj as global::Generator.Equals.Tests.Classes.IgnoreInheritedMembers.Sample); - - /// - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public bool Equals(global::Generator.Equals.Tests.Classes.IgnoreInheritedMembers.Sample? other) + public override bool Equals(object? obj) { + var other = obj as global::Generator.Equals.Tests.Classes.IgnoreInheritedMembers.Sample; return !ReferenceEquals(other, null) && this.GetType() == other.GetType() && global::Generator.Equals.DefaultEqualityComparer.Default.Equals(this.Age!, other.Age!) ; } + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public bool Equals(global::Generator.Equals.Tests.Classes.IgnoreInheritedMembers.Sample? other) => + Equals((object?) other); + /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] diff --git a/Generator.Equals.SnapshotTests/Classes/MultiplePartialsEquality.verified.cs b/Generator.Equals.SnapshotTests/Classes/MultiplePartialsEquality.verified.cs index 4bf7ba0..502fd59 100644 --- a/Generator.Equals.SnapshotTests/Classes/MultiplePartialsEquality.verified.cs +++ b/Generator.Equals.SnapshotTests/Classes/MultiplePartialsEquality.verified.cs @@ -34,13 +34,9 @@ partial class Sample : global::System.IEquatable /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public override bool Equals(object? obj) => - Equals(obj as global::Generator.Equals.Tests.Classes.MultiplePartialsEquality.Sample); - - /// - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public bool Equals(global::Generator.Equals.Tests.Classes.MultiplePartialsEquality.Sample? other) + public override bool Equals(object? obj) { + var other = obj as global::Generator.Equals.Tests.Classes.MultiplePartialsEquality.Sample; return !ReferenceEquals(other, null) && this.GetType() == other.GetType() && global::Generator.Equals.OrderedEqualityComparer.Default.Equals(this.Addresses!, other.Addresses!) @@ -48,6 +44,11 @@ public bool Equals(global::Generator.Equals.Tests.Classes.MultiplePartialsEquali && global::Generator.Equals.DefaultEqualityComparer.Default.Equals(this.LastName!, other.LastName!) ; } + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public bool Equals(global::Generator.Equals.Tests.Classes.MultiplePartialsEquality.Sample? other) => + Equals((object?) other); + /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] diff --git a/Generator.Equals.SnapshotTests/Classes/NonSupportedMembers.verified.cs b/Generator.Equals.SnapshotTests/Classes/NonSupportedMembers.verified.cs index 0af04d0..af50b1b 100644 --- a/Generator.Equals.SnapshotTests/Classes/NonSupportedMembers.verified.cs +++ b/Generator.Equals.SnapshotTests/Classes/NonSupportedMembers.verified.cs @@ -34,18 +34,19 @@ partial class Sample : global::System.IEquatable /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public override bool Equals(object? obj) => - Equals(obj as global::Generator.Equals.Tests.Classes.NonSupportedMembers.Sample); - - /// - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public bool Equals(global::Generator.Equals.Tests.Classes.NonSupportedMembers.Sample? other) + public override bool Equals(object? obj) { + var other = obj as global::Generator.Equals.Tests.Classes.NonSupportedMembers.Sample; return !ReferenceEquals(other, null) && this.GetType() == other.GetType() && global::Generator.Equals.DefaultEqualityComparer.Default.Equals(this.Name!, other.Name!) ; } + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public bool Equals(global::Generator.Equals.Tests.Classes.NonSupportedMembers.Sample? other) => + Equals((object?) other); + /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] diff --git a/Generator.Equals.SnapshotTests/Classes/NullableEquality.verified.cs b/Generator.Equals.SnapshotTests/Classes/NullableEquality.verified.cs index 5e779c7..7abdb21 100644 --- a/Generator.Equals.SnapshotTests/Classes/NullableEquality.verified.cs +++ b/Generator.Equals.SnapshotTests/Classes/NullableEquality.verified.cs @@ -34,18 +34,19 @@ partial class Sample : global::System.IEquatable /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public override bool Equals(object? obj) => - Equals(obj as global::Generator.Equals.Tests.Classes.NullableEquality.Sample); - - /// - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public bool Equals(global::Generator.Equals.Tests.Classes.NullableEquality.Sample? other) + public override bool Equals(object? obj) { + var other = obj as global::Generator.Equals.Tests.Classes.NullableEquality.Sample; return !ReferenceEquals(other, null) && this.GetType() == other.GetType() && global::Generator.Equals.OrderedEqualityComparer.Default.Equals(this.Addresses!, other.Addresses!) ; } + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public bool Equals(global::Generator.Equals.Tests.Classes.NullableEquality.Sample? other) => + Equals((object?) other); + /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] diff --git a/Generator.Equals.SnapshotTests/Classes/ObsoleteClass.verified.cs b/Generator.Equals.SnapshotTests/Classes/ObsoleteClass.verified.cs index 51774a4..811445c 100644 --- a/Generator.Equals.SnapshotTests/Classes/ObsoleteClass.verified.cs +++ b/Generator.Equals.SnapshotTests/Classes/ObsoleteClass.verified.cs @@ -34,18 +34,19 @@ partial class Sample : global::System.IEquatable /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public override bool Equals(object? obj) => - Equals(obj as global::Generator.Equals.Tests.Classes.ObsoleteClass.Sample); - - /// - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public bool Equals(global::Generator.Equals.Tests.Classes.ObsoleteClass.Sample? other) + public override bool Equals(object? obj) { + var other = obj as global::Generator.Equals.Tests.Classes.ObsoleteClass.Sample; return !ReferenceEquals(other, null) && this.GetType() == other.GetType() && global::Generator.Equals.DefaultEqualityComparer.Default.Equals(this.Something!, other.Something!) ; } + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public bool Equals(global::Generator.Equals.Tests.Classes.ObsoleteClass.Sample? other) => + Equals((object?) other); + /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] diff --git a/Generator.Equals.SnapshotTests/Classes/ObsoleteMembers.verified.cs b/Generator.Equals.SnapshotTests/Classes/ObsoleteMembers.verified.cs index e4680f5..129b028 100644 --- a/Generator.Equals.SnapshotTests/Classes/ObsoleteMembers.verified.cs +++ b/Generator.Equals.SnapshotTests/Classes/ObsoleteMembers.verified.cs @@ -34,19 +34,20 @@ partial class Sample : global::System.IEquatable /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public override bool Equals(object? obj) => - Equals(obj as global::Generator.Equals.Tests.Classes.ObsoleteMembers.Sample); - - /// - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public bool Equals(global::Generator.Equals.Tests.Classes.ObsoleteMembers.Sample? other) + public override bool Equals(object? obj) { + var other = obj as global::Generator.Equals.Tests.Classes.ObsoleteMembers.Sample; return !ReferenceEquals(other, null) && this.GetType() == other.GetType() && global::Generator.Equals.DefaultEqualityComparer.Default.Equals(this.NoComment!, other.NoComment!) && global::Generator.Equals.DefaultEqualityComparer.Default.Equals(this.Comment!, other.Comment!) ; } + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public bool Equals(global::Generator.Equals.Tests.Classes.ObsoleteMembers.Sample? other) => + Equals((object?) other); + /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] diff --git a/Generator.Equals.SnapshotTests/Classes/OrderedEquality.verified.cs b/Generator.Equals.SnapshotTests/Classes/OrderedEquality.verified.cs index 1b69db6..13bc6d2 100644 --- a/Generator.Equals.SnapshotTests/Classes/OrderedEquality.verified.cs +++ b/Generator.Equals.SnapshotTests/Classes/OrderedEquality.verified.cs @@ -34,18 +34,19 @@ partial class Sample : global::System.IEquatable /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public override bool Equals(object? obj) => - Equals(obj as global::Generator.Equals.Tests.Classes.OrderedEquality.Sample); - - /// - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public bool Equals(global::Generator.Equals.Tests.Classes.OrderedEquality.Sample? other) + public override bool Equals(object? obj) { + var other = obj as global::Generator.Equals.Tests.Classes.OrderedEquality.Sample; return !ReferenceEquals(other, null) && this.GetType() == other.GetType() && global::Generator.Equals.OrderedEqualityComparer.Default.Equals(this.Addresses!, other.Addresses!) ; } + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public bool Equals(global::Generator.Equals.Tests.Classes.OrderedEquality.Sample? other) => + Equals((object?) other); + /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] diff --git a/Generator.Equals.SnapshotTests/Classes/PrimitiveEquality.verified.cs b/Generator.Equals.SnapshotTests/Classes/PrimitiveEquality.verified.cs index 8f71236..3ff9cf9 100644 --- a/Generator.Equals.SnapshotTests/Classes/PrimitiveEquality.verified.cs +++ b/Generator.Equals.SnapshotTests/Classes/PrimitiveEquality.verified.cs @@ -34,19 +34,20 @@ partial class Sample : global::System.IEquatable /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public override bool Equals(object? obj) => - Equals(obj as global::Generator.Equals.Tests.Classes.PrimitiveEquality.Sample); - - /// - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public bool Equals(global::Generator.Equals.Tests.Classes.PrimitiveEquality.Sample? other) + public override bool Equals(object? obj) { + var other = obj as global::Generator.Equals.Tests.Classes.PrimitiveEquality.Sample; return !ReferenceEquals(other, null) && this.GetType() == other.GetType() && global::Generator.Equals.DefaultEqualityComparer.Default.Equals(this.Name!, other.Name!) && global::Generator.Equals.DefaultEqualityComparer.Default.Equals(this.Age!, other.Age!) ; } + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public bool Equals(global::Generator.Equals.Tests.Classes.PrimitiveEquality.Sample? other) => + Equals((object?) other); + /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] diff --git a/Generator.Equals.SnapshotTests/Classes/ReferenceEquality.verified.cs b/Generator.Equals.SnapshotTests/Classes/ReferenceEquality.verified.cs index e5872fd..a4a4af2 100644 --- a/Generator.Equals.SnapshotTests/Classes/ReferenceEquality.verified.cs +++ b/Generator.Equals.SnapshotTests/Classes/ReferenceEquality.verified.cs @@ -34,18 +34,19 @@ partial class Sample : global::System.IEquatable /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public override bool Equals(object? obj) => - Equals(obj as global::Generator.Equals.Tests.Classes.ReferenceEquality.Sample); - - /// - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public bool Equals(global::Generator.Equals.Tests.Classes.ReferenceEquality.Sample? other) + public override bool Equals(object? obj) { + var other = obj as global::Generator.Equals.Tests.Classes.ReferenceEquality.Sample; return !ReferenceEquals(other, null) && this.GetType() == other.GetType() && global::Generator.Equals.ReferenceEqualityComparer.Default.Equals(this.Name!, other.Name!) ; } + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public bool Equals(global::Generator.Equals.Tests.Classes.ReferenceEquality.Sample? other) => + Equals((object?) other); + /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] diff --git a/Generator.Equals.SnapshotTests/Classes/SetEquality.verified.cs b/Generator.Equals.SnapshotTests/Classes/SetEquality.verified.cs index c9de058..e0990fb 100644 --- a/Generator.Equals.SnapshotTests/Classes/SetEquality.verified.cs +++ b/Generator.Equals.SnapshotTests/Classes/SetEquality.verified.cs @@ -34,18 +34,19 @@ partial class Sample : global::System.IEquatable /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public override bool Equals(object? obj) => - Equals(obj as global::Generator.Equals.Tests.Classes.SetEquality.Sample); - - /// - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public bool Equals(global::Generator.Equals.Tests.Classes.SetEquality.Sample? other) + public override bool Equals(object? obj) { + var other = obj as global::Generator.Equals.Tests.Classes.SetEquality.Sample; return !ReferenceEquals(other, null) && this.GetType() == other.GetType() && global::Generator.Equals.SetEqualityComparer.Default.Equals(this.Properties!, other.Properties!) ; } + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public bool Equals(global::Generator.Equals.Tests.Classes.SetEquality.Sample? other) => + Equals((object?) other); + /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] diff --git a/Generator.Equals.SnapshotTests/Classes/UnorderedEquality.verified.cs b/Generator.Equals.SnapshotTests/Classes/UnorderedEquality.verified.cs index 2a33376..5b6b5ef 100644 --- a/Generator.Equals.SnapshotTests/Classes/UnorderedEquality.verified.cs +++ b/Generator.Equals.SnapshotTests/Classes/UnorderedEquality.verified.cs @@ -34,18 +34,19 @@ partial class Sample : global::System.IEquatable /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public override bool Equals(object? obj) => - Equals(obj as global::Generator.Equals.Tests.Classes.UnorderedEquality.Sample); - - /// - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public bool Equals(global::Generator.Equals.Tests.Classes.UnorderedEquality.Sample? other) + public override bool Equals(object? obj) { + var other = obj as global::Generator.Equals.Tests.Classes.UnorderedEquality.Sample; return !ReferenceEquals(other, null) && this.GetType() == other.GetType() && global::Generator.Equals.UnorderedEqualityComparer.Default.Equals(this.Properties!, other.Properties!) ; } + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public bool Equals(global::Generator.Equals.Tests.Classes.UnorderedEquality.Sample? other) => + Equals((object?) other); + /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] diff --git a/Generator.Equals.SnapshotTests/Records/BaseEquality.00Generator.Equals.Tests.Records.BaseEquality.Manager.Generator.Equals.g.verified.cs b/Generator.Equals.SnapshotTests/Records/BaseEquality.00Generator.Equals.Tests.Records.BaseEquality.Manager.Generator.Equals.g.verified.cs new file mode 100644 index 0000000..748431a --- /dev/null +++ b/Generator.Equals.SnapshotTests/Records/BaseEquality.00Generator.Equals.Tests.Records.BaseEquality.Manager.Generator.Equals.g.verified.cs @@ -0,0 +1,37 @@ +//HintName: Generator.Equals.Tests.Records.BaseEquality.Manager.Generator.Equals.g.cs + +#nullable enable +#pragma warning disable CS0612,CS0618 + +namespace Generator.Equals.Tests.Records +{ + partial class BaseEquality + { + partial record Manager + { + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public virtual bool Equals(global::Generator.Equals.Tests.Records.BaseEquality.Manager? other) + { + return + base.Equals((global::Generator.Equals.Tests.Records.BaseEquality.Person?)other) + && global::Generator.Equals.DefaultEqualityComparer.Default.Equals(this.Department!, other.Department!) + ; + } + + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public override int GetHashCode() + { + var hashCode = new global::System.HashCode(); + + hashCode.Add(base.GetHashCode()); + hashCode.Add( + this.Department!, + global::Generator.Equals.DefaultEqualityComparer.Default); + + return hashCode.ToHashCode(); + } + } + } +} diff --git a/Generator.Equals.SnapshotTests/Records/BaseEquality.01Generator.Equals.Tests.Records.BaseEquality.Person.Generator.Equals.g.verified.cs b/Generator.Equals.SnapshotTests/Records/BaseEquality.01Generator.Equals.Tests.Records.BaseEquality.Person.Generator.Equals.g.verified.cs new file mode 100644 index 0000000..61193db --- /dev/null +++ b/Generator.Equals.SnapshotTests/Records/BaseEquality.01Generator.Equals.Tests.Records.BaseEquality.Person.Generator.Equals.g.verified.cs @@ -0,0 +1,37 @@ +//HintName: Generator.Equals.Tests.Records.BaseEquality.Person.Generator.Equals.g.cs + +#nullable enable +#pragma warning disable CS0612,CS0618 + +namespace Generator.Equals.Tests.Records +{ + partial class BaseEquality + { + partial record Person + { + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public virtual bool Equals(global::Generator.Equals.Tests.Records.BaseEquality.Person? other) + { + return + !ReferenceEquals(other, null) && EqualityContract == other.EqualityContract + && global::Generator.Equals.DefaultEqualityComparer.Default.Equals(this.Age!, other.Age!) + ; + } + + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public override int GetHashCode() + { + var hashCode = new global::System.HashCode(); + + hashCode.Add(this.EqualityContract); + hashCode.Add( + this.Age!, + global::Generator.Equals.DefaultEqualityComparer.Default); + + return hashCode.ToHashCode(); + } + } + } +} diff --git a/Generator.Equals.SnapshotTests/Records/BaseEquality.Diagnostics.verified.txt b/Generator.Equals.SnapshotTests/Records/BaseEquality.Diagnostics.verified.txt new file mode 100644 index 0000000..ad47dbb --- /dev/null +++ b/Generator.Equals.SnapshotTests/Records/BaseEquality.Diagnostics.verified.txt @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/Generator.Equals.SnapshotTests/Records/BaseEquality.DotNet6_0.00Generator.Equals.Tests.Records.BaseEquality.Manager.Generator.Equals.g.received.cs b/Generator.Equals.SnapshotTests/Records/BaseEquality.DotNet6_0.00Generator.Equals.Tests.Records.BaseEquality.Manager.Generator.Equals.g.received.cs new file mode 100644 index 0000000..748431a --- /dev/null +++ b/Generator.Equals.SnapshotTests/Records/BaseEquality.DotNet6_0.00Generator.Equals.Tests.Records.BaseEquality.Manager.Generator.Equals.g.received.cs @@ -0,0 +1,37 @@ +//HintName: Generator.Equals.Tests.Records.BaseEquality.Manager.Generator.Equals.g.cs + +#nullable enable +#pragma warning disable CS0612,CS0618 + +namespace Generator.Equals.Tests.Records +{ + partial class BaseEquality + { + partial record Manager + { + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public virtual bool Equals(global::Generator.Equals.Tests.Records.BaseEquality.Manager? other) + { + return + base.Equals((global::Generator.Equals.Tests.Records.BaseEquality.Person?)other) + && global::Generator.Equals.DefaultEqualityComparer.Default.Equals(this.Department!, other.Department!) + ; + } + + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public override int GetHashCode() + { + var hashCode = new global::System.HashCode(); + + hashCode.Add(base.GetHashCode()); + hashCode.Add( + this.Department!, + global::Generator.Equals.DefaultEqualityComparer.Default); + + return hashCode.ToHashCode(); + } + } + } +} diff --git a/Generator.Equals.SnapshotTests/Records/BaseEquality.DotNet6_0.01Generator.Equals.Tests.Records.BaseEquality.Person.Generator.Equals.g.received.cs b/Generator.Equals.SnapshotTests/Records/BaseEquality.DotNet6_0.01Generator.Equals.Tests.Records.BaseEquality.Person.Generator.Equals.g.received.cs new file mode 100644 index 0000000..61193db --- /dev/null +++ b/Generator.Equals.SnapshotTests/Records/BaseEquality.DotNet6_0.01Generator.Equals.Tests.Records.BaseEquality.Person.Generator.Equals.g.received.cs @@ -0,0 +1,37 @@ +//HintName: Generator.Equals.Tests.Records.BaseEquality.Person.Generator.Equals.g.cs + +#nullable enable +#pragma warning disable CS0612,CS0618 + +namespace Generator.Equals.Tests.Records +{ + partial class BaseEquality + { + partial record Person + { + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public virtual bool Equals(global::Generator.Equals.Tests.Records.BaseEquality.Person? other) + { + return + !ReferenceEquals(other, null) && EqualityContract == other.EqualityContract + && global::Generator.Equals.DefaultEqualityComparer.Default.Equals(this.Age!, other.Age!) + ; + } + + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public override int GetHashCode() + { + var hashCode = new global::System.HashCode(); + + hashCode.Add(this.EqualityContract); + hashCode.Add( + this.Age!, + global::Generator.Equals.DefaultEqualityComparer.Default); + + return hashCode.ToHashCode(); + } + } + } +} diff --git a/Generator.Equals.SnapshotTests/TopLevel/Program.cs.00ClassSample.Generator.Equals.g.verified.cs b/Generator.Equals.SnapshotTests/TopLevel/Program.cs.00ClassSample.Generator.Equals.g.verified.cs index 426427c..f2e5d53 100644 --- a/Generator.Equals.SnapshotTests/TopLevel/Program.cs.00ClassSample.Generator.Equals.g.verified.cs +++ b/Generator.Equals.SnapshotTests/TopLevel/Program.cs.00ClassSample.Generator.Equals.g.verified.cs @@ -30,19 +30,20 @@ partial class ClassSample : global::System.IEquatable /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public override bool Equals(object? obj) => - Equals(obj as global::ClassSample); - - /// - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public bool Equals(global::ClassSample? other) + public override bool Equals(object? obj) { + var other = obj as global::ClassSample; return !ReferenceEquals(other, null) && this.GetType() == other.GetType() && global::Generator.Equals.DefaultEqualityComparer.Default.Equals(this.Name!, other.Name!) && global::Generator.Equals.DefaultEqualityComparer.Default.Equals(this.Age!, other.Age!) ; } + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public bool Equals(global::ClassSample? other) => + Equals((object?) other); + /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] diff --git a/Generator.Equals.SnapshotTests/TopLevel/Program.cs.DotNet6_0.00ClassSample.Generator.Equals.g.received.cs b/Generator.Equals.SnapshotTests/TopLevel/Program.cs.DotNet6_0.00ClassSample.Generator.Equals.g.received.cs index 426427c..f2e5d53 100644 --- a/Generator.Equals.SnapshotTests/TopLevel/Program.cs.DotNet6_0.00ClassSample.Generator.Equals.g.received.cs +++ b/Generator.Equals.SnapshotTests/TopLevel/Program.cs.DotNet6_0.00ClassSample.Generator.Equals.g.received.cs @@ -30,19 +30,20 @@ partial class ClassSample : global::System.IEquatable /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public override bool Equals(object? obj) => - Equals(obj as global::ClassSample); - - /// - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] - public bool Equals(global::ClassSample? other) + public override bool Equals(object? obj) { + var other = obj as global::ClassSample; return !ReferenceEquals(other, null) && this.GetType() == other.GetType() && global::Generator.Equals.DefaultEqualityComparer.Default.Equals(this.Name!, other.Name!) && global::Generator.Equals.DefaultEqualityComparer.Default.Equals(this.Age!, other.Age!) ; } + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] + public bool Equals(global::ClassSample? other) => + Equals((object?) other); + /// [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Generator.Equals", "1.0.0.0")] diff --git a/Generator.Equals.Tests/Classes/BaseEquality.Sample.cs b/Generator.Equals.Tests/Classes/BaseEquality.Sample.cs new file mode 100644 index 0000000..cbd5a4a --- /dev/null +++ b/Generator.Equals.Tests/Classes/BaseEquality.Sample.cs @@ -0,0 +1,27 @@ +namespace Generator.Equals.Tests.Classes +{ + public partial class BaseEquality + { + [Equatable] + public partial class Person + { + public Person(int age) + { + Age = age; + } + + public int Age { get; } + } + + [Equatable] + public partial class Manager : Person + { + public Manager(int age, string department) : base(age) + { + Department = department; + } + + public string Department { get; } + } + } +} \ No newline at end of file diff --git a/Generator.Equals.Tests/Classes/BaseEquality.cs b/Generator.Equals.Tests/Classes/BaseEquality.cs new file mode 100644 index 0000000..bfbf2d0 --- /dev/null +++ b/Generator.Equals.Tests/Classes/BaseEquality.cs @@ -0,0 +1,21 @@ +namespace Generator.Equals.Tests.Classes +{ + public partial class BaseEquality + { + public class EqualsTest : EqualityTestCase + { + public override object Factory1() => new Manager(25, "IT"); + public override bool EqualsOperator(object value1, object value2) => (Manager) value1 == (Manager) value2; + public override bool NotEqualsOperator(object value1, object value2) => (Manager) value1 != (Manager) value2; + } + + public class NotEqualsTest : EqualityTestCase + { + public override bool Expected => false; + public override object Factory1() => new Manager(25, "IT"); + public override object Factory2() => new Manager(25, "Sales"); + public override bool EqualsOperator(object value1, object value2) => (Manager) value1 == (Person) value2; + public override bool NotEqualsOperator(object value1, object value2) => (Manager) value1 != (Person) value2; + } + } +} \ No newline at end of file diff --git a/Generator.Equals.Tests/Classes/IgnoreInheritedMembers.cs b/Generator.Equals.Tests/Classes/IgnoreInheritedMembers.cs index 8dca82d..499edfa 100644 --- a/Generator.Equals.Tests/Classes/IgnoreInheritedMembers.cs +++ b/Generator.Equals.Tests/Classes/IgnoreInheritedMembers.cs @@ -2,7 +2,7 @@ namespace Generator.Equals.Tests.Classes { public partial class IgnoreInheritedMembers { - public class EqualsTest : EqualityTestCase + public class EqualsTest : EqualityTestCase { public override object Factory1() => new Sample("Dave", 35); public override object Factory2() => new Sample("John", 35); @@ -10,7 +10,7 @@ public class EqualsTest : EqualityTestCase public override bool NotEqualsOperator(object value1, object value2) => (Sample) value1 != (Sample) value2; } - public class NotEqualsTest : EqualityTestCase + public class NotEqualsTest : EqualityTestCase { public override bool Expected => false; public override object Factory1() => new Sample("Dave", 35); diff --git a/Generator.Equals.Tests/EqualityTestCase.cs b/Generator.Equals.Tests/EqualityTestCase.cs index e1ce4c2..c206af8 100644 --- a/Generator.Equals.Tests/EqualityTestCase.cs +++ b/Generator.Equals.Tests/EqualityTestCase.cs @@ -1,4 +1,5 @@ -using FluentAssertions; +using System; +using FluentAssertions; using Xunit; namespace Generator.Equals.Tests @@ -47,4 +48,16 @@ public virtual void TestHashCode() result.Should().Be(Expected); } } + + public abstract class EqualityTestCase : EqualityTestCase where T : IEquatable + { + [Fact] + public void TestEqualsEquatable() + { + var value1 = (T)Factory1(); + var value2 = (T)Factory2(); + var result = value1.Equals(value2); + result.Should().Be(Expected); + } + } } \ No newline at end of file diff --git a/Generator.Equals.Tests/Records/BaseEquality.Sample.cs b/Generator.Equals.Tests/Records/BaseEquality.Sample.cs new file mode 100644 index 0000000..ce9dbe7 --- /dev/null +++ b/Generator.Equals.Tests/Records/BaseEquality.Sample.cs @@ -0,0 +1,11 @@ +namespace Generator.Equals.Tests.Records +{ + public partial class BaseEquality + { + [Equatable] + public partial record Person(int Age); + + [Equatable] + public partial record Manager(int Age, string Department) : Person(Age); + } +} \ No newline at end of file diff --git a/Generator.Equals.Tests/Records/BaseEquality.cs b/Generator.Equals.Tests/Records/BaseEquality.cs new file mode 100644 index 0000000..3b440ef --- /dev/null +++ b/Generator.Equals.Tests/Records/BaseEquality.cs @@ -0,0 +1,21 @@ +namespace Generator.Equals.Tests.Records +{ + public partial class BaseEquality + { + public class EqualsTest : EqualityTestCase + { + public override object Factory1() => new Manager(25, "IT"); + public override bool EqualsOperator(object value1, object value2) => (Manager) value1 == (Manager) value2; + public override bool NotEqualsOperator(object value1, object value2) => (Manager) value1 != (Manager) value2; + } + + public class NotEqualsTest : EqualityTestCase + { + public override bool Expected => false; + public override object Factory1() => new Manager(25, "IT"); + public override object Factory2() => new Manager(25, "Sales"); + public override bool EqualsOperator(object value1, object value2) => (Manager) value1 == (Person) value2; + public override bool NotEqualsOperator(object value1, object value2) => (Manager) value1 != (Person) value2; + } + } +} \ No newline at end of file diff --git a/Generator.Equals.Tests/Runtime/TestComparers.cs b/Generator.Equals.Tests/Runtime/TestComparers.cs index 704cf35..d0776bb 100644 --- a/Generator.Equals.Tests/Runtime/TestComparers.cs +++ b/Generator.Equals.Tests/Runtime/TestComparers.cs @@ -8,7 +8,7 @@ class ReverseEqualityComparer : IEqualityComparer { public bool Equals(string? x, string? y) { - return string.Equals(x, y) || string.Equals(x, new string(y.Reverse().ToArray())); + return string.Equals(x, y) || string.Equals(x, new string(y!.Reverse().ToArray())); } public int GetHashCode(string obj) diff --git a/Generator.Equals/ClassEqualityGenerator.cs b/Generator.Equals/ClassEqualityGenerator.cs index 028cf13..70fdffb 100644 --- a/Generator.Equals/ClassEqualityGenerator.cs +++ b/Generator.Equals/ClassEqualityGenerator.cs @@ -32,21 +32,16 @@ static void BuildEquals( writer.WriteLine(InheritDocComment); writer.WriteLine(GeneratedCodeAttributeDeclaration); - writer.WriteLine("public override bool Equals(object? obj) =>"); - writer.WriteLine(1, $"Equals(obj as {symbolName});"); - writer.WriteLine(); - - writer.WriteLine(InheritDocComment); - writer.WriteLine(GeneratedCodeAttributeDeclaration); - writer.WriteLine($"public bool Equals({symbolName}? other)"); + writer.WriteLine("public override bool Equals(object? obj)"); writer.AppendOpenBracket(); + writer.WriteLine($"var other = obj as {symbolName};"); writer.WriteLine("return"); writer.Indent++; writer.WriteLine(baseTypeName == "object" || ignoreInheritedMembers ? "!ReferenceEquals(other, null) && this.GetType() == other.GetType()" - : $"base.Equals(other as {baseTypeName})"); + : $"!ReferenceEquals(other, null) && base.Equals(obj)"); BuildMembersEquality(symbol, attributesMetadata, writer, explicitMode); @@ -54,6 +49,13 @@ static void BuildEquals( writer.Indent--; writer.AppendCloseBracket(); + + writer.WriteLine(InheritDocComment); + writer.WriteLine(GeneratedCodeAttributeDeclaration); + writer.WriteLine($"public bool Equals({symbolName}? other) =>"); + + writer.WriteLine(1, $"Equals((object?) other);"); + writer.WriteLine(); } static void BuildGetHashCode(