mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 03:40:34 +02:00
fix define-module ordering
* module/ice-9/boot-9.scm (define-module): Fix to load the #:use-module clauses in the order in which they appear in the define-module form. Thanks to Jan Nieuwenhuizen for the report. * test-suite/standalone/test-import-order: Add new test that define-module and use-modules resolve the interface in the right order. * test-suite/standalone/Makefile.am: * test-suite/standalone/test-import-order-a.scm: * test-suite/standalone/test-import-order-b.scm: * test-suite/standalone/test-import-order-c.scm: * test-suite/standalone/test-import-order-d.scm: Aux files.
This commit is contained in:
parent
0dd8493cb3
commit
ad4bd7c2c0
7 changed files with 55 additions and 3 deletions
|
@ -3070,15 +3070,15 @@ module '(ice-9 q) '(make-q q-length))}."
|
|||
#`(#:filename 'f . #,(parse #'args imp exp rex rep aut)))
|
||||
((#:use-module (name name* ...) . args)
|
||||
(and (and-map symbol? (syntax->datum #'(name name* ...))))
|
||||
(parse #'args (cons #'((name name* ...)) imp) exp rex rep aut))
|
||||
(parse #'args #`(#,@imp ((name name* ...))) exp rex rep aut))
|
||||
((#:use-syntax (name name* ...) . args)
|
||||
(and (and-map symbol? (syntax->datum #'(name name* ...))))
|
||||
#`(#:transformer '(name name* ...)
|
||||
. #,(parse #'args (cons #'((name name* ...)) imp) exp rex rep aut)))
|
||||
. #,(parse #'args #`(#,@imp ((name name* ...))) exp rex rep aut)))
|
||||
((#:use-module ((name name* ...) arg ...) . args)
|
||||
(and (and-map symbol? (syntax->datum #'(name name* ...))))
|
||||
(parse #'args
|
||||
(cons #`((name name* ...) #,@(parse-iface #'(arg ...))) imp)
|
||||
#`(#,@imp ((name name* ...) #,@(parse-iface #'(arg ...))))
|
||||
exp rex rep aut))
|
||||
((#:export (ex ...) . args)
|
||||
(parse #'args imp #`(#,@exp ex ...) rex rep aut))
|
||||
|
|
|
@ -75,6 +75,11 @@ TESTS += test-require-extension
|
|||
check_SCRIPTS += test-guile-snarf
|
||||
TESTS += test-guile-snarf
|
||||
|
||||
check_SCRIPTS += test-import-order
|
||||
TESTS += test-import-order
|
||||
EXTRA_DIST += test-import-order-a.scm test-import-order-b.scm \
|
||||
test-import-order-c.scm test-import-order-d.scm
|
||||
|
||||
# test-num2integral
|
||||
test_num2integral_SOURCES = test-num2integral.c
|
||||
test_num2integral_CFLAGS = ${test_cflags}
|
||||
|
|
31
test-suite/standalone/test-import-order
Executable file
31
test-suite/standalone/test-import-order
Executable file
|
@ -0,0 +1,31 @@
|
|||
#!/bin/sh
|
||||
exec guile -q -L "$builddir" -s "$0" "$@"
|
||||
!#
|
||||
|
||||
(define-module (base)
|
||||
#:export (push! order))
|
||||
|
||||
(define order '())
|
||||
(define (push!)
|
||||
(set! order `(,@order ,(module-name (current-module)))))
|
||||
|
||||
(define-module (test-1)
|
||||
#:use-module (base)
|
||||
#:use-module (test-import-order-a)
|
||||
#:use-module (test-import-order-b))
|
||||
|
||||
(use-modules (test-import-order-c) (test-import-order-d))
|
||||
|
||||
(if (not (equal? order
|
||||
'((test-import-order-a)
|
||||
(test-import-order-b)
|
||||
(test-import-order-c)
|
||||
(test-import-order-d))))
|
||||
(begin
|
||||
(format (current-error-port) "Unexpected import order: ~a" order)
|
||||
(exit 1))
|
||||
(exit 0))
|
||||
|
||||
;; Local Variables:
|
||||
;; mode: scheme
|
||||
;; End:
|
4
test-suite/standalone/test-import-order-a.scm
Normal file
4
test-suite/standalone/test-import-order-a.scm
Normal file
|
@ -0,0 +1,4 @@
|
|||
(define-module (test-import-order-a)
|
||||
#:use-module (base))
|
||||
|
||||
(push!)
|
4
test-suite/standalone/test-import-order-b.scm
Normal file
4
test-suite/standalone/test-import-order-b.scm
Normal file
|
@ -0,0 +1,4 @@
|
|||
(define-module (test-import-order-b)
|
||||
#:use-module (base))
|
||||
|
||||
(push!)
|
4
test-suite/standalone/test-import-order-c.scm
Normal file
4
test-suite/standalone/test-import-order-c.scm
Normal file
|
@ -0,0 +1,4 @@
|
|||
(define-module (test-import-order-c)
|
||||
#:use-module (base))
|
||||
|
||||
(push!)
|
4
test-suite/standalone/test-import-order-d.scm
Normal file
4
test-suite/standalone/test-import-order-d.scm
Normal file
|
@ -0,0 +1,4 @@
|
|||
(define-module (test-import-order-d)
|
||||
#:use-module (base))
|
||||
|
||||
(push!)
|
Loading…
Add table
Add a link
Reference in a new issue