-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
minifier: cannot detect variable's value changed without using assignment operator #9263
Comments
@tmdghks I suppose you mean the expected output should be |
In the case of the following code ( "use strict";
const k = (function () {
var x = 42;
for (var x in [4242]) break;
return x;
})(); On the other hand, in the case of the following code ( "use strict";
const k = (function () {
var x = 42;
for (var x of [4242]) break;
return x;
})(); I'm sorry for the insufficient information. |
@kdy1 I have a question after digging into this issue. I noticed that reporting assignment is missing on VarDecl case in For in/of statement visitor (ForHead::VarDecl), so I added below codes in here, then it seems resolving this issue. if let ForHead::VarDecl(decl) = &n.left {
let VarDeclarator { name, .. } = decl.decls.last().unwrap();
child.report_assign_pat(name, true);
} Here is the question: but I'm not sure what should I have to give to the second parameter of
Thanks 😊 |
It might be renamed as |
This closed issue has been automatically locked because it had no new activity for a month. If you are running into a similar issue, please create a new issue with the steps to reproduce. Thank you. |
Describe the bug
I suspect that a minifier cannot detect changes to a variable's value without using an assignment operator (e.g.,
=
,*=
) when declaring variables with thevar
keyword.For example, a minifier can properly minify ECMAScript code like the following:
Input Code Example (Well-Minified)
However, a minifier cannot correctly minify ECMAScript code using
for ... in ...
,for ... of ...
, and similar constructs. The example code is below.Input Code Example (Incorrectly Minified)
Input code
Config
Playground link (or link to the minimal reproduction)
https://play.swc.rs/?version=1.7.0-nightly-20240715.2&code=H4sIAAAAAAAAAyWKMQrAIBAEe1%2BxpNJW7CQvCSmMKIigcJ5BCPl7JE63s7P1FtCYkufNCl9LY2TskLEXz6kWSIVHYHI7wpiX0fbfsRLkkjXiMNroU%2BGi4PIKKHCngmHFq6Sa7gMW516hbQAAAA%3D%3D&config=H4sIAAAAAAAAA32UO3LjMAyG%2B5zCozrFjostcoDtcgYOLYIyvSShIUDHmozvvtDDj40hdRI%2B%2FAAJgPh%2B2%2B2aE7XNx%2B5bPuWnt4Wg3P%2FFQkNmexFLA22y1JbQc%2FN%2BoycakbeRYDJdZ9KwLR3wpKL9r%2F1%2BUTQRkeCmWGwp5OCH55wtpr4A0ZNNrBKyJshM%2F%2BsXVvBrBFzqs%2F2AGMHmDWIsmZAZOiha4BZjtD2BOduiRBlPaksg1FKMsDI40xfsVZ5d4IBZcr5SB9aZFh0oKBRoOZxBk0kukWWS6yn3mbCDQ%2B26qc8%2F1HC2sVpWcsJlaomcVol6xEBsfM1aCWe4UoMZLsX9qQzeFOBa8qvuhCGv9OQvgFQgWqJsE2hxJw8v87Sm9pvKkL2MLA8Kl%2FnWbpmhk6KaELxS2bEyUDho3SzgagtjZVvtOAteKR8FBwa8l1lRQtNX4PaoJeWhB%2FQKkP5ar03VDMz9Fa7w8UFs4D9yS9YHbPFIlo%2FrlIZ0wLiRIAEf0W04SCsY13GRLXHp13nNDmQ0wKkulSbwugTkATCaOO3Ll9mQ5yERTRfx8FgTi8P1voeTzd3jvc%2Br%2BG1xaBK6OsFlyY%2F9nVfz7%2BbhdNvC94M3gT5vyjns9R%2F7ntJqMQYAAA%3D%3D
SWC Info output
No response
Expected behavior
Actual behavior
Version
1.7.0-nightly-20240715.2
Additional context
Furthermore, this bug persists in version 1.6.7 as well.
The text was updated successfully, but these errors were encountered: