]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Fix crash with nested lambda expressions
authorJürg Billeter <j@bitron.ch>
Mon, 30 Mar 2009 17:29:34 +0000 (19:29 +0200)
committerJürg Billeter <j@bitron.ch>
Mon, 30 Mar 2009 17:29:34 +0000 (19:29 +0200)
Fixes bug 570872.

vala/valalambdaexpression.vala

index 042df585ca35fc9faf827707d2daf3dfdfaeb5b7..37c5fb7e2ad4bbf118e611f7332dea09b56606e3 100644 (file)
@@ -137,6 +137,25 @@ public class Vala.LambdaExpression : Expression {
                method = new Method (get_lambda_name (analyzer), cb.return_type);
                if (!cb.has_target || !analyzer.is_in_instance_method ()) {
                        method.binding = MemberBinding.STATIC;
+               } else {
+                       var sym = analyzer.current_symbol;
+                       while (method.this_parameter == null) {
+                               if (sym is Property) {
+                                       var prop = (Property) sym;
+                                       method.this_parameter = prop.this_parameter;
+                               } else if (sym is Constructor) {
+                                       var c = (Constructor) sym;
+                                       method.this_parameter = c.this_parameter;
+                               } else if (sym is Destructor) {
+                                       var d = (Destructor) sym;
+                                       method.this_parameter = d.this_parameter;
+                               } else if (sym is Method) {
+                                       var m = (Method) sym;
+                                       method.this_parameter = m.this_parameter;
+                               }
+
+                               sym = sym.parent_symbol;
+                       }
                }
                method.owner = analyzer.current_symbol.scope;