From 99882270d0e4ecb8c072bc12718249c9a0c3c9ad Mon Sep 17 00:00:00 2001 From: Mikhalkovich Stanislav Date: Mon, 10 Jun 2019 22:33:51 +0300 Subject: [PATCH] fix #1990 --- Configuration/GlobalAssemblyInfo.cs | 2 +- Configuration/Version.defs | 2 +- ReleaseGenerators/PascalABCNET_version.nsh | 2 +- TestSuite/lambda_capture_local_before_begin.pas | 17 +++++++++++++++++ .../Closure/CapturedVariablesTreeBuilder.cs | 4 ++-- 5 files changed, 22 insertions(+), 5 deletions(-) create mode 100644 TestSuite/lambda_capture_local_before_begin.pas diff --git a/Configuration/GlobalAssemblyInfo.cs b/Configuration/GlobalAssemblyInfo.cs index 22dd8cc36..f0adbcd00 100644 --- a/Configuration/GlobalAssemblyInfo.cs +++ b/Configuration/GlobalAssemblyInfo.cs @@ -15,7 +15,7 @@ internal static class RevisionClass public const string Major = "3"; public const string Minor = "5"; public const string Build = "0"; - public const string Revision = "2096"; + public const string Revision = "2098"; public const string MainVersion = Major + "." + Minor; public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision; diff --git a/Configuration/Version.defs b/Configuration/Version.defs index f6696e551..0c8ea0189 100644 --- a/Configuration/Version.defs +++ b/Configuration/Version.defs @@ -1,4 +1,4 @@ %COREVERSION%=0 -%REVISION%=2096 +%REVISION%=2098 %MINOR%=5 %MAJOR%=3 diff --git a/ReleaseGenerators/PascalABCNET_version.nsh b/ReleaseGenerators/PascalABCNET_version.nsh index 0f55fd859..c3ce90365 100644 --- a/ReleaseGenerators/PascalABCNET_version.nsh +++ b/ReleaseGenerators/PascalABCNET_version.nsh @@ -1 +1 @@ -!define VERSION '3.5.0.2096' +!define VERSION '3.5.0.2098' diff --git a/TestSuite/lambda_capture_local_before_begin.pas b/TestSuite/lambda_capture_local_before_begin.pas new file mode 100644 index 000000000..952c58d40 --- /dev/null +++ b/TestSuite/lambda_capture_local_before_begin.pas @@ -0,0 +1,17 @@ +type + t1=class + procedure p1(); + var t2: integer := 2; + begin + var p: procedure := ()-> + begin + Assert(t2=2); + end; + p; + end; + + end; + +begin + T1&.Create.p1; +end. \ No newline at end of file diff --git a/TreeConverter/LambdaExpressions/Closure/CapturedVariablesTreeBuilder.cs b/TreeConverter/LambdaExpressions/Closure/CapturedVariablesTreeBuilder.cs index 3bc833d40..f512a9ba1 100644 --- a/TreeConverter/LambdaExpressions/Closure/CapturedVariablesTreeBuilder.cs +++ b/TreeConverter/LambdaExpressions/Closure/CapturedVariablesTreeBuilder.cs @@ -242,13 +242,13 @@ namespace TreeConverter.LambdaExpressions.Closure var prScope = scope as CapturedVariablesTreeNodeProcedureScope; if (prScope != null && acceptableVarType) { - if (si.sym_info.semantic_node_type == semantic_node_type.local_variable) + /*if (si.sym_info.semantic_node_type == semantic_node_type.local_variable) { if (!(idName == compiler_string_consts.self_word && si.scope is SymbolTable.ClassMethodScope && _classScope != null) && InLambdaContext) { _visitor.AddError(new ThisTypeOfVariablesCannotBeCaptured(_visitor.get_location(id))); } - } + }*/ if (si.sym_info.semantic_node_type == semantic_node_type.common_parameter && prScope.FunctionNode.parameters.First(v => v.name.ToLower() == idName).parameter_type != parameter_type.value && InLambdaContext) { _visitor.AddError(new CannotCaptureNonValueParameters(_visitor.get_location(id)));