Commit Graph

616 Commits

Author SHA1 Message Date
강동윤
bf70946546 Fix #417
process.env['X'] is now supported
2019-09-18 16:15:13 +09:00
강동윤
5a47c7a15c Fix 1 - (1 - 1) (#418) 2019-09-18 16:05:36 +09:00
강동윤
7715c2626b
Issues (#404, #406, #407) (#408)
swc_ecma_transforms:
 - fix mis-referencing caused by destructuring (#404)
 - fix invalid code generated by comment on arrow functions (#406)
 - fix string concatation of template literal (#407)
 - hygiene: fix rewriting of object pattern
 - fix test module to prevent SIGILL
 - fix module import order (using IndexMap)
2019-09-18 14:40:22 +09:00
강동윤
a1c2538338 hashbrown & comment revamp 2019-06-25 09:41:58 +09:00
강동윤
54cf8fbb96
Fix (#398)
swc_ecma_transforms:
 - Fix resolver (#396)
 - Add tests for #395
2019-06-16 10:22:15 +09:00
강동윤
0e1991f62d
Fix bugs (#394)
- Add a test case for #392
 - Add tests for #389
 - Fix #388
 - Fix #387 
 - Add tests for #392

swc_ecma_parser:
 - Make non-last rest paramters in object pattern error
 - `...` must be followed by an identifier
2019-06-03 21:54:09 +09:00
Erik Desjardins
07bf194e61 Simplify: left.rhs * right is only safe when operators are the same 2019-05-16 14:10:06 -04:00
강동윤
b5bbbc0cd6 publish atoms 2019-05-02 16:06:42 +09:00
강동윤
0b4f06027d Version 2019-05-02 16:02:45 +09:00
강동윤
ed64a60cb3 Publish ast / codegen /transforms 2019-05-02 15:50:21 +09:00
강동윤
786117c16c Fix #382 2019-04-30 22:32:06 +09:00
강동윤
0d52148dcd
Bugfixes (#375)
swc_ecma_transforms:
 - fix hygiene for decorators (#367)
 - add test for react with common js module (#351)

swc_ecma_parser:
  - add test for string escape problem (#350)
2019-04-28 14:58:52 +09:00
강동윤
b44da9dbe4
Fix #369, #370 (#373)
swc_common:
 - don't emit `loc` for dummy spans

swc_ecma_transforms:
 - prevent hygiene from changing key in object pattern (#369)
 - fix module tests (iteration order of FxHashSet is changed)

swc_ecma_parser:
 - fix parsing of arrow function (#370)
2019-04-27 16:28:34 +09:00
강동윤
0ffd075588 Strip bodyless functions.
Closes #357.
2019-04-11 21:20:50 +09:00
강동윤
9e333a153c Fix #366 2019-04-11 21:11:21 +09:00
강동윤
ca220342e0 Fix #365 2019-04-11 21:04:06 +09:00
강동윤
56be56acea Fix lints 2019-04-11 21:01:29 +09:00
강동윤
fe451d5809 Fix #360 and update rustc 2019-04-05 12:19:18 +09:00
Michael Stewart
6f97012821 fix test imports for latest nightly (#355) 2019-03-23 13:18:55 +09:00
강동윤
5114dc9e95
Extract resolver pass (#344) 2019-03-14 15:54:33 +09:00
강동윤
13bf89d08c
Fix bugs (#339)
swc_ecma_parser:
 - fix parsing of type query (#338)
 - fix parsing of `in` in a let / const declaration (#337)

swc_ecma_transforms:
 - string literal is computed (#336)
 - modules: handle imports in lhs of assignment correctly (#335)
2019-03-11 20:33:15 +09:00
강동윤
2025f20e8c
Handle imported stuffs in shorthand property. (#333)
swc_ecma_transforms:
 - handle imported stuffs in shorthand property (#332)
2019-03-10 22:17:08 +09:00
강동윤
a40518f667
v1.0.36 (#330)
swc_ecma_parser
 - decorator_before_export is true for typescript. (#325)
 - fix parsing of dynamic imports. (#328)
 - fix parsing of conditional expression. (#327)
2019-03-09 09:07:15 +09:00
강동윤
248a53ce7c
Make deserialization faster (#324)
swc_ecma_ast:
 - make deserialization faster
2019-03-08 11:36:23 +09:00
강동윤
dd5f17463e
hygiene now handles class name correctly (#323) 2019-03-07 22:42:16 +09:00
강동윤
a311f42acf
Bugs (#321)
swc_ecma_parser:
 - add a test to ensure that \r\n is lexed correctly (#316)

swc_ecma_transforms:
 - destructuring pass now handle variable exports correctly (#317)
 - es2017::async_to_generator now handles module items. Fix #319.
 - prevent hygiene pass from de-exporting class and funcrion (#315)
2019-03-07 15:48:45 +09:00
강동윤
ed100700f1
Make deserialization fast (#314)
swc_ecma_ast:
  - add deserialization benchmark

ast_node:
 - #[ast_node] on enum now implements faster deserialization
2019-03-05 23:16:45 +09:00
강동윤
b4a391b3a7
es2015::destructuring pass (#312)
swc_ecma_transforms:
 - es2015::destructuring pass now uses computed member if necessary. (#311)
2019-03-05 17:44:47 +09:00
강동윤
5f16412273
Fix class properties pass (#310)
swc_ecma_transforms:
  - Class properties pass handle nested scope correctly (#308)
2019-03-03 17:01:23 +09:00
강동윤
b5d3b9a7c7
Initialize var to undefined in loops (#306)
swc_ecma_transforms:
 - block_scoping: initialize var to undefined if it's declared in a loop (#305)
2019-03-02 16:19:19 +09:00
강동윤
5dc4ba181d
Improve fixer (#304)
swc_ecma_transforms:
 - fixer: handle member exprssion correctly
 - fixer: handle binary expression correctly
 - fixer: handle conditional expression correctly
 - fixer: handle unary expression correctly
2019-03-01 22:50:43 +09:00
강동윤
1a0f1108a1
Bugs (#303)
swc_ecma_transforms:
 - report error if jsx namespace is used (#301)
2019-03-01 18:18:57 +09:00
강동윤
99e34ddbbd
Fix #295 (#298)
swc_ecma_transforms:
 - hygiene::operator now handles export correctly (#295)
 - make function hoisting respect directives
2019-03-01 14:02:33 +09:00
강동윤
21f3f792d1
Fixes (#294)
swc_ecma_transforms:
  - block_scoped_fn: don't fold self-modifing functions. (#288).
  - fixer: fix assignment in conditional expression (#293)
  - make resolver work with self modifying function (#292)
2019-02-28 23:07:31 +09:00
강동윤
a46804ab48 swc_ecma_ast:
- Split class member / property into separate types
2019-02-28 19:25:38 +09:00
강동윤
8c1b773eec
Bug fixes (#289)
swc_ecma_transforms:
 - fix assignment expression in callee position (#286)
 - don't name funtion if function's body reference function name (#288)
2019-02-28 16:30:56 +09:00
강동윤
cdf4a09e65
Fixes (#283)
swc_ecma_transforms:
 - Remove State / Clone
 - Fix hygiene bug of labels (#281)
 - Fix sequence expression in unary expression (#282)
2019-02-27 22:40:19 +09:00
강동윤
892b4f01cd FIx #280 2019-02-27 18:56:12 +09:00
강동윤
ae91b724b7 Fix helpers 2019-02-27 18:46:34 +09:00
강동윤
74dc5582f1 Don't inject @swc/helpers if nothing is used 2019-02-27 18:31:30 +09:00
강동윤
1b28766c26
Improve comment api (#277)
swc_ecma_parser:
 - parser now take comments by reference
2019-02-26 13:56:58 +09:00
강동윤
3e2750ba5e Make const_module pass parse expressions itself 2019-02-25 12:42:23 +09:00
강동윤
dff2cb8f75
Implement deserialize for ast nodes (#274)
string_enum:
 - #[derive(StringEnum)] now derives `Deserialize`

swc_ecma_ast:
 - implement deserialize for ast nodes.
 - change ast to make it serialized / deserialized correctly

swc_ecma_parser:
 - jsx, test262, typescript tests now verify serialization and deserialization of module
2019-02-24 14:12:04 +09:00
강동윤
78f4b25480
Bug Fixes (#273)
swc_ecma_transforms:
 - fix spread pass (#270)
 - add babel's fixture tests for spreads
 - change order of passes (#271)
 - handle updates of private class fields (#272)
2019-02-23 21:56:12 +09:00
강동윤
a785ecc960
Add const_modules pass (#268)
swc_ecma_transforms:
 - use fxhash for inline_globals pass
 - handle member expression in inlne_globals pass
 - add const_modules pass
2019-02-22 15:42:27 +09:00
강동윤
c1de0a5c86
Improve codegen of binary expression which contains unary expression. (#267)
swc_ecma_codegen:
 - improve codegen of binary expression which contains unary expression (#266)
2019-02-22 12:04:41 +09:00
강동윤
8f932c374e Fix visibillity 2019-02-21 22:29:06 +09:00
강동윤
07e2cffb43
Fixes (#265)
swc_ecma_parsr:
 - fix parsing of invalid utf8 characters (#261)
 - fix parsing of function body (#257)
 - fix parsing of  () => (x = true) (#259)

swc_ecma_transforms:
 - fix default arguments in arrow expression (#254)
 - fix assignment pattern in array pattern (#260)
 - make amd / umd configurable. (#262)
2019-02-21 22:21:48 +09:00
강동윤
e9b06c5de2
Improve fixer (#263)
swc_ecma_transforms:
 - fixer does not breaks cast to boolean (#252)
 - fixer does not break conditional expression with comma expressions (#255)
2019-02-21 14:49:13 +09:00
강동윤
162dee5518
Fix bugs (#251)
swc_ecma_transforms:
 - don't convert typeof to _typeof if not necessary (#250)
 - fix imports of `@swc/helpers` (#248).
2019-02-20 20:02:22 +09:00
강동윤
601f0feb14 Hoist functions in block scoped function pass.
Fix #245.
2019-02-20 12:10:28 +09:00
강동윤
76ce98b685
Implement serialize for ast nodes (#244)
swc_common:
 - implement Serialize / Deserialize for span

swc_ecma_parser:
 - use json instead of {:#?} while testing
 - update test references
2019-02-20 11:35:41 +09:00
강동윤
7d5316463d
Fixes (#241)
swc_ecma_transforms:
 - handle constructor from object_rest_spread pass (#239)
 - typescript::strip pass now removes signature-only constructor

swc_ecma_parser:
 - fix parsing of do while statement (#242)

swc_ecma_codegen:
 - fix codegen of do while statement (#242)
2019-02-19 15:20:02 +09:00
강동윤
4fddea0bbd swc_ecma_transforms:
- remove this parameter from typescript::strip pass (fixes #236)
2019-02-19 14:30:26 +09:00
강동윤
4dc10d849e
Fixes (#237)
swc_ecma_transforms:
 - handle pattern correctly in coomon_js pass (#235)
 - fix object rest in arrow expression (#233)
2019-02-19 12:52:03 +09:00
강동윤
4917bbaf44 Fix test 2019-02-18 22:34:32 +09:00
강동윤
3252988e6a Update fixer.
Fixes #231.
2019-02-18 22:31:50 +09:00
강동윤
59f6a6ffb6 Handle react fragment in top level.
Fixes #229.
2019-02-18 18:08:40 +09:00
강동윤
1368a4a281 Fix #227 2019-02-18 15:05:58 +09:00
강동윤
2b7240c595
Support export * as Foo from 'foo'; (#228)
swc_ecma_parser:
 - support `export * as Foo from 'foo';` (Fix #226)

swc_ecma_transforms:
 - support `export * as Foo from 'foo';` (Fix #226)
2019-02-18 14:01:56 +09:00
강동윤
523307a5da FIx #225 2019-02-18 12:19:40 +09:00
강동윤
d8f9101b30 Fix #227 2019-02-18 11:15:04 +09:00
강동윤
3fc360d870 Make sourcemap optional 2019-02-17 23:25:35 +09:00
강동윤
a00d281704 Make Optional pass 2019-02-17 17:52:48 +09:00
강동윤
e419d7d378
Cache react config (#224)
swc_ecma_transforms:
 - global codemap / parser session for config parsing
 - cache parsing result of react pass
 - InjectHelpers pass does not require source map
2019-02-17 17:11:21 +09:00
강동윤
bbfcca8f2b
External helpers (#223)
swc_ecma_transforms
 - support extenal helpers (#155)
2019-02-17 13:48:18 +09:00
강동윤
33ab0db712
Fix travis (#222)
swc_common:
 - ignore copied doctests

swc_ecma_transforms:
 - fox some tests
2019-02-16 18:58:29 +09:00
강동윤
046788cf78 Add option to disable module analyzer 2019-02-16 14:27:24 +09:00
강동윤
1a1889f437
Fix bugs (#221)
swc_ecmascript_parser:
 - fix parsing of `export default from 'src';`

swc_ecmascript:
 - add a pass which allows injecting helpers before the module pass
2019-02-16 14:18:22 +09:00
강동윤
9108ba7bb7 Don't inline process.env.x if x is not registered as global.
Fix #215.
2019-02-15 14:06:16 +09:00
강동윤
ad49de35b3
Handle foo && yield bar (#218)
Fix #216.
2019-02-15 13:58:10 +09:00
강동윤
1d865b9979
Strip type-only imports (#217)
swc_ecma_transforms:
 - strip type-only imports (#179)
2019-02-15 12:14:28 +09:00
강동윤
34fff56462 Add a test for #211.
Closes #211.
2019-02-14 21:17:01 +09:00
강동윤
9bd7a9c484
Perfect fixer (#212)
swc_ecma_transforms:
 - test fixer using test262
 - make fixer perfect
2019-02-14 21:12:05 +09:00
강동윤
b76c4f26e6 Fix #210. 2019-02-14 17:46:22 +09:00
강동윤
e20998d69b FIx #209 2019-02-14 16:06:54 +09:00
강동윤
631eff9e8c
Bugfixes (#208)
swc_ecma_codegen:
 - fix codegen of shebang (#177)
 - add test for #197.

swc_ecma_transforms:
 - fix object rest spread pass (#162)
2019-02-14 13:24:01 +09:00
강동윤
b27829825e
Fix Bugs (#205)
swc_ecma_codegen:
 - escape characters (#204)

swc_ecma_parser:
 - fix parsing of `<!--`

swc_ecma_transforms:
 - promote VarCollector to crate-level utility
 - fix es3::member_expr_lits (#206)
 - fix es2015::duplicate_keys pass (#203)
 - improve fixer (paren for assignment) (#201)
 - improve fixer (arrow expression) (#207)
 - make typescript pass strip out type-only exports (#196)
2019-02-14 11:03:06 +09:00
강동윤
c1a3cc53c1
React jsx / improve fixer (#202)
swc_ecma_parser:
 - fix parsing of jsx

swc_ecma_transforms:
 - fix fixer (#199)
2019-02-13 19:12:00 +09:00
강동윤
c647cf1bc0
Fix bugs (#193)
swc_ecma_parser:
 - fix lexer
 - better error reporting for jsx reference test

swc_ecma_codegen:
 - Update references
2019-02-13 16:03:38 +09:00
강동윤
a13e6a09b5
Fix #185 (#187)
swc_ecma_transforms:
 - handle imports correctly (in rhs of assignment)
2019-02-13 12:32:12 +09:00
강동윤
74858c3b66
Fix #167 (#186) 2019-02-13 11:56:45 +09:00
강동윤
bf128d295f Add test for #182.
Closes #182.
2019-02-13 11:33:28 +09:00
강동윤
2d062432a8
Shebang & small improvement for object rest spread (#184)
swc_ecma_ast:
 - handle shebang

swc_ecma_codegen:
 - handle shebang

swc_ecma_parser:
 - handle shebang

swc_ecma_transforms:
 - fix arrow expression used with object rest spread
2019-02-13 11:08:21 +09:00
강동윤
f797019b79
Use strict (#183)
swc_ecma_parser:
- fix parsing of use strict without semicolon.

swc_ecma_transforms:
 - emit helpers after use strict.
2019-02-13 08:44:54 +09:00
강동윤
fc661f24f0
Bugfixes (#182)
swc_ecma_ast:
 - rename ast to be consistent
2019-02-13 08:18:19 +09:00
강동윤
cc36bbe3ad Add tests for #169. 2019-02-12 22:18:14 +09:00
강동윤
227423d5f6
Export default from & fix codegen of imports (#168)
swc_ecma_ast:
 - Support `export v from 'foo';`

swc_ecma_parser:
 - Support `export v from 'foo';`

swc_ecma_codegen:
 - Fix codegen of side-effect imports
2019-02-12 15:30:11 +09:00
강동윤
45e78e40d4
Amd & Correct named exports (#165) 2019-02-12 11:41:08 +09:00
강동윤
a0c6b4458e
Revert "Amd & Fix for exports (#164)" (#166)
This reverts commit 8c5c7b55b7.
2019-02-12 11:40:36 +09:00
강동윤
8c5c7b55b7
Amd & Fix for exports (#164)
swc_ecma_transforms:
 - correctly tracks exported names.
 - Implement amd

Fix #162
2019-02-12 11:23:19 +09:00
Nate Mara
42f94a3f24 Remove HERE eprintln (#161) 2019-02-12 06:24:12 +09:00
강동윤
d98219cd42 Reduce vtable size of Pass. 2019-02-11 19:11:14 +09:00
강동윤
7fe2245a3d
Cleanup (#152)
- replace Lrc with std::sync::Arc
swc_common:
 - make swc_common::sync private
 - improve MoveMap

swc_ecma_codegen:
 - fix codegen of import.

swc_ecma_transforms:
 - properly detect valid identifier.

swc_ecma_parser:
 - Fix parsing of cond expr inside paren.
2019-02-11 11:39:20 +09:00
강동윤
ab4f619257
Fix tests (#142) 2019-02-10 20:49:29 +09:00
강동윤
3b8d36dc58 Parse dynamic imports 2019-02-10 12:07:40 +09:00
강동윤
654f55b658 Closes #137, Closes #138 2019-02-09 12:19:20 +09:00
강동윤
7482836d5e Support typescript constructor parameter property 2019-02-08 18:13:32 +09:00
강동윤
43d633b44d
Handle comments and improve codegen (#136)
swc_ecma_codegen:
 - Improve codegen
 - Handle comments

swc_ecma_parser:
 - Handle comments
2019-02-08 13:00:58 +09:00
강동윤
cc83b863ec Threading support 2019-02-06 12:09:42 +09:00
강동윤
17ed32a73c Fix common_js::lazy 2019-02-05 15:47:17 +09:00
강동윤
c5e18e06d1 Use objekt::Clone 2019-02-05 15:24:30 +09:00
강동윤
ea013a1e12 Export module configs 2019-02-05 14:33:29 +09:00
강동윤
4c6c4bc595
Make Helper scoped thread local (#134)
This allows injecting helpers per file without any multi threading issue.
2019-02-05 14:15:38 +09:00
강동윤
a1629d3997
Implement module transforms (#133)
swc_ecma_ast:
 - implement more `From<T>` for `Expr`

swc_ecma_transforms:
 - fnv -> fxhash
 - implement common js imports
 - improve fixer
 - use js_word! instead of &*sym
 - add noop pass
 - handle state correctly
 - ExprFactory::member(), computed_member()
2019-02-05 12:50:19 +09:00
강동윤
33fe3a9515 Remove dbg! 2019-02-02 23:17:06 +09:00
강동윤
ca6f4eb096 Remove unnecessary logging 2019-01-31 19:49:02 +09:00
강동윤
d8d117b494 implement Clone for HelperResetter 2019-01-31 19:44:34 +09:00
강동윤
976943ba97
Add HelperResetter pass (#132) 2019-01-31 19:39:26 +09:00
강동윤
f914c8579e
Revert "Fix Arc<Helpers> (#130)" (#131)
This reverts commit 6865370205.
2019-01-31 18:22:35 +09:00
강동윤
6865370205
Fix Arc<Helpers> (#130)
Don't clone Arc<Helpers>
2019-01-31 15:14:49 +09:00
강동윤
e681ae37e4 mute resolver 2019-01-30 13:09:21 +09:00
강동윤
e63be11d0e Fix order of the classes pass 2019-01-30 13:05:45 +09:00
강동윤
c87fac213a Add a test about inheriting native class 2019-01-30 11:30:09 +09:00
강동윤
ba0c7c908c
Improve swc_ecma_trnasforms (#127)
# swc_ecma_ast
 - Add PrivateName to Expr

# swc_ecma_parser
 - Fix parsing of private name

# swc_ecma_transforms

## Hygiene
 - It correctly tracks `BindingIdentifer` / `IdentifierReference`
 - Preserve `IdentiferReference` if it conflicts with a `BindingIdentifier`

## Block scoping
 - It correctly tracks `BindingIdentifer` / `IdentifierReference`


## Fixer
 - It removes useless parens.
 - It removes useless `IdentiferReference`s in comma expressions.

## Classes properties
 - public prooperty
 - private property

## Class decorators
 - implemented
2019-01-29 23:56:16 +09:00
강동윤
90135ede1e fix a bug 2019-01-24 16:41:19 +09:00
강동윤
c648232864
Classes improvements (#123)
Now swc passes all tests from `@babel/plugin-transform-classes`
2019-01-24 16:07:09 +09:00
강동윤
eebf14fbef
Allow stable rust (#118)
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
2019-01-17 23:17:16 +09:00
강동윤
bb28d81ed4 Strip typescript declarations 2019-01-15 20:51:13 +09:00
강동윤
a126afaf42 Better error messages for unimplemented!s 2019-01-15 20:18:41 +09:00
강동윤
b9eb110549 Cache compiled helpers 2019-01-15 11:53:43 +09:00
강동윤
e85bcce9cf implement Clone for passes 2019-01-15 11:15:18 +09:00
강동윤
66eab1bc85 enable flag for the simplifier pass 2019-01-15 10:59:40 +09:00
강동윤
1710bb6e8a Allow using Pass as a trait object 2019-01-14 17:54:42 +09:00
강동윤
2a49e1e896 implement clone for transform passes 2019-01-14 17:36:15 +09:00
강동윤
fefc4c88c7 camelCase for react options 2019-01-14 13:45:19 +09:00
강동윤
7aee29d91d Fix tests 2019-01-10 18:33:32 +09:00
강동윤
d4fefa8615
Reduce binary size (#116)
- remove unused debug impls
2019-01-10 18:23:25 +09:00
강동윤
fc3a9d6180
.swcrc file for configuration (#115)
libswc:
 - use config file
2019-01-08 16:34:35 +09:00
강동윤
ea610c6ded
Typescript & parser for decorators
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
2019-01-07 19:43:47 +09:00
강동윤
2e22397f42
Fix hygiene bug (#109) 2018-12-31 23:10:50 +09:00
강동윤
b437488082
implement es3::reserved_word (#103) 2018-12-30 12:56:04 +09:00
강동윤
72c9ac0b5a remove unused fields 2018-12-30 12:14:51 +09:00
강동윤
603b83291d
jsx support (#100)
swc_ecma_parser:
 - implement parser for jsx

swc_ecma_transforms:
 - implement react::jsx transform

swc_ecma_codegen:
 - implement code generator for jsx
2018-12-30 11:57:27 +09:00
강동윤
b6a0d2303b Comment out printlns 2018-12-27 19:20:30 +09:00
강동윤
4d4e4ce979
Implement object rest / spread (#98)
swc_ecma_parser:
 - improve parser's tests
It now shows the code failed to parse
 - allow rest pattern in catch clause
 - fix parsing of named export (semicolon)

swc_ecma_transforms:
 - implement array spread
 - add helper methods (objectWithoutProperties)
 - add some fast paths
 - make es2015::parameters handle catch clauses
 - don't show helpers when execution failed
 - export fixer
2018-12-26 17:09:48 +09:00
강동윤
fbf70a3803 improve performance 2018-12-24 12:49:00 +09:00
강동윤
22b40e2b17
implements async to generator (#91)
swc_ecma_parser:
 - fix parsing of arrow expression

swc_ecma_codegen:
 - fix codegen of async function

swc_ecma_transforms:
 - implement es2017::async_to_generator
2018-12-24 10:58:40 +09:00
강동윤
6a0a2cf34e
Class getter / setter (#86)
Implement class getter / setter.
2018-12-22 12:15:04 +09:00
강동윤
145d6f39eb
For-of loop (#85)
Implements `es2015::for_of`
2018-12-21 21:39:42 +09:00
강동윤
4ff6d4ed4a
Performance & Node binding (#84)
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
2018-12-21 16:54:36 +09:00
강동윤
222bdc191f
Performance (#82)
`Map<T>` adds a method named `map` which is actually `Box<T>` -> `Box<T>` without reallocation.

swc_ecma_transforms:
 - chain_at!(Type, passes)
This macro deeply joins path at 'Type' level.
2018-12-01 22:24:26 +09:00
강동윤
ab7d46c5bc
Es2015 (#80)
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
2018-11-28 12:24:08 +09:00
강동윤
33d296af31
block scoped function and tagged template literal (#77)
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 ('\')
2018-11-25 11:31:48 +09:00
강동윤
7c58b89571
Scope analysis via ident hygiene (#74)
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
2018-11-23 19:22:07 +09:00
강동윤
d3e14b6533
Parser & transformers (#71)
swc_ecma_transforms:
 - implement es2015::arrow (without this support)
 - implement basical scope analysis
 - implement es2015::function_name
 - new.target is supported
 - implement untagged template literals

swc_ecma_parser
 - make test to use load_file()
 - fix eof handling
 - bump version
2018-11-21 18:59:17 +09:00
강동윤
c816d699ca
Improve ast (#70)
* Update ast (bool -> Option<Span>)

* fixup! Update ast (bool -> Option<Span>)
2018-11-19 15:52:06 +09:00
강동윤
cd51cb1731
Make procmacro2_semver_exempt optional (#67)
* Reduce compile time of tests.

* Make procmacro2_semver_exempt optional

* Bump versions
2018-11-18 19:57:35 +09:00
강동윤
1d0c78de6c
More works (#66)
ecma_transforms:
 - implement es2015::instanceof
 - implement es2015::typeof_symbol
 - implement inline_globals pass

ecma_parser:
 - `PResult<T>` is now `Result<T, ()>` and `Err(())` means that an error is emitted.
 - add docs
2018-11-18 14:00:07 +09:00
강동윤
8e0e9ca4c7 Make it thread safe 2018-11-17 17:02:34 +09:00
강동윤
b3a9d1a264
Cleanup (#64)
- rename packages to be consistent
 - `swc_macros` is removed. Now macros are imported with `extern crate macro_name` instead of `extern crate swc_macros`.
 - manage atoms with words.txt file
2018-11-17 16:38:23 +09:00
강동윤
fb08c18f7e
Support es2019 (#63)
ast:
 - Update ast to match es2019 spec

parser:
 - implement es2019 parser
 - ignore an old test

codegen:
 - fix

testing:
 - better output while testing (when failed)

transforms:
 - fix
2018-11-17 12:30:49 +09:00
강동윤
63ee25f0c5
Cleanup (#62)
- do not reexport swc crates

 - Add benchmark for parser

 135ns/op on my macbook pro
 
 - remove unused script
 
 - Update README.md
    - Make features section complete
2018-11-17 10:02:40 +09:00
강동윤
f8ea0bdfea fix
It's not rust code..
2018-11-16 20:26:04 +09:00
강동윤
309a9de0fd
Fix tests & upgrade deps (#60)
common:
 - upgrade rustc-ap crates to 297
 - swc_common does not reexport sourcemap anymore
 - update rustfmt to 0.99.6

simplifier:
 - make some tests success when source code is equavalent
 - implement fixer to fix ast broken by simplifier
- implement bit shift operators
- fix str.length
- ignore some tests


compat:
 - fix `**=`
 - fix es3::prop_lits
2018-11-16 20:09:17 +09:00
강동윤
7b56b0bc74
Improve codegen (#57)
* travis: make it faster

* better codegen

* Move enable_comments field to config
2018-11-15 21:43:04 +09:00
강동윤
fae7bfc2c7
Chores (#54)
- improve readme
 - fix lints
 - Enable lto
 - better codegen (newline after stmts)
 - add some docs

 - implement `**=` transformer

 - use `quote_ident!`
 - use `.as_arg()` instead of constructing ExprOrSpread
 - use `as_callee()`
 - inject helpers

 - fix imports

 - split libswc

 - don't mark! useless span
2018-11-15 13:29:44 +09:00
강동윤
9a5de4beb6
More transcompilers (#49)
transforms:
 - implement String.length simplifier
 - implement more arithmetic operations
 - new Date() is side-effect free
 - implement left.rhs * right
 - optimize `SeqExpr` while creation
 
 - implement es3 - member expression literals pass
 - implement es2015 - classes pass

codegen: 
 - handle infinity correctly
 - disable comments for testing (it's buggy)

ast:
 - add methods about reserved words
2018-11-14 19:40:46 +09:00
강동윤
9d7af34aab
Initial release (#45)
common:
 - rename `Folder` to `Fold`
 - folder.then()
 - impl Fold for Box<F>
 - impl Fold<T> for &mut F where F: Fold<T>

transforms:
 - make Simplifier private
 - organize compat

codegen:
 - use `Mark` to avoid deoptimization

swc:
 - upgrade rayon and use global thread pool instead
2018-11-10 17:44:35 +09:00
강동윤
eb2a2a7f15
Fix tests and lints (#44)
- Temporarilly ignored comment codegen tests.
 - Split Simplify into SimplifyExpr and SimplifyStmt
 - fix lints
2018-11-05 13:12:52 +09:00
강동윤
e12dcf0452
Compiler baseline
- Fix binary
 - Add base for transformers

This will be last large squash.
2018-11-03 16:56:43 +09:00
강동윤
fd5b4d0dc0 Revert "Merge remote-tracking branch 'refs/remotes/origin/simplifier'"
This reverts commit 43fcbcbef2, reversing
changes made to 15fde7b5ff.
2018-01-14 14:00:01 +09:00
강동윤
b778f0c398 Rebase 2018-01-14 13:37:32 +09:00
강동윤
5a1c844549 [WIP] simplifier 2018-01-14 13:33:09 +09:00
강동윤
015ccb07f4 [WIP] Working for simplfier 2018-01-14 13:30:50 +09:00
강동윤
58bc3b4ade [WIP] Working for simplfier 2018-01-13 19:13:32 +09:00