swc_bundler:
- Add direct support for `export * as ns from 'foo';`. (#1137)
swc_ecma_transforms:
- Split `export` pass to `export_namespace_from` and `export_default_from`.
swc:
- Enable `export * as ns` for targets lower than es2020.
swc_ecma_codegen:
- Fix codegen of large binary expressions.
swc_ecma_parser:
- Fix stack overflow while parsing large binary expressions.
swc_ecma_transforms:
- typescrip::strip: Fix stack overflow while handling large binary operations.
- hygiene: Fix stack overflow by migrating it to `VisitMut`.
- hygiene: Improve performance.
- fixer: Fix stack overflow by migrating it to `VisitMut`.
- resolver: Migrate to `VisitMut`.
spack:
- Optimize resolver
swc_bunder:
- Parallize merging of reexports
- Remove useless `clone`s
swc_ecma_utils:
- Migrate DropSpan to VisitMut
swc_ecma_transforms:
- Migrate simple transforms to VisitMut
- Ignore types to reduce binary size
- Hide actual types so that we can optimize it in future without breaking change
swc_visit:
- Apply transforms for vector in-place
- Apply transforms for box in-place
`hygiene` pass had a bug related to globally defined variables like `Object` or `undefined`. This pr make hygiene to utilize use-bind conflict to resolve global objects correctly.
Closes#605.
block_scoping pass had a bug with closure in for statement with let or const. This pr fixes it by extracting a loop body as a variable.
Closes#604.
This pr introduces some cargo features. For `swc_common` and `swc_ecma_ast`, it introduces a feature flag `fold`.
`Fold` and `Visit` traits exist only if the feature is enabled.
For `swc_ecma_parser`, flag called `verify` is added. When disabled, we skip checking of validity of some expressions.
e.g. `{foo = bar}`
Verification is disabled by default it requires nightly compiler
swc_atoms:
- add some atoms
swc_ecma_ast:
- ast nodes for typescript
- `ClassMethod` -> `Method`, `ClassMethodKind` -> `MethodKind`
- private class method / class property
- use separate type for tagged template literals
- add `declare` field to `Decl`s
- make function body optional
swc_ecma_parser:
- rename Type to TokenContext
- support decorators
Note: error reporting for invalid decorator is not implemented yet
- merge `Config` into `Syntax`
- Use DiagnosticBuilder for error type
This is to make backtracking cheaper.
swc_ecma_transforms:
- add `strip` pass
swc_common:
- update rustc-ap crates to v313
swc_ecma_ast:
- use bool instead of Option<Span>
swc_ecma_parser:
- remove LexerInput
- use uncons_while
- assert only on debug mode
- use Visit instead of Fold while verifying
- replace debug! with trace!
- disable logging while benchmarking
- drop slog
swc_ecma_transforms:
- classes: fold Decl instead of Stmt
swc:
- add nodejs binding
swc_common:
- implement VisitWith for &T and [T]
swc_ecma_ast:
- fix codegen of `===`
swc_ecma_parser:
- fix parsing of array pattern
swc_ecma_transforms:
- implement es2015::destructuring
- implement es2015::computed_properties
- implement es2015::duplicate_keys
- implement es2015::parameters
- fix `InjectHelper` pass
Note that getters / setters in class are not supported yet
- Run execution tests via jest
- ignore es2016::exponentation tests
swc_ecma_transforms:
- implement es2015::block_scoped_functions
- implement tagged template literal without escape handling
- hygiene: rename to different number
- scope: handle pattern by folding children
swc_ecma_ast:
- use Str instead of String for template literal
swc_ecma_parser:
- fix lexer tests
- handle template literal correctly
template literals now have cooked field
swc_ecma_codegen:
- escape newline character and backslash ('\')
testing:
- preserve context of the span in `::testing::DropSpan`
swc_ecma_codegen:
- disable get_text_of_node to avoid deoptimization
swc_ecma_transforms:
- allow using this inside arrow expression
- implement es2015::block_scoping with hygiene ident