No joy in mudville. See
http://drdr.racket-lang.org/28175/ for details
Also fix (just introduced) infinite loop in class/c contract-name
implementation and tweak naming stuff a little so tests pass
Fixed:
- class-field-accessor and class-field mutator,
- the interaction between init args contracts and subclasses,
- object=? on wrapped objects (ie if 'this' flows out and
is compared to the object thatn 'new' returns)
- contract-name for class/c
Also, the code now uses impersonator properties internally to track a
class that is wrapped (instead of a wrapper struct). This simplifies
a bunch of places in the code and paves the way for classes that have
a class/c contract to be chapeone-of the original class (altho that
doesn't work yet)
This allows the typechecker to tell the optimizer or
other downstream analyses what expressions to ignore
because they contain non-typechecked code.
Use it to fix handling of `send`
This change adjusts the meaning of the 'getting-started document
category, which was formerly omitted from the start page. Now,
it means a document that is listed at the beginning and at the same
level as other documents.
(Didn't just revert to the old approach to the "getting started"
entry, because it doesn't work right when "racket-index" is installed
without "racket-doc".)
Closes PR 14348
Some places in the editor API accept an object as an argument
where the object's identity is relevant. In that case, `object=?`
must be used instead of `eq?` to work right with contracts.
Use the field in a `snip%` that is otherwise used by a `text%` owner
to store line information. Reusing the field avoids the need for
an `eq?`-based hash table of snips.
The `~` methods on snip and editor-related classes are not documented
or called from anywhere. They corresponded to destructor methods back
when the classes were ported from C++.
this change is mostly motivated by improving how generics work on
contracted objects.
Also fix dynamic-send
TR's optimizer seems to get angry at the new send expansion, so
disable optimizations auto-language.rkt and insert-large-letters.rkt
(for now)
Done by pairing up incomplete blame objects with the missing blame party
before attaching it to the continuation mark. Other approaches were
explored (having a separate mark for each, imperatively updating blame
objects to add missing blame parties, etc.), but pairing had the least
overhead.