[folks] Always include parameters in AFD-derived subclass equal() functions.
- From: Travis Reitter <treitter src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [folks] Always include parameters in AFD-derived subclass equal() functions.
- Date: Mon, 24 Oct 2011 19:18:12 +0000 (UTC)
commit e66fba36c1ef69674aca7b631debbc47928952b1
Author: Travis Reitter <travis reitter collabora co uk>
Date: Wed Oct 19 14:18:23 2011 -0700
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<T> : Object
return this.parameters_equal<T> (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<T> 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<string>
*/
public override bool equal (AbstractFieldDetails<string> that)
{
- var that_nfd = that as NoteFieldDetails;
+ if (!base.equal<string> (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<string>
*/
public override bool equal (AbstractFieldDetails<string> that)
{
- var that_fd = that as PhoneFieldDetails;
+ if (!base.equal<string> (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<PostalAddress> that)
{
+ if (!base.parameters_equal<PostalAddress> (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<Role>
public override bool equal (AbstractFieldDetails<Role> that)
{
var that_fd = that as RoleFieldDetails;
-
if (that_fd == null)
return false;
+ if (!base.parameters_equal<Role> (that))
+ return false;
+
return Role.equal (this.value, that_fd.value);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]