From: Christophe R. <cs...@ca...> - 2003-05-28 12:08:13
|
Ingvar <in...@ca...> writes: > And now with "diff -u" patch-file. > +(defmacro compiler-note-conditional (note-type format-string &rest format-args) > + `(progn (unless (or ,@(loop for sym in note-type collect (list 'member sym '*ignore-compiler-note-class-list*))) > + (compiler-note ,format-string ,@format-args)) > + (values))) > + > - (compiler-note > + (compiler-note-conditional '(:return) > - (compiler-note "couldn't inline expand because expansion ~ > + (compiler-note-conditional (:NO-INLINE) "couldn't inline expand because expansion ~ > - (give-up-ir1-transform "BOOLE code is not a constant.")) > + (give-up-ir1-transform '(:boole :no-inline) "BOOLE code is not a constant.")) Here's a good argument for more type-checking: those QUOTEs, if I'm not mistaken, are going to cause a problem. :-) OK, I think this is a good start. However, I think I would rather see something that uses the condition system. The comment above COMPILER-NOTE says that it used to signal conditions; however, in the process of modernising the code, that was removed, basically because in SBCL a compiler note really is a note, not a STYLE-WARNING. I think it ought to be possible to reintroduce conditions for compiler notes, with a hierarchy that looks something like CONDITION COMPILER-NOTE SIMPLE-COMPILER-NOTE (mixin: SIMPLE-CONDITION, for uncategorized) FAILED-INLINE ... Then you can get the effect of your patch by having an outer handler, discarding the condition based on its type (and a special variable, say *ignored-note-types*); but also user code can handle these beasts selectively, maybe with a declaration interface to quieten the compiler... Does that make any sense? I suppose the thing that using the condition system buys us is a little more power for reflection. Cheers, Christophe -- http://www-jcsu.jesus.cam.ac.uk/~csr21/ +44 1223 510 299/+44 7729 383 757 (set-pprint-dispatch 'number (lambda (s o) (declare (special b)) (format s b))) (defvar b "~&Just another Lisp hacker~%") (pprint #36rJesusCollegeCambridge) |