fix variable-reference->module-path-index
on primitive refs
This commit is contained in:
parent
26c4dd6909
commit
e6793c4598
|
@ -145,6 +145,17 @@
|
|||
|
||||
;; ----------------------------------------
|
||||
|
||||
(test #f
|
||||
variable-reference->module-path-index (#%variable-reference test))
|
||||
(test (module-path-index-join ''#%kernel #f)
|
||||
variable-reference->module-path-index (#%variable-reference +))
|
||||
(require (only-in racket/unsafe/ops
|
||||
[unsafe-fx+ $$unsafe-fx+]))
|
||||
(test (module-path-index-join ''#%unsafe #f)
|
||||
variable-reference->module-path-index (#%variable-reference $$unsafe-fx+))
|
||||
|
||||
;; ----------------------------------------
|
||||
|
||||
(module phaser scheme/base
|
||||
(define x (variable-reference->phase
|
||||
(#%variable-reference x)))
|
||||
|
|
|
@ -2225,9 +2225,17 @@ static Scheme_Object *variable_modidx(int argc, Scheme_Object *argv[])
|
|||
scheme_wrong_contract("variable-reference->module-path-index", "variable-reference?", 0, argc, argv);
|
||||
|
||||
if (env->module) {
|
||||
if (!env->link_midx)
|
||||
return env->module->self_modidx;
|
||||
else
|
||||
if (!env->link_midx) {
|
||||
if (env->module->self_modidx
|
||||
&& SCHEME_TRUEP(((Scheme_Modidx *)env->module->self_modidx)->path))
|
||||
return env->module->self_modidx;
|
||||
else
|
||||
return scheme_make_modidx(scheme_make_pair(scheme_intern_symbol("quote"),
|
||||
scheme_make_pair(scheme_resolved_module_path_value(env->module->modname),
|
||||
scheme_null)),
|
||||
scheme_false,
|
||||
scheme_false);
|
||||
} else
|
||||
return env->link_midx;
|
||||
} else
|
||||
return scheme_false;
|
||||
|
|
Loading…
Reference in New Issue
Block a user