> The patch looks fine, thank you. Thanks! > Just one detail about the tests: the change you made affects the > evaluation of `let` in the case where the code is interpreted but it > is not used when the code is byte-compiled. So you might like your > tests to use things like > > (eval '(let ...) t) > > to avoid the compiler getting in the way. Thanks, I didn't notice this point! I fix testcases. > Also, while this `let` is indeed invalid code, I don't think we > guarantee that it will signal an error, and especially not at runtime > (it's more likely to signal an error at macroexpansion or compile > time). > > I think the compiler (or `macroexpand-all`) should make an effort to > detect and diagnose those problems, but I don't think it's important to > catch those problems in the interpreter. That testcase comes from this code (src/eval.c:L1014) which we already had. else if (! NILP (Fcdr (Fcdr (elt)))) signal_error ("`let' bindings can have only one value-form", elt); I tried to remove this, my temp Emacs works like this in *scratch* buffer. (let ((a 1 2)) a) ; Type C-j 1 This is very strange I think. I still think it's important for Emacs, even as an interpreter, to produce errors.