|
From: | Michael Heerdegen |
Subject: | bug#56739: 29.0.50; `cl-psetq' and `cl-psetf' fail to recognize symbol macros |
Date: | Tue, 02 Aug 2022 04:41:38 +0200 |
User-agent: | Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) |
Wing Hei Chan <whmunkchan@outlook.com> writes: > The following form produces (2 2) due to the failure of detecting > dependencies involving symbol macros. > > (cl-symbol-macrolet ((c a)) > (let ((a 1) (b 2)) > (cl-psetq a b > b c) > (list a b))) Dunno how a good fix would look like - but it is easy to follow why this error happens: `cl-psetf' analyses the expressions (each second argument) for whether they are "simple" (independent of the variables): (if (or (not (symbolp (car p))) (cl--expr-depends-p (nth 1 p) vars)) (setq simple nil)) but the symbol macro is not yet expanded when this is done, and the expression `c` passes the test - which is wrong. Maybe that test should just check for symbol macros in addition? Michael.
[Prev in Thread] | Current Thread | [Next in Thread] |