Report error when declaring virtual methods in compact classes, based on
authorJuerg Billeter <j@bitron.ch>
Sun, 25 May 2008 13:34:13 +0000 (13:34 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Sun, 25 May 2008 13:34:13 +0000 (13:34 +0000)
2008-05-25  Juerg Billeter  <j@bitron.ch>

* vala/valasemanticanalyzer.vala:

Report error when declaring virtual methods in compact classes,
based on patch by Jared Moore, fixes bug 514844

svn path=/trunk/; revision=1426

ChangeLog
vala/valasemanticanalyzer.vala

index 0282662..ec50e72 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2008-05-25  Jürg Billeter  <j@bitron.ch>
 
+       * vala/valasemanticanalyzer.vala:
+
+       Report error when declaring virtual methods in compact classes,
+       based on patch by Jared Moore, fixes bug 514844
+
+2008-05-25  Jürg Billeter  <j@bitron.ch>
+
        * vala/valaclass.vala:
        * vala/valainterfacewriter.vala:
        * gobject/valaccodeclassbinding.vala:
index 39e3ed3..90cbbaf 100644 (file)
@@ -375,6 +375,14 @@ public class Vala.SemanticAnalyzer : CodeVisitor {
                                Report.error (m.source_reference, "Virtual methods may not be declared outside of classes and interfaces");
                                return;
                        }
+
+                       if (m.parent_symbol is Class) {
+                               var cl = (Class) m.parent_symbol;
+                               if (cl.is_compact) {
+                                       Report.error (m.source_reference, "Virtual methods may not be declared in compact classes");
+                                       return;
+                               }
+                       }
                } else if (m.overrides) {
                        if (!(m.parent_symbol is Class)) {
                                m.error = true;