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.
There are two problems caused by not treating forms in the
tagbody
correctly.ccl:macroexpand-all
expands symbols that have a symbol-macro definition intagbody
when they are in the tag position.ccl:macroexpand-all
doesn't "protect" macroexpansion of the macros intagbody
that can becom 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 CCL 1.13
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: