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

with-slots bug (still)



	In the 8/1 PCL, running in Lucid, the following error occurs:

(defclass foo () (x y) (:accessor-prefix))
(defclass bar () (z w))

(defmethod foobar ((f foo) (b bar))
  (with-slots (x y) f
    (setf y (+ x (w b)))))

(setq f (make-instance 'foo :x 1 :y 1))
(setq b (make-instance 'bar :w 1 :z 1))

Now, (foobar f b) produces the following:

OOPS> >>Error: X has no global value

SYMBOL-VALUE:
   Required arg 0 (S): X

:A    Abort to Lisp Top Level
:C    Try evaluating X again




Here is a Lucid backtrace and walk up the stack - I don't know how
helpful this is, but it can't hurt to include it!  Please keep me
posted -

		Mike Sokolov


-> :b
SYMBOL-VALUE <- PCL::STD-INSTANCE-ACCESS-PV <- (LAMBDA (#:G20212) (DECLARE
(PCL::VARIABLE-REBINDING #:G20212 F)) (PCL::STD-INSTANCE-ACCESS-PV #:G20212
(QUOTE 0) (+ X #))) <- LET <- BLOCK <- PROGN <- LET <- |(PCL::METHOD FOOBAR (FOO
BAR))| <- PCL::NOTICE-M
ETHODS-CHANGE-2 <- EVAL <- REPL <- EVAL <- EVAL <- unnamed function <- unnamed
function
-> :n
PCL::STD-INSTANCE-ACCESS-PV:
Original code: (PCL::STD-INSTANCE-ACCESS-PV #:G20212 (QUOTE 0) (+ X (W B)))
   Local 0 (G20212): #<FOO 63413043>
-> :n
(LAMBDA (#:G20212) (DECLARE (PCL::VARIABLE-REBINDING #:G20212 F))
(PCL::STD-INSTANCE-ACCESS-PV #:G20212 (QUOTE 0) (+ X #))):
Original code: ((LAMBDA (#:G20212) (DECLARE #) (PCL::STD-INSTANCE-ACCESS-PV
#:G20212 # #)) F)
   Local 0 (G20212): #<FOO 63413043>
-> :n
LET:
Original code: (LET ((#:G20212 F)) (DECLARE (PCL::VARIABLE-REBINDING #:G20212
F)) (PCL::STD-INSTANCE-ACCESS-PV #:G20212 (QUOTE 0) (+ X #)))
-> :n
BLOCK:
Original code: (BLOCK FOOBAR (LET (#) (DECLARE #) (PCL::STD-INSTANCE-ACCESS-PV
#:G20212 # #)))
-> :n
PROGN:
Original code: (PROGN (SETQ PCL::.PV. (LET* # #)) (PROGN F B) (BLOCK FOOBAR (LET
# # #)))
-> :n
LET:
Original code: (LET ((PCL::.ISL. #) (PCL::.PV. NIL)) (SETQ PCL::.PV. (LET* # #))
(PROGN F B) (BLOCK FOOBAR (LET # # #)))
   Local 0 (.ISL.): (#<Simple-Vector T 16 CE13B3> (Y) NIL)
   Local 1 (.PV.): #<Simple-Vector T 1 CDE0A3>
-> :n
|(PCL::METHOD FOOBAR (FOO BAR))|:
Original code: (NAMED-LAMBDA |(PCL::METHOD FOOBAR (FOO BAR))| (F B) (DECLARE
(PCL::CLASS B BAR) (PCL::CLASS F FOO)) (LET (# #) (SETQ PCL::.PV. #) (PROGN F B)
(BLOCK FOOBAR #)))
   Local 0 (F): #<FOO 63413043>
   Local 1 (B): #<BAR 63413343>
-> :n
PCL::NOTICE-METHODS-CHANGE-2:
   Required arg 0 (GENERIC-FUNCTION): #<Compiled-Function FOOBAR CD0417>
   Required arg 1 (ARGS): (#<FOO 63413043> #<BAR 63413343>)
-> :n
EVAL:
   Required arg 0 (X): (FOOBAR F B)
->