diff --git a/lib/meta.scm b/lib/meta.scm index b4ab642f..72c5079b 100644 --- a/lib/meta.scm +++ b/lib/meta.scm @@ -167,20 +167,29 @@ (%import env (module-env mod2) (cdr mod2-name+imports) #t))) (cdr x))))) meta) - (for-each - (lambda (x) - (case (and (pair? x) (car x)) - ((include) - (load-modules (cdr x) "" #f)) - ((include-ci) - (load-modules (cdr x) "" #t)) - ((include-shared) - (load-modules (cdr x) *shared-object-extension* #f)) - ((body begin) - (for-each (lambda (expr) (eval expr env)) (cdr x))) - ((error) - (apply error (cdr x))))) - meta) + (guard + (exn (else + (module-meta-data-set! mod meta) + (if (not (any (lambda (x) + (and (pair? x) + (memq (car x) '(import import-immutable)))) + meta)) + (warn "WARNING: exception inside module with no imports - did you forget to (import (scheme base)) in" name)) + (raise-continuable exn))) + (for-each + (lambda (x) + (case (and (pair? x) (car x)) + ((include) + (load-modules (cdr x) "" #f)) + ((include-ci) + (load-modules (cdr x) "" #t)) + ((include-shared) + (load-modules (cdr x) *shared-object-extension* #f)) + ((body begin) + (for-each (lambda (expr) (eval expr env)) (cdr x))) + ((error) + (apply error (cdr x))))) + meta)) (module-meta-data-set! mod meta) (warn-undefs env #f) env))