From 4f417eaefd0eb421f113141bb2b800eebf74ee29 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, 11 Mar 2018 18:08:25 +0100 Subject: [PATCH] bug fix #714 --- TestSuite/lambda_exit.pas | 11 +++++++++++ .../Closure/CapturedVariablesTreeBuilder.cs | 3 ++- 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 TestSuite/lambda_exit.pas diff --git a/TestSuite/lambda_exit.pas b/TestSuite/lambda_exit.pas new file mode 100644 index 000000000..612722634 --- /dev/null +++ b/TestSuite/lambda_exit.pas @@ -0,0 +1,11 @@ +begin + var i := 0; + var p: procedure := procedure -> + begin + i := 1; + exit; + i := 2; + end; + p; + assert(i = 1); +end. \ No newline at end of file diff --git a/TreeConverter/LambdaExpressions/Closure/CapturedVariablesTreeBuilder.cs b/TreeConverter/LambdaExpressions/Closure/CapturedVariablesTreeBuilder.cs index 99497c0e2..1b3314234 100644 --- a/TreeConverter/LambdaExpressions/Closure/CapturedVariablesTreeBuilder.cs +++ b/TreeConverter/LambdaExpressions/Closure/CapturedVariablesTreeBuilder.cs @@ -165,7 +165,8 @@ namespace TreeConverter.LambdaExpressions.Closure var acceptableVarType = si.sym_info.semantic_node_type == semantic_node_type.local_variable || si.sym_info.semantic_node_type == semantic_node_type.local_block_variable || si.sym_info.semantic_node_type == semantic_node_type.common_parameter || - si.sym_info.semantic_node_type == semantic_node_type.class_field; + si.sym_info.semantic_node_type == semantic_node_type.class_field || + si.sym_info.semantic_node_type == semantic_node_type.basic_function_node && idName == "exit"; if (!(acceptableVarType) && InLambdaContext) {