]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
detect interface prerequisite cycle
authorJuerg Billeter <j@bitron.ch>
Sun, 9 Sep 2007 18:34:07 +0000 (18:34 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Sun, 9 Sep 2007 18:34:07 +0000 (18:34 +0000)
2007-09-09  Juerg Billeter  <j@bitron.ch>

* vala/valasymbolresolver.vala: detect interface prerequisite cycle

svn path=/trunk/; revision=599

ChangeLog
vala/valasymbolresolver.vala

index 6daa2e494fbe50bfa5cfce01b9b5322f7b8d4a71..75f82c1a4b712f13f48deb87544c3f628c6b24e5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2007-09-09  Jürg Billeter  <j@bitron.ch>
+
+       * vala/valasymbolresolver.vala: detect interface prerequisite cycle
+
 2007-09-09  Jürg Billeter  <j@bitron.ch>
 
        * vala/valaclass.vala, vala/valainterface.vala,
index 42d9ecb81cd3091113499b3de5f48cb1e9bf4c1a..98a971076766fd3493e0ee975c50e55d1d5195bd 100644 (file)
@@ -90,6 +90,14 @@ public class Vala.SymbolResolver : CodeVisitor {
 
                iface.accept_children (this);
 
+               foreach (TypeReference type in iface.get_prerequisites ()) {
+                       if (type.data_type.is_subtype_of (iface)) {
+                               iface.error = true;
+                               Report.error (type.source_reference, "Prerequisite cycle (`%s' and `%s')".printf (iface.get_full_name (), type.data_type.get_full_name ()));
+                               return;
+                       }
+               }
+
                current_scope = current_scope.parent_scope;
        }