let-aliasing initially forgot to check if a variable that might act as
an alias was ever mutated. fixed by disallowing a mutated variable to
act as an alias.
This compensates for a change in commit bb3f446186
that made the possible-domains function more permissive
(possibly returning results that are inconsistent with the
expected type).
Closes PR 14889
When an overriden method implements a subtype of the superclass
type, sometimes the typechecker gets confused what the type should
be in the resulting class type.
original commit: 85b70aef7f66f0e0c8716fca716d1e38478bf763
In some situations, with-type would fail to clean up its
state before reporting an error at the top-level.
original commit: 591147dd028d4586e4346d83706d38454f043172
Since we resolve under Instance types for subtyping we
need to put them in the current-seen list too. Fixes
an infinite loop bug in subtyping.
original commit: 826a08d80c65d00dc0b77c89e4a6c2967bfef74c
This check was not really necessary to begin with,
but I thought it might be a useful sanity check. In
retrospect, calling `subtype` here causes other headaches
(such as when registering type aliases) and is confusing
when multiple #:implements are provided.
Instead, the #:implements clauses are just linearized
and the last type for any given method/field is taken.
This may also prevent a heisenbug that occurs in the
GUI framework types. I still don't know the root cause of
that non-determinism though.
Closes PR 14669
original commit: 9b4e3befa3605851f1ee30f20f4a38edd06dd8a9
This broke when I made the printing lazier using thunks.
Also use regexps for the tooltip tests.
original commit: 8bff995f41be53c119d4d09cb802b1f8c8f5c714
The use of case-> can cause an expression to get
typechecked multiple times, so the tooltips should reflect
all of the passes.
original commit: c170b8288c74dfd227f90897c4f65979a006cb68
Macros often expand into forms where the subforms have
the same syntax location as the entire form, which means
a naive approach gives confusing type tooltips on macro
expressions.
Instead, only keep the latest (outermost) type tooltip
for a given expression.
We could instead compute whether a given piece of syntax
is a subform of another at a given location or not, but
that check is expensive and we don't want to do that on
every update of the type table.
original commit: c2abbc700d6b8233e4a52f518d8056579d696b5f