Report error when using invalid modifiers for methods and fields,
authorJamie McCracken <jamiemcc@gnome.org>
Tue, 17 Jun 2008 00:57:12 +0000 (00:57 +0000)
committerJamie McCracken <jamiemcc@src.gnome.org>
Tue, 17 Jun 2008 00:57:12 +0000 (00:57 +0000)
2008-06-16  Jamie McCracken  <jamiemcc@gnome.org>

* vala/valagenieparser.vala:

Report error when using invalid modifiers for methods and fields,

svn path=/trunk/; revision=1604

ChangeLog
vala/valagenieparser.vala

index 5acedb4..79b0405 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,13 @@
 2008-06-16  Jamie McCracken  <jamiemcc@gnome.org>
 
        * vala/valagenieparser.vala:
+
+       Report error when using invalid modifiers for methods and fields,
+
+
+2008-06-16  Jamie McCracken  <jamiemcc@gnome.org>
+
+       * vala/valagenieparser.vala:
                
        set equal func for list automatically based on type
        
index 471c1dc..ca67ab6 100644 (file)
@@ -2313,11 +2313,15 @@ public class Vala.Genie.Parser : CodeVisitor {
                        ns.add_delegate ((Delegate) sym);
                } else if (sym is Method) {
                        var method = (Method) sym;
-                       method.binding = MemberBinding.STATIC;
+                       if (method.binding == MemberBinding.INSTANCE) {
+                               method.binding = MemberBinding.STATIC;
+                       }
                        ns.add_method (method);
                } else if (sym is Field) {
                        var field = (Field) sym;
-                       field.binding = MemberBinding.STATIC;
+                       if (field.binding == MemberBinding.INSTANCE) {
+                               field.binding = MemberBinding.STATIC;
+                       }
                        ns.add_field (field);
                } else if (sym is Constant) {
                        ns.add_constant ((Constant) sym);
@@ -2525,6 +2529,10 @@ public class Vala.Genie.Parser : CodeVisitor {
 
                var f = new Field (id, type, null, get_src_com (begin));
 
+               if (ModifierFlags.ABSTRACT in flags || ModifierFlags.VIRTUAL in flags || ModifierFlags.OVERRIDE in flags) {
+                       Report.error (f.source_reference, "abstract, virtual, and override modifiers are not applicable to fields");
+                }
+
                if (ModifierFlags.PRIVATE in flags) {
                        f.access = SymbolAccessibility.PRIVATE;
                } else {
@@ -2537,7 +2545,6 @@ public class Vala.Genie.Parser : CodeVisitor {
                        f.initializer = parse_expression ();
                }
 
-
                if (ModifierFlags.STATIC in flags) {
                        f.binding = MemberBinding.STATIC;
                } else if (ModifierFlags.CLASS in flags) {