This commit is contained in:
Ivan Bondarev 2021-01-24 13:48:54 +01:00
parent 27a1546e8a
commit 3743c07129
2 changed files with 23 additions and 1 deletions

20
TestSuite/delegates18.pas Normal file
View file

@ -0,0 +1,20 @@
var i: integer;
procedure p(x: Object);
begin
i := 1;
end;
procedure p(x: procedure);
begin
i := 2;
end;
procedure x := exit;
procedure xx(a: integer) := exit;
begin
var proc: procedure := x;
p(x);
assert(i = 2);
p(xx);
assert(i = 1);
end.

View file

@ -1259,7 +1259,9 @@ namespace PascalABCCompiler.TreeConverter
{ {
if ((left.first==null)&&(right.first!=null)) if ((left.first==null)&&(right.first!=null))
{ {
return type_conversion_compare.greater_type_conversion; if (right.from.IsDelegate && right.to.IsDelegate && left.to == SystemLibrary.SystemLibrary.object_type)
return type_conversion_compare.less_type_conversion;//right.first != null из-за структурной эквивалентности процедурных типов и в силу того, что для каждого процедурного типа создается свой класс и и создается пустой метод преобразования типов
return type_conversion_compare.greater_type_conversion;
} }
if ((left.first!=null)&&(right.first==null)) if ((left.first!=null)&&(right.first==null))
{ {