|
From: | Stefan Monnier |
Subject: | bug#56739: 29.0.50; `cl-psetq' and `cl-psetf' fail to recognize symbol macros |
Date: | Mon, 05 Sep 2022 22:29:24 -0400 |
User-agent: | Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) |
> 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))) BTW, another way to get similar problems is with `defvaralias`: (defvaralias 'my-c 'my-a) (defvar my-a 1) (let ((b 2)) (cl-psetq my-a b b my-c) (list my-a b)) We should probably introduce a `(macroexp|cl)--simple-var-p` test to catch the various cases where symbols aren't simple variables. Another thing that might be worth digging into is how important is that `cl-psetf` optimization for lexical variables (remember: this was written back in the days of dynamic scoping and Mattias has made some improvements to the compiler which may render this optimization redundant inside the macro itself. Stefan
[Prev in Thread] | Current Thread | [Next in Thread] |