This commit is contained in:
Ivan Bondarev 2022-08-28 12:13:21 +02:00
parent 5356d2913c
commit 1aecc81874
3 changed files with 31 additions and 0 deletions

21
TestSuite/abstract4.pas Normal file
View file

@ -0,0 +1,21 @@
type
t1 = abstract class
procedure p1(p: procedure); abstract;
end;
t2 = class(t1)
procedure p1(p: procedure); override;
begin
p;
end;
end;
begin
var o := new t2;
var i := 0;
o.p1(()->begin i:=1 end);
assert(i = 1);
end.

View file

@ -0,0 +1,2 @@
##
Println{(procedure Println(a,b,...);)}

View file

@ -3943,6 +3943,14 @@ namespace PascalABCCompiler.TreeConverter
cmn.overrided_method = FindMethodToOverride(cmn);
if (cmn.overrided_method == null)
AddError(cmn.loc, "NO_METHOD_TO_OVERRIDE");
for (int i = 0; i < cmn.parameters.Count; i++)
{
var cp = cmn.parameters[i];
if (cp.type.IsDelegate && cp.type is common_type_node && (cp.type as common_type_node).name.IndexOf("$") != -1)
{
cp.type = cmn.overrided_method.parameters[i].type;
}
}
cmn.SetName(cmn.overrided_method.name);
}