Leo Liu writes: > Due to a typo in my code, I got a bug report on ggtags > https://github.com/leoliu/ggtags/issues/17. I was fooled by the elisp > compiler which warns mal-formed let forms without lexical-binding. > > To reproduce > 1. Download the file in the attachment > 2. byte-compile it > 3. remove the first line and byte-compile it > > step 2 produces no warnings while step 3 does. Under lexical binding, the malformed `let' is correctly reformed in `cconv-convert' before it gets passed to the optimizer. In other words, it's assumed to be properly formed. This looks like a bug. On first thought, it seems that cconv-convert should check for proper form and signal an _error_ if the check fails. On the other hand, this would be inconsistent with what happens under dynamic binding. (On that note, under dynamic binding, why is this considered a warning and not an error?) Patch attached.