* module/language/tree-il/primitives.scm (resolve-primitives!): Resolve public module-refs to primitives. --- module/language/tree-il/primitives.scm | 16 +++++++++------- 1 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/module/language/tree-il/primitives.scm b/module/language/tree-il/primitives.scm index 3c6769d..1dcab20 100644 --- a/module/language/tree-il/primitives.scm +++ b/module/language/tree-il/primitives.scm @@ -265,13 +265,15 @@ (module-variable mod name))) (lambda (name) (make-primitive-ref src name)))) ((<module-ref> src mod name public?) - ;; for the moment, we're disabling primitive resolution for - ;; public refs because resolve-interface can raise errors. - (let ((m (and (not public?) (resolve-module mod)))) - (and m - (and=> (hashq-ref *interesting-primitive-vars* - (module-variable m name)) - (lambda (name) (make-primitive-ref src name)))))) + (and=> (and=> (resolve-module mod) + (if public? + module-public-interface + identity)) + (lambda (m) + (and=> (hashq-ref *interesting-primitive-vars* + (module-variable m name)) + (lambda (name) + (make-primitive-ref src name)))))) ((<call> src proc args) (and (primitive-ref? proc) (make-primcall src (primitive-ref-name proc) args))) -- 1.7.9.1