typep: handle * type

This is the same as T according to '2.4.3 Type Specifiers' in the
spec. Fixes #240.

"If a type specifier is a list, the car of the list is a symbol,
and the rest of the list is subsidiary type information. Such a type
specifier is called a compound type specifier. Except as explicitly
stated otherwise, the subsidiary items can be unspecified. The
unspecified subsidiary items are indicated by writing *. For example, to
completely specify a vector, the type of the elements and the length of
the vector must be present."
This commit is contained in:
Daniel Kochmański 2016-05-25 08:47:55 +02:00
parent 4fcf48926b
commit 672ded2dc6

View file

@ -539,7 +539,7 @@ Returns T if X belongs to TYPE; NIL otherwise."
(AND (dolist (e i t)
(unless (typep object e) (return nil))))
(SATISFIES (funcall (car i) object))
((T) t)
((T *) t)
((NIL) nil)
(BIGNUM (and (integerp object) (not (si::fixnump object))))
(STANDARD-CHAR