* bug#11735: 24.1.50; "Warning: Unknown defun property ... in ..." @ 2012-06-18 17:45 Drew Adams 2012-06-18 20:37 ` Stefan Monnier 0 siblings, 1 reply; 16+ messages in thread From: Drew Adams @ 2012-06-18 17:45 UTC (permalink / raw) To: 11735 I load a library that I did not write, which does this: (require 'cl) (defun foo (short full short-index initial-full-index chunks current-chunk current-chunk-pos recurse-p) "..." (declare ;(optimize speed) (fixnum short-index initial-full-index) (simple-string short full) (special *all-chunks*)) Now I see this in *Messages*" Warning: Unknown defun property fixnum in foo Warning: Unknown defun property simple-string in foo Is this a bug? In GNU Emacs 24.1.50.1 (i386-mingw-nt5.1.2600) of 2012-06-18 on MARVIN Bzr revision: 108646 michael.albinus@gmx.de-20120617185439-jfcgwwbr97nbflkz Windowing system distributor `Microsoft Corp.', version 5.1.2600 Configured using: `configure --with-gcc (4.6) --no-opt --enable-checking --cflags -ID:/devel/emacs/libs/libXpm-3.5.8/include -ID:/devel/emacs/libs/libXpm-3.5.8/src -ID:/devel/emacs/libs/libpng-dev_1.4.3-1/include -ID:/devel/emacs/libs/zlib-dev_1.2.5-2/include -ID:/devel/emacs/libs/giflib-4.1.4-1/include -ID:/devel/emacs/libs/jpeg-6b-4/include -ID:/devel/emacs/libs/tiff-3.8.2-1/include -ID:/devel/emacs/libs/gnutls-3.0.9/include -ID:/devel/emacs/libs/libiconv-1.13.1-1-dev/include -ID:/devel/emacs/libs/libxml2-2.7.8/include/libxml2' ^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#11735: 24.1.50; "Warning: Unknown defun property ... in ..." 2012-06-18 17:45 bug#11735: 24.1.50; "Warning: Unknown defun property ... in ..." Drew Adams @ 2012-06-18 20:37 ` Stefan Monnier 2012-06-18 20:49 ` Drew Adams 0 siblings, 1 reply; 16+ messages in thread From: Stefan Monnier @ 2012-06-18 20:37 UTC (permalink / raw) To: Drew Adams; +Cc: 11735 > I load a library that I did not write, which does this: > (require 'cl) > (defun foo > (short full > short-index initial-full-index > chunks current-chunk current-chunk-pos > recurse-p) > "..." > (declare ;(optimize speed) > (fixnum short-index initial-full-index) > (simple-string short full) > (special *all-chunks*)) > Now I see this in *Messages*" > Warning: Unknown defun property fixnum in foo > Warning: Unknown defun property simple-string in foo > Is this a bug? It's a name-clash between Elisp's `declare' and CL's `declare', which results in warnings, which AFAIK are harmless. Stefan ^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#11735: 24.1.50; "Warning: Unknown defun property ... in ..." 2012-06-18 20:37 ` Stefan Monnier @ 2012-06-18 20:49 ` Drew Adams 2012-06-18 21:11 ` Drew Adams 0 siblings, 1 reply; 16+ messages in thread From: Drew Adams @ 2012-06-18 20:49 UTC (permalink / raw) To: 'Stefan Monnier'; +Cc: 11735 > > Warning: Unknown defun property fixnum in foo > > Warning: Unknown defun property simple-string in foo > > > Is this a bug? > > It's a name-clash between Elisp's `declare' and CL's `declare', which > results in warnings, which AFAIK are harmless. Yes, well it would be clearer for us to say something about _declare_ here, not just something about a "defun property". Bonus points for saying something to make it clear to users (of cl.el) that these particular Common Lisp `declare' settings are not supported by cl.el. (Warnings are not necessarily harmless, BTW, mais passons...) Anyway, feel free to close the bug. I mainly wanted to raise the question, not being sure this was the message you intended. ^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#11735: 24.1.50; "Warning: Unknown defun property ... in ..." 2012-06-18 20:49 ` Drew Adams @ 2012-06-18 21:11 ` Drew Adams 2012-06-18 21:43 ` Stefan Monnier 0 siblings, 1 reply; 16+ messages in thread From: Drew Adams @ 2012-06-18 21:11 UTC (permalink / raw) To: 'Stefan Monnier'; +Cc: 11735 > > > Warning: Unknown defun property fixnum in foo > > > Warning: Unknown defun property simple-string in foo > > > > > Is this a bug? > > > > It's a name-clash between Elisp's `declare' and CL's > > `declare', which results in warnings, which AFAIK are harmless. > > Yes, well it would be clearer for us to say something about > _declare_ here, not just something about a "defun property". > > Bonus points for saying something to make it clear to users > (of cl.el) that these particular Common Lisp `declare' settings are not > supported by cl.el. > > (Warnings are not necessarily harmless, BTW, mais passons...) > > Anyway, feel free to close the bug. I mainly wanted to raise > the question, not being sure this was the message you intended. Actually, no; I'm being too lenient about this. This should _not_ be a runtime message that _users_ see, IMO. Byte-compiler "warnings" are one thing (they can be annoying enough occasionally). This, however, is downright obnoxious. I'm seeing this each time I start Emacs, just because I load a library (`el-swank-fuzzy') that someone converted from SLIME code. If Emacs doesn't know how to handle such things then it should wisely apply the maxim, "Better to keep your mouth shut and be thought a fool than to open it and remove all doubt." IOW, do not advertise Emacs ignorance at runtime, just pass over it in respectful silence. Byte compilation is a different story. Yes, we should let someone who is byte-compiling know about such things. But not users who just load (and maybe never invoke anything in) some library. Can we please put a muzzle on this? Thx. ^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#11735: 24.1.50; "Warning: Unknown defun property ... in ..." 2012-06-18 21:11 ` Drew Adams @ 2012-06-18 21:43 ` Stefan Monnier 2012-06-18 22:03 ` Drew Adams 0 siblings, 1 reply; 16+ messages in thread From: Stefan Monnier @ 2012-06-18 21:43 UTC (permalink / raw) To: Drew Adams; +Cc: 11735 > I'm seeing this each time I start Emacs, just because I load a library > (`el-swank-fuzzy') that someone converted from SLIME code. Then, byte-compile it, and the message will go away. Stefan ^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#11735: 24.1.50; "Warning: Unknown defun property ... in ..." 2012-06-18 21:43 ` Stefan Monnier @ 2012-06-18 22:03 ` Drew Adams 2012-06-19 0:59 ` Stefan Monnier 0 siblings, 1 reply; 16+ messages in thread From: Drew Adams @ 2012-06-18 22:03 UTC (permalink / raw) To: 'Stefan Monnier'; +Cc: 11735 > Then, byte-compile it, and the message will go away. Great, but that doesn't sound like a general solution for the problem. It's not about my use of this library. Or even about an arbitrary user's use of this library. Apparently you are wedded to the idea of a runtime message here. Haven't seen any reason given, but whatever. To me this is a poster child for the kind of thing we should not be issuing a runtime warning for: a Common-Lisp declaration that we do not even recognize (hence can have no effect), and which in Common Lisp itself is only for optimization anyway. But it's your call, of course. I ask only that you think about it. ^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#11735: 24.1.50; "Warning: Unknown defun property ... in ..." 2012-06-18 22:03 ` Drew Adams @ 2012-06-19 0:59 ` Stefan Monnier 2012-06-19 2:45 ` Drew Adams 0 siblings, 1 reply; 16+ messages in thread From: Stefan Monnier @ 2012-06-19 0:59 UTC (permalink / raw) To: Drew Adams; +Cc: 11735 > Apparently you are wedded to the idea of a runtime message here. No, it's simply a macro-expansion-time message. Macro-expansion either happens at compile-time, or if the file is not compiled it happens at run-time. The macro doesn't know whether it's called during compilation or at run-time. Stefan ^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#11735: 24.1.50; "Warning: Unknown defun property ... in ..." 2012-06-19 0:59 ` Stefan Monnier @ 2012-06-19 2:45 ` Drew Adams 2012-06-19 11:54 ` Juanma Barranquero 0 siblings, 1 reply; 16+ messages in thread From: Drew Adams @ 2012-06-19 2:45 UTC (permalink / raw) To: 'Stefan Monnier'; +Cc: 11735 > > Apparently you are wedded to the idea of a runtime message here. > > No, So if you are not wedded to it, then perhaps this will be fixed? > it's simply a macro-expansion-time message. > Macro-expansion either > happens at compile-time, or if the file is not compiled it happens at > run-time. The macro doesn't know whether it's called during > compilation or at run-time. Thanks for the implementation description. But that does not speak to what the message is really for and whether or how much the current implementation really fits the message's purpose. Do what you will with this bug report. To my mind it is misguided to bother & possibly confuse users with this kind of message when they just load some library. Without checking the Common Lisp spec (IANAL), I would guess that even Common Lisp, which defines such optimization declarations, leaves it up to CL implementations to ignore some of them. But I doubt that it leaves it up to them to raise a warning for those declarations it does not recognize. Just a guess (haven't read CLTL in a _long_ time). But that's typically the approach taken for this kind of thing (optimization declarations, hints to compilers or optimizers, etc.): Handle the unknown with silence - not with alarm. ^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#11735: 24.1.50; "Warning: Unknown defun property ... in ..." 2012-06-19 2:45 ` Drew Adams @ 2012-06-19 11:54 ` Juanma Barranquero 2012-06-19 13:34 ` Drew Adams 0 siblings, 1 reply; 16+ messages in thread From: Juanma Barranquero @ 2012-06-19 11:54 UTC (permalink / raw) To: Drew Adams; +Cc: 11735 On Tue, Jun 19, 2012 at 4:45 AM, Drew Adams <drew.adams@oracle.com> wrote: > Without checking the Common Lisp spec (IANAL), I would guess that even Common > Lisp, which defines such optimization declarations, leaves it up to CL > implementations to ignore some of them. But I doubt that it leaves it up to > them to raise a warning for those declarations it does not recognize. This is SBCL 1.0.55.7.mswinmt.1185-d20ec0c, an implementation of ANSI Common Lisp. ;; [etc] * (defun test1 () (declare (foo)) t) ; in: defun test1 ; (FOO) ; ; caught warning: ; unrecognized declaration (foo) ; ; compilation unit finished ; caught 1 WARNING condition test1 * (defun test2 () (declare (optimize bar)) t) ; in: defun test2 ; (OPTIMIZE BAR) ; ; caught warning: ; Ignoring unknown optimization quality bar in: (optimize bar) ; ; compilation unit finished ; caught 1 WARNING condition test2 * ^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#11735: 24.1.50; "Warning: Unknown defun property ... in ..." 2012-06-19 11:54 ` Juanma Barranquero @ 2012-06-19 13:34 ` Drew Adams 2012-06-19 13:41 ` Juanma Barranquero 0 siblings, 1 reply; 16+ messages in thread From: Drew Adams @ 2012-06-19 13:34 UTC (permalink / raw) To: 'Juanma Barranquero'; +Cc: 11735 > > Without checking the Common Lisp spec (IANAL), I would > > guess that even Common Lisp, which defines such optimization > > declarations, leaves it up to CL implementations to ignore > > some of them. But I doubt that it leaves it up to > > them to raise a warning for those declarations it does not > > recognize. > > This is SBCL 1.0.55.7.mswinmt.1185-d20ec0c, an implementation of ANSI > Common Lisp. > * (defun test2 () (declare (optimize bar)) t) > ; in: defun test2 > ; (OPTIMIZE BAR) > ; caught warning: > ; Ignoring unknown optimization quality bar in: (optimize bar) > ; compilation unit finished > ; caught 1 WARNING condition OK, so you've confirmed my doubt. I stand corrected. (Actually, you've shown only that there exists an implementation (albeit a common one) that prints a warning. That does not confirm that the CL spec says that's OK. But I claimed IANAL...) Perhaps this kind of message is a candidate for a :debug warning level? I already said that it is useful for programmers. I do not see it as helpful for general users just loading a library. On the contrary: some might become confused, if not downright worried. That's all I'm trying to say. ^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#11735: 24.1.50; "Warning: Unknown defun property ... in ..." 2012-06-19 13:34 ` Drew Adams @ 2012-06-19 13:41 ` Juanma Barranquero 2012-06-19 16:36 ` Stefan Monnier 0 siblings, 1 reply; 16+ messages in thread From: Juanma Barranquero @ 2012-06-19 13:41 UTC (permalink / raw) To: Drew Adams; +Cc: 11735 On Tue, Jun 19, 2012 at 3:34 PM, Drew Adams <drew.adams@oracle.com> wrote: > (Actually, you've shown only that there exists an implementation (albeit a > common one) that prints a warning. That does not confirm that the CL spec says > that's OK. But I claimed IANAL...) http://www.sbcl.org/manual/index.html#ANSI-Conformance "Essentially every type of non-conformance is considered a bug. (The exceptions involve internal inconsistencies in the standard.)" > Perhaps this kind of message is a candidate for a :debug warning level? I > already said that it is useful for programmers. I do not see it as helpful for > general users just loading a library. On the contrary: some might become > confused, if not downright worried. That's all I'm trying to say. I'm all for ways to silence irrelevant warnings. Juanma ^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#11735: 24.1.50; "Warning: Unknown defun property ... in ..." 2012-06-19 13:41 ` Juanma Barranquero @ 2012-06-19 16:36 ` Stefan Monnier 2012-06-19 17:08 ` Drew Adams 0 siblings, 1 reply; 16+ messages in thread From: Stefan Monnier @ 2012-06-19 16:36 UTC (permalink / raw) To: Juanma Barranquero; +Cc: 11735 >> (Actually, you've shown only that there exists an implementation >> (albeit a common one) that prints a warning. That does not confirm >> that the CL spec says that's OK. But I claimed IANAL...) > http://www.sbcl.org/manual/index.html#ANSI-Conformance AFAIK, contrary to Ada, Common Lisp does not try to enforce particular behaviors with respect to compilation warnings. >> Perhaps this kind of message is a candidate for a :debug warning level? I >> already said that it is useful for programmers. I do not see it as helpful for >> general users just loading a library. On the contrary: some might become >> confused, if not downright worried. That's all I'm trying to say. Just to put things in perspective, this message only occurs for uses of `declare' which use declarations not supported directly by Elisp (that's fairly uncommon) and only for those `declare's that are inside a `defun' rather than a `defun*' (even less common), and then only for code that's not byte-compiled. That's sufficiently rare that I'm not worried about it. Stefan ^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#11735: 24.1.50; "Warning: Unknown defun property ... in ..." 2012-06-19 16:36 ` Stefan Monnier @ 2012-06-19 17:08 ` Drew Adams 2012-06-19 21:37 ` Stefan Monnier 0 siblings, 1 reply; 16+ messages in thread From: Drew Adams @ 2012-06-19 17:08 UTC (permalink / raw) To: 'Stefan Monnier', 'Juanma Barranquero'; +Cc: 11735 > Common Lisp does not try to enforce particular > behaviors with respect to compilation warnings. OK. > >> Perhaps this kind of message is a candidate for a :debug > >> warning level? I already said that it is useful for > >> programmers. I do not see it as helpful for general users > >> just loading a library. On the contrary: some might become > >> confused, if not downright worried. That's all I'm trying to say. > > Just to put things in perspective, this message only occurs > for uses of `declare' which use declarations not supported > directly by Elisp (that's fairly uncommon) Maybe not so uncommon for code that either is designed to work also with other Emacsen (XEmacs? dunno) or for code that was originally taken from some other Lisp. The latter seems to be the case for `el-swank-fuzzy.el'. > and only for those `declare's that are inside a `defun' rather > than a `defun*' (even less common), Less common: doubtful in the latter case I mentioned. `el-swank-fuzzy.el' is an example here too. It uses both `defun*' and `defun', and it uses the unsupported `declare' settings only with `defun'. The point is not that that library is a model or does things the way they should be done. The point is that that library is perhaps not atypical or rare as an example of code that was moved to Emacs Lisp from Common Lisp. The author presumably used `defun' when that was straightforward, and used `defun*' when s?he needed Common Lisp `defun' thingies that are not available in Emacs `defun'. (Doing that instead of just using `defun*' everywhere has the advantage of making it clear which function definitions really need the added juice of `defun*'.) > and then only for code that's not byte-compiled. > That's sufficiently rare that I'm not worried about it. Maybe not worrying. But worth a bug report. And it would be good to give this message a :debug warning level so it does not annoy or confuse users. Any reason not to do that? At least as a wishlist item? ^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#11735: 24.1.50; "Warning: Unknown defun property ... in ..." 2012-06-19 17:08 ` Drew Adams @ 2012-06-19 21:37 ` Stefan Monnier 2012-06-19 22:01 ` Drew Adams 0 siblings, 1 reply; 16+ messages in thread From: Stefan Monnier @ 2012-06-19 21:37 UTC (permalink / raw) To: Drew Adams; +Cc: 'Juanma Barranquero', 11735 > Maybe not worrying. But worth a bug report. And it would be good to > give this message a :debug warning level so it does not annoy or > confuse users. Any reason not to do that? How 'bout because we don't have any notion of "level" of messages? Remember: this is a `message' from a macro, not some warning from the byte-compiler. Stefan ^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#11735: 24.1.50; "Warning: Unknown defun property ... in ..." 2012-06-19 21:37 ` Stefan Monnier @ 2012-06-19 22:01 ` Drew Adams 2014-02-09 3:40 ` Lars Ingebrigtsen 0 siblings, 1 reply; 16+ messages in thread From: Drew Adams @ 2012-06-19 22:01 UTC (permalink / raw) To: 'Stefan Monnier'; +Cc: 'Juanma Barranquero', 11735 > because we don't have any notion of "level" of messages? > Remember: this is a `message' from a macro, not some warning from the > byte-compiler. OK. So any expansion of the macro will lead to the message. Guess I have to give up hoping that the message could be targeted better to the programmer writing the (declare...), whom it is aimed at, and not also users of the library. The text could still perhaps be improved, as I suggested. It would be better to (a) mention `declare' and (b) show the unsupported expression in its entirety. ^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#11735: 24.1.50; "Warning: Unknown defun property ... in ..." 2012-06-19 22:01 ` Drew Adams @ 2014-02-09 3:40 ` Lars Ingebrigtsen 0 siblings, 0 replies; 16+ messages in thread From: Lars Ingebrigtsen @ 2014-02-09 3:40 UTC (permalink / raw) To: Drew Adams; +Cc: 'Juanma Barranquero', 11735 "Drew Adams" <drew.adams@oracle.com> writes: >> because we don't have any notion of "level" of messages? >> Remember: this is a `message' from a macro, not some warning from the >> byte-compiler. > > OK. > > So any expansion of the macro will lead to the message. Guess I have to give up > hoping that the message could be targeted better to the programmer writing the > (declare...), whom it is aimed at, and not also users of the library. Ok; closing. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2014-02-09 3:40 UTC | newest] Thread overview: 16+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-06-18 17:45 bug#11735: 24.1.50; "Warning: Unknown defun property ... in ..." Drew Adams 2012-06-18 20:37 ` Stefan Monnier 2012-06-18 20:49 ` Drew Adams 2012-06-18 21:11 ` Drew Adams 2012-06-18 21:43 ` Stefan Monnier 2012-06-18 22:03 ` Drew Adams 2012-06-19 0:59 ` Stefan Monnier 2012-06-19 2:45 ` Drew Adams 2012-06-19 11:54 ` Juanma Barranquero 2012-06-19 13:34 ` Drew Adams 2012-06-19 13:41 ` Juanma Barranquero 2012-06-19 16:36 ` Stefan Monnier 2012-06-19 17:08 ` Drew Adams 2012-06-19 21:37 ` Stefan Monnier 2012-06-19 22:01 ` Drew Adams 2014-02-09 3:40 ` Lars Ingebrigtsen
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/emacs.git https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.