Undo the previous change to SUBTYPEP and eliminate recursive types from proclamations.lsp

This commit is contained in:
Juan Jose Garcia Ripoll 2010-04-28 23:43:08 +02:00
parent 2f9e993603
commit 3f0cda1ee3
2 changed files with 7 additions and 1 deletions

View file

@ -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))

View file

@ -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))