I would personally call that unusual at best. Logically I would
consider it a type mismatch or a syntax error of some kind, since TFoo
is a class and TFooClass is a metaclass. Also, if I saw such code in a
project, I would think someone made a mistake that didn't get caught,
since TFoo.Create would make much more sense.
I'd wonder if, under OBJFPC mode, such a construct should raise a
compiler error because I honestly can't see a situation where it would
be correct and intentional over using the associated class in its place.
Kit
On 06/07/2025 13:38, Bart via fpc-devel wrote:
On Sun, Jul 6, 2025 at 1:57 PM Martin Frb via fpc-devel
<fpc-devel@lists.freepascal.org> wrote:
program Project1;
{$mode objfpc}
type TFoo = class end;
TFooClass = class of TFoo;
var f: TFoo;
fc: TFooClass;
begin
fc := TFoo;
f := fc.Create;
f := TFooClass.Create; // works
end.
Delphi (7) happily compiles that as well.
And f is of type TFoo there as well.
--
This email has been checked for viruses by Avast antivirus software.
www.avast.com
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel