[next] [prev] [prev-tail] [tail] [up]

### C.6 Code generator messages

This section lists all messages that can be displayed if the code generator encounters an error condition.

Error: BREAK not allowed
  You’re trying to use break outside a loop construction.
Error: CONTINUE not allowed
  You’re trying to use continue outside a loop construction.
Error: Expression too complicated - FPU stack overflow
  Your expression is too long for the compiler. You should try dividing the construct over multiple assignments.
Error: Illegal expression
  This can occur under many circumstances. Mostly when trying to evaluate constant expressions.
Error: Invalid integer expression
  You made an expression which isn’t an integer, and the compiler expects the result to be an integer.
Error: Illegal qualifier
  One of the following is happening :
  - You’re trying to access a field of a variable that is not a record.
  - You’re indexing a variable that is not an array.
  - You’re dereferencing a variable that is not a pointer.
Error: High range limit ¡ low range limit
  You are declaring a subrange, and the lower limit is higher than the high limit of the range.
Error: Illegal counter variable
  The type of a for loop variable must be an ordinal type. Loop variables cannot be reals or strings.
Error: Can’t determine which overloaded function to call
  You’re calling overloaded functions with a parameter that doesn’t correspond to any of the declared function parameter lists. e.g. when you have declared a function with parameters word and longint, and then you call it with a parameter which is of type integer.
Error: Parameter list size exceeds 65535 bytes
  The I386 processor limits the parameter list to 65535 bytes (the RET instruction causes this)
Error: Illegal type conversion
  When doing a type-cast, you must take care that the sizes of the variable and the destination type are the same.
Conversion between ordinals and pointers is not portable across platforms
  If you typecast a pointer to a longint, this code will not compile on a machine using 64bit for pointer storage.
Error: File types must be var parameters
  You cannot specify files as value parameters, i.e. they must always be declared var parameters.
Error: The use of a far pointer isn’t allowed there
  Free Pascal doesn’t support far pointers, so you cannot take the address of an expression which has a far reference as a result. The mem construct has a far reference as a result, so the following code will produce this error:

             var p : pointer;
             ...
             p:=@mem[a000:000];

Error: illegal call by reference parameters
  You are trying to pass a constant or an expression to a procedure that requires a var parameter. Only variables can be passed as a var parameter.
Error: EXPORT declared functions can’t be called
  No longer in use.
Warning: Possible illegal call of constructor or destructor (doesn’t match to this context)
  No longer in use.
Note: Inefficient code
  You construction seems dubious to the compiler.
Warning: unreachable code
  You specified a loop which will never be executed. Example:

             while false do
               begin
               {.. code ...}
               end;

Error: procedure call with stackframe ESP/SP
  The compiler encountered a procedure or function call inside a procedure that uses a ESP/SP stackframe. Normally, when a call is done the procedure needs a EBP stackframe.
Error: Abstract methods can’t be called directly
  You cannot call an abstract method directy, instead you must call a overriding child method, because an abstract method isn’t implemented.
Fatal: Internal Error in getfloatreg(), allocation failure
  An internal error occurred in the compiler; If you encounter such an error, please contact the developers and try to provide an exact description of the circumstances in which the error occurs.
Fatal: Unknown float type
  The compiler cannot determine the kind of float that occurs in an expression.
Fatal: SecondVecn() base defined twice
  An internal error occurred in the compiler; If you encounter such an error, please contact the developers and try to provide an exact description of the circumstances in which the error occurs.
Fatal: Extended cg68k not supported
  The extended type is not supported on the m68k platform.
Fatal: 32-bit unsigned not supported in MC68000 mode
  The cardinal is not supported on the m68k platform.
Fatal: Internal Error in secondinline()
  An internal error occurred in the compiler; If you encounter such an error, please contact the developers and try to provide an exact description of the circumstances in which the error occurs.
Register arg1 weight arg2 arg3
  Debugging message. Shown when the compiler considers a variable for keeping in the registers.
Error: Stack limit excedeed in local routine
  Your code requires a too big stack. Some operating systems pose limits on the stack size. You should use less variables or try ro put large variables on the heap.
Stack frame is omitted
  Some procedure/functions do not need a complete stack-frame, so it is omitted. This message will be displayed when the -vd switch is used.
Error: Object or class methods can’t be inline.
  You cannot have inlined object methods.
Error: Procvar calls can’t be inline.
  A procedure with a procedural variable call cannot be inlined.
Error: No code for inline procedure stored
  The compiler couldn’t store code for the inline procedure.
Error: Direct call of interrupt procedure arg1 is not possible
  You can not call an interrupt procedure directly from FPC code
Error: Element zero of an ansi/wide- or longstring can’t be accessed, use (set)length instead
  You should use setlength to set the length of an ansi/wide/longstring and length to get the length of such kinf of string
Error: Include and exclude not implemented in this case
  include and exclude are only partially implemented for i386 processors and not at all for m68k processors.
Error: Constructors or destructors can not be called inside a ’with’ clause
  Inside a With clause you cannot call a constructor or destructor for the object you have in the with clause.
Error: Cannot call message handler method directly
  A message method handler method can’t be called directly if it contains an explicit self argument
Error: Jump in or outside of an exception block
  It isn’t allowed to jump in or outside of an exception block like try..finally..end;:

             label 1;

             ...

             try
                if not(final) then
                  goto 1;   // this line will cause an error
             finally
               ...
             end;
             1:
             ...

Error: Control flow statements aren’t allowed in a finally block
  It isn’t allowed to use the control flow statements break, continue and exit inside a finally statement. The following example shows the problem:

             ...
               try
                  p;
               finally
                  ...
                  exit;  // This exit ISN'T allowed
               end;
             ...

  If the procedure p raises an exception the finally block is executed. If the execution reaches the exit, it’s unclear what to do: exiting the procedure or searching for another exception handler

[next] [prev] [prev-tail] [front] [up]