diff options
author | Neil Jerram <neil@ossau.uklinux.net> | 2008-02-01 22:51:34 +0000 |
---|---|---|
committer | Neil Jerram <neil@ossau.uklinux.net> | 2008-02-01 22:51:34 +0000 |
commit | 3ac8359afda0372374bf555fcecc51bcd471cd33 (patch) | |
tree | 1079e0c48338aab9dd481a0f68e6287238a00776 /libguile/modules.c | |
parent | 300b1ae58a43756bdac8603fc338cbce9efb754e (diff) | |
download | guile-3ac8359afda0372374bf555fcecc51bcd471cd33.tar.gz |
* modules.c (the_root_module): Moved before scm_current_module.
(scm_current_module): Return the root module if `the-module' fluid
gives #f.
* standalone/Makefile.am: Add stanza for test-with-guile-module.
* standalone/test-with-guile-module.c: New test.
Diffstat (limited to 'libguile/modules.c')
-rw-r--r-- | libguile/modules.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/libguile/modules.c b/libguile/modules.c index 003fbd37b..ea7305c17 100644 --- a/libguile/modules.c +++ b/libguile/modules.c @@ -40,12 +40,25 @@ scm_t_bits scm_module_tag; static SCM the_module; +static SCM the_root_module_var; + +static SCM +the_root_module () +{ + if (scm_module_system_booted_p) + return SCM_VARIABLE_REF (the_root_module_var); + else + return SCM_BOOL_F; +} + SCM_DEFINE (scm_current_module, "current-module", 0, 0, 0, (), "Return the current module.") #define FUNC_NAME s_scm_current_module { - return scm_fluid_ref (the_module); + SCM curr = scm_fluid_ref (the_module); + + return scm_is_true (curr) ? curr : the_root_module (); } #undef FUNC_NAME @@ -230,17 +243,6 @@ scm_env_top_level (SCM env) SCM_SYMBOL (sym_module, "module"); -static SCM the_root_module_var; - -static SCM -the_root_module () -{ - if (scm_module_system_booted_p) - return SCM_VARIABLE_REF (the_root_module_var); - else - return SCM_BOOL_F; -} - SCM scm_lookup_closure_module (SCM proc) { |