- We don't need a list of bindings to check if an identifier is unresolved.
- Checking if an identifier is unresolved is now one CPU instruction.
- Previously it was one hashmap operation.
- This PR also improves performance, by removing the hashmaps mentioned above.
**Description:**
We should apply `regenerator` after `block_scoping` because `regenerator` does not know how to handle `const`s.
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/3006
swc_ecma_ast:
- Split `MemberExpr` into `MemberExpr` and `SuperPropExpr`.
- Use `Box<Expr>` for `MemberExpr.obj`.
- Use ad-hoc type for `MemberExpr.prop`.
- Use ad-hoc type for `SuperPropExpr.prop`.
- Use `Callee` instead of `ExprOrSpread` for `CallExpr`.
- Simplify types for meta property expressions.
swc_ecma_transforms_base:
- `resolver`: Fix resolving of `const` and `let`.
swc_ecma_lints:
- `duplicate_bindings`: Don't mark ambient function declararions as a binding. (Closes#3193)
swc_ecma_transforms_base:
- `resolver`: Ignore named export with source.
- `hygiene`: Ignore named export with source. (Closes#2924, Closes#3114)
swc_ecma_minifier:
- Handle `export default` declarations as declaration instead of expressions. (Closes#2717)
- Don't override already-processed identifiers. (Closes#2988)
swc_bundler:
- Adjust the syntax context for named re-exports.