diff --git a/code/loop.lisp b/code/loop.lisp index d2c79d0397b64482012a5e1d646ff59b30a4b20d..01c63395d125b4d4771da7c13a93e7b1e4c8eb0c 100644 --- a/code/loop.lisp +++ b/code/loop.lisp @@ -1117,7 +1117,15 @@ collected result will be returned as the value of the LOOP." ;; type specifier is unambiguously, and without need of translation, ;; a common lisp type specifier or pattern (matching the variable) thereof. (loop-pop-source) - (loop-pop-source)) + #-cmu + (loop-pop-source) + #+cmu + (let* ((spec (loop-pop-source)) + (init (loop-typed-init spec))) + (if (typep init spec) + spec + `(or (member ,init) spec)))) + ((symbolp z) ;;This is the (sort of) "old" syntax, even though we didn't used to support all of ;; these type symbols.