From af48bcbf736c8adaa1a36da88ed08ba32787af93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D0=BD=D0=B4=D0=B0=D1=80=D0=B5=D0=B2=20=D0=98?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD?= Date: Sun, 5 Nov 2017 15:15:28 +0100 Subject: [PATCH] bug fix #541 --- Optimizer/Optimizer.cs | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/Optimizer/Optimizer.cs b/Optimizer/Optimizer.cs index 3e9f36d6e..63cd0223d 100644 --- a/Optimizer/Optimizer.cs +++ b/Optimizer/Optimizer.cs @@ -71,6 +71,11 @@ namespace PascalABCCompiler } } + private bool isUnused(VarInfo vi, var_definition_node vdn) + { + return vi.num_use == 0 && !vdn.is_special_name && !vdn.name.StartsWith("#"); + } + private void CollectInfoNamespaces(common_namespace_node cnn) { if (!cnn.from_pcu) @@ -82,7 +87,7 @@ namespace PascalABCCompiler { namespace_variable vdn = vdn2 as namespace_variable; VarInfo vi = helper.GetVariable(vdn); - if (vi.num_use == 0 && !vdn.is_special_name) warns.Add(new UnusedVariable(vdn.name, vdn.loc)); + if (isUnused(vi, vdn)) warns.Add(new UnusedVariable(vdn.name, vdn.loc)); if (vi.num_ass > 0 && vi.act_num_use == 0) warns.Add(new AssignWithoutUsing(vdn.name, vi.last_ass_loc)); //if (vi.num_ass == 0 && vi.act_num_use > 0) helper.AddRealWarning(vdn, warns); } @@ -90,7 +95,7 @@ namespace PascalABCCompiler { local_block_variable vdn = vdn2 as local_block_variable; VarInfo vi = helper.GetVariable(vdn); - if (vi.num_use == 0 && !vdn.is_special_name) warns.Add(new UnusedVariable(vdn.name, vdn.loc)); + if (isUnused(vi, vdn)) warns.Add(new UnusedVariable(vdn.name, vdn.loc)); if (vi.num_ass > 0 && vi.act_num_use == 0) warns.Add(new AssignWithoutUsing(vdn.name, vi.last_ass_loc)); } } @@ -144,7 +149,7 @@ namespace PascalABCCompiler { local_variable vdn = vdn2 as local_variable; VarInfo vi = helper.GetVariable(vdn); - if (vi.num_use == 0 && !vdn.is_special_name) + if (isUnused(vi, vdn)) warns.Add(new UnusedVariable(vdn.name, vdn.loc)); else if (vi.num_ass == 0 && vdn.is_ret_value && @@ -163,7 +168,7 @@ namespace PascalABCCompiler { local_block_variable vdn = vdn2 as local_block_variable; VarInfo vi = helper.GetVariable(vdn); - if (vi.num_use == 0 && !vdn.is_special_name) + if (isUnused(vi, vdn)) warns.Add(new UnusedVariable(vdn.name, vdn.loc)); else if (vi.num_ass == 0 && vdn.is_ret_value && @@ -263,7 +268,7 @@ namespace PascalABCCompiler { local_variable vdn = vdn2 as local_variable; VarInfo vi = helper.GetVariable(vdn); - if (vi.num_use == 0 && !vdn.is_special_name) + if (isUnused(vi, vdn)) warns.Add(new UnusedVariable(vdn.name, vdn.loc)); else if (vi.num_ass == 0 && vdn.is_ret_value && @@ -281,7 +286,7 @@ namespace PascalABCCompiler { local_block_variable vdn = vdn2 as local_block_variable; VarInfo vi = helper.GetVariable(vdn); - if (vi.num_use == 0 && !vdn.is_special_name) + if (isUnused(vi, vdn)) warns.Add(new UnusedVariable(vdn.name, vdn.loc)); else if (vi.num_ass == 0 && vdn.is_ret_value && @@ -333,7 +338,7 @@ namespace PascalABCCompiler { local_variable vdn = vdn2 as local_variable; VarInfo vi = helper.GetVariable(vdn); - if (vi.num_use == 0 && !vdn.is_special_name) + if (isUnused(vi, vdn)) warns.Add(new UnusedVariable(vdn.name, vdn.loc)); else if (vi.num_ass == 0 && vdn.is_ret_value && @@ -350,7 +355,7 @@ namespace PascalABCCompiler { local_block_variable vdn = vdn2 as local_block_variable; VarInfo vi = helper.GetVariable(vdn); - if (vi.num_use == 0 && !vdn.is_special_name) + if (isUnused(vi, vdn)) warns.Add(new UnusedVariable(vdn.name, vdn.loc)); else if (vi.num_ass == 0 && vdn.is_ret_value && @@ -566,7 +571,8 @@ namespace PascalABCCompiler foreach (local_block_variable vdn in stmt.local_variables) { VarInfo vi = helper.GetVariable(vdn); - if (vi.num_use == 0 && !vdn.is_special_name) warns.Add(new UnusedVariable(vdn.name, vdn.loc)); + if (isUnused(vi, vdn)) + warns.Add(new UnusedVariable(vdn.name, vdn.loc)); if (vi.num_ass > 0 && vi.act_num_use == 0 && !vdn.is_special_name) warns.Add(new AssignWithoutUsing(vdn.name, vi.last_ass_loc));