From 899f0da1bdb6b42828548209bf42fb6aed092798 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, 22 Nov 2020 17:10:21 +0100 Subject: [PATCH] bug fix #2342 --- Compiler/PCU/PCUReader.cs | 2 ++ Compiler/PCU/PCUWriter.cs | 9 ++++++++- TestSuite/units/u_lambda_any.pas | 14 ++++++++++++++ TestSuite/usesunits/use_lambda_any.pas | 5 +++++ 4 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 TestSuite/units/u_lambda_any.pas create mode 100644 TestSuite/usesunits/use_lambda_any.pas diff --git a/Compiler/PCU/PCUReader.cs b/Compiler/PCU/PCUReader.cs index 274ef6c02..35d9de921 100644 --- a/Compiler/PCU/PCUReader.cs +++ b/Compiler/PCU/PCUReader.cs @@ -1399,6 +1399,8 @@ namespace PascalABCCompiler.PCU return GetGenericParameterOfFunction(); case 11: return GetGenericParameterOfMethod(); + case 12: + return new lambda_any_type_node(); } return null; } diff --git a/Compiler/PCU/PCUWriter.cs b/Compiler/PCU/PCUWriter.cs index 0dd330cb0..f238838a2 100644 --- a/Compiler/PCU/PCUWriter.cs +++ b/Compiler/PCU/PCUWriter.cs @@ -98,7 +98,8 @@ namespace PascalABCCompiler.PCU ShortString = 8, GenericParameterOfType = 9, GenericParameterOfFunction = 10, - GenericParameterOfMethod = 11 + GenericParameterOfMethod = 11, + LambdaAnyType = 12 } public enum GenericParamKind @@ -1418,6 +1419,12 @@ namespace PascalABCCompiler.PCU WriteTemplateInstance(c_t_n); return; } + + if (type is lambda_any_type_node) + { + bw.Write((byte)TypeKind.LambdaAnyType); + return; + } byte is_def = 0; int offset = GetTypeReference(type, ref is_def); diff --git a/TestSuite/units/u_lambda_any.pas b/TestSuite/units/u_lambda_any.pas new file mode 100644 index 000000000..4884815a6 --- /dev/null +++ b/TestSuite/units/u_lambda_any.pas @@ -0,0 +1,14 @@ +unit u_lambda_any; +{$reference WindowsBase.dll} + +function f: integer; +begin + var d := System.Windows.Threading.Dispatcher.CurrentDispatcher; + var res := d.Invoke(()-> + begin + Result := 1; + end); + Result := res; +end; + +end. \ No newline at end of file diff --git a/TestSuite/usesunits/use_lambda_any.pas b/TestSuite/usesunits/use_lambda_any.pas new file mode 100644 index 000000000..6d8dac21c --- /dev/null +++ b/TestSuite/usesunits/use_lambda_any.pas @@ -0,0 +1,5 @@ +uses u_lambda_any; + +begin + assert(f = 1); +end. \ No newline at end of file