fix quoted submodule path in `all-from-out'

This commit is contained in:
Matthew Flatt 2012-11-23 08:30:01 -07:00
parent 4e0fac0477
commit 9f5324b754
2 changed files with 23 additions and 2 deletions

View File

@ -783,6 +783,20 @@
(module local-expand-lang-test 'local-expand-lang
(module m 'local-expand-lang2))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; check that quoted submodule paths work with `all-from-out':
(module has-submodule-all-from-out racket/base
(module a racket/base
(define x-from-submodule-out 10)
(provide x-from-submodule-out))
(require 'a)
(void x-from-submodule-out)
(provide (all-from-out 'a)))
(require 'has-submodule-all-from-out)
(test 10 values x-from-submodule-out)
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(report-errs)

View File

@ -153,6 +153,12 @@ static void check_formerly_unbound(Scheme_Object *unbounds, Scheme_Comp_Env *env
static void install_stops(Scheme_Comp_Env *xenv, int phase, Scheme_Object **_begin_for_syntax_stx);
static int is_modulestar_stop(Scheme_Comp_Env *env);
typedef int (*Convert_Submodule_Proc)(Scheme_Object *mp, Scheme_Object *data);
static Scheme_Object *convert_submodule_path(Scheme_Object *name,
Convert_Submodule_Proc check,
Scheme_Object *check_data);
static int check_is_submodule(Scheme_Object *modname, Scheme_Object *_genv);
static Scheme_Object *scheme_sys_wraps_phase_worker(intptr_t p);
#define cons scheme_make_pair
@ -9841,6 +9847,9 @@ Scheme_Object *scheme_module_imported_list(Scheme_Env *genv, Scheme_Object *bind
} else {
Scheme_Object *reprovided;
modpath = convert_submodule_path(modpath, check_is_submodule,
(Scheme_Object *)genv);
reprovided = scheme_make_pair(scheme_make_pair(modpath,
scheme_make_pair(scheme_false,
scheme_null)),
@ -10883,8 +10892,6 @@ void parse_provides(Scheme_Object *form, Scheme_Object *fst, Scheme_Object *e,
}
}
typedef int (*Convert_Submodule_Proc)(Scheme_Object *mp, Scheme_Object *data);
static int check_in_hash(Scheme_Object *mp, Scheme_Object *data)
{
Scheme_Object *v;