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) {