From ab4f21fcc8e5f632fc69725570327cce3423b7df Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Tue, 28 Jul 2020 17:49:44 -0400 Subject: [PATCH] Issue #355 - Import renamed identifiers Ensure renamed identifiers are loaded into the environment when performing an import. --- scheme/eval.sld | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/scheme/eval.sld b/scheme/eval.sld index 4b8a5820..965c8f53 100644 --- a/scheme/eval.sld +++ b/scheme/eval.sld @@ -755,7 +755,11 @@ (explicit-lib-names (map lib:import->library-name (lib:list->import-set import-sets))) ;; All dependent libraries - (lib-names (lib:get-all-import-deps import-sets *append-dirs* *prepend-dirs*))) + (lib-names (lib:get-all-import-deps import-sets *append-dirs* *prepend-dirs*)) + (renamed-syms (filter pair? + (map car + (lib:imports->idb import-sets *append-dirs* *prepend-dirs*)))) + ) (for-each (lambda (lib-name) (let* ((us (lib:name->unique-string lib-name)) @@ -779,6 +783,15 @@ (cons (car *global-environment*) (setup-environment *initial-environment*))) + + ;; Load any renamed exports into the environment + (for-each + (lambda (rename/base) + (env:define-variable! + (car rename/base) + (env:_lookup-variable-value (cdr rename/base) *global-environment*) + *global-environment*)) + renamed-syms) #t)) ;; Is the given library loaded?