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 6daa2e4..75f82c1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 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,
          vala/valasymbolresolver.vala: detect base class cycle
 
index 42d9ecb..98a9710 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;
        }