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