emptied the namespace when executing a module
svn: r9923
This commit is contained in:
parent
c5ef53525a
commit
c5f4bc9e20
|
@ -567,7 +567,7 @@
|
||||||
(super-new)))
|
(super-new)))
|
||||||
|
|
||||||
;; create-module-based-language-executable :
|
;; create-module-based-language-executable :
|
||||||
;; (is-a?/c area-container<%>) string module-spec module-spec sexp (union boolean? 'ask) boolean?
|
;; (is-a?/c area-container<%>) string (or #f module-spec) module-spec sexp (union boolean? 'ask) boolean?
|
||||||
;; -> void
|
;; -> void
|
||||||
(define (create-module-based-language-executable parent
|
(define (create-module-based-language-executable parent
|
||||||
program-filename
|
program-filename
|
||||||
|
@ -890,11 +890,13 @@
|
||||||
(call-with-output-file bootstrap-tmp-filename
|
(call-with-output-file bootstrap-tmp-filename
|
||||||
(λ (port)
|
(λ (port)
|
||||||
(write `(let () ;; cannot use begin, since it gets flattened to top-level (and re-compiled!)
|
(write `(let () ;; cannot use begin, since it gets flattened to top-level (and re-compiled!)
|
||||||
,@(if use-copy?
|
,@(if module-language-spec
|
||||||
(list
|
(if use-copy?
|
||||||
`(namespace-require/copy ',module-language-spec))
|
(list
|
||||||
(list
|
`(namespace-require/copy ',module-language-spec))
|
||||||
`(namespace-require/constant ',module-language-spec)))
|
(list
|
||||||
|
`(namespace-require/constant ',module-language-spec)))
|
||||||
|
'())
|
||||||
,@(if transformer-module-language-spec
|
,@(if transformer-module-language-spec
|
||||||
(list `(namespace-require `(for-syntax ,transformer-module-language-spec)))
|
(list `(namespace-require `(for-syntax ,transformer-module-language-spec)))
|
||||||
(list))
|
(list))
|
||||||
|
@ -914,11 +916,16 @@
|
||||||
#:exists 'truncate #:mode 'text)))
|
#:exists 'truncate #:mode 'text)))
|
||||||
|
|
||||||
(let* ([pre-to-be-embedded-module-specs0
|
(let* ([pre-to-be-embedded-module-specs0
|
||||||
(if (or (not transformer-module-language-spec)
|
(cond
|
||||||
(equal? module-language-spec transformer-module-language-spec))
|
[(and module-language-spec transformer-module-language-spec)
|
||||||
(list module-language-spec)
|
(if (equal? module-language-spec transformer-module-language-spec)
|
||||||
(list module-language-spec
|
(list module-language-spec)
|
||||||
transformer-module-language-spec))]
|
(list module-language-spec transformer-module-language-spec))]
|
||||||
|
[module-language-spec
|
||||||
|
(list module-language-spec)]
|
||||||
|
[transformer-module-language-spec
|
||||||
|
(list transformer-module-language-spec)]
|
||||||
|
[else '()])]
|
||||||
[pre-to-be-embedded-module-specs1
|
[pre-to-be-embedded-module-specs1
|
||||||
(if gui?
|
(if gui?
|
||||||
(cons '(lib "mred/mred.ss")
|
(cons '(lib "mred/mred.ss")
|
||||||
|
@ -969,7 +976,7 @@
|
||||||
gui?
|
gui?
|
||||||
use-copy?))))
|
use-copy?))))
|
||||||
|
|
||||||
;; create-module-based-distribution : ... -> void (see docs)
|
;; create-distribution-for-executable : ... -> void (see docs)
|
||||||
(define (create-distribution-for-executable distribution-filename
|
(define (create-distribution-for-executable distribution-filename
|
||||||
gui?
|
gui?
|
||||||
make-executable)
|
make-executable)
|
||||||
|
@ -1116,7 +1123,7 @@
|
||||||
(path->string executable-filename)
|
(path->string executable-filename)
|
||||||
executable-filename))))
|
executable-filename))))
|
||||||
|
|
||||||
;; initialize-module-based-language : boolean module-spec module-spec ((-> void) -> void)
|
;; initialize-module-based-language : boolean (or #f module-spec) module-spec ((-> void) -> void)
|
||||||
(define (initialize-module-based-language use-copy?
|
(define (initialize-module-based-language use-copy?
|
||||||
module-spec
|
module-spec
|
||||||
transformer-module-spec
|
transformer-module-spec
|
||||||
|
@ -1127,9 +1134,10 @@
|
||||||
(λ (x)
|
(λ (x)
|
||||||
(display (exn-message x))
|
(display (exn-message x))
|
||||||
(newline))])
|
(newline))])
|
||||||
(if use-copy?
|
(when module-spec
|
||||||
(namespace-require/copy module-spec)
|
(if use-copy?
|
||||||
(namespace-require/constant module-spec))
|
(namespace-require/copy module-spec)
|
||||||
|
(namespace-require/constant module-spec)))
|
||||||
(when transformer-module-spec
|
(when transformer-module-spec
|
||||||
(namespace-require `(for-syntax ,transformer-module-spec)))))))
|
(namespace-require `(for-syntax ,transformer-module-spec)))))))
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,8 @@
|
||||||
to-be-copied-module-names)
|
to-be-copied-module-names)
|
||||||
(namespace-set-variable-value! 'argv program-argv)
|
(namespace-set-variable-value! 'argv program-argv)
|
||||||
(current-command-line-arguments program-argv)
|
(current-command-line-arguments program-argv)
|
||||||
(namespace-require language-module-spec)
|
(when language-module-spec
|
||||||
|
(namespace-require language-module-spec))
|
||||||
(when use-require/copy?
|
(when use-require/copy?
|
||||||
(namespace-require/copy language-module-spec))
|
(namespace-require/copy language-module-spec))
|
||||||
(when transformer-module-spec
|
(when transformer-module-spec
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1198,7 +1198,8 @@ all of the names in the tools library, for use defining keybindings
|
||||||
@scheme[module-language-spec] and
|
@scheme[module-language-spec] and
|
||||||
@scheme[transformer-module-language-spec] specify the
|
@scheme[transformer-module-language-spec] specify the
|
||||||
settings of the initial namespace, both the transformer
|
settings of the initial namespace, both the transformer
|
||||||
portion and the regular portion.
|
portion and the regular portion. Both may be @scheme[#f]
|
||||||
|
to indicate there are no initial bindings.
|
||||||
|
|
||||||
The @scheme[init-code] argument is an s-expression representing
|
The @scheme[init-code] argument is an s-expression representing
|
||||||
the code for a module. This module is expected to provide
|
the code for a module. This module is expected to provide
|
||||||
|
|
|
@ -120,6 +120,11 @@
|
||||||
"x"
|
"x"
|
||||||
"2")
|
"2")
|
||||||
|
|
||||||
|
(make-test
|
||||||
|
"#lang scheme\n(eval 'cons)"
|
||||||
|
#f
|
||||||
|
". compile: bad syntax; reference to top-level identifier is not allowed, because no #%top syntax transformer is bound in: cons")
|
||||||
|
|
||||||
(make-test
|
(make-test
|
||||||
(format "~s" `(module m (file ,(path->string (build-path this-dir "module-lang-test-tmp.ss"))) 1 2 3))
|
(format "~s" `(module m (file ,(path->string (build-path this-dir "module-lang-test-tmp.ss"))) 1 2 3))
|
||||||
"1" ;; just make sure no errors.
|
"1" ;; just make sure no errors.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user