]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Use fully-qualified name in the code writer
authorJürg Billeter <j@bitron.ch>
Tue, 14 Apr 2009 15:38:50 +0000 (17:38 +0200)
committerJürg Billeter <j@bitron.ch>
Tue, 14 Apr 2009 15:38:50 +0000 (17:38 +0200)
Fixes bug 516859.

vala/valamemberaccess.vala

index 4f99208cf37267f76810da04179dac09f2fbd507..0469026c80978ed4f662984a3ef6b051e0609716 100644 (file)
@@ -133,10 +133,34 @@ public class Vala.MemberAccess : Expression {
        }
 
        public override string to_string () {
-               if (inner == null) {
-                       return member_name;
+               bool instance = true;
+               if (symbol_reference is Field) {
+                       var f = (Field) symbol_reference;
+                       instance = (f.binding == MemberBinding.INSTANCE);
+               } else if (symbol_reference is Method) {
+                       var m = (Method) symbol_reference;
+                       if (!(m is CreationMethod)) {
+                               instance = (m.binding == MemberBinding.INSTANCE);
+                       }
+               } else if (symbol_reference is Property) {
+                       var prop = (Property) symbol_reference;
+                       instance = (prop.binding == MemberBinding.INSTANCE);
+               } else if (symbol_reference is EnumValue) {
+                       instance = false;
+               } else if (symbol_reference is ErrorCode) {
+                       instance = false;
+               }
+
+               if (instance) {
+                       if (inner == null) {
+                               return member_name;
+                       } else {
+                               return "%s.%s".printf (inner.to_string (), member_name);
+                       }
                } else {
-                       return "%s.%s".printf (inner.to_string (), member_name);
+                       // ensure to always use fully-qualified name
+                       // to refer to static members
+                       return symbol_reference.get_full_name ();
                }
        }