diff --git a/collects/drscheme/private/language.ss b/collects/drscheme/private/language.ss index 1cb2cbbe2d..7850efbe52 100644 --- a/collects/drscheme/private/language.ss +++ b/collects/drscheme/private/language.ss @@ -877,7 +877,12 @@ (call-with-output-file bootstrap-tmp-filename (λ (port) (write `(let () ;; cannot use begin, since it gets flattened to top-level (and re-compiled!) - (,(if use-copy? 'namespace-require/copy 'namespace-require) ',module-language-spec) + ,@(if use-copy? + (list + `(namespace-require ',module-language-spec) + `(namespace-require/copy ',module-language-spec)) + (list + `(namespace-require ',module-language-spec))) ,@(if transformer-module-language-spec (list `(namespace-transformer-require ',transformer-module-language-spec)) (list)) @@ -1110,9 +1115,12 @@ (λ (x) (display (exn-message x)) (newline))]) - (if use-copy? - (namespace-require/copy module-spec) - (namespace-require module-spec)) + (namespace-require module-spec) + ;; we always do a require to get the provide-for-syntax bindings + ;; if copy semantics is wanted, we do a copy next to clobber (some of) + ;; the bindings + (when use-copy? + (namespace-require/copy module-spec)) (when transformer-module-spec (namespace-transformer-require transformer-module-spec)))))) diff --git a/collects/drscheme/private/launcher-bootstrap.ss b/collects/drscheme/private/launcher-bootstrap.ss index 46420a57eb..e261bba514 100644 --- a/collects/drscheme/private/launcher-bootstrap.ss +++ b/collects/drscheme/private/launcher-bootstrap.ss @@ -39,8 +39,9 @@ to-be-copied-module-names) (namespace-set-variable-value! 'argv program-argv) (current-command-line-arguments program-argv) - ((if use-require/copy? namespace-require/copy namespace-require) - language-module-spec) + (namespace-require language-module-spec) + (when use-require/copy? + (namespace-require/copy language-module-spec)) (when transformer-module-spec (namespace-transformer-require transformer-module-spec))