]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Report error when trying to connect signal to instance method from static
authorJürg Billeter <j@bitron.ch>
Wed, 17 Dec 2008 23:07:18 +0000 (23:07 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Wed, 17 Dec 2008 23:07:18 +0000 (23:07 +0000)
2008-12-18  Jürg Billeter  <j@bitron.ch>

* vala/valaassignment.vala:

Report error when trying to connect signal to instance method
from static context, fixes bug 502669

svn path=/trunk/; revision=2206

ChangeLog
vala/valaassignment.vala

index 1aa899611c0af83e9af5dc50b13fa8addef8ac4a..6a766b1387060307e71dce7bf59344012e6dba27 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-12-18  Jürg Billeter  <j@bitron.ch>
+
+       * vala/valaassignment.vala:
+
+       Report error when trying to connect signal to instance method
+       from static context, fixes bug 502669
+
 2008-12-17  Jürg Billeter  <j@bitron.ch>
 
        * gobject/valaccodebasemodule.vala:
index cd870d19c8a8877fbbbf0f2626dc1420287e55e5..d24a7a39e55077fb07fa2e45ef03be3b5c39d6c8 100644 (file)
@@ -221,6 +221,7 @@ public class Vala.Assignment : Expression {
                        }
 
                        var dynamic_sig = sig as DynamicSignal;
+                       var right_ma = right as MemberAccess;
                        if (dynamic_sig != null) {
                                bool first = true;
                                foreach (FormalParameter param in dynamic_sig.handler.value_type.get_parameters ()) {
@@ -238,6 +239,10 @@ public class Vala.Assignment : Expression {
                                error = true;
                                Report.error (right.source_reference, "method `%s' is incompatible with signal `%s', expected `%s'".printf (right.value_type.to_string (), right.target_type.to_string (), delegate_type.delegate_symbol.get_prototype_string (m.name)));
                                return false;
+                       } else if (right_ma != null && right_ma.prototype_access) {
+                               error = true;
+                               Report.error (right.source_reference, "Access to instance member `%s' denied".printf (m.get_full_name ()));
+                               return false;
                        }
                } else if (left is MemberAccess) {
                        var ma = (MemberAccess) left;