From 1e25e6e98767cfe6305759439f88cd6cdaa84aa9 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: Wed, 3 Oct 2018 10:14:32 +0200 Subject: [PATCH] fix #1266 --- Optimizer/Optimizer.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Optimizer/Optimizer.cs b/Optimizer/Optimizer.cs index 3ca9ba7e4..7b0be66cd 100644 --- a/Optimizer/Optimizer.cs +++ b/Optimizer/Optimizer.cs @@ -1169,6 +1169,21 @@ namespace PascalABCCompiler for (int i = 1; i < en.parameters.Count; i++) VisitExpression(en.parameters[i]); expression_node p = en.parameters[0]; + if (en.parameters[1] is common_parameter_reference && (en.parameters[1] as common_parameter_reference).par.name.StartsWith("<>")) + { + switch (p.semantic_node_type) + { + case semantic_node_type.local_variable_reference: IncreaseNumUseVar((local_variable_reference)p); break; + case semantic_node_type.local_block_variable_reference: IncreaseNumUseVar((local_block_variable_reference)p); break; + case semantic_node_type.namespace_variable_reference: IncreaseNumUseVar((namespace_variable_reference)p); break; + case semantic_node_type.class_field_reference: VisitExpression((p as class_field_reference).obj); IncreaseNumUseField((class_field_reference)p); break; + case semantic_node_type.static_class_field_reference: IncreaseNumUseField((static_class_field_reference)p); break; + case semantic_node_type.common_parameter_reference: IncreaseNumUseParam((common_parameter_reference)p); break; + case semantic_node_type.deref_node: VisitDerefNode(((dereference_node)p)); break; + case semantic_node_type.simple_array_indexing: VisitSimpleArrayIndexing((simple_array_indexing)p); break; + } + } + else switch (p.semantic_node_type) { case semantic_node_type.local_variable_reference: IncreaseNumAssVar((local_variable_reference)p); break;