Treat keyword-only syntax environments differently from runtime environments.
authorChris Hanson <org/chris-hanson/cph>
Wed, 17 Jul 2019 23:46:54 +0000 (19:46 -0400)
committerChris Hanson <org/chris-hanson/cph>
Thu, 18 Jul 2019 00:50:54 +0000 (20:50 -0400)
commitbf0ae5058e9d2d5268a654b94848ebade28f3546
tree5e344b14e1a41ddc735bdd22281d2bc1fffa9a15
parentee0d423f69cf1d586302ead04f194ba7c2a53e18
Treat keyword-only syntax environments differently from runtime environments.

The former are those created by let-syntax and the like; the latter are models
of runtime environments as created by lambda.

This fixes a bug when let-syntax contains a bunch of definitions, which should
be defined in the parent environment of the let-syntax, because it's meaningless
to define them in the let-syntax environment itself.  This was previously worked
around by heuristic means, but this change makes the definitions appear in the
correct syntactic environment corresponding to the runtime environment.

Manual cherry-pick of 8ab22a695b3801e59c5067fb065e7dfad4e59c96.
src/runtime/mit-syntax.scm
src/runtime/runtime.pkg
src/runtime/syntax-environment.scm
tests/runtime/test-syntax-rename.scm