List,
It seems that when Slime encounters a warning during compilation, it reports the compilation as a failed and the defuns are not updated. Is there a way to disable this for decidedly benign warnings?
If you care for context, Iterate warns if you include some code that it cannot walk. I want to iterate over something wrapped in a without-interrupts environment (some C code, which doesn't handle interruptions well). Without-interrupts, in SBCL, uses a macrolet environment which is one of the things that the Iterate code walker doesn't know how to walk.
That said, the inability to walk the code in no way affects the execution unless there are forms in the unwalkable code that are Iterate directives (or whatever you want to call them). This means that so long as there Slime aborts compilation upon any warning, any code with a macrolet inside an Iterate is more difficult than than it needs to be when compiling from a buffer in Slime. I am now wrapping the offending macrolet code in another function call so Iterate doesn't know about it and doesn't complain, but it would be nice if these kinds of work-arounds weren't necessary.
Thanks, Zach KS
Hi,
Zach wrote:
[...] decidedly benign warnings?
If you care for context, Iterate warns if you include some code that it cannot walk. [...] Without-interrupts, in SBCL, uses a macrolet environment which is one of the things that the Iterate code walker doesn't know how to walk.
What you could try is to teach Iterate about SBCL's without-interrupts special form syntax. Look up iterate::*special-form-alist*
This means that so long as there Slime aborts compilation upon any warning, any code with a macrolet inside an Iterate is more difficult than than it needs to be when compiling from a buffer in Slime.
Iterate being a code-rewriter, I see no way around a warning about code that Iterate does not know how to walk. Either a warning, or teach Iterate how to handle that form.
If you go that route, I recommend you teach Iterate about the user-visible form, e.g. without-interrupts, rather than the several internal forms or macrolets etc. that such a form expands into. Perhaps it has the same syntax as (locally . walk-cdr-with-declarations)
Regards, Jörg Höhle
Zach zach.smith@colorado.edu writes:
List,
It seems that when Slime encounters a warning during compilation, it reports the compilation as a failed and the defuns are not updated. Is there a way to disable this for decidedly benign warnings?
If you care for context, Iterate warns if you include some code that it cannot walk. I want to iterate over something wrapped in a without-interrupts environment (some C code, which doesn't handle interruptions well). Without-interrupts, in SBCL, uses a macrolet environment which is one of the things that the Iterate code walker doesn't know how to walk.
That said, the inability to walk the code in no way affects the execution unless there are forms in the unwalkable code that are Iterate directives (or whatever you want to call them). This means that so long as there Slime aborts compilation upon any warning, any code with a macrolet inside an Iterate is more difficult than than it needs to be when compiling from a buffer in Slime. I am now wrapping the offending macrolet code in another function call so Iterate doesn't know about it and doesn't complain, but it would be nice if these kinds of work-arounds weren't necessary.
See slime-load-failed-fasl variable. Additionally http://slime-tips.tumblr.com/post/11429724693/failed-fasls