diff --git a/src/changelog.lisp b/src/changelog.lisp index 761a04c..ed12420 100644 --- a/src/changelog.lisp +++ b/src/changelog.lisp @@ -12,6 +12,8 @@ "ERROR-ON-WARNINGS" "DYNAMIC-BINDINGS") :external-docs ("https://40ants.com/doc/")) + (0.11.1 2024-03-11 + "* Fixed initite loop when the system is unknown to ASDF yet.") (0.11.0 2023-06-05 "* Now docs builder tries to load system using either Quicklisp client or ASDF if system is not already loaded. * Also a bug was fixed - previously DOCS-BUILDER:BUILD function hanged in recursion in case if asdf system wasn't found. diff --git a/src/utils.lisp b/src/utils.lisp index 609a8b7..a28c269 100644 --- a/src/utils.lisp +++ b/src/utils.lisp @@ -50,7 +50,11 @@ (labels ((recurse (system) (typecase system ((or string symbol) - (recurse (asdf:registered-system system))) + (let ((found-system (asdf:registered-system system))) + (unless found-system + (error "Unable to find system \"~A\". Try to load it using ASDF or Quicklisp." + system)) + (recurse found-system))) (asdf:system (loop for item in (asdf:system-depends-on system) @@ -60,14 +64,14 @@ when (and real-item (not seen) (asdf/system:primary-system-p real-item)) - do (pushnew real-item results - :test #'string=) + do (pushnew real-item results + :test #'string=) when (and real-item (not seen) (or all (not (asdf/system:primary-system-p real-item)))) - do (push real-item visited) - (recurse real-item)))))) + do (push real-item visited) + (recurse real-item)))))) (recurse system) (values (sort results #'string<)))))