;;; -*- Mode:Lisp; Readtable:ZL; Package:USER; Base:8; Patch-File:T -*-
;;; Patch file for System version 126.82
;;; Reason:
;;;  COMPILER:WARN's first return value is not predictable (comes from complex
;;;  warning recording activity).  Give it a second value I can use to recognize
;;;  when compiler style checkers have issued a warning as their last act (all that
;;;  I can find do so).  Note that (from now on) style checkers should respect this
;;;  convention that, when a style violation is detected, the last thing done before
;;;  exit is to call COMPILER:WARN appropriately.
;;; Written 15-Sep-88 01:47:19 by keith (Keith Corbett) at site Gigamos Cambridge
;;; while running on Breaking Glass from band 3
;;; with Experimental System 126.81, Experimental ZWEI 126.10, Experimental ZMail 74.1, Experimental Local-File 76.0, Experimental File-Server 25.0, Experimental Unix-Interface 14.0, Experimental Tape 25.1, Experimental Lambda-Diag 18.0, microcode 1762, SDU Boot Tape 3.14, SDU ROM 103, Lambda/Falcon Development System.



; From modified file DJ: L.SYS; QCFILE.LISP#379 at 15-Sep-88 01:47:30
#8R COMPILER#: 
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "COMPILER")))
  (PATCH-SOURCE-FILE "SYS: SYS; QCFILE  "

(DEFUN COMPILER:WARN (TYPE SEVERITY FORMAT-STRING &REST ARGS)
  "Record and print a compiler warning.
TYPE describes the particular kind of problem, such as FUNCTION-NOT-VALID.
SEVERITY is a symbol in the keyword package giving a broader classification;
  see the source for a list of possible severities.
FORMAT-STRING and ARGS are used to print the warning.
/
Severities include /(though are not limited to/):
/
 :IMPLAUSIBLE - something that is not intrinsically wrong but is probably due
	to a mistake of some sort.
 :IMPOSSIBLE - something that cannot have a meaning.
 :MISSING-DECLARATION - free variable not declared special, usually.
 :PROBABLE-ERROR - something that is an error unless you have changed something else.
 :OBSOLETE - something that you shouldn't use any more.
 :VERY-OBSOLETE - similar to :OBSOLETE, only more so.
 :NOT-PORTABLE - code that may not be portable between LISP implementations.
 :ERROR - there was an error in reading or macro expansion.
 :FATAL - there was an error that prevents further compilation."
  (declare (zwei:indentation (2 1)))
  (values
    (APPLY #'SI:RECORD-AND-PRINT-WARNING TYPE SEVERITY NIL FORMAT-STRING
	   ;;;>>>Don't need to worry about temp areas with Lambda GC.
	   ;;	 (LET ((DEFAULT-CONS-AREA BACKGROUND-CONS-AREA))
	   ;;	   ;; Copy temp area data only; note that ARGS lives in PDL-AREA.
	   ;;	   ;; on error for nonexistent package refname.
	   ;;	   (MAPCAR (LAMBDA (ARG) (SI:COPY-OBJECT-TREE ARG T 12.)) ARGS))
	   ;;;Other systems don't put &rest args on stack, but args might get bashed
	   ;;;during RECORD-WARNING's list-munging.  So, 'tho I don't know if this is needed:
	   ;;;  -Keith
	   (copy-tree args))
    'warn))

))
