From: Tobias C R. <tc...@fr...> - 2010-06-17 04:48:19
|
Say you want to get rid of compiler-notes for a very specific area of code inside a macro. However, the following won't cut it: `(locally (declare (sb-ext:muffle-conditions sb-ext:compiler-note) (with-foo (...) (declare (sb-ext:unmuffle-conditions sb-ext:compiler-note)) ,@body)) The reason why that is not sufficient is because inside WITH-FOO we'll unconditionally unmuffle compiler-notes even though there may a global muffling declaration active. Presumably you can get at the list of currently muffled condition from a macro's &environment object, so you can probably write the above as (let ((muffled-conditions (get-declaration 'sb-ext:muffle-conditions env))) `(locally (declare (sb-ext:muffle-conditions sb-ext:compiler-note) (with-foo (...) (declare (sb-ext:unmuffle-conditions sb-ext:compiler-note)) (declare (sb-ext:muffle-conditions ,@muffled-conditions)) ,@body))) I'm wondering if this warrants a new declaration REMUFFLE-CONDITIONS? -T. |