From 4638361fabb99aacde35cf17f87a652306dc4e76 Mon Sep 17 00:00:00 2001 From: Mikhalkovich Stanislav Date: Wed, 19 Jun 2019 18:53:05 +0300 Subject: [PATCH] bug fix #1997 --- Configuration/GlobalAssemblyInfo.cs | 2 +- Configuration/Version.defs | 4 ++-- Localization/DefaultLang.resources | Bin 90462 -> 90568 bytes ReleaseGenerators/PascalABCNET_version.nsh | 2 +- TestSuite/Lambda_two_variables_capture.pas | 17 +++++++++++++++++ .../Closure/CapturedVariablesTreeBuilder.cs | 2 +- TreeConverter/TreeConversion/LambdaHelper.cs | 3 +++ 7 files changed, 25 insertions(+), 5 deletions(-) create mode 100644 TestSuite/Lambda_two_variables_capture.pas diff --git a/Configuration/GlobalAssemblyInfo.cs b/Configuration/GlobalAssemblyInfo.cs index fd37935d1..2af49c0df 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 = "2117"; + public const string Revision = "2118"; 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 3b0fda0b0..4fd63cdd8 100644 --- a/Configuration/Version.defs +++ b/Configuration/Version.defs @@ -1,4 +1,4 @@ -%MINOR%=5 -%REVISION%=2117 %COREVERSION%=0 +%REVISION%=2118 +%MINOR%=5 %MAJOR%=3 diff --git a/Localization/DefaultLang.resources b/Localization/DefaultLang.resources index e1ba22c2f9bdcd613495c297048fb4f6140f48da..343e7a0bc0ec7be2ff58ab2af0685af1211495a0 100644 GIT binary patch delta 138 zcmV;50CoS~!Uf2~1(4tY$;PUS9AbDwJY-AwqH80lORPFlNSULgCs?_Bt-!_92_@CXaE2J delta 23 fcmX?cnDyQv)(H<7t2REAacNF>-Jb5sm?#4Piuwv8 diff --git a/ReleaseGenerators/PascalABCNET_version.nsh b/ReleaseGenerators/PascalABCNET_version.nsh index 647126cc4..9e26e337a 100644 --- a/ReleaseGenerators/PascalABCNET_version.nsh +++ b/ReleaseGenerators/PascalABCNET_version.nsh @@ -1 +1 @@ -!define VERSION '3.5.0.2117' +!define VERSION '3.5.0.2118' diff --git a/TestSuite/Lambda_two_variables_capture.pas b/TestSuite/Lambda_two_variables_capture.pas new file mode 100644 index 000000000..13ca4cb9e --- /dev/null +++ b/TestSuite/Lambda_two_variables_capture.pas @@ -0,0 +1,17 @@ +type + t1 = class + public + f: integer; + procedure p1; + begin + var v := 2; + var p: procedure := ()-> + begin + var nv := v; + var nf := f; + end; + end; + end; + +begin +end. \ No newline at end of file diff --git a/TreeConverter/LambdaExpressions/Closure/CapturedVariablesTreeBuilder.cs b/TreeConverter/LambdaExpressions/Closure/CapturedVariablesTreeBuilder.cs index 731d5313a..859aeb936 100644 --- a/TreeConverter/LambdaExpressions/Closure/CapturedVariablesTreeBuilder.cs +++ b/TreeConverter/LambdaExpressions/Closure/CapturedVariablesTreeBuilder.cs @@ -237,7 +237,7 @@ namespace TreeConverter.LambdaExpressions.Closure if (ok) { if (id.Parent is var_def_statement) - ProcessNode(id); // Грубая правка, закрывающая ошибку #1390 + ProcessNode(dn); // Грубая правка, закрывающая ошибку #1390 // SSM 19.06.19 заменил id на dn else ProcessNode(id.Parent); // Грубо, поскольку id.Parent уже начал обходиться - а здесь рекурсия // Это рубится на коде var s := c; где s - локальная в лямбде, а c - захваченное поле класса. В результате s создаётся дважды. return; diff --git a/TreeConverter/TreeConversion/LambdaHelper.cs b/TreeConverter/TreeConversion/LambdaHelper.cs index 18d9c25fc..6a9d33e3c 100644 --- a/TreeConverter/TreeConversion/LambdaHelper.cs +++ b/TreeConverter/TreeConversion/LambdaHelper.cs @@ -407,6 +407,9 @@ namespace PascalABCCompiler.TreeConverter exprList.Add(value.from); } } + /*public override void visit(function_lambda_definition fld) + { + }*/ } #endregion