unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#68931: 30.0.50; Gnus byte-compilation error with (display . [not expire]) with git emacs
@ 2024-02-04 22:11 Dan Christensen
  2024-02-05 12:50 ` Eli Zaretskii
  0 siblings, 1 reply; 16+ messages in thread
From: Dan Christensen @ 2024-02-04 22:11 UTC (permalink / raw)
  To: 68931



I'm using Gnus with git emacs, and noticed that since commit 8525be6d
from Nov 29, 2023 (see below), Gnus isn't honouring my group parameter

  (display . [not expire])

No error is raised (the setting appears to be silently ignored), but
when using the debugger I do see an error involving byte-compilation.
Here's the top of the output, with the rest below.

Debugger entered--returning value: "Malformed function ‘#[0 \"\\301\\300!\\207\" [expire gnus-article-marked-p] 2]’"
  format-message("Malformed function `%S'" #f(compiled-function () #<bytecode 0x1980828eb86e>))
* #f(compiled-function (form env extend func forms) #<bytecode 0x11fbce68545d80cf>)(((#f(compiled-function () #<bytecode 0x1980828eb86e>))) (nil) (nil) #f(compiled-function () #<bytecode 0x1980828eb86e>) nil)

An earlier call that could probably be used to reproduce this is:

* gnus-summary-display-make-predicate((not expire))

The full stack trace is below, as is the text of the commit.

On the ding list, someone else was able to reproduce the error.  For
them, an error was raised.  I also checked that (display . [expire])
*does* seem to work correctly, so I think it is a problem specifically
with "not".

I don't know if commit 8525be6d introduces a bug, or if it reveals an
existing bug in the way Gnus byte-compiles these predicates, or
something else.

Dan

The commit that is causing trouble is:

https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=8525be6d5eca0c75008ec1dc799cae537156feea

commit 8525be6d5eca0c75008ec1dc799cae537156feea (HEAD, refs/bisect/bad)
Author: Mattias Engdegård <mattiase@acm.org>
Date:   Wed Nov 29 17:51:46 2023 +0100

    Move malformed-function warning from byte-opt to cconv (bug#67483)

    We shouldn't be warning inside the optimiser in the first place.

    * lisp/emacs-lisp/byte-opt.el (byte-optimize-form):
    Remove byte-compile-form-stack manipulation.
    (byte-optimize-form-code-walker): Move malformed function warning
    from here...
    * lisp/emacs-lisp/cconv.el: ...to here.

The backtrace:

Debugger entered--returning value: "Malformed function ‘#[0 \"\\301\\300!\\207\" [expire gnus-article-marked-p] 2]’"
  format-message("Malformed function `%S'" #f(compiled-function () #<bytecode 0x1980828eb86e>))
* #f(compiled-function (form env extend func forms) #<bytecode 0x11fbce68545d80cf>)(((#f(compiled-function () #<bytecode 0x1980828eb86e>))) (nil) (nil) #f(compiled-function () #<bytecode 0x1980828eb86e>) nil)
* cconv-convert((#f(compiled-function () #<bytecode 0x1980828eb86e>)) nil nil)
* #f(compiled-function (form) #<bytecode 0x17f2bb4623db6b39>)((#f(compiled-function () #<bytecode 0x1980828eb86e>)))
* mapcar(#f(compiled-function (form) #<bytecode 0x17f2bb4623db6b39>) ((#f(compiled-function () #<bytecode 0x1980828eb86e>))))
* #f(compiled-function (form env extend func forms) #<bytecode 0x11fbce68545d80cf>)(((not (#f(compiled-function () #<bytecode 0x1980828eb86e>)))) (nil) (nil) not ((#f(compiled-function () #<bytecode 0x1980828eb86e>))))
* cconv-convert((not (#f(compiled-function () #<bytecode 0x1980828eb86e>))) nil nil)
* #f(compiled-function (form) #<bytecode 0x428b1114056ca6a>)((not (#f(compiled-function () #<bytecode 0x1980828eb86e>))))
* mapcar(#f(compiled-function (form) #<bytecode 0x428b1114056ca6a>) ((not (#f(compiled-function () #<bytecode 0x1980828eb86e>)))))
* cconv--convert-funcbody(nil ((not (#f(compiled-function () #<bytecode 0x1980828eb86e>)))) nil #'(lambda nil (not (#f(compiled-function () #<bytecode 0x1980828eb86e>)))))
* cconv--convert-function(nil ((not (#f(compiled-function () #<bytecode 0x1980828eb86e>)))) nil #'(lambda nil (not (#f(compiled-function () #<bytecode 0x1980828eb86e>)))) nil)
* cconv-convert(#'(lambda nil (not (#f(compiled-function () #<bytecode 0x1980828eb86e>)))) nil nil)
* cconv-closure-convert(#'(lambda nil (not (#f(compiled-function () #<bytecode 0x1980828eb86e>)))) nil)
* byte-compile-preprocess((lambda nil (not (#f(compiled-function () #<bytecode 0x1980828eb86e>)))))
* #f(compiled-function (form) #<bytecode 0x1493bc771fcd2c44>)((lambda nil (not (#f(compiled-function () #<bytecode 0x1980828eb86e>)))))
* byte-compile((lambda nil (not (#f(compiled-function () #<bytecode 0x1980828eb86e>)))))
* gnus-byte-compile((lambda nil (not (#f(compiled-function () #<bytecode 0x1980828eb86e>)))))
* gnus-category-make-function((not expire))
* gnus-get-predicate((not expire))
* gnus-summary-display-make-predicate((not expire))
* (cond ((not (= 0 (or (car-safe read-all) 0))) #'gnus-not-ignore) ((eq display 'all) #'gnus-not-ignore) ((arrayp display) (gnus-summary-display-make-predicate (mapcar #'identity display))) ((numberp display) (setq select-articles (range-uncompress (cons (let ((tmp ...)) (if (> tmp 0) tmp 1)) (cdr (gethash group gnus-active-hashtb))))) nil) (t nil))
* (setq gnus-newsgroup-display (cond ((not (= 0 (or (car-safe read-all) 0))) #'gnus-not-ignore) ((eq display 'all) #'gnus-not-ignore) ((arrayp display) (gnus-summary-display-make-predicate (mapcar #'identity display))) ((numberp display) (setq select-articles (range-uncompress (cons (let (...) (if ... tmp 1)) (cdr (gethash group gnus-active-hashtb))))) nil) (t nil)))
  (let ((display (gnus-group-find-parameter group 'display))) (debug) (setq gnus-newsgroup-display (cond ((not (= 0 (or (car-safe read-all) 0))) #'gnus-not-ignore) ((eq display 'all) #'gnus-not-ignore) ((arrayp display) (gnus-summary-display-make-predicate (mapcar #'identity display))) ((numberp display) (setq select-articles (range-uncompress (cons (let ... ...) (cdr ...)))) nil) (t nil))))
  (let* ((entry (gethash group gnus-newsrc-hashtb)) (gnus-summary-ignore-duplicates (if (eq (car (gnus-find-method-for-group group)) 'nnvirtual) t gnus-summary-ignore-duplicates)) (info (nth 1 entry)) articles fetched-articles cached) (if (gnus-check-server (set (make-local-variable 'gnus-current-select-method) (gnus-find-method-for-group group))) nil (error "Couldn't open server")) (or (and entry (not (eq (car entry) t))) (gnus-activate-group group) (progn (if (derived-mode-p 'gnus-summary-mode) (progn (gnus-kill-buffer (current-buffer)))) (error "Couldn't activate group %s: %s" group (gnus-status-message group)))) (if (gnus-request-group group t nil info) nil (if (derived-mode-p 'gnus-summary-mode) (progn (gnus-kill-buffer (current-buffer)))) (error "Couldn't request group %s: %s" group (gnus-status-message group))) (if (and gnus-agent (gethash group gnus-active-hashtb)) (progn (gnus-agent-possibly-alter-active group (gethash group gnus-active-hashtb) info) (setq gnus-summary-use-undownloaded-faces (gnus-agent-find-parameter group 'agent-enable-undownloaded-faces)))) (progn (setq gnus-newsgroup-name group) (setq gnus-newsgroup-unselected nil) (setq gnus-newsgroup-unreads (gnus-list-of-unread-articles group))) (let ((display (gnus-group-find-parameter group 'display))) (debug) (setq gnus-newsgroup-display (cond ((not (= 0 (or ... 0))) #'gnus-not-ignore) ((eq display 'all) #'gnus-not-ignore) ((arrayp display) (gnus-summary-display-make-predicate (mapcar #'identity display))) ((numberp display) (setq select-articles (range-uncompress (cons ... ...))) nil) (t nil)))) (gnus-summary-setup-default-charset) (if (gnus-virtual-group-p group) (progn (setq cached gnus-newsgroup-cached))) (setq gnus-newsgroup-unreads (gnus-sorted-ndifference (gnus-sorted-ndifference gnus-newsgroup-unreads gnus-newsgroup-marked) gnus-newsgroup-dormant)) (setq gnus-newsgroup-processable nil) (gnus-update-read-articles group gnus-newsgroup-unreads t) (if info (progn (gnus-adjust-marked-articles info))) (if (setq articles select-articles) (setq gnus-newsgroup-unselected (gnus-sorted-difference gnus-newsgroup-unreads articles)) (setq articles (gnus-articles-to-read group read-all))) (cond ((null articles) 'quit) ((eq articles 0) nil) (t (setq gnus-newsgroup-dependencies (gnus-make-hashtable (length articles))) (if (gnus-buffer-live-p gnus-group-buffer) (gnus-set-global-variables) (set-default 'gnus-newsgroup-name gnus-newsgroup-name)) (setq gnus-newsgroup-headers (gnus-fetch-headers articles)) (if cached (progn (setq gnus-newsgroup-cached cached))) (if gnus-suppress-duplicates (progn (gnus-dup-suppress-articles))) (setq gnus-newsgroup-limit (copy-sequence articles)) (setq fetched-articles (mapcar #'mail-header-number gnus-newsgroup-headers)) (setq gnus-newsgroup-articles fetched-articles) (setq gnus-newsgroup-unreads (gnus-sorted-nintersection gnus-newsgroup-unreads fetched-articles)) (gnus-compute-unseen-list) (gnus-update-missing-marks (gnus-sorted-difference articles fetched-articles)) (if (and gnus-fetch-old-headers (eq gnus-headers-retrieved-by 'nov)) (progn (if (eq gnus-fetch-old-headers 'invisible) (gnus-build-all-threads) (gnus-build-old-threads)))) (if gnus-agent (progn (gnus-agent-get-undownloaded-list))) (gnus-summary-remove-list-identifiers) (setq gnus-newsgroup-auto-expire (and (gnus-group-auto-expirable-p group) (not (gnus-group-read-only-p group)))) (if (and gnus-single-article-buffer (equal gnus-article-buffer "*Article*")) nil (gnus-article-setup-buffer)) (if gnus-newsgroup-headers (progn (progn (setq gnus-newsgroup-begin (let* ... ...)) (setq gnus-newsgroup-end (let* ... ...))))) (or gnus-newsgroup-headers t))))
  gnus-select-newsgroup("nnimap+rocky:INBOX" 9 nil)
  gnus-summary-read-group-1("nnimap+rocky:INBOX" 9 t nil nil nil)
  gnus-summary-read-group("nnimap+rocky:INBOX" 9 t nil nil nil nil)
  gnus-group-read-group(9 t "nnimap+rocky:INBOX")
  jdc-gnus-group-select-inbox(9)
  funcall-interactively(jdc-gnus-group-select-inbox 9)
  call-interactively(jdc-gnus-group-select-inbox nil nil)
  command-execute(jdc-gnus-group-select-inbox)



In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
 3.24.33, cairo version 1.16.0) of 2024-01-31 built on snowy
Repository revision: 8525be6d5eca0c75008ec1dc799cae537156feea
Repository branch: HEAD
Windowing system distributor 'The X.Org Foundation', version 11.0.12101004
System Description: Ubuntu 22.04.3 LTS

Configured using:
 'configure --with-native-compilation=no CC=gcc-12'

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

Important settings:
  value of $LANG: en_CA.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Group

Minor modes in effect:
  gnus-topic-mode: t
  xterm-mouse-mode: t
  gnus-undo-mode: t
  TeX-PDF-mode: t
  TeX-source-correlate-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  minibuffer-regexp-mode: t
  buffer-read-only: t
  column-number-mode: t
  line-number-mode: t
  indent-tabs-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
/usr/share/emacs/site-lisp/elpa-src/ps-ccrypt-1.11/ps-ccrypt-pkg hides /usr/share/emacs/site-lisp/elpa/ps-ccrypt-1.11/ps-ccrypt-pkg
/usr/share/emacs/site-lisp/elpa-src/ps-ccrypt-1.11/ps-ccrypt hides /usr/share/emacs/site-lisp/elpa/ps-ccrypt-1.11/ps-ccrypt
/usr/share/emacs/site-lisp/elpa-src/ps-ccrypt-1.11/ps-ccrypt-autoloads hides /usr/share/emacs/site-lisp/elpa/ps-ccrypt-1.11/ps-ccrypt-autoloads
~/emacs/lisp/bib-cite hides /home/jdc/.emacs.d/elpa/auctex-13.3.0/bib-cite
/home/jdc/.emacs.d/elpa/transient-20240131.1612/transient hides /scratch/emacs-bug/lisp/transient
~/emacs/lisp/org-mouse hides /scratch/emacs-bug/lisp/org/org-mouse

Features:
(shadow sort gnus-cite flyspell ispell mail-extr emacsbug gnus-topic
utf-7 nnfolder network-stream nsm gnus-delay gnus-draft gnus-agent
gnus-srvr gnus-score score-mode nnvirtual gnus-cache gnus-msg nndraft
nnmh gnus-registry registry eieio-base diary-lib diary-loaddefs cal-menu
calendar cal-loaddefs gnus-demon nntp gnus-summary-ext gnus-dired
nnmairix nnml mozmail server edit-server agda2 vc-git diff-mode
easy-mmode vc-dispatcher etags fileloop generator xref advice ob-python
python project compat treesit ob ob-tangle ol rx org-src ob-ref ob-lob
ob-table ob-exp ob-comint comint ansi-osc ansi-color ring ob-core
org-cycle org-fold org-fold-core ob-eval org-keys oc org-compat
org-version org-macs format-spec xt-mouse gnus-art mm-uu mml2015 mm-view
mml-smime smime gnutls dig gnus-sum shr pixel-fill kinsoku url-file svg
dom gnus-group gnus-undo gnus-start gnus-dbus gnus-cloud nnimap nnmail
mail-source utf7 nnoo parse-time iso8601 gnus-spec gnus-int gnus-range
gnus-win gnus nnheader range wid-edit cc-styles cc-align cc-engine
cc-vars cc-defs ido tex dbus xml crm texmathp ultex-setup bufcomp light
message sendmail yank-media puny rfc822 mml mml-sec epa derived epg
rfc6068 epg-config gnus-util text-property-search time-date mm-decode
mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util
ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader
ps-ccrypt allout dired-x dired dired-loaddefs finder-inf
auctex-autoloads tex-site company-autoloads f-autoloads
flycheck-autoloads forge-autoloads closql-autoloads emacsql-autoloads
ghub-autoloads magit-autoloads pcase git-commit-autoloads
magit-section-autoloads dash-autoloads markdown-mode-autoloads
proof-general-autoloads proof-site proof-autoloads transient-autoloads
treepy-autoloads with-editor-autoloads info compat-autoloads
yaml-autoloads package browse-url url url-proxy url-privacy url-expand
url-methods url-history url-cookie generate-lisp-file url-domsuf
url-util mailcap url-handlers url-parse auth-source cl-seq eieio
eieio-core cl-macs password-cache json subr-x map byte-opt gv bytecomp
byte-compile url-vars cl-loaddefs cl-lib rmc iso-transl tooltip cconv
eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
elisp-mode mwheel term/x-win x-win term/common-win x-dnd touch-screen
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 nadvice seq
simple cl-generic indonesian philippine 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 abbrev obarray oclosure cl-preloaded button
loaddefs theme-loaddefs faces cus-face macroexp files window
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget keymap hashtable-print-readable backquote threads dbusbind
inotify lcms2 dynamic-setting system-font-setting font-render-setting
cairo gtk x-toolkit xinput2 x multi-tty move-toolbar
make-network-process emacs)

Memory information:
((conses 16 629485 143566) (symbols 48 31395 3)
 (strings 32 271780 11064) (string-bytes 1 8919757) (vectors 16 48500)
 (vector-slots 8 1132628 48495) (floats 8 250 163)
 (intervals 56 508 0) (buffers 984 21))

^ permalink raw reply	[flat|nested] 16+ messages in thread

* bug#68931: 30.0.50; Gnus byte-compilation error with (display . [not expire]) with git emacs
  2024-02-04 22:11 bug#68931: 30.0.50; Gnus byte-compilation error with (display . [not expire]) with git emacs Dan Christensen
@ 2024-02-05 12:50 ` Eli Zaretskii
  2024-02-05 14:00   ` Mattias Engdegård
  0 siblings, 1 reply; 16+ messages in thread
From: Eli Zaretskii @ 2024-02-05 12:50 UTC (permalink / raw)
  To: Dan Christensen, Mattias Engdegård; +Cc: 68931

> From: Dan Christensen <jdc@uwo.ca>
> Date: Sun, 4 Feb 2024 22:11:34 +0000
> 
> 
> I'm using Gnus with git emacs, and noticed that since commit 8525be6d
> from Nov 29, 2023 (see below), Gnus isn't honouring my group parameter
> 
>   (display . [not expire])
> 
> No error is raised (the setting appears to be silently ignored), but
> when using the debugger I do see an error involving byte-compilation.
> Here's the top of the output, with the rest below.
> 
> Debugger entered--returning value: "Malformed function ‘#[0 \"\\301\\300!\\207\" [expire gnus-article-marked-p] 2]’"
>   format-message("Malformed function `%S'" #f(compiled-function () #<bytecode 0x1980828eb86e>))
> * #f(compiled-function (form env extend func forms) #<bytecode 0x11fbce68545d80cf>)(((#f(compiled-function () #<bytecode 0x1980828eb86e>))) (nil) (nil) #f(compiled-function () #<bytecode 0x1980828eb86e>) nil)
> 
> An earlier call that could probably be used to reproduce this is:
> 
> * gnus-summary-display-make-predicate((not expire))
> 
> The full stack trace is below, as is the text of the commit.
> 
> On the ding list, someone else was able to reproduce the error.  For
> them, an error was raised.  I also checked that (display . [expire])
> *does* seem to work correctly, so I think it is a problem specifically
> with "not".
> 
> I don't know if commit 8525be6d introduces a bug, or if it reveals an
> existing bug in the way Gnus byte-compiles these predicates, or
> something else.
> 
> Dan
> 
> The commit that is causing trouble is:
> 
> https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=8525be6d5eca0c75008ec1dc799cae537156feea
> 
> commit 8525be6d5eca0c75008ec1dc799cae537156feea (HEAD, refs/bisect/bad)
> Author: Mattias Engdegård <mattiase@acm.org>
> Date:   Wed Nov 29 17:51:46 2023 +0100
> 
>     Move malformed-function warning from byte-opt to cconv (bug#67483)
> 
>     We shouldn't be warning inside the optimiser in the first place.
> 
>     * lisp/emacs-lisp/byte-opt.el (byte-optimize-form):
>     Remove byte-compile-form-stack manipulation.
>     (byte-optimize-form-code-walker): Move malformed function warning
>     from here...
>     * lisp/emacs-lisp/cconv.el: ...to here.
> 
> The backtrace:
> 
> Debugger entered--returning value: "Malformed function ‘#[0 \"\\301\\300!\\207\" [expire gnus-article-marked-p] 2]’"
>   format-message("Malformed function `%S'" #f(compiled-function () #<bytecode 0x1980828eb86e>))
> * #f(compiled-function (form env extend func forms) #<bytecode 0x11fbce68545d80cf>)(((#f(compiled-function () #<bytecode 0x1980828eb86e>))) (nil) (nil) #f(compiled-function () #<bytecode 0x1980828eb86e>) nil)
> * cconv-convert((#f(compiled-function () #<bytecode 0x1980828eb86e>)) nil nil)
> * #f(compiled-function (form) #<bytecode 0x17f2bb4623db6b39>)((#f(compiled-function () #<bytecode 0x1980828eb86e>)))
> * mapcar(#f(compiled-function (form) #<bytecode 0x17f2bb4623db6b39>) ((#f(compiled-function () #<bytecode 0x1980828eb86e>))))
> * #f(compiled-function (form env extend func forms) #<bytecode 0x11fbce68545d80cf>)(((not (#f(compiled-function () #<bytecode 0x1980828eb86e>)))) (nil) (nil) not ((#f(compiled-function () #<bytecode 0x1980828eb86e>))))
> * cconv-convert((not (#f(compiled-function () #<bytecode 0x1980828eb86e>))) nil nil)
> * #f(compiled-function (form) #<bytecode 0x428b1114056ca6a>)((not (#f(compiled-function () #<bytecode 0x1980828eb86e>))))
> * mapcar(#f(compiled-function (form) #<bytecode 0x428b1114056ca6a>) ((not (#f(compiled-function () #<bytecode 0x1980828eb86e>)))))
> * cconv--convert-funcbody(nil ((not (#f(compiled-function () #<bytecode 0x1980828eb86e>)))) nil #'(lambda nil (not (#f(compiled-function () #<bytecode 0x1980828eb86e>)))))
> * cconv--convert-function(nil ((not (#f(compiled-function () #<bytecode 0x1980828eb86e>)))) nil #'(lambda nil (not (#f(compiled-function () #<bytecode 0x1980828eb86e>)))) nil)
> * cconv-convert(#'(lambda nil (not (#f(compiled-function () #<bytecode 0x1980828eb86e>)))) nil nil)
> * cconv-closure-convert(#'(lambda nil (not (#f(compiled-function () #<bytecode 0x1980828eb86e>)))) nil)
> * byte-compile-preprocess((lambda nil (not (#f(compiled-function () #<bytecode 0x1980828eb86e>)))))
> * #f(compiled-function (form) #<bytecode 0x1493bc771fcd2c44>)((lambda nil (not (#f(compiled-function () #<bytecode 0x1980828eb86e>)))))
> * byte-compile((lambda nil (not (#f(compiled-function () #<bytecode 0x1980828eb86e>)))))
> * gnus-byte-compile((lambda nil (not (#f(compiled-function () #<bytecode 0x1980828eb86e>)))))
> * gnus-category-make-function((not expire))
> * gnus-get-predicate((not expire))
> * gnus-summary-display-make-predicate((not expire))
> * (cond ((not (= 0 (or (car-safe read-all) 0))) #'gnus-not-ignore) ((eq display 'all) #'gnus-not-ignore) ((arrayp display) (gnus-summary-display-make-predicate (mapcar #'identity display))) ((numberp display) (setq select-articles (range-uncompress (cons (let ((tmp ...)) (if (> tmp 0) tmp 1)) (cdr (gethash group gnus-active-hashtb))))) nil) (t nil))
> * (setq gnus-newsgroup-display (cond ((not (= 0 (or (car-safe read-all) 0))) #'gnus-not-ignore) ((eq display 'all) #'gnus-not-ignore) ((arrayp display) (gnus-summary-display-make-predicate (mapcar #'identity display))) ((numberp display) (setq select-articles (range-uncompress (cons (let (...) (if ... tmp 1)) (cdr (gethash group gnus-active-hashtb))))) nil) (t nil)))
>   (let ((display (gnus-group-find-parameter group 'display))) (debug) (setq gnus-newsgroup-display (cond ((not (= 0 (or (car-safe read-all) 0))) #'gnus-not-ignore) ((eq display 'all) #'gnus-not-ignore) ((arrayp display) (gnus-summary-display-make-predicate (mapcar #'identity display))) ((numberp display) (setq select-articles (range-uncompress (cons (let ... ...) (cdr ...)))) nil) (t nil))))
>   (let* ((entry (gethash group gnus-newsrc-hashtb)) (gnus-summary-ignore-duplicates (if (eq (car (gnus-find-method-for-group group)) 'nnvirtual) t gnus-summary-ignore-duplicates)) (info (nth 1 entry)) articles fetched-articles cached) (if (gnus-check-server (set (make-local-variable 'gnus-current-select-method) (gnus-find-method-for-group group))) nil (error "Couldn't open server")) (or (and entry (not (eq (car entry) t))) (gnus-activate-group group) (progn (if (derived-mode-p 'gnus-summary-mode) (progn (gnus-kill-buffer (current-buffer)))) (error "Couldn't activate group %s: %s" group (gnus-status-message group)))) (if (gnus-request-group group t nil info) nil (if (derived-mode-p 'gnus-summary-mode) (progn (gnus-kill-buffer (current-buffer)))) (error "Couldn't request group %s: %s" group (gnus-status-message group))) (if (and gnus-agent (gethash group gnus-active-hashtb)) (progn (gnus-agent-possibly-alter-active group (gethash group gnus-active-hashtb) info) (setq gnus-summary-use-undownloaded-faces (gnus-agent-find-parameter group 'agent-enable-undownloaded-faces)))) (progn (setq gnus-newsgroup-name group) (setq gnus-newsgroup-unselected nil) (setq gnus-newsgroup-unreads (gnus-list-of-unread-articles group))) (let ((display (gnus-group-find-parameter group 'display))) (debug) (setq gnus-newsgroup-display (cond ((not (= 0 (or ... 0))) #'gnus-not-ignore) ((eq display 'all) #'gnus-not-ignore) ((arrayp display) (gnus-summary-display-make-predicate (mapcar #'identity display))) ((numberp display) (setq select-articles (range-uncompress (cons ... ...))) nil) (t nil)))) (gnus-summary-setup-default-charset) (if (gnus-virtual-group-p group) (progn (setq cached gnus-newsgroup-cached))) (setq gnus-newsgroup-unreads (gnus-sorted-ndifference (gnus-sorted-ndifference gnus-newsgroup-unreads gnus-newsgroup-marked) gnus-newsgroup-dormant)) (setq gnus-newsgroup-processable nil) (gnus-update-read-articles group gnus-newsgroup-unreads t) (if info (progn (gnus-adjust-marked-articles info))) (if (setq articles select-articles) (setq gnus-newsgroup-unselected (gnus-sorted-difference gnus-newsgroup-unreads articles)) (setq articles (gnus-articles-to-read group read-all))) (cond ((null articles) 'quit) ((eq articles 0) nil) (t (setq gnus-newsgroup-dependencies (gnus-make-hashtable (length articles))) (if (gnus-buffer-live-p gnus-group-buffer) (gnus-set-global-variables) (set-default 'gnus-newsgroup-name gnus-newsgroup-name)) (setq gnus-newsgroup-headers (gnus-fetch-headers articles)) (if cached (progn (setq gnus-newsgroup-cached cached))) (if gnus-suppress-duplicates (progn (gnus-dup-suppress-articles))) (setq gnus-newsgroup-limit (copy-sequence articles)) (setq fetched-articles (mapcar #'mail-header-number gnus-newsgroup-headers)) (setq gnus-newsgroup-articles fetched-articles) (setq gnus-newsgroup-unreads (gnus-sorted-nintersection gnus-newsgroup-unreads fetched-articles)) (gnus-compute-unseen-list) (gnus-update-missing-marks (gnus-sorted-difference articles fetched-articles)) (if (and gnus-fetch-old-headers (eq gnus-headers-retrieved-by 'nov)) (progn (if (eq gnus-fetch-old-headers 'invisible) (gnus-build-all-threads) (gnus-build-old-threads)))) (if gnus-agent (progn (gnus-agent-get-undownloaded-list))) (gnus-summary-remove-list-identifiers) (setq gnus-newsgroup-auto-expire (and (gnus-group-auto-expirable-p group) (not (gnus-group-read-only-p group)))) (if (and gnus-single-article-buffer (equal gnus-article-buffer "*Article*")) nil (gnus-article-setup-buffer)) (if gnus-newsgroup-headers (progn (progn (setq gnus-newsgroup-begin (let* ... ...)) (setq gnus-newsgroup-end (let* ... ...))))) (or gnus-newsgroup-headers t))))
>   gnus-select-newsgroup("nnimap+rocky:INBOX" 9 nil)
>   gnus-summary-read-group-1("nnimap+rocky:INBOX" 9 t nil nil nil)
>   gnus-summary-read-group("nnimap+rocky:INBOX" 9 t nil nil nil nil)
>   gnus-group-read-group(9 t "nnimap+rocky:INBOX")
>   jdc-gnus-group-select-inbox(9)
>   funcall-interactively(jdc-gnus-group-select-inbox 9)
>   call-interactively(jdc-gnus-group-select-inbox nil nil)
>   command-execute(jdc-gnus-group-select-inbox)

Adding Mattias.





^ permalink raw reply	[flat|nested] 16+ messages in thread

* bug#68931: 30.0.50; Gnus byte-compilation error with (display . [not expire]) with git emacs
  2024-02-05 12:50 ` Eli Zaretskii
@ 2024-02-05 14:00   ` Mattias Engdegård
  2024-02-05 14:32     ` Eli Zaretskii
  2024-02-05 14:33     ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 2 replies; 16+ messages in thread
From: Mattias Engdegård @ 2024-02-05 14:00 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Dan Christensen, 68931, Stefan Monnier

>> Debugger entered--returning value: "Malformed function ‘#[0 \"\\301\\300!\\207\" [expire gnus-article-marked-p] 2]’"
...
>> * gnus-summary-display-make-predicate((not expire))

Apparently, gnus-category-make-function-1 creates code that isn't really valid Lisp but that we have previously allowed anyway: (F ...) where F is a (non-symbol) function value, instead of using `funcall`.

We could (and probably should) allow this for compatibility but perhaps it's time to at least start warning about it? It makes the quirky semantics of a Lisp-2 even quirkier.







^ permalink raw reply	[flat|nested] 16+ messages in thread

* bug#68931: 30.0.50; Gnus byte-compilation error with (display . [not expire]) with git emacs
  2024-02-05 14:00   ` Mattias Engdegård
@ 2024-02-05 14:32     ` Eli Zaretskii
  2024-02-05 15:42       ` Eric Abrahamsen
  2024-02-05 14:33     ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  1 sibling, 1 reply; 16+ messages in thread
From: Eli Zaretskii @ 2024-02-05 14:32 UTC (permalink / raw)
  To: Mattias Engdegård; +Cc: jdc, 68931, monnier

> From: Mattias Engdegård <mattias.engdegard@gmail.com>
> Date: Mon, 5 Feb 2024 15:00:36 +0100
> Cc: Dan Christensen <jdc@uwo.ca>,
>  68931@debbugs.gnu.org,
>  Stefan Monnier <monnier@iro.umontreal.ca>
> 
> >> Debugger entered--returning value: "Malformed function ‘#[0 \"\\301\\300!\\207\" [expire gnus-article-marked-p] 2]’"
> ...
> >> * gnus-summary-display-make-predicate((not expire))
> 
> Apparently, gnus-category-make-function-1 creates code that isn't really valid Lisp but that we have previously allowed anyway: (F ...) where F is a (non-symbol) function value, instead of using `funcall`.
> 
> We could (and probably should) allow this for compatibility but perhaps it's time to at least start warning about it? It makes the quirky semantics of a Lisp-2 even quirkier.

I think the offending function should be fixed not to produce invalid
code, rather than support such code.





^ permalink raw reply	[flat|nested] 16+ messages in thread

* bug#68931: 30.0.50; Gnus byte-compilation error with (display . [not expire]) with git emacs
  2024-02-05 14:00   ` Mattias Engdegård
  2024-02-05 14:32     ` Eli Zaretskii
@ 2024-02-05 14:33     ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-02-05 17:13       ` Mattias Engdegård
  1 sibling, 1 reply; 16+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-02-05 14:33 UTC (permalink / raw)
  To: Mattias Engdegård; +Cc: Eli Zaretskii, 68931, Dan Christensen

> We could (and probably should) allow this for compatibility but perhaps it's
> time to at least start warning about it? It makes the quirky semantics of
> a Lisp-2 even quirkier.

I think it falls basically in the same category as ((lambda ..) ..),
indeed: we should accept it but emit a warning.


        Stefan






^ permalink raw reply	[flat|nested] 16+ messages in thread

* bug#68931: 30.0.50; Gnus byte-compilation error with (display . [not expire]) with git emacs
  2024-02-05 14:32     ` Eli Zaretskii
@ 2024-02-05 15:42       ` Eric Abrahamsen
  2024-02-05 17:00         ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 16+ messages in thread
From: Eric Abrahamsen @ 2024-02-05 15:42 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Mattias Engdegård, 68931, jdc, monnier

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Mattias Engdegård <mattias.engdegard@gmail.com>
>> Date: Mon, 5 Feb 2024 15:00:36 +0100
>> Cc: Dan Christensen <jdc@uwo.ca>,
>>  68931@debbugs.gnu.org,
>>  Stefan Monnier <monnier@iro.umontreal.ca>
>> 
>> >> Debugger entered--returning value: "Malformed function ‘#[0
>> >> \"\\301\\300!\\207\" [expire gnus-article-marked-p] 2]’"
>> ...
>> >> * gnus-summary-display-make-predicate((not expire))
>> 
>> Apparently, gnus-category-make-function-1 creates code that isn't
>> really valid Lisp but that we have previously allowed anyway: (F
>> ...) where F is a (non-symbol) function value, instead of using
>> `funcall`.
>> 
>> We could (and probably should) allow this for compatibility but
>> perhaps it's time to at least start warning about it? It makes the
>> quirky semantics of a Lisp-2 even quirkier.
>
> I think the offending function should be fixed not to produce invalid
> code, rather than support such code.

For my information: the problem here is that
`gnus-category-make-function' runs `gnus-byte-compile' on a form like
this:

(lambda nil (not (#f(compiled-function () #<bytecode 0x1980ad44c232>))))

And the extra parens around (#f(compiled-function...)) are not strictly legal?





^ permalink raw reply	[flat|nested] 16+ messages in thread

* bug#68931: 30.0.50; Gnus byte-compilation error with (display . [not expire]) with git emacs
  2024-02-05 15:42       ` Eric Abrahamsen
@ 2024-02-05 17:00         ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-02-06 20:42           ` Eric Abrahamsen
  2024-02-21 19:28           ` Dan Christensen
  0 siblings, 2 replies; 16+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-02-05 17:00 UTC (permalink / raw)
  To: Eric Abrahamsen; +Cc: 68931, Eli Zaretskii, jdc, Mattias Engdegård

> For my information: the problem here is that
> `gnus-category-make-function' runs `gnus-byte-compile' on a form like
> this:

BTW, `gnus-category-make-function` is a misnomer since it does not
return a function.

> (lambda nil (not (#f(compiled-function () #<bytecode 0x1980ad44c232>))))
>
> And the extra parens around (#f(compiled-function...)) are not strictly legal?

A Lisp function call has the form (FUN . ARGS) where FUN is not expected
to be a function *value* but rather should be a function name (and we
also tolerate a lambda expression, which is a function's source code).

The patch below should fix the core of the problem, but it probably
requires corresponding adjustments in `gnus-function-implies-unread-1`
and `gnus-category-make-function`.


        Stefan


diff --git a/lisp/gnus/gnus-agent.el b/lisp/gnus/gnus-agent.el
index 604eea4c33d..cfcbea2e233 100644
--- a/lisp/gnus/gnus-agent.el
+++ b/lisp/gnus/gnus-agent.el
@@ -2911,13 +2911,9 @@
 	(car func)
       (gnus-byte-compile `(lambda () ,func)))))
 
-(defun gnus-agent-true ()
-  "Return t."
-  t)
+(defalias 'gnus-agent-true #'always)
 
-(defun gnus-agent-false ()
-  "Return nil."
-  nil)
+(defalias 'gnus-agent-false #'ignore)
 
 (defun gnus-category-make-function-1 (predicate)
   "Make a function from PREDICATE."
@@ -2925,8 +2921,9 @@ gnus-category-make-function-1
    ;; Functions are just returned as is.
    ((or (symbolp predicate)
 	(functionp predicate))
-    `(,(or (cdr (assq predicate gnus-category-predicate-alist))
-	   predicate)))
+    (let ((fun (or (cdr (assq predicate gnus-category-predicate-alist))
+	           predicate)))
+      (if (symbolp fun) `(,fun) `(funcall ',fun))))
    ;; More complex predicate.
    ((consp predicate)
     `(,(cond






^ permalink raw reply related	[flat|nested] 16+ messages in thread

* bug#68931: 30.0.50; Gnus byte-compilation error with (display . [not expire]) with git emacs
  2024-02-05 14:33     ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-02-05 17:13       ` Mattias Engdegård
  2024-02-05 17:23         ` Dan Christensen
  0 siblings, 1 reply; 16+ messages in thread
From: Mattias Engdegård @ 2024-02-05 17:13 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Eli Zaretskii, 68931, Dan Christensen

5 feb. 2024 kl. 15.33 skrev Stefan Monnier <monnier@iro.umontreal.ca>:

> I think it falls basically in the same category as ((lambda ..) ..),
> indeed: we should accept it but emit a warning.

Right, now pushed to master (5e69376292).






^ permalink raw reply	[flat|nested] 16+ messages in thread

* bug#68931: 30.0.50; Gnus byte-compilation error with (display . [not expire]) with git emacs
  2024-02-05 17:13       ` Mattias Engdegård
@ 2024-02-05 17:23         ` Dan Christensen
  2024-02-05 19:12           ` Eli Zaretskii
  0 siblings, 1 reply; 16+ messages in thread
From: Dan Christensen @ 2024-02-05 17:23 UTC (permalink / raw)
  To: Mattias Engdegård
  Cc: Eli Zaretskii, 68931@debbugs.gnu.org, Stefan Monnier

On Feb  5, 2024, Mattias Engdegård <mattias.engdegard@gmail.com> wrote:

> 5 feb. 2024 kl. 15.33 skrev Stefan Monnier <monnier@iro.umontreal.ca>:
>
>> I think it falls basically in the same category as ((lambda ..) ..),
>> indeed: we should accept it but emit a warning.
>
> Right, now pushed to master (5e69376292).

I confirm that with current master the problem with Gnus is fixed.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* bug#68931: 30.0.50; Gnus byte-compilation error with (display . [not expire]) with git emacs
  2024-02-05 17:23         ` Dan Christensen
@ 2024-02-05 19:12           ` Eli Zaretskii
  0 siblings, 0 replies; 16+ messages in thread
From: Eli Zaretskii @ 2024-02-05 19:12 UTC (permalink / raw)
  To: Dan Christensen; +Cc: mattias.engdegard, 68931-done, monnier

> From: Dan Christensen <jdc@uwo.ca>
> CC: Stefan Monnier <monnier@iro.umontreal.ca>, Eli Zaretskii <eliz@gnu.org>,
> 	"68931@debbugs.gnu.org" <68931@debbugs.gnu.org>
> Date: Mon, 5 Feb 2024 17:23:15 +0000
> 
> On Feb  5, 2024, Mattias Engdegård <mattias.engdegard@gmail.com> wrote:
> 
> > 5 feb. 2024 kl. 15.33 skrev Stefan Monnier <monnier@iro.umontreal.ca>:
> >
> >> I think it falls basically in the same category as ((lambda ..) ..),
> >> indeed: we should accept it but emit a warning.
> >
> > Right, now pushed to master (5e69376292).
> 
> I confirm that with current master the problem with Gnus is fixed.

Thanks, so I'm closing this bug.





^ permalink raw reply	[flat|nested] 16+ messages in thread

* bug#68931: 30.0.50; Gnus byte-compilation error with (display . [not expire]) with git emacs
  2024-02-05 17:00         ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-02-06 20:42           ` Eric Abrahamsen
  2024-02-06 20:46             ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-02-21 19:28           ` Dan Christensen
  1 sibling, 1 reply; 16+ messages in thread
From: Eric Abrahamsen @ 2024-02-06 20:42 UTC (permalink / raw)
  To: 68931; +Cc: jdc, mattias.engdegard, eliz, monnier

Stefan Monnier via "Bug reports for GNU Emacs, the Swiss army knife of
text editors" <bug-gnu-emacs@gnu.org> writes:

>> For my information: the problem here is that
>> `gnus-category-make-function' runs `gnus-byte-compile' on a form like
>> this:
>
> BTW, `gnus-category-make-function` is a misnomer since it does not
> return a function.

I'll add a FIXME...

>> (lambda nil (not (#f(compiled-function () #<bytecode 0x1980ad44c232>))))
>>
>> And the extra parens around (#f(compiled-function...)) are not strictly legal?
>
> A Lisp function call has the form (FUN . ARGS) where FUN is not expected
> to be a function *value* but rather should be a function name (and we
> also tolerate a lambda expression, which is a function's source code).

Thanks! I guess I never understood that explicitly.

> The patch below should fix the core of the problem, but it probably
> requires corresponding adjustments in `gnus-function-implies-unread-1`
> and `gnus-category-make-function`.

I'll try this out, and see what's necessary to make it work.

In general I think Gnus goes to a lot of this kind of effort, based on
performance considerations that are no longer current. Especially with
native compilation available, I suspect there's no real need to keep
byte-compiling things on the fly.

>
>         Stefan
>
>
> diff --git a/lisp/gnus/gnus-agent.el b/lisp/gnus/gnus-agent.el
> index 604eea4c33d..cfcbea2e233 100644
> --- a/lisp/gnus/gnus-agent.el
> +++ b/lisp/gnus/gnus-agent.el
> @@ -2911,13 +2911,9 @@
>  	(car func)
>        (gnus-byte-compile `(lambda () ,func)))))
>  
> -(defun gnus-agent-true ()
> -  "Return t."
> -  t)
> +(defalias 'gnus-agent-true #'always)
>  
> -(defun gnus-agent-false ()
> -  "Return nil."
> -  nil)
> +(defalias 'gnus-agent-false #'ignore)
>  
>  (defun gnus-category-make-function-1 (predicate)
>    "Make a function from PREDICATE."
> @@ -2925,8 +2921,9 @@ gnus-category-make-function-1
>     ;; Functions are just returned as is.
>     ((or (symbolp predicate)
>  	(functionp predicate))
> -    `(,(or (cdr (assq predicate gnus-category-predicate-alist))
> -	   predicate)))
> +    (let ((fun (or (cdr (assq predicate gnus-category-predicate-alist))
> +	           predicate)))
> +      (if (symbolp fun) `(,fun) `(funcall ',fun))))
>     ;; More complex predicate.
>     ((consp predicate)
>      `(,(cond





^ permalink raw reply	[flat|nested] 16+ messages in thread

* bug#68931: 30.0.50; Gnus byte-compilation error with (display . [not expire]) with git emacs
  2024-02-06 20:42           ` Eric Abrahamsen
@ 2024-02-06 20:46             ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-02-06 21:08               ` Eric Abrahamsen
  0 siblings, 1 reply; 16+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-02-06 20:46 UTC (permalink / raw)
  To: Eric Abrahamsen; +Cc: Mattias Engdegård, Eli Zaretskii, 68931, jdc

> In general I think Gnus goes to a lot of this kind of effort, based on
> performance considerations that are no longer current. Especially with
> native compilation available, I suspect there's no real need to keep
> byte-compiling things on the fly.

FWIW, I don't think native compilation makes any difference in this
respect since the purpose of the code is to avoid running
interpreted code, which is still as relevant with native compilation as
with byte compilation.


        Stefan







^ permalink raw reply	[flat|nested] 16+ messages in thread

* bug#68931: 30.0.50; Gnus byte-compilation error with (display . [not expire]) with git emacs
  2024-02-06 20:46             ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-02-06 21:08               ` Eric Abrahamsen
  0 siblings, 0 replies; 16+ messages in thread
From: Eric Abrahamsen @ 2024-02-06 21:08 UTC (permalink / raw)
  To: 68931; +Cc: jdc, mattias.engdegard, eliz, monnier

Stefan Monnier via "Bug reports for GNU Emacs, the Swiss army knife of
text editors" <bug-gnu-emacs@gnu.org> writes:

>> In general I think Gnus goes to a lot of this kind of effort, based on
>> performance considerations that are no longer current. Especially with
>> native compilation available, I suspect there's no real need to keep
>> byte-compiling things on the fly.
>
> FWIW, I don't think native compilation makes any difference in this
> respect since the purpose of the code is to avoid running
> interpreted code, which is still as relevant with native compilation as
> with byte compilation.

Ah, that's true.





^ permalink raw reply	[flat|nested] 16+ messages in thread

* bug#68931: 30.0.50; Gnus byte-compilation error with (display . [not expire]) with git emacs
  2024-02-05 17:00         ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-02-06 20:42           ` Eric Abrahamsen
@ 2024-02-21 19:28           ` Dan Christensen
  2024-02-21 22:05             ` Eric Abrahamsen
  1 sibling, 1 reply; 16+ messages in thread
From: Dan Christensen @ 2024-02-21 19:28 UTC (permalink / raw)
  To: 68931

On Feb  5, 2024, Stefan Monnier via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org> wrote:

> diff --git a/lisp/gnus/gnus-agent.el b/lisp/gnus/gnus-agent.el
> index 604eea4c33d..cfcbea2e233 100644
> --- a/lisp/gnus/gnus-agent.el
> +++ b/lisp/gnus/gnus-agent.el
> @@ -2925,8 +2921,9 @@ gnus-category-make-function-1
>     ;; Functions are just returned as is.
>     ((or (symbolp predicate)
>  	(functionp predicate))
> -    `(,(or (cdr (assq predicate gnus-category-predicate-alist))
> -	   predicate)))
> +    (let ((fun (or (cdr (assq predicate gnus-category-predicate-alist))
> +	           predicate)))
> +      (if (symbolp fun) `(,fun) `(funcall ',fun))))
>     ;; More complex predicate.
>     ((consp predicate)
>      `(,(cond

I see that this part was committed and then reverted.  I just manually
applied it to master, and it makes the warnings in the *Compile-Log*
buffer go away, and my display predicate still works correctly.  The
warnings said:

 Warning: Use ‘funcall’ instead of ‘#[0 \301\300!\207 [expire
    gnus-article-marked-p] 2]’ in the function position

So I recommend that this be committed again.

Dan






^ permalink raw reply	[flat|nested] 16+ messages in thread

* bug#68931: 30.0.50; Gnus byte-compilation error with (display . [not expire]) with git emacs
  2024-02-21 19:28           ` Dan Christensen
@ 2024-02-21 22:05             ` Eric Abrahamsen
  2024-03-03  2:30               ` Eric Abrahamsen
  0 siblings, 1 reply; 16+ messages in thread
From: Eric Abrahamsen @ 2024-02-21 22:05 UTC (permalink / raw)
  To: 68931

Dan Christensen <jdc@uwo.ca> writes:

> On Feb  5, 2024, Stefan Monnier via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org> wrote:
>
>> diff --git a/lisp/gnus/gnus-agent.el b/lisp/gnus/gnus-agent.el
>> index 604eea4c33d..cfcbea2e233 100644
>> --- a/lisp/gnus/gnus-agent.el
>> +++ b/lisp/gnus/gnus-agent.el
>> @@ -2925,8 +2921,9 @@ gnus-category-make-function-1
>>     ;; Functions are just returned as is.
>>     ((or (symbolp predicate)
>>  	(functionp predicate))
>> -    `(,(or (cdr (assq predicate gnus-category-predicate-alist))
>> -	   predicate)))
>> +    (let ((fun (or (cdr (assq predicate gnus-category-predicate-alist))
>> +	           predicate)))
>> +      (if (symbolp fun) `(,fun) `(funcall ',fun))))
>>     ;; More complex predicate.
>>     ((consp predicate)
>>      `(,(cond
>
> I see that this part was committed and then reverted.  I just manually
> applied it to master, and it makes the warnings in the *Compile-Log*
> buffer go away, and my display predicate still works correctly.  The
> warnings said:
>
>  Warning: Use ‘funcall’ instead of ‘#[0 \301\300!\207 [expire
>     gnus-article-marked-p] 2]’ in the function position
>
> So I recommend that this be committed again.

It will be! I only reverted because I'd committed completely by
accident, and Stefan had mentioned it might need some equivalent
adjustments elsewhere to be completely correct. I just haven't tested it
fully yet.





^ permalink raw reply	[flat|nested] 16+ messages in thread

* bug#68931: 30.0.50; Gnus byte-compilation error with (display . [not expire]) with git emacs
  2024-02-21 22:05             ` Eric Abrahamsen
@ 2024-03-03  2:30               ` Eric Abrahamsen
  0 siblings, 0 replies; 16+ messages in thread
From: Eric Abrahamsen @ 2024-03-03  2:30 UTC (permalink / raw)
  To: 68931

Eric Abrahamsen <eric@ericabrahamsen.net> writes:

> Dan Christensen <jdc@uwo.ca> writes:
>
>> On Feb 5, 2024, Stefan Monnier via "Bug reports for GNU Emacs, the
>> Swiss army knife of text editors" <bug-gnu-emacs@gnu.org> wrote:
>>
>>> diff --git a/lisp/gnus/gnus-agent.el b/lisp/gnus/gnus-agent.el
>>> index 604eea4c33d..cfcbea2e233 100644
>>> --- a/lisp/gnus/gnus-agent.el
>>> +++ b/lisp/gnus/gnus-agent.el
>>> @@ -2925,8 +2921,9 @@ gnus-category-make-function-1
>>>     ;; Functions are just returned as is.
>>>     ((or (symbolp predicate)
>>>  	(functionp predicate))
>>> -    `(,(or (cdr (assq predicate gnus-category-predicate-alist))
>>> -	   predicate)))
>>> +    (let ((fun (or (cdr (assq predicate gnus-category-predicate-alist))
>>> +	           predicate)))
>>> +      (if (symbolp fun) `(,fun) `(funcall ',fun))))
>>>     ;; More complex predicate.
>>>     ((consp predicate)
>>>      `(,(cond
>>
>> I see that this part was committed and then reverted.  I just manually
>> applied it to master, and it makes the warnings in the *Compile-Log*
>> buffer go away, and my display predicate still works correctly.  The
>> warnings said:
>>
>>  Warning: Use ‘funcall’ instead of ‘#[0 \301\300!\207 [expire
>>     gnus-article-marked-p] 2]’ in the function position
>>
>> So I recommend that this be committed again.
>
> It will be! I only reverted because I'd committed completely by
> accident, and Stefan had mentioned it might need some equivalent
> adjustments elsewhere to be completely correct. I just haven't tested it
> fully yet.

Okay, it went back in as-is. Stefan mentioned
`gnus-function-implies-unread-1` and `gnus-category-make-function`, but
it looks like the problem only arises when the agent code is used for
Summary display predicate purposes, and the byte-compiled stuff is
cached. The rest of the agent code operates on symbolic structures only.

At least, I hope so! If people start complaining about their Agent
predicates going wonky, we'll know where to look.

Eric





^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2024-03-03  2:30 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-02-04 22:11 bug#68931: 30.0.50; Gnus byte-compilation error with (display . [not expire]) with git emacs Dan Christensen
2024-02-05 12:50 ` Eli Zaretskii
2024-02-05 14:00   ` Mattias Engdegård
2024-02-05 14:32     ` Eli Zaretskii
2024-02-05 15:42       ` Eric Abrahamsen
2024-02-05 17:00         ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-02-06 20:42           ` Eric Abrahamsen
2024-02-06 20:46             ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-02-06 21:08               ` Eric Abrahamsen
2024-02-21 19:28           ` Dan Christensen
2024-02-21 22:05             ` Eric Abrahamsen
2024-03-03  2:30               ` Eric Abrahamsen
2024-02-05 14:33     ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-02-05 17:13       ` Mattias Engdegård
2024-02-05 17:23         ` Dan Christensen
2024-02-05 19:12           ` Eli Zaretskii

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).