diff --git a/lib/meta.scm b/lib/meta.scm index 48a44652..ac5cd076 100644 --- a/lib/meta.scm +++ b/lib/meta.scm @@ -69,6 +69,13 @@ (cond ((not (and (pair? x) (list? x))) (error "invalid module syntax" x)) + ((and (eq? 'prefix (car x)) (symbol? (caddr x)) (list? (cadr x))) + (let ((mod-name+imports (resolve-import (cadr x)))) + (cons (car mod-name+imports) + (map (lambda (i) + (cons (symbol-append (caddr x) (if (pair? i) (car i) i)) + (if (pair? i) (cdr i) i))) + (cdr mod-name+imports))))) ((and (pair? (cdr x)) (pair? (cadr x))) (if (memq (car x) '(only except rename)) (let* ((mod-name+imports (resolve-import (cadr x))) @@ -93,13 +100,6 @@ (if rename (cons (cadr rename) (from-id i)) i))) imp-ids))))) (error "invalid import modifier" x))) - ((and (eq? 'prefix (car x)) (symbol? (cadr x)) (list? (caddr x))) - (let ((mod-name+imports (resolve-import (caddr x)))) - (cons (car mod-name+imports) - (map (lambda (i) - (cons (symbol-append (cadr x) (if (pair? i) (car i) i)) - (if (pair? i) (cdr i) i))) - (cdr mod-name+imports))))) ((find-module x) => (lambda (mod) (cons x (%module-exports mod)))) (else