diff --git a/collects/drscheme/private/module-language.ss b/collects/drscheme/private/module-language.ss index 980834d150..e255e71869 100644 --- a/collects/drscheme/private/module-language.ss +++ b/collects/drscheme/private/module-language.ss @@ -309,9 +309,24 @@ (parameterize ([current-namespace (current-namespace)]) ;; the prompt makes it continue after an error (call-with-continuation-prompt - (λ () (with-stack-checkpoint (namespace-require modspec))))) + (λ () (with-stack-checkpoint + (begin + (*do-module-specified-configuration modspec) + (namespace-require modspec)))))) (current-namespace (module->namespace modspec)) (check-interactive-language)) + (define (*do-module-specified-configuration modspec) + (let ([info (module->language-info modspec #t)]) + (when info + (let ([get-info + ((dynamic-require (vector-ref info 0) + (vector-ref info 1)) + (vector-ref info 2))]) + (let ([config (get-info 'configure-runtime #f)]) + (when config + ((dynamic-require (vector-ref config 0) + (vector-ref config 1)) + (vector-ref config 2)))))))) ;; here's where they're all combined with the module expression (expr-getter *pre module-expr *post)) @@ -350,6 +365,7 @@ #:mred? gui? #:verbose? #f ;; verbose? #:modules (list (list #f program-filename)) + #:configure-via-first-module? #t #:literal-expression (begin (parameterize ([current-namespace (make-base-empty-namespace)]) diff --git a/collects/errortrace/errortrace-lib.ss b/collects/errortrace/errortrace-lib.ss index 364f671256..98a13d30f9 100644 --- a/collects/errortrace/errortrace-lib.ss +++ b/collects/errortrace/errortrace-lib.ss @@ -44,15 +44,17 @@ (define (add-test-coverage-init-code stx) (syntax-case stx (#%plain-module-begin) [(mod name init-import (#%plain-module-begin b1 b2 body ...)) - #`(#,(namespace-module-identifier) name init-import - #,(syntax-recertify - #`(#%plain-module-begin - b1 b2 ;; the two requires that were introduced earlier - (#%plain-app init-test-coverage '#,(remove-duplicates test-coverage-state)) - body ...) - (list-ref (syntax->list stx) 3) - orig-inspector - #f))])) + (copy-props + stx + #`(#,(namespace-module-identifier) name init-import + #,(syntax-recertify + #`(#%plain-module-begin + b1 b2 ;; the two requires that were introduced earlier + (#%plain-app init-test-coverage '#,(remove-duplicates test-coverage-state)) + body ...) + (list-ref (syntax->list stx) 3) + orig-inspector + #f)))])) (define (annotate-covered-file filename-path [display-string #f]) (annotate-file filename-path @@ -103,6 +105,9 @@ [else (< (list-ref x 1) (list-ref y 1))]))))) +(define (copy-props orig new) + (datum->syntax orig (syntax-e new) orig orig)) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Profiling run-time support @@ -416,19 +421,21 @@ [(mod name init-import (#%plain-module-begin body ...)) (add-test-coverage-init-code (normal - #`(#,(namespace-module-identifier) name init-import - #,(syntax-recertify - #`(#%plain-module-begin - #,((make-syntax-introducer) - (syntax/loc (datum->syntax #f 'x #f) - (#%require errortrace/errortrace-key))) - #,((make-syntax-introducer) - (syntax/loc (datum->syntax #f 'x #f) - (#%require (for-syntax errortrace/errortrace-key)))) - body ...) - (list-ref (syntax->list top-e) 3) - orig-inspector - #f))))])))] + (copy-props + top-e + #`(#,(namespace-module-identifier) name init-import + #,(syntax-recertify + #`(#%plain-module-begin + #,((make-syntax-introducer) + (syntax/loc (datum->syntax #f 'x #f) + (#%require errortrace/errortrace-key))) + #,((make-syntax-introducer) + (syntax/loc (datum->syntax #f 'x #f) + (#%require (for-syntax errortrace/errortrace-key)))) + body ...) + (list-ref (syntax->list top-e) 3) + orig-inspector + #f)))))])))] [_else (normal top-e)]))) diff --git a/collects/errortrace/stacktrace.ss b/collects/errortrace/stacktrace.ss index 5b68746492..42c1faecc6 100644 --- a/collects/errortrace/stacktrace.ss +++ b/collects/errortrace/stacktrace.ss @@ -304,6 +304,7 @@ (datum->syntax expr x + expr expr)))))] [else (same-k)]))))) @@ -312,6 +313,7 @@ [(syntax? expr) (datum->syntax expr (append-rebuild (syntax-e expr) end) + expr expr)] [(pair? expr) (cons (car expr) (append-rebuild (cdr expr) end))]