Ignore explicit phase specification for imports in `library' form.
authorJulian Graham <julian.graham@aya.yale.edu>
Fri, 28 May 2010 01:32:20 +0000 (21:32 -0400)
committerJulian Graham <julian.graham@aya.yale.edu>
Fri, 28 May 2010 01:32:39 +0000 (21:32 -0400)
* module/ice-9/r6rs-libraries.scm (library): Unwrap the `for' sub-form
  during export resolution the same way that `import' does.
* test-suite/tests/rnrs-libraries.test ("implicit phasing"): New test
  prefix and tests.

module/ice-9/r6rs-libraries.scm
test-suite/tests/rnrs-libraries.test

index fbe80ed..56d4300 100644 (file)
        (and-map identifier? #'(name name* ...))
        (call-with-values
            (lambda ()
-             (compute-exports (map resolve-r6rs-interface #'(ispec ...))
-                              #'(espec ...)))
+             (compute-exports 
+              (map (lambda (im)
+                     (syntax-case im (for)
+                       ((for import-set import-level ...)
+                        (resolve-r6rs-interface #'import-set))
+                       (import-set (resolve-r6rs-interface #'import-set))))
+                   #'(ispec ...))
+              #'(espec ...)))
          (lambda (exports re-exports)
            (with-syntax (((e ...) exports)
                          ((r ...) re-exports))
index 9f6f6c1..4396c67 100644 (file)
     (equal? (eval '(double 20) (current-module))
             40)))
 
+;; Guile should ignore explicit phase specifications
+;;
+(with-test-prefix "implicit phasing"
+  (with-test-prefix "in library form"
+    (pass-if "explicit phasing ignored"
+      (import (for (guile) (meta -1))) #t))
+
+  (with-test-prefix "in library form"
+    (pass-if "explicit phasing ignored"
+      (save-module-excursion
+       (lambda () 
+         (library (test) 
+           (export) 
+           (import (for (guile) (meta -1)))) 
+         #t)))))
 
 ;; Now import features.
 ;;