From cd4b33188679100c45b9c47c86af9b9f7659784c Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Tue, 20 Sep 2011 13:29:42 -0600 Subject: [PATCH] add `var-ref->mod-decl-insp' and switch `cur-code-insp' uses Macros and other tools that need syntax privilege used `(current-code-inspector)' at the module top-level to try to capture the right code inspector at load time. It's more consistent to instead use the enclosing module's declaration-time inspector, and `var-ref->mod-decl-insp' provides that. The new function works only on references to anonymous variables, which limits access to the inspector. The real function name is longer, of course. original commit: 0197902309c5400d463393829a88282c627dafd2 --- collects/typed-racket/base-env/base-env.rkt | 1 + collects/typed-racket/utils/disarm.rkt | 4 +++- collects/typed/private/rewriter.rkt | 4 +++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/collects/typed-racket/base-env/base-env.rkt b/collects/typed-racket/base-env/base-env.rkt index 053cc3a2..f8c9835d 100644 --- a/collects/typed-racket/base-env/base-env.rkt +++ b/collects/typed-racket/base-env/base-env.rkt @@ -1056,6 +1056,7 @@ [variable-reference->empty-namespace (-> -Variable-Reference -Namespace)] [variable-reference->namespace (-> -Variable-Reference -Namespace)] [variable-reference->resolved-module-path (-> -Variable-Reference (-opt -Resolved-Module-Path))] +[variable-reference->module-declaration-inspector (-> -Variable-Reference -Inspector)] [variable-reference->module-source (-> -Variable-Reference (Un Sym (-val #f) -Path))] [variable-reference->phase (-> -Variable-Reference -Nat)] [variable-reference-constant? (-> -Variable-Reference -Boolean)] diff --git a/collects/typed-racket/utils/disarm.rkt b/collects/typed-racket/utils/disarm.rkt index 3e31384c..ef1e0a9d 100644 --- a/collects/typed-racket/utils/disarm.rkt +++ b/collects/typed-racket/utils/disarm.rkt @@ -22,5 +22,7 @@ (cons a d)))] [else v]))) -(define orig-insp (current-code-inspector)) +(define orig-insp (variable-reference->module-declaration-inspector + (#%variable-reference))) + diff --git a/collects/typed/private/rewriter.rkt b/collects/typed/private/rewriter.rkt index f8540fd4..a65c1006 100644 --- a/collects/typed/private/rewriter.rkt +++ b/collects/typed/private/rewriter.rkt @@ -2,7 +2,9 @@ (require (for-syntax syntax/parse racket/base syntax/id-table racket/dict unstable/debug)) -(define-for-syntax code-insp (current-code-inspector)) +(define-for-syntax code-insp + (variable-reference->module-declaration-inspector + (#%variable-reference))) (define-for-syntax (rewrite stx tbl from) (define (rw stx)