diff --git a/collects/errortrace/errortrace-lib.rkt b/collects/errortrace/errortrace-lib.rkt index 2b3b11d680..13b0045534 100644 --- a/collects/errortrace/errortrace-lib.rkt +++ b/collects/errortrace/errortrace-lib.rkt @@ -426,7 +426,11 @@ body ...) #'mb))))))])])))] [_else - (normal top-e)]))) + (let ([e (normal top-e)]) + (let ([meta-depth ((count-meta-levels 0) e)]) + #`(begin + #,(generate-key-imports meta-depth) + #,e)))]))) (define-namespace-anchor orig-namespace) diff --git a/collects/tests/errortrace/main.rkt b/collects/tests/errortrace/main.rkt index 85ad83a71e..8cc03cc17d 100644 --- a/collects/tests/errortrace/main.rkt +++ b/collects/tests/errortrace/main.rkt @@ -1,7 +1,12 @@ #lang racket/base -(require tests/eli-tester "wrap.rkt" "alert.rkt") +(require tests/eli-tester + "wrap.rkt" + "alert.rkt" + "phase-1.rkt") (wrap-tests) (test do (alert-tests)) + +(phase-1-tests) diff --git a/collects/tests/errortrace/phase-1.rkt b/collects/tests/errortrace/phase-1.rkt new file mode 100644 index 0000000000..fb4571a92d --- /dev/null +++ b/collects/tests/errortrace/phase-1.rkt @@ -0,0 +1,11 @@ +#lang racket/base + +(provide phase-1-tests) + +;; Check that phase-1 annotations work, even in a namespace that is +;; otherwise empty at phase 1. +(define (phase-1-tests) + (define ns (make-base-namespace)) + (parameterize ([current-namespace ns]) + (dynamic-require 'errortrace #f) + (eval #'(struct a (x)))))