Subject: bug#63288: [PATCH] Mark cl-proclaim, cl-declaim, and cl-declare as obsolete

From: Stefan Monnier <[email-masked]>
Date: Wed, 19 Feb 2025 16:24:04 -0500

>>> No, in some cases you must use (cl-declare (special ...)), and no you
>>> can't use defvar in such cases, so if you intend to remove/deprecate
>> Could you show us an example?
> I used it in helm--completion-in-region to pass PROMPT and
> REQUIRE-MATCH,

Actually, no, you didn't.  🙁
I mean, yes you did use it, but no it did not "pass PROMPT and
REQUIRE-MATCH".

> (defmacro my-with-progress (&rest body)
>   `(let ((reporter (make-progress-reporter "Updating...")))
>      (progn
>        ,@body)))
>
> (defun my-updating ()
>   (cl-declare (special reporter))
>   (my-with-progress
>    (cl-loop for elm in '(a b c d e f g)
>             do (progn
>                  (sit-for 1)
>                  (progress-reporter-update reporter))
>             collect elm)))

I don't see what is the use of (cl-declare (special reporter)) here.
What do you think it changes to the behavior of this code?

> of course you can use a defvar in this case,

Exactly: (defvar reporter) would have the same effect.

        Stefan