On 29/07/2025 09:36, Michael Van Canneyt wrote:
Same here, you're missing a type parameter. TFoo needs 2 type parameters.

Ups, thanks.

Any obvious  (or non obvious) mistake of mine in the below?

Because either of the 2 commented specialize cause errors in the generics... (but only if TFoo.F  SWAPS the order of param).

It compiles fine
- with both the specialize commented
- or with TBar replacing "F" with the commented "F"



program Project1;
{$Mode objfpc}
type

  generic TBar<A,B> = class; // forward   // LINE 5

  generic TFoo<A, B> = class
    F:specialize TBar<A,B>;
    X:B;
  end;      // LINE 10

  generic TBar<A, B> = class
    F:specialize TFoo<B,A>;
    //F:specialize TFoo<A,B>;
    X:B;
  end;

  //x1 = specialize TBar<Byte, Boolean>;  // project1.lpr(5,28) Fatal: Syntax error, "identifier" expected but ";" found   //x2 = specialize TFoo<Byte, Boolean>; // project1.lpr(10,6) Fatal: Syntax error, "identifier" expected but ";" found

begin

end.
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to