typed-racket/typed-racket-lib
Marc Burns 609d6189e9 Improve typecheck for private field initializers
This patch addresses two issues with `typed/racket/class`:

1. For multiple private fields declared with `define-values`, type
information does not propagate from the values produced by the
initialization expression to the declared fields. This breaks soundness
of private fields: A field can be annotated with a type that does not
contain the field's initial value.

This was resolved by keeping a table of temporary bindings introduced in
the expansion of the initializer along with their types. The field
setter's type is then checked against that of the corresponding
temporary.

2. The class body typechecker assumes that the `expr` of
a `define-values` clause will expand to a bare `(values vs ...)`.

This was resolved by generalizing the template for matching an expanded
`define-values` initializer and extracting the type information from the
`expr` instead of each element in `(vs ...)`.
2015-05-12 18:42:05 -04:00
..
typed Split prims.rkt to reduce dependencies. 2015-03-18 18:47:49 -04:00
typed-racket Improve typecheck for private field initializers 2015-05-12 18:42:05 -04:00
unstable Remove extra directories. 2014-12-02 00:53:36 -05:00
info.rkt Add dependency on 6.2.0.2. 2015-03-19 21:45:15 -04:00
LICENSE.txt Remove extra directories. 2014-12-02 00:53:36 -05:00