GNU bug report logs -
#34781
27.0.50; integer in pcase sometimes compared by eq
Previous Next
Reported by: Mattias Engdegård <mattiase <at> acm.org>
Date: Thu, 7 Mar 2019 15:16:02 UTC
Severity: normal
Tags: patch
Found in version 27.0.50
Done: Mattias Engdegård <mattiase <at> acm.org>
Bug is archived. No further changes may be made.
Full log
Message #43 received at 34781 <at> debbugs.gnu.org (full text, mbox):
> (let ((upat (cddr alt)))
> (eq (car-safe upat) 'quote)))
> (let ((val (cadr (cddr alt))))
> - (unless (or (integerp val) (symbolp val))
> + (unless (or (portable-fixnum-p val) (symbolp val))
> (setq memq-ok nil))
> (push (cadr (cddr alt)) simples))
> (push alt others))))
Really?
I think the better option is below (since I think we should generally
move away from `eq` and replace it with `eql`).
Actually, the hunk below should have been installed at the same time
I replaced `eq` with `eql` when testing against an integer. It was
a mere oversight.
Stefan
diff --git a/lisp/emacs-lisp/pcase.el b/lisp/emacs-lisp/pcase.el
index 9de240154..d9a20b1ff 100644
--- a/lisp/emacs-lisp/pcase.el
+++ b/lisp/emacs-lisp/pcase.el
@@ -802,7 +802,7 @@ pcase--u1
((> (length simples) 1)
(pcase--u1 (cons `(match ,var
. (pred (pcase--flip
- ,(if memq-ok #'memq #'member)
+ ,(if memq-ok #'memql #'member)
',simples)))
(cdr matches))
code vars
This bug report was last modified 6 years and 54 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.