summaryrefslogtreecommitdiff
path: root/module/language/scheme/compile-ghil.scm
diff options
context:
space:
mode:
Diffstat (limited to 'module/language/scheme/compile-ghil.scm')
-rw-r--r--module/language/scheme/compile-ghil.scm17
1 files changed, 11 insertions, 6 deletions
diff --git a/module/language/scheme/compile-ghil.scm b/module/language/scheme/compile-ghil.scm
index 9376be48c..df38fbb83 100644
--- a/module/language/scheme/compile-ghil.scm
+++ b/module/language/scheme/compile-ghil.scm
@@ -89,12 +89,17 @@
;; FIXME shadowing lexicals?
(define (lookup-transformer head retrans)
(let* ((mod (current-module))
- (val (and (symbol? head)
- (and=> (module-variable mod head)
- (lambda (var)
- ;; unbound vars can happen if the module
- ;; definition forward-declared them
- (and (variable-bound? var) (variable-ref var)))))))
+ (val (cond
+ ((symbol? head)
+ (and=> (module-variable mod head)
+ (lambda (var)
+ ;; unbound vars can happen if the module
+ ;; definition forward-declared them
+ (and (variable-bound? var) (variable-ref var)))))
+ ;; allow macros to be unquoted into the output of a macro
+ ;; expansion
+ ((macro? head) head)
+ (else #f))))
(cond
((hashq-ref *translate-table* val))