From 082fe67a18a0f720ea67a2168f9139b9a60f92c6 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, 28 Dec 2017 14:33:23 +0100 Subject: [PATCH] bug fix #591 --- TestSuite/lambdas4.pas | 17 +++++++++++++++++ .../LambdaResultTypeInferrer.cs | 6 ++++++ 2 files changed, 23 insertions(+) create mode 100644 TestSuite/lambdas4.pas diff --git a/TestSuite/lambdas4.pas b/TestSuite/lambdas4.pas new file mode 100644 index 000000000..7a4a68aec --- /dev/null +++ b/TestSuite/lambdas4.pas @@ -0,0 +1,17 @@ +type + t1=class + + function f1:byte:=2; + + constructor; + begin + var a:= new byte[1]; + a.Fill(i->f1); + assert(a[0] = 2); + end; + + end; + +begin + new t1; +end. \ No newline at end of file diff --git a/TreeConverter/LambdaExpressions/LambdaResultTypeInferrer.cs b/TreeConverter/LambdaExpressions/LambdaResultTypeInferrer.cs index 07c12cbc5..73576e4d1 100644 --- a/TreeConverter/LambdaExpressions/LambdaResultTypeInferrer.cs +++ b/TreeConverter/LambdaExpressions/LambdaResultTypeInferrer.cs @@ -78,6 +78,12 @@ namespace TreeConverter.LambdaExpressions to.name.ToLower() == RESULT_KEY_WORD) { var converted = syntaxTreeVisitor.convert_strong(from); + if (converted is typed_expression) + { + delegated_methods dm = converted.type as delegated_methods; + if (dm.empty_param_method != null) + converted = syntaxTreeVisitor.convert_typed_expression_to_function_call(converted as typed_expression); + } resultExpressionsTypes.Add(new Tuple(converted.type, from, converted)); } }