summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--stdlib/op.tl10
1 files changed, 6 insertions, 4 deletions
diff --git a/stdlib/op.tl b/stdlib/op.tl
index bd5b7a2f..26061a6f 100644
--- a/stdlib/op.tl
+++ b/stdlib/op.tl
@@ -125,7 +125,8 @@
;; Try to expand args as-is, catching errors.
(let ((syn (op-ignerr (sys:op-alpha-rename e
syntax-0
- nil))))
+ nil)))
+ (*expand-hook* nil))
(if syn
;; Args expanded.
(if (or (slot ctx 'gens) (slot ctx 'nested))
@@ -156,6 +157,7 @@
;; There were no metas. Let's return the
;; form augmented with do-gen.
syn)))))
+ (*expand-hook* nil)
(syntax-2 (sys:op-alpha-rename e syntax-1 t))
(metas (slot ctx 'gens))
(rec (slot ctx 'rec))
@@ -189,13 +191,13 @@
(cond
(recvar ^(sys:lbind ((,rec (lambda (,*(cdr metas) . ,rest-sym)
(let ((,rec (fun ,rec)))
- ,lambda-interior))))
+ ,(noexpand lambda-interior)))))
(fun ,rec)))
(rec ^(sys:lbind ((,rec (lambda (,*(cdr metas) . ,rest-sym)
- ,lambda-interior)))
+ ,(noexpand lambda-interior))))
(fun ,rec)))
(t ^(lambda (,*(cdr metas) . ,rest-sym)
- ,lambda-interior))))))
+ ,(noexpand lambda-interior)))))))
(defmacro op (:form f :env e . args)
(sys:op-expand f e args))