diff --git a/src/cmp/proclamations.lsp b/src/cmp/proclamations.lsp index a96ebbe1a..2ded6539a 100644 --- a/src/cmp/proclamations.lsp +++ b/src/cmp/proclamations.lsp @@ -79,6 +79,8 @@ (deftype array-rank-index () '(integer 0 #.(1- array-rank-limit))) (deftype association-list () + 'list + #+(or) '(or null (cons cons association-list))) (deftype byte-specifier () "The type of the output of BYTE." @@ -133,8 +135,12 @@ (deftype pathname-version () '(or unsigned-byte (member nil :wild :newest :unspecific))) (deftype proper-list () + 'list + #+(or) '(or null (cons t proper-list))) (deftype property-list () + 'list + #+(or) '(or null (cons t (cons t property-list)))) (deftype radix () '(integer 2 36)) diff --git a/src/lsp/predlib.lsp b/src/lsp/predlib.lsp index 33eb49457..f30b6c081 100644 --- a/src/lsp/predlib.lsp +++ b/src/lsp/predlib.lsp @@ -1093,8 +1093,8 @@ if not possible." ;; 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) + (canonical-type 'CONS) (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))