1.0.3.5: slightly different SEQUENCE type handling.
authorChristophe Rhodes <csr21@cantab.net>
Wed, 28 Feb 2007 16:05:57 +0000 (16:05 +0000)
committerChristophe Rhodes <csr21@cantab.net>
Wed, 28 Feb 2007 16:05:57 +0000 (16:05 +0000)
commitb2f0204834bd0c314d44942dd92475c15ffa8c89
tree72f4fbfa0db8ebc098a1ecbd9c281c39b4a6061d
parent70ea7795526d1ddc10da8999a0f0e46ef2612318
1.0.3.5: slightly different SEQUENCE type handling.
The UNION TYPE= issue affects type derivation as in
(defun foo (x)
          (declare (type (simple-array character) x))
          (subseq x 1 2))
        where the system fails to derive that the intersection of
consed-sequence and (simple-array character) is distinct from
consed-sequence.  Change SEQUENCE to be an explicit union of
LIST, VECTOR and an EXTENDED-SEQUENCE named type, defining
appropriate type methods, and the symptom (but not the cause)
goes away.

(Note: it may well be that the EXTENDED-SEQUENCE named type
disappears again, to be replaced by an actual protocol class
similar to FUNDAMENTAL-STREAM for Gray streams, for reasons of
future extensibility and ease of compatibility with other Lisps.
        Waiting for ILC feedback...)
13 files changed:
BUGS
package-data-list.lisp-expr
src/code/class.lisp
src/code/deftypes-for-target.lisp
src/code/early-type.lisp
src/code/late-type.lisp
src/code/pred.lisp
src/code/primordial-type.lisp
src/code/typep.lisp
src/compiler/generic/primtype.lisp
src/compiler/generic/vm-fndb.lisp
src/compiler/typetran.lisp
version.lisp-expr