Re: Help



--- Christophe Rhodes <csr21@cam.ac.uk> wrote:
> C Y <smustudent1@yahoo.com> writes:
> 
> > --- Wolfgang Jenkner <wjenkner@inode.at> wrote:
> >> This indicates that we should find the clue in the messages SBCL
> >> produced while compiling the function GRAB-LINE-NUMBER in this
> file.
> >> 
> >> Wolfgang
> >
> > I think this is it:
> >
> > ; file: /home/user/maxima/src/mdebug.lisp
> > ; in: DEFUN GRAB-LINE-NUMBER
> > ;     (DEFUN MAXIMA::GRAB-LINE-NUMBER (MAXIMA::LI STREAM)
> > ;     (DECLARE (TYPE (VECTOR #) MAXIMA::LI))
> > ;     (COND ((AND # #) (MAXIMA::LET # #))))
> > ; --> PROGN SB-IMPL::%DEFUN SB-IMPL::%DEFUN SB-INT:NAMED-LAMBDA
> > ; ==>
> > ;   #'(SB-INT:NAMED-LAMBDA MAXIMA::GRAB-LINE-NUMBER
> > ;			   (MAXIMA::LI STREAM)
> > ;			   (DECLARE (TYPE (VECTOR #) MAXIMA::LI))
> > ;			   (BLOCK MAXIMA::GRAB-LINE-NUMBER (COND (# #))))
> > ;
> > ; caught ERROR:
> > ;   bad thing to be a type specifier: (BASE-CHAR)
> 
> I think SBCL is right: the type specifier (BASE-CHAR) is not valid.
> (this is indeed a recent change in SBCL).
> 
> I don't have maxima sources to hand: if there's a literal (base-char)
> in the code, try changing it to simply base-char; if there doesn't
> seem to be one, we might have to dig deeper.

I don't see one.  Here's the function in question:

(defun grab-line-number (li stream)
  (declare (type (vector ( #. (array-element-type "ab"))) li))
  (cond ((and (> (length li) 3)
	      (digit-char-p (aref li 1)))
	 (let ((in (get-instream stream)))
	   (and in
		(progn
		 (multiple-value-bind
		  (line pos)
		  (read-from-string li nil nil)
		  (let ((file (read-from-string li nil nil
						:start pos)))
		    (cond ((and (stringp file) (fixnump line))
			   (setf (instream-stream-name in)
				 file)
			   (setf (instream-line in)
				 line)))
		    )))))))

  )


__________________________________
Do you Yahoo!?
Protect your identity with Yahoo! Mail AddressGuard
http://antispam.yahoo.com/whatsnewfree