fix submodule declarations nested in phases > 1

This commit is contained in:
Matthew Flatt 2013-03-21 11:49:34 -06:00
parent 111799ec94
commit 30a4b481dd
2 changed files with 21 additions and 1 deletions

View File

@ -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)

View File

@ -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);
}
}