Report error when trying to access 'class' member statically rather than
authorJared Moore <jaredm@svn.gnome.org>
Mon, 23 Jun 2008 21:29:15 +0000 (21:29 +0000)
committerJared William Moore <jaredm@src.gnome.org>
Mon, 23 Jun 2008 21:29:15 +0000 (21:29 +0000)
2008-06-23  Jared Moore  <jaredm@svn.gnome.org>

* vala/valasemanticanalyzer.vala:

Report error when trying to access 'class' member statically rather
than through an instance, fixes bug 539594.

svn path=/trunk/; revision=1644

ChangeLog
vala/valasemanticanalyzer.vala

index c9b27fa..13788e5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-06-23  Jared Moore  <jaredm@svn.gnome.org>
+
+       * vala/valasemanticanalyzer.vala:
+
+       Report error when trying to access 'class' member statically rather
+       than through an instance, fixes bug 539594.
+
 2008-06-23  Jürg Billeter  <j@bitron.ch>
 
        * gobject/valaccodeobjecttypesymbolbinding.vala:
index 2407dc9..7338297 100644 (file)
@@ -1753,14 +1753,17 @@ public class Vala.SemanticAnalyzer : CodeVisitor {
                var member = expr.symbol_reference;
                var access = SymbolAccessibility.PUBLIC;
                bool instance = false;
+               bool klass = false;
                if (member is Field) {
                        var f = (Field) member;
                        access = f.access;
                        instance = (f.binding == MemberBinding.INSTANCE);
+                       klass = (f.binding == MemberBinding.CLASS);
                } else if (member is Method) {
                        var m = (Method) member;
                        access = m.access;
                        instance = (m.binding == MemberBinding.INSTANCE);
+                       klass = (m.binding == MemberBinding.CLASS);
                } else if (member is Property) {
                        var prop = (Property) member;
                        access = prop.access;
@@ -1811,7 +1814,7 @@ public class Vala.SemanticAnalyzer : CodeVisitor {
                                return;
                        }
                }
-               if (instance && !may_access_instance_members) {
+               if ((instance || klass) && !may_access_instance_members) {
                        expr.prototype_access = true;
 
                        if (expr.symbol_reference is Method) {