diff options
Diffstat (limited to 'module/language/scheme/compile-ghil.scm')
-rw-r--r-- | module/language/scheme/compile-ghil.scm | 17 |
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)) |