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))
|
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))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue