Open alphapapa opened 5 years ago
I don't understand why shouldn't it set the last variable? Can you give a more minimal example, I'm kind of getting lost in the long names :blush:
Maybe a more complete example will help. Byte-compile this function:
(defun compile-this-get-warning ()
(let (depth in-string-p comment-level-p comment-or-string-start)
(-setq (depth _start-of-innermost-list _start-of-last-complete-sexp-terminated
in-string-p comment-level-p _following-quote-p
_min-paren-depth _comment-style comment-or-string-start
_open-parens-list _two-char-construct-syntax . _rest)
(syntax-ppss))))
And you'll get this warning:
In compile-this-get-warning:
charlie-0ac22.el:6:66:Warning: assignment to free variable ‘_rest’
-setq
is very helpful in when using the results of syntax-ppss
multiple times in a function in the same scope, like https://github.com/alphapapa/prism.el/blob/428b9b3cc38b1d6cce6d230b2eab6115fd125b78/prism.el#L214
This
-setq
form expands to set_rest
, even though it shouldn't. If. _rest
is removed, it expands to set_two-char-construct-syntax
. This causes byte-compile warnings likeWarning: variable ‘_rest’ not left unused
.Expansion:
I can work around it by removing everything after the last non-
_
-prefixed variable, but I feel like this is a bug.Thanks for your work on Dash!