PCPCMESS.TXT              Copyright (c) 1991   by  Georg Post

  MESSAGES FROM PCPC
-----------------------

Here is the list of warning and error messages produced by PCPC and inserted
into the C output. Fatal Errors end with the exclamation mark, Warnings end
with a question mark, the rest is other errors.


Pointer [xxxx] gone wild!                            [pascannr.rangeCheck]
   Fatal pointer bug in PCPC. xxxx is a hint to the subroutine which attempted
   to write to out-of-range pointer memory.

Expect here xxxx !                                   [pascannr.expect]
   Syntax error in the source code, with respect to the "Grammar5" rules.
   xxxx is the kind of symbol that the parser expected to find here:
      Number
      String const
      <start of an explicit production rule> (grammar nonterminal symbol)
      <any Pascal keyword or symbol>
      constId        constant identifier
      typeId         type identifier
      fieldId        record field identifier
      varId          variable identifier
      functId        function name
      procId         procedure name
      varParId       procedure VAR parameter name
      valParId       procedure value parameter
      fileId         File or Text variable
      forwId         forward declared type identifier (in pointer declaration)
      unitId         unit name
      labelId        label identifier

Maybe here xxxx !                                   [pascannr.expect]
   Syntax error in the source code, with respect to the "Grammar5" rules.
   xxxx is ONE OF the symbols that the parser expected to find here.
   See the list for Expect here ....

[annexId] redefined Id?                             [pascannr.annexId]
   A global identifier has been redeclared. This is tolerated in the
   interface sections of a pair of Units, if-and-only-if the second
   declaration has the same effect as the first one (example: the color names
   in Crt and Graph).

[annexId] linkage bug ?                             [pascannr.annexId]
   Internal bug of the annexId routine, in cases when a new identifier
   overrides an old one with the same name. Should only occur when the reuse
   is illegal in Pascal.

[treatsymbol] Redefined id?                         [pascannr.treatSymbol]
   A symbol which was already declared is redefined in the same block.

{$define} symbol overflow!                          [pascannr.defDirective]
   PCPC has a stack of only 20 compiler-switch symbols.

Unknown Directive xx                                [pascannr.doDirective]
   PCPC finds a compiler directive {$xx ...} which it cannot understand.

Why include xxxx ?                                  [pascannr.doInclude]
   PCPC found a {$I xxxx } file inclusion directive and is just sorry about
   not liking such things.

No room to Include xxxx                             [pascannr.doInclude]
   The included file, inserted into the main file, won't fit into PCPC's
   55k buffer.

Input buffer overflow!!                             [pascannr.readSource]
   The Unit or Program file is too big for PCPC's 55k buffer.

QualIdent not found!                                [pascannr.qualIdent]
   A qualified identifier (unitId.globalId) whose origin PCPC cannot detect
   without ambiguity. Proper conversion to C is difficult since Units
   translate to separate, linkable .C files: Globals must be unique across
   all imported  Units and the main file.

[pointSymbol] Dot not allowed                       [semanti6.pointSymbol]
   The dot "." was used following a non-record identifier.

[arithbin] illegal arith (X+Y)                      [semanti6.arithbin]
   An arithmetic operator was used between non-compatible types.
   X and Y are the type element symbols as listed in Pcpcdata.pas

[arithuna] illegal arith                            [semanti6.arithuna]
   A unary arithmetic operator is used on the wrong data type.

[logop] XY operands                                 [semanti6.logop]
   A logical operator is not supported between types X and Y.

[comparop] String comparison                        [semanti6.comparop]
   A string may not be compared to a non-string.

[comparop] illegal comparison                       [semanti6.comparop]
   Comparison operator was used between non-compatible types.

[checkProcPar] Too many params                      [semanti6.checkProcPar]
   A procedure call had more parameters than the procedure declaration.

[checkProcPar] param mismatch?                      [semanti6.checkProcPar]
   PCPC thinks that the actual parameter's type is not assignment compatible
   (call by value) or equivalent (call by reference) to the formal parameter
   type of the function declaration.

[subtypeUpdate] illegal index type                  [semanti6.subtypeUpdate]
   An array index type must be: Subrange,Enumeration,Char,Byte or Boolean.

[assignment] type conflict X <-- Y                  [semanti6.assignment]
   The types of a variable and an expression (X and Y) are not
   assignment compatible.

[getField] No field                                 [semanti6.getField]
   A non-field identifier occurs after a record symbol.

[getField] Rec.Field not compatible                 [semanti6.getField]
   A field identifier does not belong to the record symbol encountered.

[manageWith] no record argument                     [semanti6.manageWith]
   A With clause used a non-record identifier

Function has no C code?                             [semanti6.callSomething]
   The syntax is Ok, but a system function (+Dos+Crt+Graph) called here has no
   equivalent in PCPC's library (is marked with @ in the header files).

nnn  Missing parameters                             [semanti6.verifyCall]
   A function call has nnn parameters less than the declaration.

[-pointTo] No pointer                               [semanti6.semanticAction]
   A pointer symbol ^ is used without a pointer

[-arrayAddr] Index type
   An array index expression is not compatible with the declared index type

[-pushParam] invalid VAR par.?
   A value expression is used where a Var parameter is required

[-forInit] illegal loop var.
   FOR loop variables should have finite simple types.

duplicate : symbol?
   The "::" symbol is understood only for system headers (weak types)

[-subranEnd] type conflict
   The two constants of a subrange declaration do not have the same type

[-subranEnd] illegal subrange
   The end of a subrange is smaller than the beginning.

[-typeStr] String index <1 or >255
   A string type declaration is restricted to sizes 1...255

[-constRef] Sign illegal?
   A non-integer constant may not have a sign prefix

[-memAlloc] no pointer arg to NEW
   A "New" system call is made with a non-pointer

misplaced symbol
   An option symbol "[" is allowed only in System headers

Feature has no C code.
   Anything which has the _forbidden marker in the Grammar5 syntax rules.
   Turbo Pascal features which PCPC dislikes or does not implement:
     MEM and PORT addressing
     @ operator
     typecast operators
     sizeof operator
     inline code
     absolute qualifier
     interrupt or external procedure

meaningless "@" ?
   The "@" symbol may only be added after System procedure declarations.
   It means that the procedure is not (yet) supported in the PCPC library.

Expression too long.                                [Cdeclara.outC]
   The expression accumulator for C expressions saturates at 250 characters.

Expression stack bounds error: nn                   [Cdeclara.unaryOp]
   Underflow or overflow of the C expression stack, at index nn.

[CD:pushExp] stack overflow                         [Cdeclara.pushExp]
   Overflow of the C expression stack.
   With a screen dump of the "top ten" on stack.

unknown Forward xxxx                                [cNesting.insertGlobI]
   A local procedure was declared Forward but was not found again later on.
   (should be a bug of PCPC if TP input is correct)

Semilocal no-name type.                             [cNesting.makeAuxParam]
   A local Variable was declared with its composite private type, and is used
   inside a nested procedure block. When the nested procedure becomes global,
   the type info for that variable gets lost. (Bug of PCPC)

too many Primary Aux Params!                        [cNesting.propagate]
   Shifting a nested procedure to global scope, with more than 40 auxiliary
   parameters, is not supported.

too many secondary AuxParams!                       [cNesting.oneMoreParam]
   The propagation of auxiliary parameters through nested procedures created
   more than 40 parameters for some procedure.

Too many local functions.                           [cNesting.transitiveClose]
   There are more than 60 nested procedures in a block.

AuxParam propagation Bug                            [cNesting.transitiveClose]
   The aux parameter propagation loop does not stop normally (bug)

AuxParam insertion BUG                              [cNesting.insertAuxPars]
   aux parameter insertion attempted in an expression which is not a
   function call (bug, should never occur)

[Cnesting.ExtendParList]!
   Attempted call to an unknown local procedure (bug, should never occur)

Cnesting.MaxCaller too small!
   There is no room in the list of callers of a nested procedure (limit=20).
   The aux. parameter fill-in loop will need the complete list of callers.

Negative array index.                               [Cbulk.getArrayIndex]
   PCPC does not support index 0 for string length manipulation.

CASE too complicated                                [Cbulk.]
   An interval Case label is restricted to less than 15 items. For example,
   Pascal 'A'..'Z': is not supported since it would generate 26 lines of
   (inefficient?) "case " codes in C.

Cbulk_BlockEntry: lastProc>=maxNest!                [Cbulk.compilerAction]
   nesting level of procedure declarations is too big (max. depth is 15)
