From f0c2bf34f9a93ad0c4d293ee809dcb6867df9994 Mon Sep 17 00:00:00 2001 From: Peter Bex Date: Sun, 2 Apr 2017 21:02:26 +0200 Subject: [PATCH 3/4] Un-##sys# a few module procedures used in macros. These are decompose-import, expand-import, register-import and validate-exports. --- chicken-syntax.scm | 8 +++++--- expand.scm | 18 ++++++++++-------- modules.scm | 13 +++++++------ 3 files changed, 22 insertions(+), 17 deletions(-) diff --git a/chicken-syntax.scm b/chicken-syntax.scm index b97e733..7923b6e 100644 --- a/chicken-syntax.scm +++ b/chicken-syntax.scm @@ -1156,7 +1156,8 @@ (cond ((eq? '* exps) '*) ((symbol? exps) `(#:interface ,exps)) ((list? exps) - (##sys#validate-exports exps 'define-interface)) + (chicken.internal.module#validate-exports + exps 'define-interface)) (else (syntax-error-hook 'define-interface "invalid exports" (caddr x)))))))))))) @@ -1180,7 +1181,8 @@ ',(chicken.internal#library-id name) ',(map (lambda (arg) (let ((argname (car arg)) - (exps (##sys#validate-exports (cadr arg) 'functor))) + (exps (chicken.internal.module#validate-exports + (cadr arg) 'functor))) (unless (or (symbol? argname) (and (list? argname) (= 2 (length argname)) @@ -1189,7 +1191,7 @@ (##sys#syntax-error-hook "invalid functor argument" name arg)) (cons argname exps))) args) - ',(##sys#validate-exports exps 'functor) + ',(chicken.internal.module#validate-exports exps 'functor) ',body))) `(##core#module ,(chicken.internal#library-id name) diff --git a/expand.scm b/expand.scm index d1d8ee3..0e6b14f 100644 --- a/expand.scm +++ b/expand.scm @@ -966,21 +966,21 @@ (##sys#extend-macro-environment 'import-syntax '() (##sys#er-transformer - (cut ##sys#expand-import <> <> <> + (cut chicken.internal.module#expand-import <> <> <> ##sys#current-environment ##sys#macro-environment #f #f 'import-syntax))) (##sys#extend-macro-environment 'import-syntax-for-syntax '() (##sys#er-transformer - (cut ##sys#expand-import <> <> <> + (cut chicken.internal.module#expand-import <> <> <> ##sys#current-meta-environment ##sys#meta-macro-environment #t #f 'import-syntax-for-syntax))) (##sys#extend-macro-environment 'reexport '() (##sys#er-transformer - (cut ##sys#expand-import <> <> <> + (cut chicken.internal.module#expand-import <> <> <> ##sys#current-environment ##sys#macro-environment #f #t 'reexport))) @@ -991,11 +991,11 @@ (lambda (x r c) `(##core#begin ,@(map (lambda (x) - (let-values (((name lib spec v s i) (##sys#decompose-import x r c 'import))) + (let-values (((name lib spec v s i) (chicken.internal.module#decompose-import x r c 'import))) (if (not spec) (##sys#syntax-error-hook 'import "cannot import from undefined module" name) - (##sys#import + (chicken.internal.module#register-import spec v s i ##sys#current-environment ##sys#macro-environment #f #f 'import)) (if (not lib) @@ -1483,7 +1483,7 @@ (lambda (x r c) `(##core#begin ,@(map (lambda (x) - (let-values (((name lib _ _ _ _) (##sys#decompose-import x r c 'import))) + (let-values (((name lib _ _ _ _) (chicken.internal.module#decompose-import x r c 'import))) (if (not lib) '(##core#undefined) `(##core#require ,lib ,(module-requirement name))))) @@ -1546,7 +1546,8 @@ (else ;;XXX use module name in "loc" argument? (let ((exports - (##sys#validate-exports (strip-syntax (caddr x)) 'module))) + (chicken.internal.module#validate-exports + (strip-syntax (caddr x)) 'module))) `(##core#module ,name ,(if (eq? '* exports) @@ -1564,7 +1565,8 @@ '() (##sys#er-transformer (lambda (x r c) - (let ((exps (##sys#validate-exports (strip-syntax (cdr x)) 'export)) + (let ((exps (chicken.internal.module#validate-exports + (strip-syntax (cdr x)) 'export)) (mod (##sys#current-module))) (when mod (##sys#add-to-export-list mod exps)) diff --git a/modules.scm b/modules.scm index ae04ab1..6b07e9d 100644 --- a/modules.scm +++ b/modules.scm @@ -38,6 +38,7 @@ (module chicken.internal.module (find-module/import-library module-saved-environments register-compiled-module register-primitive-module + decompose-import expand-import register-import validate-exports ;; TODO: Expose this properly to the user in chicken.module? register-module-alias) @@ -570,7 +571,7 @@ (set! mod (##sys#find-module mname 'import)))))) mod)) -(define (##sys#decompose-import x r c loc) +(define (decompose-import x r c loc) (let ((%only (r 'only)) (%rename (r 'rename)) (%except (r 'except)) @@ -685,18 +686,18 @@ (else (module-imports (strip-syntax x)))))))))))) -(define (##sys#expand-import x r c import-env macro-env meta? reexp? loc) +(define (expand-import x r c import-env macro-env meta? reexp? loc) (##sys#check-syntax loc x '(_ . #(_ 1))) (for-each (lambda (x) - (let-values (((name _ spec v s i) (##sys#decompose-import x r c loc))) + (let-values (((name _ spec v s i) (decompose-import x r c loc))) (if (not spec) (##sys#syntax-error-hook loc "cannot import from undefined module" name x) - (##sys#import spec v s i import-env macro-env meta? reexp? loc)))) + (register-import spec v s i import-env macro-env meta? reexp? loc)))) (cdr x)) '(##core#undefined)) -(define (##sys#import spec vsv vss vsi import-env macro-env meta? reexp? loc) +(define (register-import spec vsv vss vsi import-env macro-env meta? reexp? loc) (let ((cm (##sys#current-module))) (when cm ; save import form (if meta? @@ -783,7 +784,7 @@ (or (getp sym2 '##core#primitive) sym2))))) (else (mrename sym)))) -(define (##sys#validate-exports exps loc) +(define (validate-exports exps loc) ;; expects "exps" to be stripped (define (err . args) (apply ##sys#syntax-error-hook loc args)) -- 2.1.4