{Begin SubSec Compiler Error Messages}
{Title Compiler Error Messages}
{Text

{Tag CompilerErrors}

{index *BEGIN* compiler error messages}
{index *BEGIN* errors in compiler}

Messages describing errors in the function being compiled are also printed
on the teletype.  These messages are always preceded by {index *****  (in Compiler Error Messages)}{lisp *****}.  Unless otherwise indicated below, the compilation will continue.


{Begin LabeledList Compiler Error Messages}


{Label
{lisp ({arg FN} NOT ON FILE, COMPILING IN CORE DEFINITION)}{index *PRIMARY* NOT IN FILE - USING DEFINITION IN CORE Error}
}
{Item
From calls to {fn BCOMPL} and {fn BRECOMPILE}.
}


{Label
{lisp ({arg FN} NOT COMPILEABLE)}{index *PRIMARY* NOT COMPILEABLE Error}
}
{Item
An {lisp EXPR} definition for {arg FN} could not be found.  In this case, no code is produced for {arg FN}, and the compiler proceeds to the next function to be compiled, if any.
}


{Label
{lisp ({arg FN} NOT FOUND)}{index *PRIMARY* NOT FOUND Error}
}
{Item
Occurs when {fn RECOMPILE} or {fn BRECOMPILE} try to copy the compiled definition of {arg FN} from {arg CFILE}, and cannot find it.  In this case, no code is copied and the compiler proceeds to the next function to be compiled, if any.
}


{Label
{lisp ({arg FN} NOT ON BLKFNS)}{index *PRIMARY* NOT ON BLKFNS Error}
}
{Item
{arg FN} was specified as an entry to a block, or else was on {var BLKAPPLYFNS}, but did not appear on the {arg BLKFNS}.
In this case, no code is produced for the entire block and the compiler proceeds to the next function to be compiled, if any.
}


{Label
{lisp ({arg FN} CAN'T BE BOTH AN ENTRY AND THE BLOCK NAME)}{index *PRIMARY* CAN'T BE BOTH AN ENTRY AND THE BLOCK NAME Error}
}
{Item
In this case, no code is produced for the entire block and the compiler proceeds to the next function to be compiled, if any.
}


{Label
{lisp ({arg BLKNAME} - USED BLKAPPLY WHEN NOT APPLICABLE)}{index *PRIMARY* USED BLKAPPLY WHEN NOT APPLICABLE Error}
}
{Item
{fn BLKAPPLY} is used in the block {arg BLKNAME}, but there are no {var BLKAPPLYFNS} or {var ENTRIES} declared for the block.
}


{Label
{lisp ({arg VAR} SHOULD BE A SPECVAR - USED FREELY BY} {arg FN}){index *PRIMARY* SHOULD BE A SPECVAR Error}
}
{Item
In Interlisp-10, while compiling a block, the compiler has already generated code to bind {arg VAR} as a {lisp LOCALVAR}, but now discovers that {arg FN} uses {arg VAR} freely.  {arg VAR} should be declared a {lisp SPECVAR} and the block recompiled.
}


{Label
{lisp ((* --) COMMENT USED FOR VALUE)}{index *PRIMARY* COMMENT USED FOR VALUE Error}
}
{Item
A comment appears in a context where its value is being used, e.g.
{lisp (LIST X (* --) Y)}.  The compiled function will run, but the value at the point where the comment was used is "undefined."
}


{Label
{lisp (({arg FORM}) - NON-ATOMIC CAR OF FORM)}{index *PRIMARY* NON-ATOMIC CAR OF FORM Error}
}
{Item
If user intended to treat the value of {arg FORM} as a function,
he should use {fn APPLY*} ({PageRef Fn APPLY*}).  {arg FORM} is compiled as if {fn APPLY*} had been used.
}


{Label
{lisp ((SETQ {arg VAR} {arg EXPR} --) BAD SETQ)}{index *PRIMARY* BAD SETQ Error}
}
{Item
{fn SETQ} of more than two arguments.
}


{Label
{lisp ({arg FN} - USED AS ARG TO NUMBER FN?)}{index *PRIMARY* USED AS ARG TO NUMBER FN? Error}
}
{Item
The value of a predicate, such as {lisp GREATERP} or {lisp EQ}, is used as an
argument to a function that expects numbers, such as {lisp IPLUS}.
}


{Label
{lisp ({arg FN} - NO LONGER INTERPRETED AS FUNCTIONAL ARGUMENT)}{index NO LONGER INTERPRETED AS FUNCTIONAL ARGUMENT Error}
}
{Item
The compiler has assumed {arg FN} is the name of a function.  If the user intended to treat the {it value} of {arg FN} as a function, he must use {fn APPLY*} ({PageRef Fn APPLY*}).

This message is printed when {arg FN} is not defined, and is also a local variable of the function being compiled.  Note that earlier versions of the Interlisp-10 compiler did treat {arg FN} as a functional argument, and compiled code to evaluate it.
}


{Label
{lisp ({arg FN} - ILLEGAL RETURN)}{index *PRIMARY* ILLEGAL RETURN Error}
}
{Item
{fn RETURN} encountered when not in {fn PROG}.
}


{Label
{lisp ({arg TG} - ILLEGAL GO)}{index *PRIMARY* ILLEGAL GO Error}
}
{Item
{fn GO} encountered when not in a {fn PROG}.
}


{Label
{lisp ({arg TG} - MULTIPLY DEFINED TAG)}{index *PRIMARY* MULTIPLY DEFINED TAG Error}
}
{Item
{arg TG} is a {lisp PROG} label that is defined more than once in a single
{lisp PROG}.
The second definition is ignored.
}


{Label
{lisp ({arg TG} - UNDEFINED TAG)}{index *PRIMARY* UNDEFINED TAG Error}
}
{Item
{arg TG} is a {lisp PROG} label that is referenced but not defined
in a {lisp PROG}.
}


{Label
{lisp ({arg VAR} - NOT A BINDABLE VARIABLE)}{index *PRIMARY* NOT A BINDABLE VARIABLE Error}
}
{Item
{arg VAR} is {lisp NIL}, {lisp T}, or else not a literal atom.
}


{Label
{lisp ({arg VAR} {arg VAL} -- BAD PROG BINDING)}{index *PRIMARY* BAD PROG BINDING Error}
}
{Item
Occurs when there is a prog binding of the form
{lisp ({arg VAR} {arg VAL{sub 1}} {ellipsis} {arg VAL{sub N}})}.
}


{Label
{lisp ({arg TG} - MULTIPLY DEFINED TAG, ASSEMBLE)}{index *PRIMARY* MULTIPLY DEFINED TAG, ASSEMBLE Error}
}
{Item
{arg TG} is a label that is defined more than once in an assemble form.  
}


{Label
{lisp ({arg TG} - UNDEFINED TAG, ASSEMBLE)}{index *PRIMARY* UNDEFINED TAG, ASSEMBLE Error}
}
{Item
{arg TG} is a label that is referenced but not defined in an {lisp ASSEMBLE} form.
}


{Label
{lisp ({arg TG} - MULTIPLY DEFINED TAG, LAP)}{index *PRIMARY* MULTIPLY DEFINED TAG, LAP Error}
}
{Item
{arg TG} is a label that was encountered twice during the second pass
of the compilation.
If this error occurs with no indication of a multiply defined tag during pass one,
the tag is in a LAP macro.
}


{Label
{lisp ({arg TG} - UNDEFINED TAG, LAP)}{index *PRIMARY* UNDEFINED TAG, LAP Error}
}
{Item
{arg TG} is a label that is referenced during the second pass of
compilation and is not defined.
LAP treats {arg TG} as though it were a {lisp COREVAL}, and continues the compilation.
}


{Label
{lisp ({arg OP} - OPCODE? - ASSEMBLE)}{index *PRIMARY* OPCODE? - ASSEMBLE Error}
}
{Item
{arg OP} appears as {fn CAR} of an assemble statement, and is illegal.  See {PageRef Tag Assembler} for legal assemble statements.
}


{Label
{lisp (NO BINARY CODE GENERATED OR LOADED FOR {arg FN})}{index *PRIMARY* NO BINARY CODE GENERATED OR LOADED Error}
}
{Item
A previous error condition was sufficiently serious that binary code for {arg FN} cannot be loaded without causing an error.
}

{End LabeledList Compiler Error Messages}

{index *END* errors in compiler}
{index *END* compiler error messages}

}{End SubSec Compiler Error Messages}