diff --git a/src/lsp/predlib.lsp b/src/lsp/predlib.lsp index ab7d09ab1..33eb49457 100644 --- a/src/lsp/predlib.lsp +++ b/src/lsp/predlib.lsp @@ -1090,6 +1090,11 @@ if not possible." ;; are strictly supported. ;; (defun register-cons-type (&optional (car-type '*) (cdr-type '*)) + ;; The problem with the code below is that it does not suport infinite + ;; recursion. Instead we just canonicalize everything to CONS, irrespective + ;; of whether the arguments are valid types or not! + (canonical-type 'CONS) + #+(or) (let ((car-tag (if (eq car-type '*) -1 (canonical-type car-type))) (cdr-tag (if (eq cdr-type '*) -1 (canonical-type cdr-type)))) (cond ((or (zerop car-tag) (zerop cdr-tag))