Eliminates the last remaining use of type->contract
outside of the type-contract.rkt file. This allows
all contract generation to go through a single point
of control.
original commit: 7b6ae09a2dcf04a5755f6f9256ff82369cc52403
Add expt to random testing.
Haven't seen one of those bugs in a while. Thank you Redex.
Closes PR14823.
original commit: 8b8130c38e211128f735a640f199213c80580f71
Use the same mechanism as require/typed for doing all
contract gen for make-predicate, cast, etc. Also don't
special-case contract generation for top-level require/typed.
original commit: 1c5202ade74c922e7f3870c7bc3e505357a3ed85
This avoids the cost of computing the printed types
to some degree. It still does have overhead (~5%) over
not computing anything related to tooltips because of
the cost of traversing the type table and computing
tooltip locations.
original commit: 64bc7d4e859e84ce044fd7f72043e26218553c58
Typed Racket, as of 8ea8c54eb, can add explicit require lines
to the expanded module, which can confuse the dependency
analyzer. An explicit implies declaration avoids the problem,
although I'm not sure that this is the right solution.
original commit: 8582d94507ae6b2c3c710b6e244a037461bef0f7
This changes when various libraries that provide contract
support to possible contracted bindings to declare when
those bindings are needed.
Probably, each static-contract combinator should manually
add to the list, instead of having one fixed static list,
but this is a start.
Saves about 10ms in startup for an empty TR module on my
laptop.
Thanks to Robby for the idea.
original commit: 8ea8c54eb47faac7c0d8bcd868a9b12f8ea2e142
Instead of using a syntax-property hack, just disarm the
expanded syntax (TR will do this later in the pipeline anyway).
original commit: 375abf3c2b26b76044a63c1e0d8bd16cc4f52a38
A public method definition and a private field that contains
a function are hard to distinguish without traversing the entire
class body, which caused TR to fail to detect the private field
case. TR now uses more compile-time state to precisely
distinguish the cases.
Also fixes a related bug in which TR would incorrectly handle
multiple private fields defined with a single `define-values`.
Closes PR 14788
original commit: 670c8576851cb21e910778f913270a0752e7ede4
This handles contract generation for recursive or
mutually recursive Name types in the static contract
framework.
Instead of just generating recursive-sc static contracts,
it memoizes the recursive contract within a single
type->contract call by indirecting through a table.
When static contracts are instantiated, the table is
consulted for computing contract kind information and for
generating the actual contracts for the recursive names.
original commit: 608dfcf3356fb4957331dc7c140b9ac176d36991
This bug manifested in having extraneous class
members in a type for a class whose superclass
expression was a mixin application.
original commit: c1a27951a38733419702b6647b97f1547ed24ae3
The type alias analysis is unable to detect a rare kind
of type dependency and as a result initializes type aliases
in an order that doesn't work. Adding the extra `Class`
boilerplate here accommodates the analysis.
Please merge to v6.1.1
original commit: 4a32fa15515494bca418a655bd80a03adfc29442
Mandatory kw arguments in function types could confuse
the typechecker when the function had the
`syntax-procedure-converted-arguments-property` property
set.
original commit: a70588ac4fa27fc7c69b8901be8f129802db05d7
The thing that caught my eye is the missing `#:cache-keys?' which should
really be there. But not too important.
original commit: eaa6f85054c5c404507e5c9cbab0d3e93f468370
Sounds like a bad name, but I don't have anything better. It's not some
"current-...-print" thing since it works on the sexpr that is intended
to be pretty-printed. So I went with the above.
original commit: 3c98d086904409b9c49d710134415d718d6ca65e
Asumu said that he doesn't know of any other clients of this parameter
besides my class code.
original commit: 0eed0f6e0e493b190abc912981bab59644a3a760
This uses a technique discovered by Ryan and Dan that
allows the typed class macro to function without invasively
local-expanding the entire class macro (using its private
context information).
Instead, it expands into many helper macros inside the
normal class body and communicates among them using
`syntax-local-value` and compile-time state within the
class body.
This rewrite didn't save that many lines, but it did
reduce the amount of magic that's used.
original commit: 725cb99f4ade73f46da9abf7c116158675f9f22b