The "simpliciation" of a syntax object's lexical context was dropping
module contexts that have no bindings, but those contexts now
contribute to the identifty of some bindings. Fix simplification
to replace the full rename rename with a simplified one, instead
of just dropping it.
Merge to v5.3
appear in saved wxme format files
also, improve the testing support for testing snip loading
(before this, the testing infrastructure could let one test
"leak" into another one in a way that could mask failures)
please include in release branch
Leave it working in splicing mode. I prefer doing that over always
splicing them, since that would make a less uniform interface, so I
rather keep all options open. There is no longer a `#:nothing' keyword,
which is the main point of this downgrade.
(See mailing list discussion on "no-argument" for the reason.)
I've looked for a while, and it seems that there is no easy way to do
this, not even in bash, and worse with /bin/sh. So this is kind of
resorting to a simple parsing of the input, and using `eval' if it
starts with a tilde. Note the hack of not doing that when there is a
space, otherwise the `eval' thing will silently ignore it.
This hack means that it's easy to get into a mess if quotes are used
after a tilde, but that was already the case with the use of `eval' to
handle environment variables. It's not a real security issue, however,
since we're talking about a user who can just run any command anyway.
Also including a test file for the expansion functionality. If anyone
wants to improve this code, making the tests pass would reveal the
tricky issues.
[FWIW, I've asked on the #bash channel, and the only serious suggestion
was getting the paths as command-line arguments. This will, however,
defeat the point of being newbie friendly...]
Closes PR 12893.
and the change to the racket/gui load-handler
(unfortunately, there is still another problem that keeps
the test suite from passing)
please merge to the release branch
Using `lazy-require' under `begin-for-syntax' expands to a use of
`define-runtime-path' under `begin'for-syntax'. Unfortunately,
`define-runtime-path' doesn't yet work with `raco exe' when it
appears under `begin-for-syntax'. Although `define-runtime-path'
should be fixed, it may take a while. Meanwhile, reverting the
change allows programs that require `racket/gui/base' to work
with `raco exe'.
There's another `lazy-require' under `begin-for-syntax' that
doesn't seem to cause the same trouble, though.
When a module is loaded from bytecode and then the value of
`use-compiled-file-paths' changes, an attempt to load a submodule
would fail, because source isn't used if the main module is
already declared, and the bytecode code is not used according to
`use-compiled-file-paths'. Make the bytecode path stick when it
is used once, so that submodule loads succeed, and make it work
even with `namespace-module-attach'.
The module-attach part of this protocol requires a change to the
API of a module name resolver: the notification mode gets two
arguments, instead of one, where the second argument is an
environment.
For a non-WXME file, fall back to the original load handler,
instead of re-implementing it. This makes module caching work
the right way. Falling back to the original means closing
the port and then re-opening the file to load, but that seems
ok.