#247 make-pathname: keyword directory components (:wild-inferiors) break — "the value is not a sequence"; *wild-path* init leaves a corrupt ? object
closedasdf.lisp:3115/3119:
- (defparameter wild-inferiors (make-pathname :directory (quote (:relative :wild-inferiors)) …)) => "; Error: the value is not a sequence"
- (defparameter wild-path …) => "; Error: The value ? is not a LIST (car/cdr)."
REPL probes: (make-pathname :directory (quote (:relative "x")) :name "y" :type "lisp") works (#P"x/y.lisp"); (make-pathname :name :wild) works (prints *); but a KEYWORD inside the :directory list ((:relative :wild-inferiors)) hits the not-a-sequence error — the namestring builder treats each directory component as a string. Handle :wild/:wild-inferiors/:up/:back directory keywords (and :wild name/type consistently).
The "?" in the second error suggests the failed first defparameter left a non-funcallable/corrupt value flowing into the next form (cf. #147). Sibling of #235 (pathnames are strings).
Found triaging the 24 residual (load "./asdf.lisp") errors under #205.
Comments (2)
Re-census on the rebuilt binary confirms both wild-inferiors/wild-path load errors are gone (24 -> 20 overall with #246/#249). Closing.
Fix pushed in f1f5c18: %path-dir-join now renders :wild-inferiors as "", and any other non-string designator via (string c) instead of feeding a keyword to concatenate. Probed on stage2 (existing-defun edit, hot-reload applies): (make-pathname :directory (quote (:relative :wild-inferiors)) :name :wild :type :wild :version :wild) => #P"/.", and the wild-inferiors shape => #P"**/". Closing after the image-bake re-census under #205 confirms the two load errors are gone.