From: Jürg Billeter Date: Mon, 16 Jun 2008 20:56:20 +0000 (+0000) Subject: Report error when using reference counting for interfaces without class X-Git-Tag: VALA_0_3_4~53 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f1d05dedbf2f86c3a46ed682a097dc3a3df4b149;p=thirdparty%2Fvala.git Report error when using reference counting for interfaces without class 2008-06-16 Jürg Billeter * gobject/valaccodegenerator.vala: Report error when using reference counting for interfaces without class prerequisite svn path=/trunk/; revision=1600 --- diff --git a/ChangeLog b/ChangeLog index 8812b46a4..8dd459526 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-06-16 Jürg Billeter + + * gobject/valaccodegenerator.vala: + + Report error when using reference counting for interfaces without + class prerequisite + 2008-06-16 Jürg Billeter * gobject/valaccodememberaccessbinding.vala: diff --git a/gobject/valaccodegenerator.vala b/gobject/valaccodegenerator.vala index 683eaaf21..91890ef41 100644 --- a/gobject/valaccodegenerator.vala +++ b/gobject/valaccodegenerator.vala @@ -1284,6 +1284,10 @@ public class Vala.CCodeGenerator : CodeGenerator { string dup_function; if (type.data_type.is_reference_counting ()) { dup_function = type.data_type.get_ref_function (); + if (type.data_type is Interface && dup_function == null) { + Report.error (source_reference, "missing class prerequisite for interface `%s'".printf (type.data_type.get_full_name ())); + return null; + } } else if (cl != null && cl.is_immutable) { // allow duplicates of immutable instances as for example strings dup_function = type.data_type.get_dup_function (); @@ -1379,6 +1383,10 @@ public class Vala.CCodeGenerator : CodeGenerator { if (type is ReferenceType) { if (type.data_type.is_reference_counting ()) { unref_function = type.data_type.get_unref_function (); + if (type.data_type is Interface && unref_function == null) { + Report.error (type.source_reference, "missing class prerequisite for interface `%s'".printf (type.data_type.get_full_name ())); + return null; + } } else { unref_function = type.data_type.get_free_function (); }