From dbc25039b64e70dd61c37199b444dcbcf638947a 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, 27 Dec 2015 13:24:25 +0100 Subject: [PATCH] bug fix issue #26 --- TestSuite/extensionmethods12.pas | 3 ++ .../convertion_data_and_alghoritms.cs | 30 +++++++++++++++---- 2 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 TestSuite/extensionmethods12.pas diff --git a/TestSuite/extensionmethods12.pas b/TestSuite/extensionmethods12.pas new file mode 100644 index 000000000..f33e63400 --- /dev/null +++ b/TestSuite/extensionmethods12.pas @@ -0,0 +1,3 @@ +begin + assert('a23hh5'.Count(c->c.IsDigit)=3); +end. \ No newline at end of file diff --git a/TreeConverter/TreeConversion/convertion_data_and_alghoritms.cs b/TreeConverter/TreeConversion/convertion_data_and_alghoritms.cs index 16cc2c34d..10555032e 100644 --- a/TreeConverter/TreeConversion/convertion_data_and_alghoritms.cs +++ b/TreeConverter/TreeConversion/convertion_data_and_alghoritms.cs @@ -1878,12 +1878,30 @@ namespace PascalABCCompiler.TreeConverter possible_type_convertions_list_list tcll = new possible_type_convertions_list_list(); - for(int i=0;ic.IsDigit) + if (tc == null) + { + expressions_list el = new expressions_list(); + el.AddRange(parameters); + bool has_lambda_var = false; + for (int k = 0; k < el.Count; k++) + { + if (el[k] is local_variable_reference && el[k].type is delegated_methods && (el[k].type as delegated_methods).empty_param_method != null) + { + el[k].type = (el[k].type as delegated_methods).empty_param_method.ret_type; + has_lambda_var = true; + } + } + if (has_lambda_var) + tc = get_conversions(el, set_of_possible_functions[i].parameters, + is_alone_method_defined, loc); + } + tcll.AddElement(tc); + } int j=0; while(j