0.7.2.7:
authorWilliam Harold Newman <william.newman@airmail.net>
Mon, 8 Apr 2002 22:00:38 +0000 (22:00 +0000)
committerWilliam Harold Newman <william.newman@airmail.net>
Mon, 8 Apr 2002 22:00:38 +0000 (22:00 +0000)
commit67d2b80e478824a46317419f076ab1f6b020f6b1
tree5468603e56ff7b5eaa2b85801693cccfc94df279
parent686043635c45a16b418d2cc96a7f704fdab182c2
0.7.2.7:
making SUBTYPEP work better on ATOM (which is tricky because
it contains a naughty NOT, and which CMU CL SUBTYPEP
mostly punted on in a way that ANSI forbids), in a way
inspired by but different from CSR "get atom subtype"
patch...
...Do CALL-NEXT-METHOD, more or less, when before UNION-TYPE's
COMPLEX-SUBTYPEP-ARG2 would return NIL NIL.
...reviewed all COMPLEX-SUBTYPEP-ARG1 methods adding defensive
code to handle the new TYPE2 args that they may see now
...hacked HAIRY-COMPLEX-SUBTYPEP-ARG1 type method so that it
understands that ATOM isn't a subtype of any built-in
type except T and ATOM itself
(After changes above, we can deal with most of the cases that
CSR's patch did, but not yet (SUBTYPEP 'ATOM NIL). I
posted the code to sbcl-devel, got the green flag from
CSR, and forged ahead.)
...factored out the CALL-NEXT-METHOD-ish logic used in the
UNION-TYPE COMPLEX-SUBTYPEP-ARG2 method so that it can
be used in other COMPLEX-SUBTYPEP-ARG2 methods
...used the CALL-NEXT-METHOD-ish logic not only for NAMED
(to deal with (SUBTYPEP 'ATOM NIL)) but also in other
COMPLEX-SUBTYPEP-ARG2 methods which looked as though
they could (or just might) benefit from it
...The precondition "this will never be called with a hairy
type as TYPE2" in !HAS-SUPERCLASSES-COMPLEX-SUBTYPEP-ARG1
is now broken. (It would've been easier to figure this
out if the precondition had been expressed as an
assertion instead of just a comment. Oh well...)
...The SATISFIES FBOUNDP types floating around (mostly in pprint)
aren't really very good types in the sense of ANSI CL,
because they're not in general fixed sets, but can
change with time, so when the compiler attempts
reasonable tests and optimziations on them, things
will get confused. So convert them to explicit calls
to FBOUNDP, and/or just punt them somehow.
...Factor out the "type can conceal other types" predicate
in general. (Replace FLET SIMPLE-CTYPE?, and various
expressions involving HAIRY-TYPE-P, with a
TYPE-MIGHT-CONTAIN-OTHER-TYPES? CTYPE slot accessor,
and set that slot for HAIRY and COMPOUND CTYPEs.)
...Since there's an extra slot in CTYPE, we need to change
+FASL-FILE-VERSION+ again.
(Remove ridiculous #+(OR SBCL CMU) in my local CLOCC "ANSI"
test cases :TYPE-LEGACY-405, :TYPE-LEGACY-410, and
:TYPE-LEGACY-437. Otherwise we *fail* those tests now
that we have ANSI behavior! What were the CLOCC guys
thinking??)
Now bug #58 is gone too. Cool!
BUGS
NEWS
src/code/coerce.lisp
src/code/cross-type.lisp
src/code/early-fasl.lisp
src/code/early-type.lisp
src/code/late-type.lisp
src/code/pprint.lisp
src/code/type-class.lisp
src/code/typedefs.lisp
tests/type.impure.lisp