mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-01-16 06:12:25 -08:00
A bug in the declaration interpreter can induce an infinite recursion when finding a symbol macro
This commit is contained in:
parent
525841e298
commit
384daa770b
1 changed files with 4 additions and 3 deletions
|
|
@ -577,8 +577,8 @@
|
|||
(when (member name (second record) :test #'eql)
|
||||
(setf found record)
|
||||
(return)))
|
||||
((eq (second record) 'si::symbol-macro)
|
||||
(when (eq name 'si::symbol-macro)
|
||||
((eq name 'si::symbol-macro)
|
||||
(when (eq (second record) 'si::symbol-macro)
|
||||
(setf found record))
|
||||
(return))
|
||||
(t
|
||||
|
|
@ -615,7 +615,8 @@
|
|||
(defun symbol-macrolet-declaration-p (name type)
|
||||
(let* ((record (cmp-env-search-variables name 'si::symbol-macro *cmp-env*)))
|
||||
(when record
|
||||
(let ((expression (macroexpand-1 name *cmp-env*)))
|
||||
(let* ((expression (funcall (third record) name nil)))
|
||||
(print expression)
|
||||
(cmp-env-register-symbol-macro name `(the ,type ,expression)))
|
||||
t)))
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue