This commit is contained in:
parent
27a1546e8a
commit
3743c07129
20
TestSuite/delegates18.pas
Normal file
20
TestSuite/delegates18.pas
Normal 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.
|
||||
|
|
@ -1259,7 +1259,9 @@ namespace PascalABCCompiler.TreeConverter
|
|||
{
|
||||
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))
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in a new issue