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