You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The determination of which elements of the body are tags and which are statements is made prior to any macro expansion of that element. If a statement is a macro form and its macro expansion is an atom, that atom is treated as a statement, not a tag.
You are using a version of MKCL master/head that is a bit more that a year old. Why don't you pull the current MKCL master/head such that we have a common base to discuss from?
I'll be investigating all this in the next few days...
There are two problems caused by not treating forms in the
tagbody
correctly.walker:macroexpand-all
expands symbols that have a symbol-macro definition intagbody
when they are in the tag position.walker:macroexpand-all
doesn't "protect" macroexpansion of the macros intagbody
that can become a tag (symbols and integers).-- CLHS, tagbody: https://www.lispworks.com/documentation/HyperSpec/Body/s_tagbod.htm
That means that
tag
intagbody
should not be expanded.(not-tag)
expansion should be "protected" so that it doesn't become a tag, for example viaprogn
.Tested on MKCL 1.1.11
This affects quite a few other implementations, see this table (two last columns): https://plaster.tymoon.eu/view/4637.
The text was updated successfully, but these errors were encountered: