#247 make-pathname: keyword directory components (:wild-inferiors) break — "the value is not a sequence"; *wild-path* init leaves a corrupt ? object

closed
Opened by atgreen

asdf.lisp:3115/3119:

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)

atgreen3992443442

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.

atgreen3992445249

Re-census on the rebuilt binary confirms both wild-inferiors/wild-path load errors are gone (24 -> 20 overall with #246/#249). Closing.