From: William H. N. <wn...@us...> - 2002-04-08 22:00:42
|
Update of /cvsroot/sbcl/sbcl In directory usw-pr-cvs1:/tmp/cvs-serv13631 Modified Files: BUGS NEWS Log Message: 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! Index: BUGS =================================================================== RCS file: /cvsroot/sbcl/sbcl/BUGS,v retrieving revision 1.122 retrieving revision 1.123 diff -C2 -d -r1.122 -r1.123 *** BUGS 1 Apr 2002 14:52:22 -0000 1.122 --- BUGS 8 Apr 2002 22:00:38 -0000 1.123 *************** *** 325,337 **** it binds is declared SPECIAL inside. - 50: - type system errors reported by Peter Van Eynde July 25, 2000: - g: The type system [still] isn't all that smart about relationships - between hairy types. [The original example from PVE was - (SUBTYPEP 'CONS '(NOT ATOM)) => NIL, NIL, which was fixed - by CSR in sbcl-0.7.1.28, but there are still - plenty of corner cases out there: (SUBTYPEP 'ATOM 'LIST) - returns NIL, NIL in sbcl-0.7.1.31.] - 51: miscellaneous errors reported by Peter Van Eynde July 25, 2000: --- 325,328 ---- *************** *** 1281,1284 **** --- 1272,1284 ---- but it has happened in more complicated cases (which I haven't figured out how to reproduce). + + 155: + Executing + (defclass standard-gadget (basic-gadget) ()) + (defclass basic-gadget () ()) + gives an error: + The slot SB-PCL::DIRECT-SUPERCLASSES is unbound in the + object #<SB-PCL::STANDARD-CLASS "unbound">. + (reported by Brian Spilsbury sbcl-devel 2002-04-09) DEFUNCT CATEGORIES OF BUGS Index: NEWS =================================================================== RCS file: /cvsroot/sbcl/sbcl/NEWS,v retrieving revision 1.115 retrieving revision 1.116 diff -C2 -d -r1.115 -r1.116 *** NEWS 4 Apr 2002 16:07:50 -0000 1.115 --- NEWS 8 Apr 2002 22:00:38 -0000 1.116 *************** *** 1074,1077 **** --- 1074,1093 ---- (thanks to coreythomas) + changes in sbcl-0.7.3 relative to sbcl-0.7.2: + * The system is smarter about SUBTYPEP relationships, especially + those involving NOT types (including types such as ATOM which are + represented internally using NOT types). Thus SUBTYPEP is less + likely to return (VALUES NIL NIL) in general, and in particular + bugs 58 and (the remaining bits of) bug 50 are fixed. (thanks to + Christophe Rhodes) + * The fasl file format has changed again, because the internal + representation of types now includes a new slot to support the new + SUBTYPEP-of-NOT-types logic. + * (not a change in the main branch of SBCL, but a related prototype + which can hopefully be merged into the main branch of SBCL in the + future:) Brian Spilsbury has produced a Unicode-enabled variant of + sbcl-0.7.0, available as a patch against sbcl-0.7.0 at + <http://designix.com.au/brian/SBCL/sbcl-0.7.0-unicode.p0.gz>. + planned incompatible changes in 0.7.x: * When the profiling interface settles down, maybe in 0.7.x, maybe |