From 30a4b481ddd3306614725d1e7e619ddb27228348 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Thu, 21 Mar 2013 11:49:34 -0600 Subject: [PATCH] fix submodule declarations nested in phases > 1 --- collects/tests/racket/submodule.rktl | 14 ++++++++++++++ src/racket/src/module.c | 8 +++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/collects/tests/racket/submodule.rktl b/collects/tests/racket/submodule.rktl index 0be57053eb..ef9ba0652d 100644 --- a/collects/tests/racket/submodule.rktl +++ b/collects/tests/racket/submodule.rktl @@ -835,6 +835,20 @@ (void) (void))) +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Check phase-level-2 submodules: + +(module check-module-meta-2 racket + (require (for-meta 2 racket/base)) + + (begin-for-syntax + (begin-for-syntax + (module* main #f + (define v 'ok) + (provide v))))) + +(test 'ok dynamic-require '(submod 'check-module-meta-2 main) 'v) + ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (report-errs) diff --git a/src/racket/src/module.c b/src/racket/src/module.c index 7f39721b6b..9dbd5ac7db 100644 --- a/src/racket/src/module.c +++ b/src/racket/src/module.c @@ -7158,7 +7158,13 @@ static Scheme_Object *do_module(Scheme_Object *form, Scheme_Comp_Env *env, } else if (SAME_OBJ(super_phase_shift, scheme_make_integer(-1))) { m->tt_requires = ins; } else { - scheme_signal_error("internal error: incomplete"); /* FIXME */ + Scheme_Hash_Table *oht; + oht = m->other_requires; + if (!oht) { + oht = scheme_make_hash_table_equal(); + m->other_requires = oht; + } + scheme_hash_set(oht, super_phase_shift, ins); } }