summaryrefslogtreecommitdiff
path: root/module/language/scheme/expand.scm
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2009-03-06 17:01:47 +0100
committerAndy Wingo <wingo@pobox.com>2009-03-06 17:01:47 +0100
commit52381a17c4972a0d1cb00cbb50857e1412e6fabf (patch)
tree10d0263bf1f39de8fceb174c6a27815a5257bcee /module/language/scheme/expand.scm
parent25d8cd3a0c840eeb86313e1d0c61f7b9c34b9141 (diff)
downloadguile-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.scm12
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