1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-04 22:40:25 +02:00

* boot-9.scm (use-syntax): Turned into a macro inorder to be

similar in use to `use-modules'.
Example: (use-syntax (ice-9 syncase)) will 1. load the module
(ice-9 syncase), and, 2. install the procedure `syncase' as eval
transformer.
(internal-use-syntax): New procedure.
(process-define-module): Use `internal-use-syntax'.
This commit is contained in:
Mikael Djurfeldt 1998-06-07 10:29:40 +00:00
parent 6dabf6a95c
commit cf26610900
2 changed files with 23 additions and 8 deletions

View file

@ -1,3 +1,13 @@
1998-06-07 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
* boot-9.scm (use-syntax): Turned into a macro inorder to be
similar in use to `use-modules'.
Example: (use-syntax (ice-9 syncase)) will 1. load the module
(ice-9 syncase), and, 2. install the procedure `syncase' as eval
transformer.
(internal-use-syntax): New procedure.
(process-define-module): Use `internal-use-syntax'.
1998-05-19 Mikael Djurfeldt <mdj@mdj.nada.kth.se> 1998-05-19 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
* Makefile.am (ice9_sources): Add emacs.scm. * Makefile.am (ice9_sources): Add emacs.scm.

View file

@ -1861,6 +1861,10 @@
(define %autoloader-developer-mode #t) (define %autoloader-developer-mode #t)
(define (internal-use-syntax transformer)
(set-module-transformer! (current-module) transformer)
(set! scm:eval-transformer transformer))
(define (process-define-module args) (define (process-define-module args)
(let* ((module-id (car args)) (let* ((module-id (car args))
(module (resolve-module module-id #f)) (module (resolve-module module-id #f))
@ -1893,11 +1897,9 @@
(if (not interface) (if (not interface)
(error "missing interface for use-module" used-module)) (error "missing interface for use-module" used-module))
(if (eq? keyword 'use-syntax) (if (eq? keyword 'use-syntax)
(let ((transformer (module-ref interface (internal-use-syntax
(car (last-pair used-name)) (module-ref interface (car (last-pair used-name))
#f))) #f)))
(set-module-transformer! module transformer)
(set! scm:eval-transformer transformer)))
(loop (cddr kws) (cons interface reversed-interfaces))))) (loop (cddr kws) (cons interface reversed-interfaces)))))
(else (else
(error "unrecognized defmodule argument" kws)))))) (error "unrecognized defmodule argument" kws))))))
@ -2717,9 +2719,12 @@
(defmacro use-modules modules (defmacro use-modules modules
`(process-use-modules ',modules)) `(process-use-modules ',modules))
(define (use-syntax transformer) (defmacro use-syntax (spec)
(set-module-transformer! (current-module) transformer) (if (pair? spec)
(set! scm:eval-transformer transformer)) `(begin
(process-use-modules ',(list spec))
(internal-use-syntax ,(car (last-pair spec))))
`(internal-use-syntax ,spec)))
(define define-private define) (define define-private define)