]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Fix member access when overriding signal class handler
authorJürg Billeter <j@bitron.ch>
Sun, 29 Mar 2009 12:52:39 +0000 (14:52 +0200)
committerJürg Billeter <j@bitron.ch>
Sun, 29 Mar 2009 12:52:39 +0000 (14:52 +0200)
Fixes bug 575475.

vala/valamemberaccess.vala
vala/valamethod.vala
vala/valasignal.vala

index 8a421b751c662142da8e26ebde8bf0a679561aa9..1ddb39d6f1f527d51fc2099c66ae75894c80bf3f 100644 (file)
@@ -412,7 +412,15 @@ public class Vala.MemberAccess : Expression {
                        if (m.base_method != null) {
                                // refer to base method to inherit default arguments
                                m = m.base_method;
-                               symbol_reference = m;
+
+                               if (m.signal_reference != null) {
+                                       // method is class/default handler for a signal
+                                       // let signal deal with member access
+                                       symbol_reference = m.signal_reference;
+                               } else {
+                                       symbol_reference = m;
+                               }
+
                                member = symbol_reference;
                        } else if (m.base_interface_method != null) {
                                // refer to base method to inherit default arguments
index ae3207edd084f24a5c663a2aebc8cbd271627017..fc8ad15649ae30a0c626bb54175e0b062f483f6f 100644 (file)
@@ -198,6 +198,8 @@ public class Vala.Method : Member {
         */
        public bool has_construct_function { get; set; default = true; }
 
+       public weak Signal signal_reference { get; set; }
+
        public bool coroutine { get; set; }
 
        private Gee.List<FormalParameter> parameters = new ArrayList<FormalParameter> ();
index b4dcc7d2db49940947d62f0e52755d11ff3fcaea..6e8e785d54fb7a161a7e005580f56b81de4c75aa 100644 (file)
@@ -1,6 +1,6 @@
 /* valasignal.vala
  *
- * Copyright (C) 2006-2008  Jürg Billeter
+ * Copyright (C) 2006-2009  Jürg Billeter
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -210,8 +210,10 @@ public class Vala.Signal : Member, Lockable {
 
                if (generated_method == null) {
                        generated_method = new Method (name, return_type, source_reference);
+                       generated_method.access = access;
                        generated_method.is_virtual = true;
                        generated_method.vfunc_name = name;
+                       generated_method.signal_reference = this;
 
                        foreach (FormalParameter param in parameters) {
                                generated_method.add_parameter (param);