From e66fba36c1ef69674aca7b631debbc47928952b1 Mon Sep 17 00:00:00 2001 From: Travis Reitter Date: Wed, 19 Oct 2011 14:18:23 -0700 Subject: [PATCH] Always include parameters in AFD-derived subclass equal() functions. Helps: bgo#662433 - AbstractFieldDetails.equal() is ambiguous about checking parameters. --- folks/abstract-field-details.vala | 19 +++++++++++++++++++ folks/note-details.vala | 4 +++- folks/phone-details.vala | 4 +++- folks/postal-address-details.vala | 3 +++ folks/role-details.vala | 4 +++- 5 files changed, 31 insertions(+), 3 deletions(-) diff --git a/folks/abstract-field-details.vala b/folks/abstract-field-details.vala index ec74bfb..e36a8da 100644 --- a/folks/abstract-field-details.vala +++ b/folks/abstract-field-details.vala @@ -239,6 +239,25 @@ public abstract class Folks.AbstractFieldDetails : Object return this.parameters_equal (that); } + /** + * An equality function which only considers parameters. + * + * This function compares: + * * {@link AbstractFieldDetails.parameters} + * + * And does not compare: + * * {@link AbstractFieldDetails.value}s + * * {@link AbstractFieldDetails.id}s + * + * @param that another {@link AbstractFieldDetails} + * + * @return whether the elements' {@link AbstractFieldDetails.value}s are + * equal. + * + * @see AbstractFieldDetails.equal + * @see AbstractFieldDetails.values_equal + * @since UNRELEASED + */ public virtual bool parameters_equal (AbstractFieldDetails that) { /* Check that the parameter names and their values match exactly in both diff --git a/folks/note-details.vala b/folks/note-details.vala index c11a699..4b8f14e 100644 --- a/folks/note-details.vala +++ b/folks/note-details.vala @@ -67,8 +67,10 @@ public class Folks.NoteFieldDetails : AbstractFieldDetails */ public override bool equal (AbstractFieldDetails that) { - var that_nfd = that as NoteFieldDetails; + if (!base.equal (that)) + return false; + var that_nfd = that as NoteFieldDetails; if (that_nfd == null) return false; diff --git a/folks/phone-details.vala b/folks/phone-details.vala index f4c61a8..8491822 100644 --- a/folks/phone-details.vala +++ b/folks/phone-details.vala @@ -68,8 +68,10 @@ public class Folks.PhoneFieldDetails : AbstractFieldDetails */ public override bool equal (AbstractFieldDetails that) { - var that_fd = that as PhoneFieldDetails; + if (!base.equal (that)) + return false; + var that_fd = that as PhoneFieldDetails; if (that_fd == null) return false; diff --git a/folks/postal-address-details.vala b/folks/postal-address-details.vala index 6d77800..e77d83f 100644 --- a/folks/postal-address-details.vala +++ b/folks/postal-address-details.vala @@ -252,6 +252,9 @@ public class Folks.PostalAddressFieldDetails : */ public override bool equal (AbstractFieldDetails that) { + if (!base.parameters_equal (that)) + return false; + /* This is fairly-dumb but smart matching is an i10n nightmare. */ return this.value.to_string () == that.value.to_string (); } diff --git a/folks/role-details.vala b/folks/role-details.vala index 62cc712..1590c4a 100644 --- a/folks/role-details.vala +++ b/folks/role-details.vala @@ -167,10 +167,12 @@ public class Folks.RoleFieldDetails : AbstractFieldDetails public override bool equal (AbstractFieldDetails that) { var that_fd = that as RoleFieldDetails; - if (that_fd == null) return false; + if (!base.parameters_equal (that)) + return false; + return Role.equal (this.value, that_fd.value); } -- 2.7.4