[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug in methods' lambda lists



Running Victoria Day PCL (5/22/89) Lucid Common Lisp 3.0.2, in a 
Sun 3/280, the following code causes the compiler to abort with a 
bus error:

--------------------------
(in-package 'user :use '(pcl))

(defclass a () ())
(defmethod move-focus ((x a) &optional y &key z) (ignore x y z) nil)
--------------------------
> (compile-file "pcl-bug")
;;; You are using the compiler in production mode (compilation-speed = 0)
;;; Generation of runtime error checking code is disabled (safety = 0)
;;; Tail recursion elimination is enabled (speed = 3)
;;; Reading source file "pcl-bug.lisp"
>>Trap: Bus error

LUCID:COMPILE-FORM:
   Required arg 0 (FORM): (DEFINE-FUNCTION (QUOTE LUCID::%TOPLEVEL-THUNK)
(FUNCTION (LAMBDA NIL # NIL)))
   Required arg 1 (MODE): LUCID::TOPLEVEL
   Required arg 2 (OUTPUT): #<Compiled-Function LUCID::ASSEMBLE-FORM
291D97>
   Rest arg 3 (OUTARGS): (#<Compiled-Function LUCID::BACKEND-OUTPUT 292587>
#<Stream OSI-BUFFERED-STREAM "/u/mujica/pcl-bug.lbin" 9B363B> #<Structure
LUCID::FASLSTATE 9B4D13>)
:A  0: Abort to Lisp Top Level
--------------------------

It compiles right if the lambda list of the method is changed to:

(defmethod move-focus ((x a)  &key z &optional y) (ignore x y z) nil)


Sergio Mujica		mujica@cs.ucla.edu
Computer Science Department, UCLA