Invalid initialization of method variable in OBJFPC mode
Original Reporter info from Mantis: kazalex
-
Reporter name: Kazantsev Alexey
Original Reporter info from Mantis: kazalex
- Reporter name: Kazantsev Alexey
Description:
This code demonstrate issue:
procedure TObj.Test;
Var
proc : procedure of object;
begin
proc := {$IFNDEF FPC_DELPHI}@{$ENDIF}TObject.Create.Free;
WriteLn('Expected TObject actual: ', TObject(TMethod(Proc).Data).ClassName);
end;
...
"Expected TObject actual: TObj"
Steps to reproduce:
program method_init;
{.$mode delphi}
Type
{ TObj }
TObj = Class
procedure Test;
end;
{ TObj }
procedure TObj.Test;
Var
proc : procedure of object;
begin
proc := {$IFNDEF FPC_DELPHI}@{$ENDIF}TObject.Create.Free;
WriteLn('Expected TObject actual: ', TObject(TMethod(Proc).Data).ClassName);
end;
{$IFDEF FPC_DELPHI}
procedure UncompilableProc;
Var
proc : procedure of object;
begin
proc := {$IFNDEF FPC_DELPHI}@{$ENDIF}TObject.Create.Free; // uncompilable in FPC mode
WriteLn('Expected TObject actual: ', TObject(TMethod(Proc).Data).ClassName);
end;
{$ENDIF}
begin
WriteLn('Mode: ', {$IFDEF FPC_DELPHI}'delphi'{$ELSE}'objfpc'{$ENDIF});
TObj.Create.Test;
{$IFDEF FPC_DELPHI}UncompilableProc;{$ENDIF}
ReadLn;
end.
Mantis conversion info:
- Mantis ID: 24844
- OS: Windows
- OS Build: 6.3
- Build: trunk
- Platform: x86
- Version: 2.7.1
- Fixed in version: 3.0.0
- Fixed in revision: 27977 (#9450407e)
- Monitored by: » kazalex (Kazantsev Alexey)