Just found that the below works.

Note, that the result type of "a" (overridden) is different.
Well, TFoo2 will always satisfy the needs of TFoo, so it seems save. I still found it surprising. Is it intended?


program Project1;
type
  TFoo= class
  public
    function a: TFoo; virtual;
  end;

  TFoo2= class(TFoo)
  public
    function a: TFoo2; override;
  end;

function TFoo2.a: TFoo2;
begin
end;

function TFoo.a: TFoo;
begin
end;

begin
end.

_______________________________________________
fpc-devel maillist  -  [email protected]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to