This commit is contained in:
Бондарев Иван 2018-08-06 12:54:40 +02:00
parent 8be06920d6
commit 2026576845
2 changed files with 20 additions and 2 deletions

19
TestSuite/overloads8.pas Normal file
View file

@ -0,0 +1,19 @@
type Point = auto class
x,y: integer;
end;
var i := 1;
function RandomPoint: Point;
begin
Result := new Point(i, i);
Inc(i);
end;
var a: array of Point;
begin
a := ArrGen(10,i->RandomPoint);
assert(a.Min(p->p.x) = 1);
assert(a.Max(p->p.x) = 10);
end.

View file

@ -2235,8 +2235,7 @@ namespace PascalABCCompiler.TreeConverter
// выбрать либо функцию из оставшихся с ровно совпадающим типом лямбды либо с ближайшим // выбрать либо функцию из оставшихся с ровно совпадающим типом лямбды либо с ближайшим
// (остались только те, к которым можно преобразовать) // (остались только те, к которым можно преобразовать)
// Некоторая проблема будет если лямбд останется несколько и расстояния до результата будут разными и ненулевыми везде // Некоторая проблема будет если лямбд останется несколько и расстояния до результата будут разными и ненулевыми везде
if (funcs.Count >= 2) // SSM - это ужасный способ устранения бага #236 Range(1,10).Sum(e -> e); Для хорошего способа весь код выбора версий функций для делегатов надо переписывать
if (funcs.Count == 2) // SSM - это ужасный способ устранения бага #236 Range(1,10).Sum(e -> e); Для хорошего способа весь код выбора версий функций для делегатов надо переписывать
{ {
var f1 = funcs[0]; var f1 = funcs[0];
var f2 = funcs[1]; var f2 = funcs[1];