A bug in the declaration interpreter can induce an infinite recursion when finding a symbol macro

This commit is contained in:
Juan Jose Garcia Ripoll 2010-04-01 22:27:20 +02:00
parent 525841e298
commit 384daa770b

View file

@ -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)))