Skip to content

Invalid Scoping on for loop variables #6440

@sno2

Description

@sno2

Describe the bug

SWC does not properly handle scoping on for loop function members.

Input code

for (let i = 0, getI = () => i; i < 3; i++) {
  console.log(getI());
}

Config

{
  "jsc": {
    "parser": {
      "syntax": "ecmascript",
      "jsx": false
    },
    "target": "es5",
    "loose": false,
    "minify": {
      "compress": false,
      "mangle": false
    }
  },
  "module": {
    "type": "es6"
  },
  "minify": false,
  "isModule": true
}

Playground link

https://play.swc.rs/?version=1.3.16&code=H4sIAAAAAAAAA0vLL1LQyEktUchUsFUw0FFITy3xBLI0NBVs7RQyrYHCNgrGQEpbW5OXS0EhOT%2BvOD8nVS8nP10DpFRDU9MaAN2FufdDAAAA&config=H4sIAAAAAAAAA0WMTQrEIAxG75K1286id5hDBCctFv9IUhgR714tlu7C915ehUMsrBUyshCPS0pU%2FMMKZAOKZZcVTNf6tKEXagYUeScdiiyd%2BZSEJjUQXHRbGSWbQmYSeRHG3T9m66GQfucYKmjJdAc%2F0N7G%2FHPynaLySe0Cj9ke9LUAAAA%3D

Expected behavior

Should log

0
0
0

Actual behavior

Logs

0
1
2

Version

1.3.16

Additional context

See babel/babel#15189

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions