I would be grateful if someone could confirm this for me.
I see this in quickloading BABEL on a relatively recent SBCL 1.1.7.112.master.104-d62278d
Babel crashes on compiling:
caught ERROR: ; (during macroexpansion of (DEFINE-UCS :UCS-2LE ...)) ; #:~A-CODE-POINT-COUNTER fell through ETYPECASE expression. ; Wanted one of (STRING SIMPLE-STRING).
; in: DEFINE-UCS :UCS-2BE ; (BABEL-ENCODINGS::DEFINE-UCS :UCS-2BE 2 :BE 65536)
After that, some logic in UIOP'S CHECK-LISP-COMPILE-RESULTS goes pear-shaped.
I believe the problem starts here:
(with-upgradability () (defmacro define-convenience-action-methods (function formals &key if-no-operation if-no-component operation-initargs) (let* ((rest (gensym "REST")) (found (gensym "FOUND")) (keyp (equal (last formals) '(&key))) (formals-no-key (if keyp (butlast formals) formals)) (len (length formals-no-key)) (operation 'operation) (component 'component) (opix (position operation formals)) (coix (position component formals)) (prefix (subseq formals 0 opix)) (suffix (subseq formals (1+ coix) len)) (more-args (when keyp `(&rest ,rest &key &allow-other-keys)))) (assert (and (integerp opix) (integerp coix) (= coix (1+ opix)))) (flet ((next-method (o c) (if keyp `(apply ',function ,@prefix ,o ,c ,@suffix ,rest) `(,function ,@prefix ,o ,c ,@suffix)))) `(progn (defmethod ,function (,@prefix (,operation symbol) component ,@suffix ,@more-args) (if ,operation ,(next-method (if operation-initargs ;backward-compatibility with ASDF1's operate. Yuck. `(apply 'make-operation ,operation :original-initargs ,rest ,rest) `(make-operation ,operation)) `(or (find-component () ,component) ,if-no-component)) ,if-no-operation)) (defmethod ,function (,@prefix (,operation operation) ,component ,@suffix ,@more-args) (if (typep ,component 'component) (error "No defined method for ~S on ~/asdf-action:format-action/" ',function (cons ,operation ,component)) (if-let (,found (find-component () ,component)) ,(next-method operation found) ,if-no-component))))))))
The ERROR created here, with its embedded funcall to ASDF-ACTION:FORMAT-ACTION seems to do something bad when the format string is repackaged in UIOP/LISP-BUILD:CHECK-LISP-COMPILE-RESULTS:
(unless output (error 'compile-file-error :context-format context-format :context-arguments context-arguments))
possibly in this REPORT-FUNCTION:
(:report (lambda (c s) (format s (compatfmt "~@<~A~@[ while ~?~]~@:>") (or (compile-condition-description c) (type-of c)) (compile-condition-context-format c) (compile-condition-context-arguments c)))))
I am not particularly adept in the SBCL debugger wrapped by SLDB, especially where one of these error-wrapped-in-error-wrapped-in-ASDF-wrapped-in-quicklisp contexts, so I would be grateful if someone would try to replicate this (try a clean QL install of BABEL).
Note that the error comes with SBCL's built-in ASDF, not bleeding-edge ASDF.
Thanks! r