From baf7f6ccee3a21669c205290b5738ad9ceb1c541 Mon Sep 17 00:00:00 2001 From: Sam Tobin-Hochstadt Date: Wed, 7 May 2014 12:19:38 -0400 Subject: [PATCH] Fix `evaluator.rkt` to work with `dynamic-require`. original commit: 774afb6cafe6d547d40b20709f94a761dcf583bb --- .../typed-racket/unit-tests/evaluator.rkt | 32 +++++++++++++------ 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/unit-tests/evaluator.rkt b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/unit-tests/evaluator.rkt index 5d2696d6..dddb3375 100644 --- a/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/unit-tests/evaluator.rkt +++ b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/unit-tests/evaluator.rkt @@ -1,22 +1,36 @@ #lang racket/base ;; Allow evaluation at phase1 (require (for-syntax racket/base syntax/parse)) -(provide phase1-eval phase1-phase0-eval phase1-phase0-run) +(provide phase1-eval phase1-phase0-eval) (define-namespace-anchor anchor) (define namespace (namespace-anchor->empty-namespace anchor)) +;; See discussion of this function here: +;; http://www.mail-archive.com/dev@racket-lang.org/msg10759.html +;; http://lists.racket-lang.org/dev/archive/2014-May/014273.html +(define (prep! varref) + (define p (variable-reference->resolved-module-path varref)) + (when p + (parameterize ([current-namespace namespace]) + (dynamic-require p 0)))) + + (define-syntax phase1-phase0-run (syntax-parser [(_ form:expr ...) #'(let-syntax ([go (lambda (stx) form ...)]) (go))])) -(define-syntax phase1-phase0-eval - (syntax-parser - [(_ form:expr ...) - #'(eval-syntax (quote-syntax (phase1-phase0-run form ...)) namespace)])) + (define-syntax phase1-phase0-eval + (syntax-parser + [(_ form:expr ...) + #'(begin + (prep! (#%variable-reference)) + (eval-syntax (quote-syntax (phase1-phase0-run form ...)) namespace))])) -(define-syntax phase1-eval - (syntax-parser - [(_ form:expr ...) - #'(phase1-phase0-eval form ... #'(void))])) + (define-syntax phase1-eval + (syntax-parser + [(_ form:expr ...) + #'(begin + (prep! (#%variable-reference)) + (phase1-phase0-eval form ... #'(void)))]))