From 10bc7c02c6e772316e4178b50f3071e396d5a054 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=BCrg=20Billeter?= Date: Wed, 31 Mar 2010 16:45:16 +0200 Subject: [PATCH] Fix code generation for unreachable declaration statements --- codegen/valaccodebasemodule.vala | 6 +++--- vala/valaflowanalyzer.vala | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index 01e5fa6dc..6bbd10089 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -1940,7 +1940,7 @@ internal class Vala.CCodeBaseModule : CCodeModule { } foreach (LocalVariable local in local_vars) { - if (!local.floating && !local.captured && requires_destroy (local.variable_type)) { + if (!local.unreachable && !local.floating && !local.captured && requires_destroy (local.variable_type)) { var ma = new MemberAccess.simple (local.name); ma.symbol_reference = local; ma.value_type = local.variable_type.copy (); @@ -3168,7 +3168,7 @@ internal class Vala.CCodeBaseModule : CCodeModule { var local_vars = b.get_local_variables (); foreach (LocalVariable local in local_vars) { - if (local.active && !local.floating && !local.captured && requires_destroy (local.variable_type)) { + if (!local.unreachable && local.active && !local.floating && !local.captured && requires_destroy (local.variable_type)) { var ma = new MemberAccess.simple (local.name); ma.symbol_reference = local; ma.value_type = local.variable_type.copy (); @@ -3204,7 +3204,7 @@ internal class Vala.CCodeBaseModule : CCodeModule { var local_vars = b.get_local_variables (); foreach (LocalVariable local in local_vars) { - if (local.active && !local.floating && !local.captured && requires_destroy (local.variable_type)) { + if (!local.unreachable && local.active && !local.floating && !local.captured && requires_destroy (local.variable_type)) { var ma = new MemberAccess.simple (local.name); ma.symbol_reference = local; cfrag.append (new CCodeExpressionStatement (get_unref_expression (get_variable_cexpression (local.name), local.variable_type, ma))); diff --git a/vala/valaflowanalyzer.vala b/vala/valaflowanalyzer.vala index 9a04e1ba0..d95ef5f66 100644 --- a/vala/valaflowanalyzer.vala +++ b/vala/valaflowanalyzer.vala @@ -530,6 +530,7 @@ public class Vala.FlowAnalyzer : CodeVisitor { public override void visit_declaration_statement (DeclarationStatement stmt) { if (unreachable (stmt)) { + stmt.declaration.unreachable = true; return; } -- 2.47.2