pointer to advanced record methods
Original Reporter info from Mantis: BeniBela @benibela
-
Reporter name: Benito van der Zander
Original Reporter info from Mantis: BeniBela @benibela
- Reporter name: Benito van der Zander
Description:
Pointers to methods of advanced records should behave like pointers to class methods.
Currently they do not seem to be compatible to any procedure pointers.
Steps to reproduce:
E.g.
type TTest = record
procedure a;
end;
var r: TTest;
a: procedure of object;
p: procedure;
begin
p := @r.a;
a := @r.a;
Both assignments are rejected:
project1.lpr(24,8) Error: Incompatible types: got "PROJECT1.&LtPos;procedure variable type of procedure;Register>" expected "PROJECT1.&LtPos;procedure variable type of procedure;Register>"
project1.lpr(25,8) Error: Incompatible types: got "&LtPos;procedure variable type of procedure;Register>" expected "&LtPos;procedure variable type of procedure of object;Register>"
Yet you can do
TMethod(a).Code := @r.a;
TMethod(a).Data := @r;
Mantis conversion info:
- Mantis ID: 31528
- Build: 35148
- Version: 3.1.1
- Fixed in version: 3.3.1
- Fixed in revision: 47826 (#cbe35280)