]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Fix lambda expressions in instance destructor
authorLuca Bruno <lucabru@src.gnome.org>
Sat, 10 Sep 2011 09:05:59 +0000 (11:05 +0200)
committerLuca Bruno <lucabru@src.gnome.org>
Sat, 10 Sep 2011 14:17:42 +0000 (16:17 +0200)
Fixes bug 646362.

codegen/valaccodebasemodule.vala
tests/Makefile.am
tests/objects/bug646362.vala [new file with mode: 0644]

index 17e1abe8fd2d7c838ae60dfd3bcbfeb19b12c1b4..a21c4d4d7f3c3b1f56ceb94278bae634f004acfb 100644 (file)
@@ -126,6 +126,16 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                }
        }
 
+       public Destructor? current_destructor {
+               get {
+                       var sym = current_symbol;
+                       while (sym is Block) {
+                               sym = sym.parent_symbol;
+                       }
+                       return sym as Destructor;
+               }
+       }
+
        public DataType? current_return_type {
                get {
                        var m = current_method;
@@ -5903,6 +5913,8 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                        return current_property_accessor.prop.this_parameter.variable_type;
                } else if (current_constructor != null && current_constructor.binding == MemberBinding.INSTANCE) {
                        return current_constructor.this_parameter.variable_type;
+               } else if (current_destructor != null && current_destructor.binding == MemberBinding.INSTANCE) {
+                       return current_destructor.this_parameter.variable_type;
                }
                return null;
        }
index 751766d3146d196e24ebd204c3a7fd25b130de94..5c8ddd3115e657b786b7d55d575445884ec3c027 100644 (file)
@@ -107,6 +107,7 @@ TESTS = \
        objects/bug634782.vala \
        objects/bug642809.vala \
        objects/bug643711.vala \
+       objects/bug646362.vala \
        objects/bug646792.vala \
        objects/bug653138.vala \
        objects/bug654702.vala \
diff --git a/tests/objects/bug646362.vala b/tests/objects/bug646362.vala
new file mode 100644 (file)
index 0000000..526db6c
--- /dev/null
@@ -0,0 +1,9 @@
+public class Foo : Object {
+       int bar;
+       ~Foo() {
+               var baz = bar;
+               SourceFunc f = () => baz == 2;
+       }
+}
+
+void main () { }