From 6825e5686a4bf21f5d5a0ae1af889097cfa2f597 Mon Sep 17 00:00:00 2001 From: Mattias EngdegÄrd Date: Fri, 3 Jun 2022 20:31:10 +0200 Subject: Normalise setq during macro-expansion Early normalisation of setq during macroexpand-all allows later stages, cconv, byte-opt and codegen, to be simplified and duplicated checks to be eliminated. * lisp/emacs-lisp/macroexp.el (macroexp--expand-all): Normalise all setq forms to a sequence of (setq VAR EXPR). Emit warnings if necessary. * lisp/emacs-lisp/cconv.el (cconv-convert, cconv-analyze-form): * lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): * lisp/emacs-lisp/bytecomp.el (byte-compile-setq): Simplify. * test/lisp/emacs-lisp/bytecomp-tests.el: Adapt and add tests. * test/lisp/emacs-lisp/bytecomp-resources/warn-variable-setq-nonvariable.el; * test/lisp/emacs-lisp/bytecomp-resources/warn-variable-setq-odd.el: New files. --- test/lisp/emacs-lisp/bytecomp-resources/warn-variable-setq-odd.el | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 test/lisp/emacs-lisp/bytecomp-resources/warn-variable-setq-odd.el (limited to 'test/lisp/emacs-lisp/bytecomp-resources/warn-variable-setq-odd.el') diff --git a/test/lisp/emacs-lisp/bytecomp-resources/warn-variable-setq-odd.el b/test/lisp/emacs-lisp/bytecomp-resources/warn-variable-setq-odd.el new file mode 100644 index 00000000000..9ce80de08cd --- /dev/null +++ b/test/lisp/emacs-lisp/bytecomp-resources/warn-variable-setq-odd.el @@ -0,0 +1,3 @@ +;;; -*- lexical-binding: t -*- +(defun foo (a b) + (setq a 1 b)) -- cgit v1.2.3