unix: Make micropython -m <module> work for frozen modules.

This requires some special handling, which was previosuly applied only to
the main code path.
This commit is contained in:
Paul Sokolovsky 2015-06-06 00:10:40 +03:00
parent d7192fe68c
commit 07408cbd1f
1 changed files with 8 additions and 0 deletions

View File

@ -268,6 +268,14 @@ mp_obj_t mp_builtin___import__(mp_uint_t n_args, const mp_obj_t *args) {
mp_lexer_t *lex = mp_find_frozen_module(mod_str, mod_len); mp_lexer_t *lex = mp_find_frozen_module(mod_str, mod_len);
if (lex != NULL) { if (lex != NULL) {
module_obj = mp_obj_new_module(module_name_qstr); module_obj = mp_obj_new_module(module_name_qstr);
// if args[3] (fromtuple) has magic value False, set up
// this module for command-line "-m" option (set module's
// name to __main__ instead of real name).
// TODO: Duplicated below too.
if (fromtuple == mp_const_false) {
mp_obj_module_t *o = module_obj;
mp_obj_dict_store(o->globals, MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR___main__));
}
do_load_from_lexer(module_obj, lex, mod_str); do_load_from_lexer(module_obj, lex, mod_str);
return module_obj; return module_obj;
} }