From 078ff0b6ee0dc425901817b2c368a2b6561e2ba2 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: Thu, 6 Jul 2017 20:57:32 +0200 Subject: [PATCH] bug fix #437 --- TestSuite/lambda_closure_class_fields_5.pas | 13 +++++++++++++ .../Closure/CapturedVariablesTreeBuilder.cs | 4 ++-- 2 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 TestSuite/lambda_closure_class_fields_5.pas diff --git a/TestSuite/lambda_closure_class_fields_5.pas b/TestSuite/lambda_closure_class_fields_5.pas new file mode 100644 index 000000000..5afd04f54 --- /dev/null +++ b/TestSuite/lambda_closure_class_fields_5.pas @@ -0,0 +1,13 @@ +type TClass = class +class i: integer := 2; + +class constructor Create; +begin + var lmb: integer -> integer := x -> i; + assert(lmb(2) = 2); +end; +end; + +begin + var obj := new TClass; +end. \ No newline at end of file diff --git a/TreeConverter/LambdaExpressions/Closure/CapturedVariablesTreeBuilder.cs b/TreeConverter/LambdaExpressions/Closure/CapturedVariablesTreeBuilder.cs index 333183161..2e3eb79c5 100644 --- a/TreeConverter/LambdaExpressions/Closure/CapturedVariablesTreeBuilder.cs +++ b/TreeConverter/LambdaExpressions/Closure/CapturedVariablesTreeBuilder.cs @@ -179,7 +179,7 @@ namespace TreeConverter.LambdaExpressions.Closure return; } - if (si.sym_info.semantic_node_type == semantic_node_type.class_field && InLambdaContext) + /*if (si.sym_info.semantic_node_type == semantic_node_type.class_field && InLambdaContext) { var semClassField = (class_field)si.sym_info; if (semClassField.polymorphic_state != polymorphic_state.ps_common) @@ -187,7 +187,7 @@ namespace TreeConverter.LambdaExpressions.Closure _visitor.AddError(new ThisTypeOfVariablesCannotBeCaptured(_visitor.get_location(id))); return; } - } + }*/ if (si.scope == null) {