From d9da8648cd790c500da72e5840802129b87a9362 Mon Sep 17 00:00:00 2001 From: Daniel Kochmanski Date: Mon, 12 Feb 2018 16:02:00 +0100 Subject: [PATCH] Look up a lexical macro before a compiler macro. Fixes #83. Fixes #237. --- src/cmp/cmpeval.lsp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/cmp/cmpeval.lsp b/src/cmp/cmpeval.lsp index 3ab84fbb8..e853c6dd8 100644 --- a/src/cmp/cmpeval.lsp +++ b/src/cmp/cmpeval.lsp @@ -68,6 +68,9 @@ (unoptimized-long-call `#',fname args))) ((setq fd (local-function-ref fname)) (c1call-local fname fd args)) + ((and macros-allowed ; macrolet + (setq fd (cmp-env-search-macro fname))) + (cmp-expand-macro fd (list* fname args))) ((and (setq can-inline (inline-possible fname)) (setq fd (compiler-macro-function fname)) (progn @@ -81,8 +84,8 @@ (clos-compiler-macro-expand fname args)) success)) fd) - ((and macros-allowed - (setq fd (cmp-macro-function fname))) + ((and macros-allowed ; global macro + (setq fd (macro-function fname))) (cmp-expand-macro fd (list* fname args))) ((and (setq can-inline (declared-inline-p fname)) (consp can-inline)