diff options
author | Andy Wingo <wingo@pobox.com> | 2009-03-06 17:01:47 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2009-03-06 17:01:47 +0100 |
commit | 52381a17c4972a0d1cb00cbb50857e1412e6fabf (patch) | |
tree | 10d0263bf1f39de8fceb174c6a27815a5257bcee /module/language/scheme/expand.scm | |
parent | 25d8cd3a0c840eeb86313e1d0c61f7b9c34b9141 (diff) | |
download | guile-52381a17c4972a0d1cb00cbb50857e1412e6fabf.tar.gz |
support source-level annotations in syncase
* module/ice-9/annotate.scm (<annotation>): Slightly more concise
printing.
(annotate): Don't create annotations if we have no source info.
* module/ice-9/psyntax.scm (annotation?): Remove this definition, as we
now provide annotation support.
* module/ice-9/psyntax-pp.scm: Regenerated.
* module/ice-9/syncase.scm: Use (ice-9 annotate).
* module/language/scheme/expand.scm (eval-when): Define the eval-when
transformer.
Diffstat (limited to 'module/language/scheme/expand.scm')
-rw-r--r-- | module/language/scheme/expand.scm | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/module/language/scheme/expand.scm b/module/language/scheme/expand.scm index d0e66e9ad..ee689a092 100644 --- a/module/language/scheme/expand.scm +++ b/module/language/scheme/expand.scm @@ -284,11 +284,13 @@ ((,modname ,sym) x)) -(define-scheme-expander eval-case - (,clauses - (-> `(eval-case . ,(map (lambda (x) - (-> `(,(acar x) . ,(map re-expand (acdr x))))) - clauses))))) +(define-scheme-expander eval-when + ((,when . ,body) (guard (list? when) (and-map symbol? when)) + (if (memq 'compile when) + (primitive-eval `(begin . ,body))) + (if (memq 'load when) + (-> `(begin . ,body)) + (-> `(begin))))) ;;; Hum, I don't think this takes imported modifications to `define' ;;; properly into account. (Lexical bindings are OK because of alpha |