Hello.

In example tgeneric16.pp (from FPC 2.2.4 sources) the generic type TStack is declared as:
type
  { TStack }
  generic TStack<T> = class(TObject)
   public
    procedure Clear; virtual;
    destructor Destroy; override;
  end;

Though in FPC manual type is described as:
type declaration: identifier = type ;
type:   simple type
                string type
                structured type
                pointer type
                procedural type
                generic type
                specialized type
                type identifier
generic type: generic identifier < template list > = generic class ;

Following the manual, the type identifier is thus declared two times:
        - in type declaration
        - in generic type
Like:
  TStack = generic TStack<T> = class(TObject)
   public
    procedure Clear; virtual;
    destructor Destroy; override;
  end;

The syntax found in the example doesn't take care of the first identifier in type declaration.

May I suggest the following:
  TStack = generic <T> class(TObject)
   public
    procedure Clear; virtual;
    destructor Destroy; override;
  end;

This syntax looks like more Pascal conformant, i.e. it doesn't brake Pascal type declaration "identifier = type;" And this prevent the succession of greater and equal characters in "generic TStack<T>=class(TObject)" which may be considered as greater or equal ">=" by the compiler.

For sure, the simpler would be to change the manual ;-)

What are your feedbacks ?

Regards, Pascal.
http://blady.pagesperso-orange.fr






_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to