The SEQUENCE-COUNT type was previously used in c:fndb, but since
C::SEQUENCE-COUNT /= KERNEL::SEQUENCE-COUNT, it was an unknown type. Please read boot4.lisp. * src/code/exports.lisp ("KERNEL"): Export sequence-count. * src-types/bootfiles/18e/boot4.lisp: New file. Make compute-effective-slot-definition AMOP compliant. Patch from Kevin Rosenberg. * src/pcl/std-class.lisp (compute-slots): Pass slot name to compute-effective-slot-definition. (compute-slots): Likewise. (compute-effective-slot-definition): Add parameter slot-name. * src/pcl/generic-functions.lisp (compute-effective-slot-definition): Add second parameter slot-name. Allow non-keyword keyword names in lambda lists. This fixes test cases STRUCTURE-BOA-TEST-15/[1-8], and FLET.30. * src/compiler/node.lisp (arg-info): Accept non-keyword keyword names. * src/code/type.lisp (key-info): Likewise. Fix type system bugs detected by Paul Dietz' test suite This is to a large extent a port from SBCL. * src/code/type.lisp: Mostly rewritten with code ported from SBCL. * src/compiler/typetran.lisp (ir1-transform-type-predicate): Return nil if type is *empty-type*. (source-transform-negation-typep) (source-transform-intersection-typep): New functions. (source-transform-array-typep): Handle unknown array element types. (typep): Add handling of negation and intersection types. * src/compiler/srctran.lisp (make-canonical-union-type): Simplify, now that #'type-union is smarter. (ir1-transform-<-helper): Give up on non-numeric, non-member types. * src/compiler/checkgen.lisp (type-test-cost): Add a case for intersection-type. (values-types-asserted): Don't use coerce-to-values, see the comment there. * src/compiler/array-tran.lisp (array-dimension): Accept :maybe as array-type-complexp. * src/code/pred.lisp (%%typep): Add handling of negation-types and intersection-types. Change cases of hairy-types, union-types, and arrays with unknown element type. * src/code/exports.lisp ("KERNEL"): Export negation-type, negation-type-type, intersection-type, intersection-type-types. * src/code/class.lisp (sealed-class-intersection): Return one value. (class :simple-intersection): Return one value, return nil in the default case. (class :complex-subtypep-arg2): New type method.
Showing
- bootfiles/18e/boot4.lisp 15 additions, 0 deletionsbootfiles/18e/boot4.lisp
- code/class.lisp 24 additions, 7 deletionscode/class.lisp
- code/exports.lisp 4 additions, 1 deletioncode/exports.lisp
- code/pred.lisp 24 additions, 12 deletionscode/pred.lisp
- code/type.lisp 1487 additions, 725 deletionscode/type.lisp
- compiler/array-tran.lisp 2 additions, 2 deletionscompiler/array-tran.lisp
- compiler/checkgen.lisp 17 additions, 5 deletionscompiler/checkgen.lisp
- compiler/node.lisp 2 additions, 2 deletionscompiler/node.lisp
- compiler/srctran.lisp 13 additions, 28 deletionscompiler/srctran.lisp
- compiler/typetran.lisp 23 additions, 6 deletionscompiler/typetran.lisp
- general-info/release-19a.txt 5 additions, 0 deletionsgeneral-info/release-19a.txt
- pcl/generic-functions.lisp 2 additions, 3 deletionspcl/generic-functions.lisp
- pcl/std-class.lisp 7 additions, 4 deletionspcl/std-class.lisp
Loading
Please register or sign in to comment