From a04bfa5ba239f7cfe7cda20fe3c2d31ecd91a243 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Tue, 26 Feb 2013 19:18:16 -0700 Subject: [PATCH] fix phase-collapsing-module inference This bug was causing a crash in some DrRacket tests. --- collects/tests/racket/syntax.rktl | 6 ++++++ src/racket/src/compile.c | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/collects/tests/racket/syntax.rktl b/collects/tests/racket/syntax.rktl index f161551f16..fd968ab19d 100644 --- a/collects/tests/racket/syntax.rktl +++ b/collects/tests/racket/syntax.rktl @@ -1771,6 +1771,12 @@ 30) (test 30 int-def-check2)) +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Make sure `#%variable-reference' can be compiled and expanded + +(compile '(#%variable-reference)) +(expand '(#%variable-reference)) + ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (report-errs) diff --git a/src/racket/src/compile.c b/src/racket/src/compile.c index 6eb2aafa89..9bc4c7d59e 100644 --- a/src/racket/src/compile.c +++ b/src/racket/src/compile.c @@ -1335,7 +1335,8 @@ ref_syntax (Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Compile_Info *rec, Scheme_Object *var, *name, *rest, *dummy, *lex_id = NULL; int l, ok; - env->prefix->non_phaseless = 1; + if (rec[drec].comp) + env->prefix->non_phaseless = 1; form = scheme_stx_taint_disarm(form, NULL);