Incorrect referencing causes crashes on Kubuntu, for example.
Missed another spot in c97184b.
Based on suggestion from Neil Van Dyke.
Fix suggested by cosmez in #racket.
Reported by Laurent Orseau.
Reported by ajanuary on Hacker News.
I'm not sure why, but these tests seem to emit one of two different errors depending on the machine it's run on (hence the failure in DrDr). For the short term, I've set the regular expression to allow either of them.
Should unbreak the build, my apologies to bisecters
These are for letrec typechecking and Tarjan's algorithm
This allows us to type-check non-recursive sequences of letrec-values clauses in the right order. In other words, we will type-check the clauses in reverse topological order (the reverse of the dependency order). Clauses that are recursive go through the usual type-checking process, injecting Undefined where necessary.
Also generalize so that it can be used in other parts of the codebase.
Split into two passes in order to be able to find more cases where the RHS doesn't refer to the bindings in the letrec. Closes PR 13124
For Google and Bing tools
(In cooperation with everyone who wrote the previous versions.)
The types for racket/gui are substantially complete, but there are still some missing classes and methods. Some interesting future work would be to ensure type coverage by comparing the class members vs. the types in the environment. That could be run as a test to ensure it stays up to date. Most types for the framework library are still missing.
This expands the `Name` type functionality to go beyond struct names and allows arbitrary recursive type aliases to use the environment for indirection. In addition, such aliases can be mutually recursive.