;;; -*- Mode:Lisp; Readtable:ZL; Package:USER; Base:8; Patch-File:T -*-
;;; Patch file for System version 127.1
;;; Reason:
;;;  COMPILER:MAKE-OBSOLETE now takes a third argument, a string which is
;;;  used to say what kind of obsolete thing the first argument is. Most
;;;  importantly, it doesn't figure out at load-time what kind of form its
;;;  object is.  That would be nice, but it blows out the cold load (I
;;;  think).  Besides, the new method lets you say for yourself what kind of
;;;  obsolete thing this is.
;;; Written 26-Oct-88 23:59:45 by keith at site Gigamos Cambridge
;;; while running on Djinn from band 1
;;; with Experimental ZWEI 126.27, Experimental ZMail 74.13, Experimental Local-File 76.0, Experimental File-Server 25.0, Experimental Lambda-Diag 18.0, Experimental Unix-Interface 15.0, Experimental Tape 26.4, Experimental System 127.0, Microcode 1762, SDU Boot Tape 3.14, SDU ROM 102, 10/25.

; From modified file DJ: L.SYS; QRAND.LISP#514 at 27-Oct-88 00:14:21
#8R SYSTEM-INTERNALS#: 
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QRAND  "

(DEFMACRO MAKE-OBSOLETE (FORM-NAME REASON &optional (thing "form"))
  "Mark FORM-NAME as an obsolete THING, with string REASON as the reason.
REASON should be a clause starting with a non-capitalized word.
Uses of FUNCTION will draw warnings from the compiler."
  (declare (zwei:indentation 1 2))
  `(eval-when (eval load compile)
     (PUTPROP ',FORM-NAME 'COMPILER:OBSOLETE 'COMPILER:STYLE-CHECKER)
     (PUTPROP ',FORM-NAME ,(format nil  "is an obsolete ~A; ~A"
				   (or thing "form")
;This won't work because a) form may not be defined yet and b) it may change.
;				   (cond
;				     (thing)
;				     ((special-form-p form-name) "special-form")
;				     ((macro-function form-name) "macro")
;				     ((symbol-function form-name) "function")
;				     (t "form"))
				   reason)
	      'COMPILER:OBSOLETE)))

))
