13.6 Code generator messages

This section lists all messages that can be displayed if the code generator encounters an error condition.
Error: Parameter list size exceeds 65535 bytes
The I386 processor limits the parameter list to 65535 bytes (the RET instruction causes this)
Error: File types must be var parameters
You cannot specify les 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: EXPORT declared functions can't be called
No longer in use.
Warning: Possible illegal call of constructor or destructor
The compiler detected that a constructor or destructor is called within a a method. This will probably lead to problems, since constructors / destructors require parameters on entry.
Note: Inecient code
Your statement seems dubious to the compiler.
Warning: unreachable code
You specied a construct which will never be executed. Example:
 while false do  
   begin  
   {.. code ...}  
   end;  
 

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.
Register arg1 weight arg2 arg3
Debugging message. Shown when the compiler considers a variable for keeping in the registers.
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 cannot 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: 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 a string types
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 methods directly
A message method handler method cannot be called directly if it contains an explicit self argument
Error: Jump in or outside of an exception block
It is not 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 ow statements aren't allowed in a nally block
It isn't allowed to use the control ow statements break, continue and exit inside a nally 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 nally block is executed. If the execution reaches the exit, it's unclear what to do: exiting the procedure or searching for another exception handler

Warning: Parameters size exceeds limit for certain cpu's
This indicates that you are declaring more than 64K of parameters, which might not be supported on other processor targets.
Warning: Local variable size exceed limit for certain cpu's
This indicates that you are declaring more than 32K of local variables, which might not be supported on other processor targets.
Error: Local variables size exceeds supported limit
This indicates that you are declaring more than 32K of local variables, which is not supported by this processor.
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.
Fatal: Unknown compilerproc "arg1". Check if you use the correct run time library.
The compiler expects that the runtime library contains some subrountines. If you see this error and you didn't mess with the runtime library, it's very likely that the runtime library you're using doesn't match the used compiler. If you changed the runtime library this error means that you removed a subroutine which the compiler needs for internal use.