diff options
Diffstat (limited to 'modules/language/python/compile.scm')
-rw-r--r-- | modules/language/python/compile.scm | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/modules/language/python/compile.scm b/modules/language/python/compile.scm index 39597bc..0f964ff 100644 --- a/modules/language/python/compile.scm +++ b/modules/language/python/compile.scm @@ -77,13 +77,22 @@ (define-syntax-rule (use p l a ...) - (catch #t - (lambda () - (if (not p) (reload-module (resolve-module l))) - (use-modules a ...)) - (lambda x - (warn "failed to load " x) - (raise (ImportError '(a ...)))))) + (begin + (eval-when (compile) + (catch #t + (lambda () + (if (not p) (reload-module (resolve-module l))) + (use-modules a ...)) + (lambda x + #f))) + (eval-when (eval load) + (catch #t + (lambda () + (if (not p) (reload-module (resolve-module l))) + (use-modules a ...)) + (lambda x + (raise (ImportError ((@ (guile) format) + #f "failed to import ~a ~a" l x)))))))) (define level (make-fluid 0)) @@ -263,7 +272,7 @@ ((#:global . _) vs) - + ((#:import (#:name ((ids ...) . as) ...) ...) (let lp ((ids ids) (as as) (vs vs)) (if (pair? ids) @@ -355,6 +364,7 @@ (ids (car ids))) (union vs (list (exp '() (if as as (car ids))))))) vs))) + ((x . y) (defs y (defs x vs))) (_ vs))) |