summaryrefslogtreecommitdiffstats
path: root/stdlib
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib')
-rw-r--r--stdlib/compiler.tl2
-rw-r--r--stdlib/pmac.tl14
2 files changed, 8 insertions, 8 deletions
diff --git a/stdlib/compiler.tl b/stdlib/compiler.tl
index b516d91a..349fd9ab 100644
--- a/stdlib/compiler.tl
+++ b/stdlib/compiler.tl
@@ -2145,7 +2145,7 @@
(defun expand-defun (form)
(mac-param-bind form (t name args . body) form
(flet ((mklambda (block-name block-sym)
- (rlcp ^(lambda ,args (,block-sym ,block-name ,*body)) form)))
+ (set-macro-ancestor ^(lambda ,args (,block-sym ,block-name ,*body)) form)))
(cond
((bindable name)
^(sys:rt-defun ',name ,(mklambda name 'sys:blk)))
diff --git a/stdlib/pmac.tl b/stdlib/pmac.tl
index d56e1fda..1f383e6f 100644
--- a/stdlib/pmac.tl
+++ b/stdlib/pmac.tl
@@ -25,14 +25,14 @@
;; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
;; POSSIBILITY OF SUCH DAMAGE.
-(defmacro define-param-expander (keyword
+(defmacro define-param-expander (:form f keyword
(parms body : (env (gensym)) (form (gensym)))
- . forms)
- ^(progn
- (set [*param-macro* ,keyword]
- (lambda (,parms ,body ,env ,form)
- ,*forms))
- ,keyword))
+ . forms)
+ (let ((lambda ^(lambda (,parms ,body ,env ,form) ,*forms)))
+ (set-macro-ancestor lambda f)
+ ^(progn
+ (set [*param-macro* ,keyword] ,lambda)
+ ,keyword)))
(defun macroexpand-params (prototype-form : env)
(tree-case prototype-form