[fpc-devel] Fpc does not allow Chr() in type definition. Bug?

Anton Shepelev anton.txt at gmail.com
Sun Nov 8 22:17:10 CET 2020

I wrote to Bart:

> > Type
> >   SubRange = Chr(1)..Chr(2);
> > begin
> > end.
> >
> > This compiles in TP 6.0 and Delphi 7.0, but fpc doesn't.
> It also compiles in BP 7.0, but why? I think it can work
> only if the compilers treats Chr(1) as a macro, not as a
> function. Does any dialect Pascal allow function
> invocations in type definitions?

The Borland Pascal manual explains it:

   A constant expression is an expression that can be
   evaluated by the compiler without actually executing a
   these constructs are not allowed in constant expres-
   function calls (except the following)

   Abs     Chr
   Hi      Length
   Lo      Odd
   Ord     Pred
   Ptr     Round
   SizeOf  Succ
   Swap    Trunc

Did you try compiling it with FreePascal in Borland mode?

More information about the fpc-devel mailing list