GNU bug report logs - #51368
29.0.50; `cl-case' should error on incorrect use

Previous Next

Package: emacs;

Reported by: Philipp Stephani <p.stephani2 <at> gmail.com>

Date: Sun, 24 Oct 2021 07:53:01 UTC

Severity: normal

Tags: moreinfo

Found in version 29.0.50

Done: Stefan Kangas <stefankangas <at> gmail.com>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 51368 in the body.
You can then email your comments to 51368 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#51368; Package emacs. (Sun, 24 Oct 2021 07:53:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Philipp Stephani <p.stephani2 <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sun, 24 Oct 2021 07:53:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Philipp Stephani <p.stephani2 <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 29.0.50; `cl-case' should error on incorrect use
Date: Sun, 24 Oct 2021 09:52:19 +0200
This form demonstrates a few incorrect uses of `cl-case':

(cl-case a
  (nil 0)   ; doesn't match anything
  (t 1)     ; matches everything, but too early
  ('foo 2)) ; matches `quote' in addition to `foo'

It would be nice if `cl-case' would signal an error or at least warn
about these at macroexpansion time, since they are somewhat subtle and
easy to get wrong.


In GNU Emacs 29.0.50 (build 3, x86_64-pc-linux-gnu, GTK+ Version 3.24.30, cairo version 1.16.0)
 of 2021-10-24
Repository revision: aea4af5119fdf130f1df7190478a23c6777f92a2
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12011000
System Description: Debian GNU/Linux rodete

Configured using:
 'configure --enable-gcc-warnings=warn-only
 --enable-gtk-deprecation-warnings --without-pop --with-mailutils
 --enable-checking=all --enable-check-lisp-object-type --with-modules
 'CFLAGS=-O0 -ggdb3''

Configured features:
CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON
LIBSELINUX LIBSYSTEMD LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG SECCOMP
SOUND THREADS TIFF TOOLKIT_SCROLL_BARS X11 XDBE XIM XPM GTK3 ZLIB

Important settings:
  value of $LC_TIME: en_DK.utf8
  value of $LANG: en_US.utf8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message rmc dired dired-loaddefs rfc822
mml mml-sec epa epg rfc6068 epg-config gnus-util rmail rmail-loaddefs
time-date mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev
gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util
mail-prsvr mail-utils phst skeleton derived pcase ffap thingatpt url
url-proxy url-privacy url-expand url-methods url-history url-cookie
url-domsuf url-util url-parse auth-source cl-seq eieio eieio-core
cl-macs eieio-loaddefs password-cache json map url-vars mailcap rx
gnutls puny dbus xml seq gv subr-x byte-opt bytecomp byte-compile cconv
compile text-property-search comint ansi-color ring cl-loaddefs cl-lib
iso-transl tooltip eldoc paren electric uniquify ediff-hook vc-hooks
lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd
tool-bar dnd fontset image regexp-opt fringe tabulated-list replace
newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar
rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock
font-lock syntax font-core term/tty-colors frame minibuffer cl-generic
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite emoji-zwj charscript
charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray
cl-preloaded nadvice button loaddefs faces cus-face macroexp files
window text-properties overlay sha1 md5 base64 format env code-pages
mule custom widget hashtable-print-readable backquote threads dbusbind
inotify dynamic-setting system-font-setting font-render-setting cairo
move-toolbar gtk x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 16 68529 4717)
 (symbols 48 8401 3)
 (strings 32 24306 1951)
 (string-bytes 1 786068)
 (vectors 16 15413)
 (vector-slots 8 204610 8730)
 (floats 8 26 36)
 (intervals 56 225 0)
 (buffers 992 11))

-- 
Google Germany GmbH
Erika-Mann-Straße 33
80636 München

Geschäftsführer: Paul Manicle, Halimah DeLaine Prado
Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg

Diese E-Mail ist vertraulich.  Falls Sie diese fälschlicherweise erhalten haben
sollten, leiten Sie diese bitte nicht an jemand anderes weiter, löschen Sie
alle Kopien und Anhänge davon und lassen Sie mich bitte wissen, dass die E-Mail
an die falsche Person gesendet wurde.

This e-mail is confidential.  If you received this communication by mistake,
please don’t forward it to anyone else, please erase all copies and
attachments, and please let me know that it has gone to the wrong person.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51368; Package emacs. (Sun, 24 Oct 2021 08:17:02 GMT) Full text and rfc822 format available.

Message #8 received at 51368 <at> debbugs.gnu.org (full text, mbox):

From: Andreas Schwab <schwab <at> linux-m68k.org>
To: Philipp Stephani <p.stephani2 <at> gmail.com>
Cc: 51368 <at> debbugs.gnu.org
Subject: Re: bug#51368: 29.0.50; `cl-case' should error on incorrect use
Date: Sun, 24 Oct 2021 10:16:07 +0200
On Okt 24 2021, Philipp Stephani wrote:

> This form demonstrates a few incorrect uses of `cl-case':
>
> (cl-case a
>   (nil 0)   ; doesn't match anything
>   (t 1)     ; matches everything, but too early
>   ('foo 2)) ; matches `quote' in addition to `foo'
>
> It would be nice if `cl-case' would signal an error or at least warn
> about these at macroexpansion time, since they are somewhat subtle and
> easy to get wrong.

clisp errors out on the misplaced `t' clause, but is otherwise silent.

Andreas.

-- 
Andreas Schwab, schwab <at> linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
"And now for something completely different."




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51368; Package emacs. (Sun, 24 Oct 2021 12:47:02 GMT) Full text and rfc822 format available.

Message #11 received at 51368 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Kangas <stefan <at> marxist.se>
To: Andreas Schwab <schwab <at> linux-m68k.org>
Cc: 51368 <at> debbugs.gnu.org, Philipp Stephani <p.stephani2 <at> gmail.com>
Subject: Re: bug#51368: 29.0.50; `cl-case' should error on incorrect use
Date: Sun, 24 Oct 2021 05:46:10 -0700
Andreas Schwab <schwab <at> linux-m68k.org> writes:

> On Okt 24 2021, Philipp Stephani wrote:
>
>> This form demonstrates a few incorrect uses of `cl-case':
>>
>> (cl-case a
>>   (nil 0)   ; doesn't match anything
>>   (t 1)     ; matches everything, but too early
>>   ('foo 2)) ; matches `quote' in addition to `foo'
>>
>> It would be nice if `cl-case' would signal an error or at least warn
>> about these at macroexpansion time, since they are somewhat subtle and
>> easy to get wrong.
>
> clisp errors out on the misplaced `t' clause, but is otherwise silent.

I think it would be good if we could error out on the misplaced t.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51368; Package emacs. (Sun, 24 Oct 2021 17:50:02 GMT) Full text and rfc822 format available.

Message #14 received at 51368 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Philipp Stephani <p.stephani2 <at> gmail.com>
Cc: 51368 <at> debbugs.gnu.org
Subject: Re: bug#51368: 29.0.50; `cl-case' should error on incorrect use
Date: Sun, 24 Oct 2021 19:48:54 +0200
Philipp Stephani <p.stephani2 <at> gmail.com> writes:

> This form demonstrates a few incorrect uses of `cl-case':
>
> (cl-case a
>   (nil 0)   ; doesn't match anything
>   (t 1)     ; matches everything, but too early
>   ('foo 2)) ; matches `quote' in addition to `foo'
>
> It would be nice if `cl-case' would signal an error or at least warn
> about these at macroexpansion time, since they are somewhat subtle and
> easy to get wrong.

An error from the second case would be nice, and a warning on the first
case, but the third case:

(macroexpand
 '(cl-case a
    ('foo (message "foo"))))
=> (cond ((cl-member a ''foo) (message "foo")))

and

(equal ''foo (list 'quote 'foo))

which, sure, whatever.  But I guess the question is whether we can
actually warn about that, because to the reader, the two forms are
equivalent? 

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51368; Package emacs. (Sun, 31 Oct 2021 18:55:02 GMT) Full text and rfc822 format available.

Message #17 received at 51368 <at> debbugs.gnu.org (full text, mbox):

From: Philipp Stephani <p.stephani2 <at> gmail.com>
To: Lars Ingebrigtsen <larsi <at> gnus.org>
Cc: 51368 <at> debbugs.gnu.org
Subject: Re: bug#51368: 29.0.50; `cl-case' should error on incorrect use
Date: Sun, 31 Oct 2021 19:53:53 +0100
Am So., 24. Okt. 2021 um 19:48 Uhr schrieb Lars Ingebrigtsen <larsi <at> gnus.org>:
>
> Philipp Stephani <p.stephani2 <at> gmail.com> writes:
>
> > This form demonstrates a few incorrect uses of `cl-case':
> >
> > (cl-case a
> >   (nil 0)   ; doesn't match anything
> >   (t 1)     ; matches everything, but too early
> >   ('foo 2)) ; matches `quote' in addition to `foo'
> >
> > It would be nice if `cl-case' would signal an error or at least warn
> > about these at macroexpansion time, since they are somewhat subtle and
> > easy to get wrong.
>
> An error from the second case would be nice, and a warning on the first
> case, but the third case:
>
> (macroexpand
>  '(cl-case a
>     ('foo (message "foo"))))
> => (cond ((cl-member a ''foo) (message "foo")))
>
> and
>
> (equal ''foo (list 'quote 'foo))
>
> which, sure, whatever.  But I guess the question is whether we can
> actually warn about that, because to the reader, the two forms are
> equivalent?

Yes, but the problem only arises if the user wants to match the symbol
`quote' plus exactly one other value. That should already be
exceedingly rare, and can be trivially rewritten by swapping the two
values (i.e. write (foo quote) instead of (quote foo)). So I think
issuing a warning or error for that case is worth it.
Assuming we'd want to prevent similar bugs with other reader
constructs, I think the only real problematic case is matching exactly
two of the symbols `function', `quote', `,', `,@', and `\`'. Maybe for
those cases we should just instruct people to write (cond (memq ...))
or similar.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51368; Package emacs. (Mon, 01 Nov 2021 13:32:02 GMT) Full text and rfc822 format available.

Message #20 received at 51368 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Philipp Stephani <p.stephani2 <at> gmail.com>
Cc: 51368 <at> debbugs.gnu.org
Subject: Re: bug#51368: 29.0.50; `cl-case' should error on incorrect use
Date: Mon, 01 Nov 2021 14:31:15 +0100
Philipp Stephani <p.stephani2 <at> gmail.com> writes:

> Yes, but the problem only arises if the user wants to match the symbol
> `quote' plus exactly one other value. That should already be
> exceedingly rare, and can be trivially rewritten by swapping the two
> values (i.e. write (foo quote) instead of (quote foo)). So I think
> issuing a warning or error for that case is worth it.

I think we're getting into slightly muddy waters, but I think I agree --
a warning here is (much more) likely to be helpful than not.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51368; Package emacs. (Fri, 12 Nov 2021 19:35:01 GMT) Full text and rfc822 format available.

Message #23 received at 51368 <at> debbugs.gnu.org (full text, mbox):

From: Philipp Stephani <p.stephani2 <at> gmail.com>
To: Lars Ingebrigtsen <larsi <at> gnus.org>
Cc: 51368 <at> debbugs.gnu.org
Subject: Re: bug#51368: 29.0.50; `cl-case' should error on incorrect use
Date: Fri, 12 Nov 2021 20:34:13 +0100
[Message part 1 (text/plain, inline)]
Am Mo., 1. Nov. 2021 um 14:31 Uhr schrieb Lars Ingebrigtsen <larsi <at> gnus.org>:
>
> Philipp Stephani <p.stephani2 <at> gmail.com> writes:
>
> > Yes, but the problem only arises if the user wants to match the symbol
> > `quote' plus exactly one other value. That should already be
> > exceedingly rare, and can be trivially rewritten by swapping the two
> > values (i.e. write (foo quote) instead of (quote foo)). So I think
> > issuing a warning or error for that case is worth it.
>
> I think we're getting into slightly muddy waters, but I think I agree --
> a warning here is (much more) likely to be helpful than not.
>

Ok, I've attached two patches that implement these suggestions.
[0001-Signal-an-error-if-a-fallback-case-is-misplaced-Bug-.patch (application/octet-stream, attachment)]
[0002-Have-cl-case-warn-about-suspicious-cases-Bug-51368.patch (application/octet-stream, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51368; Package emacs. (Sun, 14 Nov 2021 01:10:01 GMT) Full text and rfc822 format available.

Message #26 received at 51368 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Philipp Stephani <p.stephani2 <at> gmail.com>
Cc: 51368 <at> debbugs.gnu.org, monnier <at> iro.umontreal.ca
Subject: Re: bug#51368: 29.0.50; `cl-case' should error on incorrect use
Date: Sun, 14 Nov 2021 02:09:22 +0100
Philipp Stephani <p.stephani2 <at> gmail.com> writes:

> Ok, I've attached two patches that implement these suggestions.
>
> From 9c629b85cecfd2845585d03c3bd7438b69686af9 Mon Sep 17 00:00:00 2001
> From: Philipp Stephani <phst <at> google.com>
> Date: Fri, 12 Nov 2021 20:26:06 +0100
> Subject: [PATCH 1/2] Signal an error if a fallback case is misplaced
>  (Bug#51368).

Looks good to me -- I've added Stefan to the CCs; perhaps he has some
comments.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51368; Package emacs. (Sun, 14 Nov 2021 15:10:02 GMT) Full text and rfc822 format available.

Message #29 received at 51368 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Philipp Stephani <p.stephani2 <at> gmail.com>
Cc: 51368 <at> debbugs.gnu.org, Lars Ingebrigtsen <larsi <at> gnus.org>
Subject: Re: bug#51368: 29.0.50; `cl-case' should error on incorrect use
Date: Sun, 14 Nov 2021 10:08:51 -0500
> Ok, I've attached two patches that implement these suggestions.

BTW, there's a third issue which is that

    (cl-case EXP
      ((a b) FOO)
      ((a c) BAR))

won't warn about the duplicate `a`.

After fixing this, many/most uses of `quote` will already emit
a warning, so maybe it would make the quote/function part of your second
patch unnecessary.

Personally, I just recommend the use of `pcase` over `cl-case` ;-)

BTW, I just noticed the use of the `suspicious` category of
warning messages.  Doesn't this category apply to all warnings?

Oh, and for the `nil` case and the presence of branches after
`otherwise`, the warnings could use the same text saying the branch
is unreachable.


        Stefan





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51368; Package emacs. (Tue, 13 Sep 2022 15:21:02 GMT) Full text and rfc822 format available.

Message #32 received at 51368 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: 51368 <at> debbugs.gnu.org, Philipp Stephani <p.stephani2 <at> gmail.com>
Subject: Re: bug#51368: 29.0.50; `cl-case' should error on incorrect use
Date: Tue, 13 Sep 2022 17:19:54 +0200
Stefan Monnier <monnier <at> iro.umontreal.ca> writes:

> BTW, there's a third issue which is that
>
>     (cl-case EXP
>       ((a b) FOO)
>       ((a c) BAR))
>
> won't warn about the duplicate `a`.
>
> After fixing this, many/most uses of `quote` will already emit
> a warning, so maybe it would make the quote/function part of your second
> patch unnecessary.

I think it's nice to have an explicit error case for the quote case so
that the warning can be better, though, so I've pushed Philipps patches
to Emacs 29.

But this test case should also emit a warning.  Philipp, you don't
happen to have a fix for that one, too?  😀




Added tag(s) moreinfo. Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Tue, 13 Sep 2022 15:21:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51368; Package emacs. (Tue, 13 Sep 2022 16:14:01 GMT) Full text and rfc822 format available.

Message #37 received at 51368 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: 51368 <at> debbugs.gnu.org, Philipp Stephani <p.stephani2 <at> gmail.com>
Subject: Re: bug#51368: 29.0.50; `cl-case' should error on incorrect use
Date: Tue, 13 Sep 2022 18:12:49 +0200
I was surprised that these new tests didn't yield any new warnings.  :-)
But I'm doing a nativecomp bootstrap now, and:

../lisp/dnd.el: Warning: Case 'copy will match ‘quote’.  If that’s intended, write (copy quote) instead.  Otherwise, don’t quote ‘copy’.
../lisp/dnd.el: Warning: Case 'move will match ‘quote’.  If that’s intended, write (move quote) instead.  Otherwise, don’t quote ‘move’.
../lisp/dnd.el: Warning: Case 'copy will match ‘quote’.  If that’s intended, write (copy quote) instead.  Otherwise, don’t quote ‘copy’.
../lisp/dnd.el: Warning: Case 'move will match ‘quote’.  If that’s intended, write (move quote) instead.  Otherwise, don’t quote ‘move’.
../lisp/dnd.el: Warning: Case 'link will match ‘quote’.  If that’s intended, write (link quote) instead.  Otherwise, don’t quote ‘link’.
../lisp/dnd.el: Warning: Case 'copy will match ‘quote’.  If that’s intended, write (copy quote) instead.  Otherwise, don’t quote ‘copy’.
../lisp/dnd.el: Warning: Case 'move will match ‘quote’.  If that’s intended, write (move quote) instead.  Otherwise, don’t quote ‘move’.
../lisp/dnd.el: Warning: Case 'link will match ‘quote’.  If that’s intended, write (link quote) instead.  Otherwise, don’t quote ‘link’.
../lisp/progmodes/compile.el: Warning: Case 'if-location-known will match ‘quote’.  If that’s intended, write (if-location-known quote) instead.  Otherwise, don’t quote ‘if-location-known’.
../lisp/progmodes/compile.el: Warning: Case 'first-known will match
‘quote’.  If that’s intended, write





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51368; Package emacs. (Tue, 13 Sep 2022 16:16:03 GMT) Full text and rfc822 format available.

Message #40 received at 51368 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: 51368 <at> debbugs.gnu.org, Philipp Stephani <p.stephani2 <at> gmail.com>
Subject: Re: bug#51368: 29.0.50; `cl-case' should error on incorrect use
Date: Tue, 13 Sep 2022 18:15:19 +0200
Lars Ingebrigtsen <larsi <at> gnus.org> writes:

> I was surprised that these new tests didn't yield any new warnings.  :-)

Ah, nevermind -- I was testing the bootstrap on the wrong (un-updated)
machine.  Now I'm seeing the warnings in a non-nativecomp build, too.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51368; Package emacs. (Sun, 02 Oct 2022 21:44:01 GMT) Full text and rfc822 format available.

Message #43 received at 51368 <at> debbugs.gnu.org (full text, mbox):

From: Göktuğ Kayaalp <self <at> gkayaalp.com>
To: 51368 <at> debbugs.gnu.org
Subject: 29.0.50; `cl-case' should error on incorrect use
Date: Mon, 03 Oct 2022 00:39:39 +0300
Hello,

I noticed the change associated with this bug
(6d8f5161ead689b7a2e44a7de0a695f0ab4c833b) today building Emacs and
testing it against my packages; it seems that it’s broken a few
packages, at least org-checklist and pdf-tools[1].

I usually go thru the diff of NEWS and the new commits when I build
Emacs but I doubt there’s a NEWS entry for this breaking change.

Is it possible that (i) a relevant NEWS entry is added and/or (ii) maybe
this error is made non-fatal, at least for a while?

[1] I’ll probably send patches to these packages, but I’m not sure if
org-checklist is maintained by anyone.

-- 
İ. Göktuğ Kayaalp / @cadadr / <https://www.gkayaalp.com/>
pgp:   024C 30DD 597D 142B 49AC 40EB 465C D949 B101 2427




Reply sent to Stefan Kangas <stefankangas <at> gmail.com>:
You have taken responsibility. (Sun, 03 Sep 2023 08:49:02 GMT) Full text and rfc822 format available.

Notification sent to Philipp Stephani <p.stephani2 <at> gmail.com>:
bug acknowledged by developer. (Sun, 03 Sep 2023 08:49:02 GMT) Full text and rfc822 format available.

Message #48 received at 51368-done <at> debbugs.gnu.org (full text, mbox):

From: Stefan Kangas <stefankangas <at> gmail.com>
To: Lars Ingebrigtsen <larsi <at> gnus.org>
Cc: 51368-done <at> debbugs.gnu.org, Philipp Stephani <p.stephani2 <at> gmail.com>,
 Stefan Monnier <monnier <at> iro.umontreal.ca>
Subject: Re: bug#51368: 29.0.50; `cl-case' should error on incorrect use
Date: Sun, 3 Sep 2023 01:48:07 -0700
Lars Ingebrigtsen <larsi <at> gnus.org> writes:

> Stefan Monnier <monnier <at> iro.umontreal.ca> writes:
>
>> BTW, there's a third issue which is that
>>
>>     (cl-case EXP
>>       ((a b) FOO)
>>       ((a c) BAR))
>>
>> won't warn about the duplicate `a`.
>>
>> After fixing this, many/most uses of `quote` will already emit
>> a warning, so maybe it would make the quote/function part of your second
>> patch unnecessary.
>
> I think it's nice to have an explicit error case for the quote case so
> that the warning can be better, though, so I've pushed Philipps patches
> to Emacs 29.
>
> But this test case should also emit a warning.  Philipp, you don't
> happen to have a fix for that one, too?  😀

If I'm reading this right, it seems like the patches here were pushed to
master, but the bug was left open.  I'm therefore closing this bug report.

If this conclusion is incorrect, please reply to this email (use "Reply
to all" in your email client) and we can reopen the bug report.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51368; Package emacs. (Sun, 03 Sep 2023 13:41:02 GMT) Full text and rfc822 format available.

Message #51 received at 51368 <at> debbugs.gnu.org (full text, mbox):

From: Mattias Engdegård <mattias.engdegard <at> gmail.com>
To: Stefan Kangas <stefankangas <at> gmail.com>
Cc: 51368 <at> debbugs.gnu.org, Philipp Stephani <p.stephani2 <at> gmail.com>,
 Lars Ingebrigtsen <larsi <at> gnus.org>, Stefan Monnier <monnier <at> iro.umontreal.ca>
Subject: bug#51368: 29.0.50; `cl-case' should error on incorrect use
Date: Sun, 3 Sep 2023 15:40:03 +0200
[Message part 1 (text/plain, inline)]
>      (cl-case EXP
>        ((a b) FOO)
>        ((a c) BAR))
> 
>  won't warn about the duplicate `a`.

I was curious how common this could be so I locally added a warning to the back-end in bytecomp that generates switches (attached), and bootstrapped Emacs. Results:

----------------
In gnus-cloud-decode-data:
lisp/gnus/gnus-cloud.el:154:6: Warning: Duplicated value in ‘cond’: base64-gzip

In netrc-parse:
lisp/obsolete/netrc.el:106:22: Warning: Duplicated value in ‘cond’: "macdef"

In org-read-date-analyze:
lisp/org/org.el:14041:15: Warning: Duplicated value in ‘cond’: ""

In org-html-latex-fragment:
lisp/org/ox-html.el:3099:8: Warning: Duplicated value in ‘cond’: t
-----------------

None of these are from `cl-case`. (`pcase` doesn't typically warn either but just drops the duplicate silently.)

I probably won't keep the warning because it's in the back-end and was very much a hack.

[bytecomp-cond-switch-dup-warn.diff (application/octet-stream, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#51368; Package emacs. (Sun, 01 Oct 2023 17:05:01 GMT) Full text and rfc822 format available.

Message #54 received at 51368 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Kangas <stefankangas <at> gmail.com>
To: Mattias Engdegård <mattias.engdegard <at> gmail.com>
Cc: 51368 <at> debbugs.gnu.org, Philipp Stephani <p.stephani2 <at> gmail.com>,
 Lars Ingebrigtsen <larsi <at> gnus.org>, Stefan Monnier <monnier <at> iro.umontreal.ca>
Subject: Re: bug#51368: 29.0.50; `cl-case' should error on incorrect use
Date: Sun, 1 Oct 2023 10:03:50 -0700
Mattias Engdegård <mattias.engdegard <at> gmail.com> writes:

>>      (cl-case EXP
>>        ((a b) FOO)
>>        ((a c) BAR))
>>
>>  won't warn about the duplicate `a`.
>
> I was curious how common this could be so I locally added a warning to the back-end in bytecomp that generates switches (attached), and bootstrapped Emacs. Results:
>
> ----------------
> In gnus-cloud-decode-data:
> lisp/gnus/gnus-cloud.el:154:6: Warning: Duplicated value in ‘cond’: base64-gzip
>
> In netrc-parse:
> lisp/obsolete/netrc.el:106:22: Warning: Duplicated value in ‘cond’: "macdef"
>
> In org-read-date-analyze:
> lisp/org/org.el:14041:15: Warning: Duplicated value in ‘cond’: ""
>
> In org-html-latex-fragment:
> lisp/org/ox-html.el:3099:8: Warning: Duplicated value in ‘cond’: t
> -----------------

Thanks, I added FIXMEs for them on master.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Mon, 30 Oct 2023 11:24:10 GMT) Full text and rfc822 format available.

This bug report was last modified 179 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.