Compare commits

...

32 Commits

Author SHA1 Message Date
Henry Zhu
5080059138 v7.1.4 2018-10-11 13:32:18 -04:00
Henry Zhu
8ee857e268 v7.1.3 2018-10-11 11:52:19 -04:00
Brian Ng
6b8261bbb7 Bump Babel deps (#8770) 2018-10-10 13:55:02 -05:00
Brian Ng
ce1a6526e5 flow-bin@0.82.0 (#8832) 2018-10-10 12:29:23 -05:00
Kevin Thomas
842c164be5 Insertafter jsx fix (#8833)
* Add check for JSXElement

* Add test
2018-10-10 10:10:20 -06:00
Retsam
d2c75c2d38 fix: corrects handling of newline after async with paren-less arrow function (#8830)
If async is followed by a newline, then a paren-less arrow function should be parsed as two expressions
2018-10-09 23:25:31 +02:00
Retsam
3951acbff5 chore: add generated files for #8805 (#8826) 2018-10-08 12:29:33 -05:00
Retsam
08454ece46 Typescript - Tuples can include rest elements (#8805) 2018-10-08 11:32:31 -05:00
Tim von Oldenburg
4b8cb75b74 types: allow jsxEmptyExpression inside jsxExpressionContainer (#8791) 2018-10-07 23:31:03 -04:00
Guy Bedford
3fa4f53d0a System module format - fixes function hoisting failure case (#8820)
* failing test case

* fix function hoist bug
2018-10-07 23:30:02 -04:00
Bruno Macabeus
850bc1d3dd class private methods and properties: should not allow spaces between # and identifier (#8756) 2018-10-02 19:31:06 -07:00
Brian Ng
36d12b5969 Ensure destructuring's computed key handling matches object-rest-spread (#8793) 2018-10-02 20:46:08 -05:00
Brian Ng
2575312d1f Fix parsing of slash after class expression (#8804) 2018-10-02 20:45:53 -05:00
Retsam
a5b5ed928d Typescript - Tuple elements can be optional (#8720) 2018-10-02 11:29:51 -05:00
Nicolò Ribaudo
3c87401714 [decorators] [typescript] Parse type parameters (#8767)
* [decorators] [typescript] Parse type parameters

* Add test for invalid code
2018-10-01 22:04:19 +02:00
Matthew Robertson
07862e7272 Fix perf issue in typescript parser plugin (#8792) 2018-10-01 12:59:16 -05:00
Henry Zhu
ca89212b45 add changelog up to 7.1.2 [skip ci] 2018-09-28 18:28:43 -04:00
Henry Zhu
3f5b7554b8 v7.1.2 2018-09-28 18:19:38 -04:00
Henry Zhu
ead23d7112 v7.1.1 2018-09-28 16:02:43 -04:00
Nicolò Ribaudo
626f47982e Do not unpack array patterns that update a referenced binding (#8535)
Fixes #8528
2018-09-28 11:45:42 -04:00
Brian Ng
55faa27b93 Run test262 tests for exportNamespaceFrom (#8780) 2018-09-27 14:48:58 -05:00
Sampo Kivistö
090c364a90 Improved build performance by optimizing makeMappingKey method. (#8744) 2018-09-26 13:16:40 -07:00
Pig Fang
f38be13113 TypeScript: reserve unknown as TSUnknownKeyword (#8755) 2018-09-25 12:19:32 -05:00
Nicolò Ribaudo
889cdb8da5 Use babel-check-duplicated-nodes (#8768) 2018-09-25 10:00:48 -05:00
Nicolò Ribaudo
af694ebae1 [decorators] Support async and generator methods (#8742) 2018-09-25 10:03:03 +02:00
Brian Ng
a19b72e46d jest@23.6.0 (#8764) 2018-09-24 18:53:41 -05:00
Brian Ng
38cf318f61 Bump lint-related deps (#8765) 2018-09-24 18:09:54 -05:00
Brian Ng
be027fd36c Bump babel-related deps (#8763) 2018-09-24 17:19:01 -05:00
Nicolò Ribaudo
5150f5f500 [decorators] Fields are enumerable (#8761) 2018-09-24 23:36:32 +02:00
Brian Ng
9f407e0735 Fix some missing parens cases with OptionalMemberExpression in generator (#8751) 2018-09-23 10:54:13 -05:00
Logan Smyth
3b0f9a9f1e Delete undefined options so we handle old core versions with new CLI versions. (#8728) 2018-09-19 08:56:40 -07:00
Brian Ng
9e7c7f5683 Handle throw expressions in generator (#8727)
Fixes #8716
2018-09-18 18:10:48 -04:00
248 changed files with 3733 additions and 1267 deletions

View File

@@ -15,6 +15,287 @@ See [CHANGELOG - v4](/.github/CHANGELOG-v4.md), [CHANGELOG - v5](/.github/CHANGE
See [CHANGELOG - 6to5](/.github/CHANGELOG-6to5.md) for the pre-4.0.0 version changelog.
See [Babylon's CHANGELOG](packages/babylon/CHANGELOG.md) for the Babylon pre-7.0.0-beta.29 version changelog.
## 7.1.2 (2018-09-28)
Same as v7.1.1, except compiled against Node 6 instead of Node 8 by accident (e.g had `async functions`).
## v7.1.1 (2018-09-28)
> EDIT: had a publish issue here as well where it compiled against Node 8 instead of Node 6 so 7.1.2 will fix this.
> Also force publish `@babel/runtime` and `@babel/runtime-corejs2`. We need to fix the publishing around that since Lerna doesn't pickup the `@babel/helpers` changes as there is no "dependency"
#### :bug: Bug Fix
* `babel-generator`, `babel-parser`, `babel-types`
* [#8755](https://github.com/babel/babel/pull/8755) TypeScript: reserve `unknown` as TSUnknownKeyword. ([@g-plane](https://github.com/g-plane))
* `babel-plugin-transform-destructuring`
* [#8535](https://github.com/babel/babel/pull/8535) Do not unpack array patterns that update a referenced binding. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-plugin-proposal-decorators`
* [#8742](https://github.com/babel/babel/pull/8742) [decorators] Support async and generator methods. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-helpers`, `babel-plugin-proposal-decorators`
* [#8761](https://github.com/babel/babel/pull/8761) [decorators] Fields are enumerable. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-generator`
* [#8751](https://github.com/babel/babel/pull/8751) Fix some missing parens cases with OptionalMemberExpression in generator. ([@existentialism](https://github.com/existentialism))
* [#8727](https://github.com/babel/babel/pull/8727) Handle throw expressions in generator. ([@existentialism](https://github.com/existentialism))
#### :house: Internal
* Other
* [#8780](https://github.com/babel/babel/pull/8780) Run test262 tests for exportNamespaceFrom. ([@existentialism](https://github.com/existentialism))
* `babel-helper-transform-fixture-test-runner`
* [#8768](https://github.com/babel/babel/pull/8768) Use babel-check-duplicated-nodes. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
## v7.1.0 (2018-09-17)
Check http://babeljs.io/blog/2018/09/17/7.1.0
#### :rocket: New Feature
* `babel-cli`, `babel-core`
* [#8660](https://github.com/babel/babel/pull/8660) Better support monorepos by allowing users to opt into automatically resolving 'root' with `rootMode: "upward"`.. ([@loganfsmyth](https://github.com/loganfsmyth))
* `babel-helper-transform-fixture-test-runner`
* [#7582](https://github.com/babel/babel/pull/7582) Allow regular plugins/presets resolution algorithm for packages outsi…. ([@Andarist](https://github.com/Andarist))
* `babel-helpers`, `babel-plugin-proposal-decorators`, `babel-plugin-syntax-decorators`
* [#7976](https://github.com/babel/babel/pull/7976) Add support for the new decorators proposal. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-helpers`, `babel-plugin-proposal-class-properties`
* [#8205](https://github.com/babel/babel/pull/8205) Private Static Fields Features: Stage 3. ([@rricard](https://github.com/rricard))
#### :bug: Bug Fix
* `babel-parser`
* [#8698](https://github.com/babel/babel/pull/8698) Fix parsing of newline between 'async' and 'function'. ([@existentialism](https://github.com/existentialism))
* [#8677](https://github.com/babel/babel/pull/8677) Fix typescript parsing typed object shorthand methods. ([@existentialism](https://github.com/existentialism))
* `babel-plugin-transform-typescript`
* [#8682](https://github.com/babel/babel/pull/8682) Fix TSParameterProperty getting lost with transform-classes. ([@existentialism](https://github.com/existentialism))
* [#8695](https://github.com/babel/babel/pull/8695) Adjust TSParameterProperty handling to work with transform-parameters. ([@existentialism](https://github.com/existentialism))
* [#8666](https://github.com/babel/babel/pull/8666) Fix typescript import elision. ([@Retsam](https://github.com/Retsam))
* `babel-preset-env`
* [#8693](https://github.com/babel/babel/pull/8693) Fix es6.string.iterator mapping in babel-preset-env. ([@existentialism](https://github.com/existentialism))
* `babel-core`, `babel-plugin-proposal-class-properties`, `babel-plugin-proposal-decorators`, `babel-plugin-transform-runtime`
* [#8659](https://github.com/babel/babel/pull/8659) Fix version checks in .availableHelper and transform-runtime definitions.. ([@loganfsmyth](https://github.com/loganfsmyth))
* Other
* [#8627](https://github.com/babel/babel/pull/8627) ts generator: allow reserved keywords in interfaces. ([@43081j](https://github.com/43081j))
* `babel-plugin-transform-parameters`
* [#8414](https://github.com/babel/babel/pull/8414) Allow patterns as argument of RestElement. ([@microbouji](https://github.com/microbouji))
* `babel-core`, `babel-plugin-transform-runtime`
* [#8624](https://github.com/babel/babel/pull/8624) Verify 'sourceMap' option with hasOwnProperty, and verify string-typed 'version'. ([@loganfsmyth](https://github.com/loganfsmyth))
* `babel-helpers`, `babel-plugin-proposal-class-properties`
* [#8614](https://github.com/babel/babel/pull/8614) [static private] Unify loose handling of static and instance props. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
#### :nail_care: Polish
* `babel-plugin-transform-runtime`
* [#8581](https://github.com/babel/babel/pull/8581) Fix grammar in error message at @babel/plugin-transform-runtime. ([@tricknotes](https://github.com/tricknotes))
* `babel-parser`
* [#8576](https://github.com/babel/babel/pull/8576) More helpful errorr message for missing decoratorsBeforeExport in parser. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
#### :memo: Documentation
* [#8561](https://github.com/babel/babel/pull/8561) Added pronounciation of babel. ([@siddhant1](https://github.com/siddhant1))
#### :house: Internal
* `babel-core`
* [#8714](https://github.com/babel/babel/pull/8714) Fix Flow error with new versionRange test.. ([@loganfsmyth](https://github.com/loganfsmyth))
* Other
* [#8679](https://github.com/babel/babel/pull/8679) remove force publish, temp tag [skip ci]. ([@hzoo](https://github.com/hzoo))
* `babel-plugin-transform-runtime`
* [#8661](https://github.com/babel/babel/pull/8661) Makefile: run fix json on fix. ([@xtuc](https://github.com/xtuc))
* `babel-*`
* [#8658](https://github.com/babel/babel/pull/8658) Format fixture options.json with Prettier.. ([@loganfsmyth](https://github.com/loganfsmyth))
* `babel-parser`
* [#8630](https://github.com/babel/babel/pull/8630) Bump flow to 0.80 and fix sourceType error. ([@existentialism](https://github.com/existentialism))
* [#8610](https://github.com/babel/babel/pull/8610) types: missing `unambiguous` sourceType. ([@xtuc](https://github.com/xtuc))
* [#8170](https://github.com/babel/babel/pull/8170) @babel/parser: expose a TypeScript definition file from package. ([@AviVahl](https://github.com/AviVahl))
* `babel-*`
* [#8573](https://github.com/babel/babel/pull/8573) add access public to all packages [skip ci]. ([@hzoo](https://github.com/hzoo))
## v7.0.1 (2018-09-11)
Doing a quick patch regarding helpers versioning to prevent future issues: https://github.com/babel/babel/pull/8659
## v7.0.0 (2018-08-27)
No change from rc.4. Finally released as https://babeljs.io/blog/2018/08/27/7.0.0!
## v7.0.0-rc.4 (2018-08-27)
> Similar to removing proposals in `@babel/polyfill`, we are removing them in `transform-runtime`
#### :boom: Breaking Change
* `babel-plugin-transform-runtime`
* [#8547](https://github.com/babel/babel/pull/8547) Remove nonstandard functions and fake prototype methods from babel-runtime. ([@loganfsmyth](https://github.com/loganfsmyth))
* `babel-parser`
* [#8539](https://github.com/babel/babel/pull/8539) Update parser whitespace for clarity. ([@jridgewell](https://github.com/jridgewell))
#### :bug: Bug Fix
* `babel-register`
* [#8553](https://github.com/babel/babel/pull/8553) bump source-map-support. ([@hzoo](https://github.com/hzoo))
* `babel-core`
* [#8546](https://github.com/babel/babel/pull/8546) Default highlightCode:true for the parser highlighting.. ([@loganfsmyth](https://github.com/loganfsmyth))
#### :house: Internal
* Other
* [#8554](https://github.com/babel/babel/pull/8554) Lerna: remove exact [skip ci]. ([@hzoo](https://github.com/hzoo))
* `babel-parser`
* [#8540](https://github.com/babel/babel/pull/8540) Cleanup getLineInfo. ([@jridgewell](https://github.com/jridgewell))
* [#8541](https://github.com/babel/babel/pull/8541) Update to ES6 String methods. ([@jridgewell](https://github.com/jridgewell))
* [#8537](https://github.com/babel/babel/pull/8537) Flatten TokenType class hierarchy. ([@jridgewell](https://github.com/jridgewell))
* [#8539](https://github.com/babel/babel/pull/8539) Update parser whitespace for clarity. ([@jridgewell](https://github.com/jridgewell))
## v7.0.0-rc.3 (2018-08-24)
#### :boom: Breaking Change
* `babel-preset-env`
* [#8509](https://github.com/babel/babel/pull/8509) Add browserslist 4 support.. ([@yavorsky](https://github.com/yavorsky))
* `babel-plugin-transform-runtime`
* [#8518](https://github.com/babel/babel/pull/8518) Make 'useESModules' only toggle CJS vs ESM helpers when importing file is ESM.. ([@loganfsmyth](https://github.com/loganfsmyth))
#### :rocket: New Feature
* `babel-plugin-transform-runtime`
* [#8520](https://github.com/babel/babel/pull/8520) Expose opt-in useESModules:"auto" from transform-runtime to toggle based on 'supportsStaticESM'. ([@loganfsmyth](https://github.com/loganfsmyth))
#### :bug: Bug Fix
* `babel-helpers`, `babel-plugin-transform-classes`, `babel-preset-env`
* [#8501](https://github.com/babel/babel/pull/8501) [_wrapNativeSuper] Don't wrap non-native constructors. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-generator`, `babel-traverse`, `babel-types`
* [#8478](https://github.com/babel/babel/pull/8478) Fix path.scope.rename() to not change break clauses. ([@rafeca](https://github.com/rafeca))
* `babel-plugin-proposal-object-rest-spread`
* [#8514](https://github.com/babel/babel/pull/8514) fix: object rest with default values bug. ([@jquense](https://github.com/jquense))
* `babel-traverse`
* [#8505](https://github.com/babel/babel/pull/8505) Rename exported functions where name conflicts with param.. ([@loganfsmyth](https://github.com/loganfsmyth))
#### :house: Internal
* `babel-plugin-transform-object-set-prototype-of-to-assign`
* [#8409](https://github.com/babel/babel/pull/8409) Add LICENSE file to published npm packages [skip ci]. ([@opichals](https://github.com/opichals))
* Other
* [#8504](https://github.com/babel/babel/pull/8504) Update Babel to rc.2. ([@hzoo](https://github.com/hzoo))
## v7.0.0-rc.2 (2018-08-21)
A notable change is the addition of https://github.com/babel/babel/pull/8485 which enables https://github.com/babel/babel-loader/pull/660 (automatically doing `modules: false` for `@babel/preset-env` when using `babel-loader`.
#### :boom: Breaking Change
* `babel-core`
* [#8470](https://github.com/babel/babel/pull/8470) Remove File#resolveModuleSource. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* [#8473](https://github.com/babel/babel/pull/8473) Allow babel-plugin/preset prefix to not be a prefix, when used in a scope.. ([@loganfsmyth](https://github.com/loganfsmyth))
* `babel-core`, `babel-parser`, `babel-plugin-syntax-decorators`
* [#8465](https://github.com/babel/babel/pull/8465) Require decoratorsBeforeExport option for decorators. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
#### :rocket: New Feature
* `babel-preset-env`
* [#8500](https://github.com/babel/babel/pull/8500) Add missing es7.promise.finally polyfill when using useBuiltIns: usage. ([@jsnajdr](https://github.com/jsnajdr))
* `babel-cli`, `babel-core`, `babel-node`, `babel-preset-env`, `babel-register`
* [#8485](https://github.com/babel/babel/pull/8485) Allow preset-env to toggle module handling based on flags from the caller (like babel-loader). ([@loganfsmyth](https://github.com/loganfsmyth))
* `babel-core`
* [#8474](https://github.com/babel/babel/pull/8474) Preserve 'false'-options for disabled plugins/presets.. ([@loganfsmyth](https://github.com/loganfsmyth))
* [#8473](https://github.com/babel/babel/pull/8473) Allow babel-plugin/preset prefix to not be a prefix, when used in a scope.. ([@loganfsmyth](https://github.com/loganfsmyth))
* `babel-helper-transform-fixture-test-runner`, `babel-plugin-transform-runtime`
* [#8435](https://github.com/babel/babel/pull/8435) Allow transform-runtime to insert runtime references with absolute paths.. ([@loganfsmyth](https://github.com/loganfsmyth))
#### :bug: Bug Fix
* `babel-parser`
* [#8488](https://github.com/babel/babel/pull/8488) Fix trailingComments for FunctionExpression that is CallExpression arguments. ([@jiaxuan](https://github.com/jiaxuan))
* `babel-core`
* [#8493](https://github.com/babel/babel/pull/8493) Take top-level config source into consideration when processing nested env/overrides.. ([@loganfsmyth](https://github.com/loganfsmyth))
* `babel-helpers`, `babel-plugin-proposal-decorators`
* [#7429](https://github.com/babel/babel/pull/7429) Fix default descriptor setting for class properties with decorators. ([@yhpark](https://github.com/yhpark))
* `babel-plugin-transform-parameters`
* [#8479](https://github.com/babel/babel/pull/8479) Fixes setter paratemer default value. ([@nikolayemrikh](https://github.com/nikolayemrikh))
#### :nail_care: Polish
* `babel-core`
* [#8494](https://github.com/babel/babel/pull/8494) Cache individual programmatic descriptors along with the overall list.. ([@loganfsmyth](https://github.com/loganfsmyth))
* [#8493](https://github.com/babel/babel/pull/8493) Take top-level config source into consideration when processing nested env/overrides.. ([@loganfsmyth](https://github.com/loganfsmyth))
#### :house: Internal
* `babel-core`
* [#8493](https://github.com/babel/babel/pull/8493) Take top-level config source into consideration when processing nested env/overrides.. ([@loganfsmyth](https://github.com/loganfsmyth))
* `babel-plugin-transform-classes`
* [#8472](https://github.com/babel/babel/pull/8472) Remove unused file. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
## v7.0.0-rc.1 (2018-08-09)
Same as rc.0 but fixes the peerDep issue #8443. It's changed to just be ^7.0.0-0
## v7.0.0-rc.0 (2018-08-09)
> This had an issue with `peerDependencies` so please use `rc.1`.
Alright finally at the end 🙂. Shouldn't have anymore breaking changes and going to wait some time to fix bugs/regressions
> Summary: `@babel/polyfill` will not include proposal polyfills by default and fixed a regression.
#### :boom: Breaking Change
* `babel-polyfill`
* [#8440](https://github.com/babel/babel/pull/8440) remove proposals polyfills from default import [skip ci]. ([@hzoo](https://github.com/hzoo))
> Will add this to the upgrade guide/polyfill docs. I guess we could include a `babel-upgrade` for this too, not sure.
#### :bug: Bug Fix
* `babel-cli`
* [#8436](https://github.com/babel/babel/pull/8436) Require v1.1.0 so that correct filter params are passed.. ([@loganfsmyth](https://github.com/loganfsmyth))
## v7.0.0-beta.56 (2018-08-03)
- Separate `@babel/runtime`: should work for helpers alone and opt-into core-js if necessary.
- More details in http://babeljs.io/docs/en/next/babel-runtime, http://babeljs.io/docs/en/next/babel-plugin-transform-runtime (via https://github.com/babel/babel/pull/8266, https://github.com/babel/website/pull/1714)
- `babel-upgrade` issue: https://github.com/babel/babel-upgrade/issues/70
#### :boom: Breaking Change
* `babel-plugin-transform-regenerator`, `babel-plugin-transform-runtime`, `babel-runtime-corejs2`, `babel-runtime`
* [#8266](https://github.com/babel/babel/pull/8266) Split @babel/runtime into 2 modules via @babel/runtime-corejs2. ([@loganfsmyth](https://github.com/loganfsmyth))
* `babel-core`, `babel-helper-module-imports`, `babel-helpers`, `babel-plugin-external-helpers`, `babel-plugin-transform-runtime`
* [#8398](https://github.com/babel/babel/pull/8398) Only reference helpers from external/runtime helpers if they are known to be available.. ([@loganfsmyth](https://github.com/loganfsmyth))
#### :rocket: New Feature
* `babel-plugin-transform-regenerator`, `babel-plugin-transform-runtime`, `babel-runtime-corejs2`, `babel-runtime`
* [#8266](https://github.com/babel/babel/pull/8266) Split @babel/runtime into 2 modules via @babel/runtime-corejs2. ([@loganfsmyth](https://github.com/loganfsmyth))
#### :bug: Bug Fix
* `babel-parser`, `babel-plugin-transform-typescript`
* [#8408](https://github.com/babel/babel/pull/8408) Allow TSInterfaceDeclaration to be default export. ([@existentialism](https://github.com/existentialism))
* `babel-preset-env`
* [#8403](https://github.com/babel/babel/pull/8403) Ensure esmodule targets are parsed by browserslist. ([@existentialism](https://github.com/existentialism))
* Other
* [#8024](https://github.com/babel/babel/pull/8024) Run transform-runtime on the standalone bundle so it stays ES5-compatible.. ([@loganfsmyth](https://github.com/loganfsmyth))
#### :memo: Documentation
* [#8412](https://github.com/babel/babel/pull/8412) Update Documentation[skip ci]. ([@leongjiameng](https://github.com/leongjiameng))
## v7.0.0-beta.55 (2018-07-28)
Breaking Change in beta:
> Throws an error on using Stage presets: https://babeljs.io/blog/2018/07/27/removing-babels-stage-presets
#### :boom: Breaking Change
* `babel-core`, `babel-plugin-proposal-class-properties`, `babel-plugin-proposal-decorators`, `babel-preset-stage-0`, `babel-preset-stage-1`, `babel-preset-stage-2`, `babel-preset-stage-3`, `babel-standalone`
* [#8293](https://github.com/babel/babel/pull/8293) Remove Stage presets. ([@hzoo](https://github.com/hzoo))
#### :rocket: New Feature
* `babel-generator`, `babel-parser`, `babel-plugin-transform-typescript`, `babel-types`
* [#7754](https://github.com/babel/babel/pull/7754) TypeScript: Support type arguments on tagged templates. ([@andy-ms](https://github.com/andy-ms))
#### :bug: Bug Fix
* `babel-cli`, `babel-core`, `babel-generator`
* [#8380](https://github.com/babel/babel/pull/8380) Ensure that Identifier source mappings explicitly start and stop on the generated range. ([@loganfsmyth](https://github.com/loganfsmyth))
* `babel-preset-env`
* [#8391](https://github.com/babel/babel/pull/8391) Ensure preset-env doesn't clobber browserslist defaults. ([@existentialism](https://github.com/existentialism))
* `babel-core`
* [#8376](https://github.com/babel/babel/pull/8376) Fix order of optional argument reordering. ([@Qix-](https://github.com/Qix-))
* [#8381](https://github.com/babel/babel/pull/8381) Allow an Array for `babelrcRoots`.. ([@wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg))
* [#8342](https://github.com/babel/babel/pull/8342) Do not mutate ast. ([@thiagoarrais](https://github.com/thiagoarrais))
* `babel-parser`
* [#8374](https://github.com/babel/babel/pull/8374) Correctly parse interface methods named 'static'. ([@bakkot](https://github.com/bakkot))
#### :nail_care: Polish
* `babel-parser`
* [#8355](https://github.com/babel/babel/pull/8355) remove .then from `dynamic import` parser exception message. ([@dnalborczyk](https://github.com/dnalborczyk))
#### :house: Internal
* `babel-core`, `babel-preset-stage-0`, `babel-preset-stage-1`, `babel-preset-stage-2`, `babel-preset-stage-3`, `babel-standalone`
* [#8397](https://github.com/babel/babel/pull/8397) Remove our own use of stage presets. ([@hzoo](https://github.com/hzoo))
* `babel-helpers`, `babel-plugin-proposal-class-properties`
* [#8318](https://github.com/babel/babel/pull/8318) Save full descriptor instead of only value for private fields.. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-core`
* [#8381](https://github.com/babel/babel/pull/8381) Allow an Array for `babelrcRoots`.. ([@wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg))
* `babel-cli`, `babel-core`, `babel-generator`, `babel-helper-define-map`, `babel-helper-fixtures`, `babel-helper-module-imports`, `babel-helper-module-transforms`, `babel-helper-regex`, `babel-helper-simple-access`, `babel-helper-transform-fixture-test-runner`, `babel-node`, `babel-plugin-transform-block-scoping`, `babel-register`, `babel-template`, `babel-traverse`, `babel-types`
* [#8377](https://github.com/babel/babel/pull/8377) Bumped lodash to 4.17.10. ([@Berkmann18](https://github.com/Berkmann18))
## v7.0.0-beta.54 (2018-07-16)
> Regarding https://github.com/babel/babel/issues/8184, we aren't using `micromatch` for paths, just basic `*/**` substitution now. For anything more complicated we will recommend using a regex/`.js` config.

View File

@@ -1,6 +1,6 @@
MAKEFLAGS = -j1
FLOW_COMMIT = bea8b83f50f597454941d2a7ecef6e93a881e576
TEST262_COMMIT = f90a52b39609a620c0854e0bd0b3a906c930fd17
TEST262_COMMIT = 06c2f019019cf7850923de4d56828e6dfd9212b8
# Fix color output until TravisCI fixes https://github.com/travis-ci/travis-ci/issues/7967
export FORCE_COLOR = true

View File

@@ -1,6 +1,6 @@
{
"lerna": "2.11.0",
"version": "7.1.0",
"version": "7.1.4",
"changelog": {
"repo": "babel/babel",
"cacheDir": ".changelog",

View File

@@ -6,25 +6,24 @@
"build": "make build",
"fix": "make fix",
"lint": "make lint",
"precommit": "lint-staged",
"test": "make test"
},
"devDependencies": {
"@babel/cli": "^7.0.0",
"@babel/core": "^7.0.0",
"@babel/plugin-proposal-class-properties": "^7.0.0",
"@babel/cli": "^7.1.2",
"@babel/core": "^7.1.2",
"@babel/plugin-proposal-class-properties": "^7.1.0",
"@babel/plugin-proposal-export-namespace-from": "^7.0.0",
"@babel/plugin-proposal-numeric-separator": "^7.0.0",
"@babel/plugin-transform-modules-commonjs": "^7.0.0",
"@babel/plugin-transform-runtime": "^7.0.0",
"@babel/preset-env": "^7.0.0",
"@babel/plugin-transform-modules-commonjs": "^7.1.0",
"@babel/plugin-transform-runtime": "^7.1.0",
"@babel/preset-env": "^7.1.0",
"@babel/preset-flow": "^7.0.0",
"@babel/register": "^7.0.0",
"@babel/runtime": "^7.0.0",
"@babel/runtime": "^7.1.2",
"babel-core": "^7.0.0-0",
"babel-eslint": "^9.0.0",
"babel-jest": "^23.4.0",
"babel-loader": "8.0.0-beta.4",
"babel-eslint": "^10.0.1",
"babel-jest": "^23.6.0",
"babel-loader": "^8.0.4",
"babel-plugin-transform-charcodes": "^0.1.0",
"browserify": "^16.2.2",
"bundle-collapser": "^1.2.1",
@@ -32,12 +31,12 @@
"charcodes": "^0.1.0",
"derequire": "^2.0.2",
"enhanced-resolve": "^3.0.0",
"eslint": "^5.3.0",
"eslint-config-babel": "^8.0.0",
"eslint-plugin-flowtype": "^2.50.0",
"eslint": "^5.6.0",
"eslint-config-babel": "^8.0.1",
"eslint-plugin-flowtype": "^2.50.1",
"eslint-plugin-local-rules": "0.1.0",
"eslint-plugin-prettier": "^2.6.2",
"flow-bin": "^0.80.0",
"flow-bin": "^0.82.0",
"graceful-fs": "^4.1.11",
"gulp": "^4.0.0",
"gulp-babel": "^8.0.0-beta.2",
@@ -48,15 +47,15 @@
"gulp-uglify": "^3.0.0",
"gulp-util": "^3.0.7",
"gulp-watch": "^5.0.0",
"husky": "^0.14.3",
"jest": "^23.4.1",
"husky": "^1.0.0-rc.15",
"jest": "^23.6.0",
"lerna": "^2.11.0",
"lerna-changelog": "^0.5.0",
"lint-staged": "^6.0.1",
"lint-staged": "^7.3.0",
"lodash": "^4.17.10",
"merge-stream": "^1.0.1",
"output-file-sync": "^2.0.0",
"prettier": "^1.13.7",
"prettier": "^1.14.3",
"pump": "^1.0.2",
"rimraf": "^2.4.3",
"rollup-plugin-babel": "^4.0.0-beta.0",
@@ -81,6 +80,11 @@
"eslint --format=codeframe"
]
},
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"jest": {
"collectCoverageFrom": [
"packages/*/src/**/*.mjs",

View File

@@ -1,6 +1,6 @@
{
"name": "@babel/cli",
"version": "7.1.0",
"version": "7.1.2",
"description": "Babel command line.",
"author": "Sebastian McKenzie <sebmck@gmail.com>",
"homepage": "https://babeljs.io/",

View File

@@ -221,36 +221,47 @@ export default function parseArgv(args: Array<string>) {
const opts = commander.opts();
return {
babelOptions: {
presets: opts.presets,
plugins: opts.plugins,
rootMode: opts.rootMode,
configFile: opts.configFile,
envName: opts.envName,
sourceType: opts.sourceType,
ignore: opts.ignore,
only: opts.only,
retainLines: opts.retainLines,
compact: opts.compact,
minified: opts.minified,
auxiliaryCommentBefore: opts.auxiliaryCommentBefore,
auxiliaryCommentAfter: opts.auxiliaryCommentAfter,
sourceMaps: opts.sourceMaps,
sourceFileName: opts.sourceFileName,
sourceRoot: opts.sourceRoot,
moduleRoot: opts.moduleRoot,
moduleIds: opts.moduleIds,
moduleId: opts.moduleId,
const babelOptions = {
presets: opts.presets,
plugins: opts.plugins,
rootMode: opts.rootMode,
configFile: opts.configFile,
envName: opts.envName,
sourceType: opts.sourceType,
ignore: opts.ignore,
only: opts.only,
retainLines: opts.retainLines,
compact: opts.compact,
minified: opts.minified,
auxiliaryCommentBefore: opts.auxiliaryCommentBefore,
auxiliaryCommentAfter: opts.auxiliaryCommentAfter,
sourceMaps: opts.sourceMaps,
sourceFileName: opts.sourceFileName,
sourceRoot: opts.sourceRoot,
moduleRoot: opts.moduleRoot,
moduleIds: opts.moduleIds,
moduleId: opts.moduleId,
// Commander will default the "--no-" arguments to true, but we want to
// leave them undefined so that @babel/core can handle the
// default-assignment logic on its own.
babelrc: opts.babelrc === true ? undefined : opts.babelrc,
highlightCode:
opts.highlightCode === true ? undefined : opts.highlightCode,
comments: opts.comments === true ? undefined : opts.comments,
},
// Commander will default the "--no-" arguments to true, but we want to
// leave them undefined so that @babel/core can handle the
// default-assignment logic on its own.
babelrc: opts.babelrc === true ? undefined : opts.babelrc,
highlightCode: opts.highlightCode === true ? undefined : opts.highlightCode,
comments: opts.comments === true ? undefined : opts.comments,
};
// If the @babel/cli version is newer than the @babel/core version, and we have added
// new options for @babel/core, we'll potentially get option validation errors from
// @babel/core. To avoid that, we delete undefined options, so @babel/core will only
// give the error if users actually pass an unsupported CLI option.
for (const key of Object.keys(babelOptions)) {
if (babelOptions[key] === undefined) {
delete babelOptions[key];
}
}
return {
babelOptions,
cliOptions: {
filename: opts.filename,
filenames,

View File

@@ -1,6 +1,6 @@
{
"name": "@babel/core",
"version": "7.1.0",
"version": "7.1.2",
"description": "Babel compiler core.",
"main": "lib/index.js",
"author": "Sebastian McKenzie <sebmck@gmail.com>",
@@ -34,12 +34,12 @@
},
"dependencies": {
"@babel/code-frame": "^7.0.0",
"@babel/generator": "^7.0.0",
"@babel/helpers": "^7.1.0",
"@babel/parser": "^7.1.0",
"@babel/template": "^7.1.0",
"@babel/generator": "^7.1.2",
"@babel/helpers": "^7.1.2",
"@babel/parser": "^7.1.2",
"@babel/template": "^7.1.2",
"@babel/traverse": "^7.1.0",
"@babel/types": "^7.0.0",
"@babel/types": "^7.1.2",
"convert-source-map": "^1.1.0",
"debug": "^3.1.0",
"json5": "^0.5.0",

View File

@@ -94,7 +94,7 @@ export default function mergeSourceMap(
}
function makeMappingKey(item: { line: number, columnStart: number }) {
return JSON.stringify([item.line, item.columnStart]);
return `${item.line}/${item.columnStart}`;
}
function eachOverlappingGeneratedOutputRange(

View File

@@ -1,6 +1,6 @@
{
"name": "@babel/generator",
"version": "7.0.0",
"version": "7.1.3",
"description": "Turns an AST into code.",
"author": "Sebastian McKenzie <sebmck@gmail.com>",
"homepage": "https://babeljs.io/",
@@ -14,7 +14,7 @@
"lib"
],
"dependencies": {
"@babel/types": "^7.0.0",
"@babel/types": "^7.1.3",
"jsesc": "^2.5.1",
"lodash": "^4.17.10",
"source-map": "^0.5.0",

View File

@@ -5,7 +5,9 @@ export function UnaryExpression(node: Object) {
if (
node.operator === "void" ||
node.operator === "delete" ||
node.operator === "typeof"
node.operator === "typeof" ||
// throwExpressions
node.operator === "throw"
) {
this.word(node.operator);
this.space();

View File

@@ -127,6 +127,9 @@ export function TSIndexSignature(node) {
export function TSAnyKeyword() {
this.word("any");
}
export function TSUnknownKeyword() {
this.word("unknown");
}
export function TSNumberKeyword() {
this.word("number");
}
@@ -238,6 +241,16 @@ export function TSTupleType(node) {
this.token("]");
}
export function TSOptionalType(node) {
this.print(node.typeAnnotation, node);
this.token("?");
}
export function TSRestType(node) {
this.token("...");
this.print(node.typeAnnotation, node);
}
export function TSUnionType(node) {
this.tsPrintUnionOrIntersectionType(node, "|");
}

View File

@@ -209,6 +209,7 @@ export function ConditionalExpression(node: Object, parent: Object): boolean {
t.isBinary(parent) ||
t.isConditionalExpression(parent, { test: node }) ||
t.isAwaitExpression(parent) ||
t.isOptionalMemberExpression(parent) ||
t.isTaggedTemplateExpression(parent) ||
t.isTSTypeAssertion(parent) ||
t.isTSAsExpression(parent)
@@ -219,6 +220,13 @@ export function ConditionalExpression(node: Object, parent: Object): boolean {
return UnaryLike(node, parent);
}
export function OptionalMemberExpression(
node: Object,
parent: Object,
): boolean {
return t.isCallExpression(parent) || t.isMemberExpression(parent);
}
export function AssignmentExpression(node: Object): boolean {
if (t.isObjectPattern(node.left)) {
return true;

View File

@@ -0,0 +1 @@
() => throw new X();

View File

@@ -0,0 +1 @@
{ "plugins": ["throwExpressions"] }

View File

@@ -0,0 +1 @@
() => throw new X();

View File

@@ -14,3 +14,7 @@ foo?.["bar"]?.foo;
0.?.toString();
0.5?.toString();
1.000?.toString();
(a?.b).c;
(a ? b : c)?.d;
(a?.b)()

View File

@@ -11,4 +11,7 @@ foo?.["bar"].foo;
foo?.["bar"]?.foo;
0.?.toString();
0.5?.toString();
1.000?.toString();
1.000?.toString();
(a?.b).c;
(a ? b : c)?.d;
(a?.b)();

View File

@@ -0,0 +1 @@
let x: [];

View File

@@ -0,0 +1 @@
let x: [];

View File

@@ -0,0 +1 @@
let x: [string, number?, (string | number)?]

View File

@@ -0,0 +1 @@
let x: [string, number?, (string | number)?];

View File

@@ -0,0 +1 @@
let x: [string, ...number[]]

View File

@@ -0,0 +1 @@
let x: [string, ...number[]];

View File

@@ -0,0 +1 @@
let x: [number, number, number];

View File

@@ -0,0 +1 @@
let x: [number, number, number];

View File

@@ -1,4 +1,5 @@
let a: any;
let un: unknown;
let b: boolean;
let ne: never;
let nul: null;

View File

@@ -1,4 +1,5 @@
let a: any;
let un: unknown;
let b: boolean;
let ne: never;
let nul: null;
@@ -7,4 +8,4 @@ let o: object;
let st: string;
let sy: symbol;
let u: undefined;
let v: void;
let v: void;

View File

@@ -1,6 +1,6 @@
{
"name": "@babel/helper-transform-fixture-test-runner",
"version": "7.1.0",
"version": "7.1.2",
"description": "Transform test runner for @babel/helper-fixtures module",
"author": "Sebastian McKenzie <sebmck@gmail.com>",
"homepage": "https://babeljs.io/",
@@ -12,9 +12,10 @@
"main": "lib/index.js",
"dependencies": {
"@babel/code-frame": "^7.0.0",
"@babel/core": "^7.1.0",
"@babel/core": "^7.1.2",
"@babel/helper-fixtures": "^7.0.0",
"@babel/polyfill": "^7.0.0",
"babel-check-duplicated-nodes": "^1.0.0",
"jest": "^22.4.2",
"jest-diff": "^22.4.0",
"lodash": "^4.17.10",

View File

@@ -15,6 +15,7 @@ import assert from "assert";
import fs from "fs";
import path from "path";
import vm from "vm";
import checkDuplicatedNodes from "babel-check-duplicated-nodes";
import diff from "jest-diff";
@@ -129,51 +130,6 @@ function wrapPackagesArray(type, names, optionsDir) {
});
}
function checkDuplicatedNodes(ast) {
const nodes = new WeakSet();
const parents = new WeakMap();
const setParent = (child, parent) => {
if (typeof child === "object" && child !== null) {
let p = parents.get(child);
if (!p) {
p = [];
parents.set(child, p);
}
p.unshift(parent);
}
};
const registerChildren = node => {
for (const key in node) {
if (Array.isArray(node[key])) {
node[key].forEach(child => setParent(child, node));
} else {
setParent(node[key], node);
}
}
};
const hidePrivateProperties = (key, val) => {
// Hides properties like _shadowedFunctionLiteral,
// which makes the AST circular
if (key[0] === "_") return "[Private]";
return val;
};
babel.types.traverseFast(ast, node => {
registerChildren(node);
if (nodes.has(node)) {
throw new Error(
"Do not reuse nodes. Use `t.cloneNode` to copy them.\n" +
JSON.stringify(node, hidePrivateProperties, 2) +
"\nParent:\n" +
JSON.stringify(parents.get(node), hidePrivateProperties, 2),
);
}
nodes.add(node);
});
}
function run(task) {
const actual = task.actual;
const expected = task.expect;
@@ -222,7 +178,7 @@ function run(task) {
if (execCode) {
const execOpts = getOpts(exec);
result = babel.transform(execCode, execOpts);
checkDuplicatedNodes(result.ast);
checkDuplicatedNodes(babel, result.ast);
execCode = result.code;
try {
@@ -244,7 +200,7 @@ function run(task) {
"<CWD>",
);
checkDuplicatedNodes(result.ast);
checkDuplicatedNodes(babel, result.ast);
if (
!expected.code &&
expectedCode &&

View File

@@ -1,6 +1,6 @@
{
"name": "@babel/helpers",
"version": "7.1.0",
"version": "7.1.2",
"description": "Collection of helper functions used by Babel transforms.",
"author": "Sebastian McKenzie <sebmck@gmail.com>",
"homepage": "https://babeljs.io/",
@@ -11,9 +11,9 @@
"repository": "https://github.com/babel/babel/tree/master/packages/babel-helpers",
"main": "lib/index.js",
"dependencies": {
"@babel/template": "^7.1.0",
"@babel/template": "^7.1.2",
"@babel/traverse": "^7.1.0",
"@babel/types": "^7.0.0"
"@babel/types": "^7.1.2"
},
"devDependencies": {
"@babel/helper-plugin-test-runner": "^7.0.0"

View File

@@ -1232,7 +1232,7 @@ helpers.decorate = helper("7.0.2")`
} else if (def.kind === "set") {
descriptor = { set: def.value, configurable: true, enumerable: false };
} else if (def.kind === "field") {
descriptor = { configurable: true, writable: true, enumerable: false };
descriptor = { configurable: true, writable: true, enumerable: true };
}
var element /*: ElementDescriptor */ = {

View File

@@ -1,6 +1,6 @@
{
"name": "@babel/parser",
"version": "7.1.0",
"version": "7.1.3",
"description": "A JavaScript parser",
"author": "Sebastian McKenzie <sebmck@gmail.com>",
"homepage": "https://babeljs.io/",

View File

@@ -794,7 +794,12 @@ export default class ExpressionParser extends LValParser {
) {
this.next();
return this.parseFunction(node, false, false, true);
} else if (canBeArrow && id.name === "async" && this.match(tt.name)) {
} else if (
canBeArrow &&
!this.canInsertSemicolon() &&
id.name === "async" &&
this.match(tt.name)
) {
const oldYield = this.state.yieldInPossibleArrowParameters;
this.state.yieldInPossibleArrowParameters = null;
const params = [this.parseIdentifier()];
@@ -923,7 +928,19 @@ export default class ExpressionParser extends LValParser {
if (isPrivate) {
this.expectOnePlugin(["classPrivateProperties", "classPrivateMethods"]);
const node = this.startNode();
const columnHashEnd = this.state.end;
this.next();
const columnIdentifierStart = this.state.start;
const spacesBetweenHashAndIdentifier =
columnIdentifierStart - columnHashEnd;
if (spacesBetweenHashAndIdentifier != 0) {
this.raise(
columnIdentifierStart,
"Unexpected space between # and identifier",
);
}
node.id = this.parseIdentifier(true);
return this.finishNode(node, "PrivateName");
} else {

View File

@@ -305,15 +305,7 @@ export default class StatementParser extends ExpressionParser {
}
}
if (this.eat(tt.parenL)) {
const node = this.startNodeAt(startPos, startLoc);
node.callee = expr;
node.arguments = this.parseCallExpressionArguments(tt.parenR, false);
this.toReferencedList(node.arguments);
expr = this.finishNode(node, "CallExpression");
}
node.expression = expr;
node.expression = this.parseMaybeDecoratorArguments(expr);
this.state.decoratorStack.pop();
} else {
node.expression = this.parseMaybeAssign();
@@ -321,6 +313,18 @@ export default class StatementParser extends ExpressionParser {
return this.finishNode(node, "Decorator");
}
parseMaybeDecoratorArguments(expr: N.Expression): N.Expression {
if (this.eat(tt.parenL)) {
const node = this.startNodeAtNode(expr);
node.callee = expr;
node.arguments = this.parseCallExpressionArguments(tt.parenR, false);
this.toReferencedList(node.arguments);
return this.finishNode(node, "CallExpression");
}
return expr;
}
parseBreakContinueStatement(
node: N.BreakStatement | N.ContinueStatement,
keyword: string,

View File

@@ -57,6 +57,8 @@ function keywordTypeFromName(
return "TSSymbolKeyword";
case "undefined":
return "TSUndefinedKeyword";
case "unknown":
return "TSUnknownKeyword";
default:
return undefined;
}
@@ -501,13 +503,32 @@ export default (superClass: Class<Parser>): Class<Parser> =>
const node: N.TsTupleType = this.startNode();
node.elementTypes = this.tsParseBracketedList(
"TupleElementTypes",
this.tsParseType.bind(this),
this.tsParseTupleElementType.bind(this),
/* bracket */ true,
/* skipFirstToken */ false,
);
return this.finishNode(node, "TSTupleType");
}
tsParseTupleElementType(): N.TsType {
// parses `...TsType[]`
if (this.match(tt.ellipsis)) {
const restNode: N.TsRestType = this.startNode();
this.next(); // skips ellipsis
restNode.typeAnnotation = this.tsParseType();
return this.finishNode(restNode, "TSRestType");
}
const type = this.tsParseType();
// parses `TsType?`
if (this.eat(tt.question)) {
const optionalTypeNode: N.TsOptionalType = this.startNodeAtNode(type);
optionalTypeNode.typeAnnotation = type;
return this.finishNode(optionalTypeNode, "TSOptionalType");
}
return type;
}
tsParseParenthesizedType(): N.TsParenthesizedType {
const node = this.startNode();
this.expect(tt.parenL);
@@ -1366,10 +1387,11 @@ export default (superClass: Class<Parser>): Class<Parser> =>
return this.finishNode(nonNullExpression, "TSNonNullExpression");
}
// There are number of things we are going to "maybe" parse, like type arguments on
// tagged template expressions. If any of them fail, walk it back and continue.
const result = this.tsTryParseAndCatch(() => {
if (this.isRelational("<")) {
if (this.isRelational("<")) {
// tsTryParseAndCatch is expensive, so avoid if not necessary.
// There are number of things we are going to "maybe" parse, like type arguments on
// tagged template expressions. If any of them fail, walk it back and continue.
const result = this.tsTryParseAndCatch(() => {
if (!noCalls && this.atPossibleAsync(base)) {
// Almost certainly this is a generic async function `async <T>() => ...
// But it might be a call with a type argument `async<T>();`
@@ -1407,12 +1429,12 @@ export default (superClass: Class<Parser>): Class<Parser> =>
);
}
}
}
this.unexpected();
});
this.unexpected();
});
if (result) return result;
if (result) return result;
}
return super.parseSubscript(base, startPos, startLoc, noCalls, state);
}
@@ -2044,6 +2066,22 @@ export default (superClass: Class<Parser>): Class<Parser> =>
}
}
parseMaybeDecoratorArguments(expr: N.Expression): N.Expression {
if (this.isRelational("<")) {
const typeArguments = this.tsParseTypeArguments();
if (this.match(tt.parenL)) {
const call = super.parseMaybeDecoratorArguments(expr);
call.typeParameters = typeArguments;
return call;
}
this.unexpected(this.state.start, tt.parenL);
}
return super.parseMaybeDecoratorArguments(expr);
}
// === === === === === === === === === === === === === === === ===
// Note: All below methods are duplicates of something in flow.js.
// Not sure what the best way to combine these is.

View File

@@ -106,7 +106,7 @@ tt.incDec.updateContext = function() {
// tokExprAllowed stays unchanged
};
tt._function.updateContext = function(prevType) {
tt._function.updateContext = tt._class.updateContext = function(prevType) {
if (this.state.exprAllowed && !this.braceIsBlock(prevType)) {
this.state.context.push(types.functionExpression);
}

View File

@@ -398,7 +398,7 @@ export type ObjectMemberBase = NodeBase & {
decorators: $ReadOnlyArray<Decorator>,
kind?: "get" | "set" | "method",
method: boolean, // TODO: Not in spec
typeParameters?: ?TypeParameterInstantiationBase, // TODO: Not in spec
variance?: ?FlowVariance, // TODO: Not in spec
};
@@ -1104,6 +1104,8 @@ export type TsType =
| TsTypeLiteral
| TsArrayType
| TsTupleType
| TsOptionalType
| TsRestType
| TsUnionOrIntersectionType
| TsConditionalType
| TsInferType
@@ -1119,6 +1121,7 @@ export type TsTypeBase = NodeBase;
export type TsKeywordTypeType =
| "TSAnyKeyword"
| "TSUnknownKeyword"
| "TSNumberKeyword"
| "TSObjectKeyword"
| "TSBooleanKeyword"
@@ -1183,6 +1186,16 @@ export type TsTupleType = TsTypeBase & {
elementTypes: $ReadOnlyArray<TsType>,
};
export type TsOptionalType = TsTypeBase & {
type: "TSOptionalType",
typeAnnotation: TsType,
};
export type TsRestType = TsTypeBase & {
type: "TSRestType",
typeAnnotation: TsType,
};
export type TsUnionOrIntersectionType = TsUnionType | TsIntersectionType;
export type TsUnionOrIntersectionTypeBase = TsTypeBase & {

View File

@@ -1,4 +1,3 @@
{
"throws":
"The rest element has to be the last element when destructuring (1:1)"
"throws": "The rest element has to be the last element when destructuring (1:1)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"super() is only valid inside a class constructor. Make sure the method name is spelled exactly as 'constructor'. (2:8)"
"throws": "super() is only valid inside a class constructor. Make sure the method name is spelled exactly as 'constructor'. (2:8)"
}

View File

@@ -0,0 +1,9 @@
x = class{} / foo
x = class{}
/ foo / g
(x = class{} / foo)
(x = class{}
/ foo / g)

View File

@@ -0,0 +1,561 @@
{
"type": "File",
"start": 0,
"end": 86,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 9,
"column": 10
}
},
"program": {
"type": "Program",
"start": 0,
"end": 86,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 9,
"column": 10
}
},
"sourceType": "script",
"interpreter": null,
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 17,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 17
}
},
"expression": {
"type": "AssignmentExpression",
"start": 0,
"end": 17,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 17
}
},
"operator": "=",
"left": {
"type": "Identifier",
"start": 0,
"end": 1,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 1
},
"identifierName": "x"
},
"name": "x"
},
"right": {
"type": "BinaryExpression",
"start": 4,
"end": 17,
"loc": {
"start": {
"line": 1,
"column": 4
},
"end": {
"line": 1,
"column": 17
}
},
"left": {
"type": "ClassExpression",
"start": 4,
"end": 11,
"loc": {
"start": {
"line": 1,
"column": 4
},
"end": {
"line": 1,
"column": 11
}
},
"id": null,
"superClass": null,
"body": {
"type": "ClassBody",
"start": 9,
"end": 11,
"loc": {
"start": {
"line": 1,
"column": 9
},
"end": {
"line": 1,
"column": 11
}
},
"body": []
}
},
"operator": "/",
"right": {
"type": "Identifier",
"start": 14,
"end": 17,
"loc": {
"start": {
"line": 1,
"column": 14
},
"end": {
"line": 1,
"column": 17
},
"identifierName": "foo"
},
"name": "foo"
}
}
}
},
{
"type": "ExpressionStatement",
"start": 19,
"end": 86,
"loc": {
"start": {
"line": 3,
"column": 0
},
"end": {
"line": 9,
"column": 10
}
},
"expression": {
"type": "AssignmentExpression",
"start": 19,
"end": 86,
"loc": {
"start": {
"line": 3,
"column": 0
},
"end": {
"line": 9,
"column": 10
}
},
"operator": "=",
"left": {
"type": "Identifier",
"start": 19,
"end": 20,
"loc": {
"start": {
"line": 3,
"column": 0
},
"end": {
"line": 3,
"column": 1
},
"identifierName": "x"
},
"name": "x"
},
"right": {
"type": "BinaryExpression",
"start": 23,
"end": 86,
"loc": {
"start": {
"line": 3,
"column": 4
},
"end": {
"line": 9,
"column": 10
}
},
"left": {
"type": "BinaryExpression",
"start": 23,
"end": 36,
"loc": {
"start": {
"line": 3,
"column": 4
},
"end": {
"line": 4,
"column": 5
}
},
"left": {
"type": "ClassExpression",
"start": 23,
"end": 30,
"loc": {
"start": {
"line": 3,
"column": 4
},
"end": {
"line": 3,
"column": 11
}
},
"id": null,
"superClass": null,
"body": {
"type": "ClassBody",
"start": 28,
"end": 30,
"loc": {
"start": {
"line": 3,
"column": 9
},
"end": {
"line": 3,
"column": 11
}
},
"body": []
}
},
"operator": "/",
"right": {
"type": "Identifier",
"start": 33,
"end": 36,
"loc": {
"start": {
"line": 4,
"column": 2
},
"end": {
"line": 4,
"column": 5
},
"identifierName": "foo"
},
"name": "foo"
}
},
"operator": "/",
"right": {
"type": "CallExpression",
"start": 39,
"end": 86,
"loc": {
"start": {
"line": 4,
"column": 8
},
"end": {
"line": 9,
"column": 10
}
},
"callee": {
"type": "CallExpression",
"start": 39,
"end": 61,
"loc": {
"start": {
"line": 4,
"column": 8
},
"end": {
"line": 6,
"column": 19
}
},
"callee": {
"type": "Identifier",
"start": 39,
"end": 40,
"loc": {
"start": {
"line": 4,
"column": 8
},
"end": {
"line": 4,
"column": 9
},
"identifierName": "g"
},
"name": "g"
},
"arguments": [
{
"type": "AssignmentExpression",
"start": 43,
"end": 60,
"loc": {
"start": {
"line": 6,
"column": 1
},
"end": {
"line": 6,
"column": 18
}
},
"operator": "=",
"left": {
"type": "Identifier",
"start": 43,
"end": 44,
"loc": {
"start": {
"line": 6,
"column": 1
},
"end": {
"line": 6,
"column": 2
},
"identifierName": "x"
},
"name": "x"
},
"right": {
"type": "BinaryExpression",
"start": 47,
"end": 60,
"loc": {
"start": {
"line": 6,
"column": 5
},
"end": {
"line": 6,
"column": 18
}
},
"left": {
"type": "ClassExpression",
"start": 47,
"end": 54,
"loc": {
"start": {
"line": 6,
"column": 5
},
"end": {
"line": 6,
"column": 12
}
},
"id": null,
"superClass": null,
"body": {
"type": "ClassBody",
"start": 52,
"end": 54,
"loc": {
"start": {
"line": 6,
"column": 10
},
"end": {
"line": 6,
"column": 12
}
},
"body": []
}
},
"operator": "/",
"right": {
"type": "Identifier",
"start": 57,
"end": 60,
"loc": {
"start": {
"line": 6,
"column": 15
},
"end": {
"line": 6,
"column": 18
},
"identifierName": "foo"
},
"name": "foo"
}
}
}
]
},
"arguments": [
{
"type": "AssignmentExpression",
"start": 64,
"end": 85,
"loc": {
"start": {
"line": 8,
"column": 1
},
"end": {
"line": 9,
"column": 9
}
},
"operator": "=",
"left": {
"type": "Identifier",
"start": 64,
"end": 65,
"loc": {
"start": {
"line": 8,
"column": 1
},
"end": {
"line": 8,
"column": 2
},
"identifierName": "x"
},
"name": "x"
},
"right": {
"type": "BinaryExpression",
"start": 68,
"end": 85,
"loc": {
"start": {
"line": 8,
"column": 5
},
"end": {
"line": 9,
"column": 9
}
},
"left": {
"type": "BinaryExpression",
"start": 68,
"end": 81,
"loc": {
"start": {
"line": 8,
"column": 5
},
"end": {
"line": 9,
"column": 5
}
},
"left": {
"type": "ClassExpression",
"start": 68,
"end": 75,
"loc": {
"start": {
"line": 8,
"column": 5
},
"end": {
"line": 8,
"column": 12
}
},
"id": null,
"superClass": null,
"body": {
"type": "ClassBody",
"start": 73,
"end": 75,
"loc": {
"start": {
"line": 8,
"column": 10
},
"end": {
"line": 8,
"column": 12
}
},
"body": []
}
},
"operator": "/",
"right": {
"type": "Identifier",
"start": 78,
"end": 81,
"loc": {
"start": {
"line": 9,
"column": 2
},
"end": {
"line": 9,
"column": 5
},
"identifierName": "foo"
},
"name": "foo"
}
},
"operator": "/",
"right": {
"type": "Identifier",
"start": 84,
"end": 85,
"loc": {
"start": {
"line": 9,
"column": 8
},
"end": {
"line": 9,
"column": 9
},
"identifierName": "g"
},
"name": "g"
}
}
}
]
}
}
}
}
],
"directives": []
}
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"You're trying to assign to a parenthesized expression, eg. instead of `([a]) = 0` use `([a] = 0)` (1:1)"
"throws": "You're trying to assign to a parenthesized expression, eg. instead of `([a]) = 0` use `([a] = 0)` (1:1)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"You're trying to assign to a parenthesized expression, eg. instead of `({a}) = 0` use `({a} = 0)` (1:1)"
"throws": "You're trying to assign to a parenthesized expression, eg. instead of `({a}) = 0` use `({a} = 0)` (1:1)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"`Foo` has already been exported. Exported identifiers must be unique. (2:0)"
"throws": "`Foo` has already been exported. Exported identifiers must be unique. (2:0)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"`foo` has already been exported. Exported identifiers must be unique. (2:20)"
"throws": "`foo` has already been exported. Exported identifiers must be unique. (2:20)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"`foo4` has already been exported. Exported identifiers must be unique. (2:50)"
"throws": "`foo4` has already been exported. Exported identifiers must be unique. (2:50)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"`foo4` has already been exported. Exported identifiers must be unique. (2:49)"
"throws": "`foo4` has already been exported. Exported identifiers must be unique. (2:49)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"`foo4` has already been exported. Exported identifiers must be unique. (2:58)"
"throws": "`foo4` has already been exported. Exported identifiers must be unique. (2:58)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"`foo` has already been exported. Exported identifiers must be unique. (2:21)"
"throws": "`foo` has already been exported. Exported identifiers must be unique. (2:21)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"`foo2` has already been exported. Exported identifiers must be unique. (2:13)"
"throws": "`foo2` has already been exported. Exported identifiers must be unique. (2:13)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"`foo` has already been exported. Exported identifiers must be unique. (2:22)"
"throws": "`foo` has already been exported. Exported identifiers must be unique. (2:22)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"`bar` has already been exported. Exported identifiers must be unique. (2:13)"
"throws": "`bar` has already been exported. Exported identifiers must be unique. (2:13)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"`foo` has already been exported. Exported identifiers must be unique. (2:28)"
"throws": "`foo` has already been exported. Exported identifiers must be unique. (2:28)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"`foo` has already been exported. Exported identifiers must be unique. (2:29)"
"throws": "`foo` has already been exported. Exported identifiers must be unique. (2:29)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"`foo` has already been exported. Exported identifiers must be unique. (2:15)"
"throws": "`foo` has already been exported. Exported identifiers must be unique. (2:15)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"`foo` has already been exported. Exported identifiers must be unique. (2:0)"
"throws": "`foo` has already been exported. Exported identifiers must be unique. (2:0)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"`foo` has already been exported. Exported identifiers must be unique. (2:14)"
"throws": "`foo` has already been exported. Exported identifiers must be unique. (2:14)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"`foo` has already been exported. Exported identifiers must be unique. (2:0)"
"throws": "`foo` has already been exported. Exported identifiers must be unique. (2:0)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"`foo` has already been exported. Exported identifiers must be unique. (2:14)"
"throws": "`foo` has already been exported. Exported identifiers must be unique. (2:14)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"`foo` has already been exported. Exported identifiers must be unique. (2:15)"
"throws": "`foo` has already been exported. Exported identifiers must be unique. (2:15)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"`Foo` has already been exported. Exported identifiers must be unique. (2:15)"
"throws": "`Foo` has already been exported. Exported identifiers must be unique. (2:15)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"`Foo` has already been exported. Exported identifiers must be unique. (2:14)"
"throws": "`Foo` has already been exported. Exported identifiers must be unique. (2:14)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"`foo` has already been exported. Exported identifiers must be unique. (2:0)"
"throws": "`foo` has already been exported. Exported identifiers must be unique. (2:0)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"`foo` has already been exported. Exported identifiers must be unique. (2:13)"
"throws": "`foo` has already been exported. Exported identifiers must be unique. (2:13)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"`foo` has already been exported. Exported identifiers must be unique. (2:9)"
"throws": "`foo` has already been exported. Exported identifiers must be unique. (2:9)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"Only expressions, functions or classes are allowed as the `default` export. (1:15)"
"throws": "Only expressions, functions or classes are allowed as the `default` export. (1:15)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"Only expressions, functions or classes are allowed as the `default` export. (1:15)"
"throws": "Only expressions, functions or classes are allowed as the `default` export. (1:15)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"Only expressions, functions or classes are allowed as the `default` export. (1:15)"
"throws": "Only expressions, functions or classes are allowed as the `default` export. (1:15)"
}

View File

@@ -1,5 +1,4 @@
{
"throws":
"ES2015 named imports do not destructure. Use another statement for destructuring after the import. (1:19)",
"throws": "ES2015 named imports do not destructure. Use another statement for destructuring after the import. (1:19)",
"sourceType": "module"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"yield is not allowed in the parameters of an arrow function inside a generator (2:7)"
"throws": "yield is not allowed in the parameters of an arrow function inside a generator (2:7)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"yield is not allowed in the parameters of an arrow function inside a generator (2:15)"
"throws": "yield is not allowed in the parameters of an arrow function inside a generator (2:15)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"yield is not allowed in the parameters of an arrow function inside a generator (2:7)"
"throws": "yield is not allowed in the parameters of an arrow function inside a generator (2:7)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"yield is not allowed in the parameters of an arrow function inside a generator (2:17)"
"throws": "yield is not allowed in the parameters of an arrow function inside a generator (2:17)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"yield is not allowed in the parameters of an arrow function inside a generator (2:8)"
"throws": "yield is not allowed in the parameters of an arrow function inside a generator (2:8)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"yield is not allowed in the parameters of an arrow function inside a generator (2:3)"
"throws": "yield is not allowed in the parameters of an arrow function inside a generator (2:3)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"yield is not allowed in the parameters of an arrow function inside a generator (2:3)"
"throws": "yield is not allowed in the parameters of an arrow function inside a generator (2:3)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"yield is not allowed in the parameters of an arrow function inside a generator (2:9)"
"throws": "yield is not allowed in the parameters of an arrow function inside a generator (2:9)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"Illegal expression. Wrap left hand side or entire exponentiation in parentheses. (1:1)"
"throws": "Illegal expression. Wrap left hand side or entire exponentiation in parentheses. (1:1)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"Illegal expression. Wrap left hand side or entire exponentiation in parentheses. (1:2)"
"throws": "Illegal expression. Wrap left hand side or entire exponentiation in parentheses. (1:2)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"Illegal expression. Wrap left hand side or entire exponentiation in parentheses. (1:2)"
"throws": "Illegal expression. Wrap left hand side or entire exponentiation in parentheses. (1:2)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"await* has been removed from the async functions proposal. Use Promise.all() instead. (2:2)"
"throws": "await* has been removed from the async functions proposal. Use Promise.all() instead. (2:2)"
}

View File

@@ -0,0 +1,2 @@
async
x => x

View File

@@ -0,0 +1,136 @@
{
"type": "File",
"start": 0,
"end": 12,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 2,
"column": 6
}
},
"program": {
"type": "Program",
"start": 0,
"end": 12,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 2,
"column": 6
}
},
"sourceType": "script",
"interpreter": null,
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 5,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 5
}
},
"expression": {
"type": "Identifier",
"start": 0,
"end": 5,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 5
},
"identifierName": "async"
},
"name": "async"
}
},
{
"type": "ExpressionStatement",
"start": 6,
"end": 12,
"loc": {
"start": {
"line": 2,
"column": 0
},
"end": {
"line": 2,
"column": 6
}
},
"expression": {
"type": "ArrowFunctionExpression",
"start": 6,
"end": 12,
"loc": {
"start": {
"line": 2,
"column": 0
},
"end": {
"line": 2,
"column": 6
}
},
"id": null,
"generator": false,
"async": false,
"params": [
{
"type": "Identifier",
"start": 6,
"end": 7,
"loc": {
"start": {
"line": 2,
"column": 0
},
"end": {
"line": 2,
"column": 1
},
"identifierName": "x"
},
"name": "x"
}
],
"body": {
"type": "Identifier",
"start": 11,
"end": 12,
"loc": {
"start": {
"line": 2,
"column": 5
},
"end": {
"line": 2,
"column": 6
},
"identifierName": "x"
},
"name": "x"
}
}
}
],
"directives": []
}
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"This experimental syntax requires enabling the parser plugin: 'classProperties' (3:2)"
"throws": "This experimental syntax requires enabling the parser plugin: 'classProperties' (3:2)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"This experimental syntax requires enabling the parser plugin: 'exportDefaultFrom' (1:7)"
"throws": "This experimental syntax requires enabling the parser plugin: 'exportDefaultFrom' (1:7)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"'import' and 'export' may appear only with 'sourceType: \"module\"' (1:0)"
"throws": "'import' and 'export' may appear only with 'sourceType: \"module\"' (1:0)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"'import' and 'export' may appear only with 'sourceType: \"module\"' (1:0)"
"throws": "'import' and 'export' may appear only with 'sourceType: \"module\"' (1:0)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"yield is not allowed in the parameters of an arrow function inside a generator (1:21)"
"throws": "yield is not allowed in the parameters of an arrow function inside a generator (1:21)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"yield is not allowed in the parameters of an arrow function inside a generator (1:16)"
"throws": "yield is not allowed in the parameters of an arrow function inside a generator (1:16)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"yield is not allowed in the parameters of an arrow function inside a generator (1:25)"
"throws": "yield is not allowed in the parameters of an arrow function inside a generator (1:25)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"'import' and 'export' may appear only with 'sourceType: \"module\"' (1:0)"
"throws": "'import' and 'export' may appear only with 'sourceType: \"module\"' (1:0)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"yield is not allowed in the parameters of an arrow function inside a generator (1:21)"
"throws": "yield is not allowed in the parameters of an arrow function inside a generator (1:21)"
}

View File

@@ -1,4 +1,3 @@
{
"throws":
"Error parsing regular expression: Invalid regular expression: /(s/: Unterminated group (1:9)"
"throws": "Error parsing regular expression: Invalid regular expression: /(s/: Unterminated group (1:9)"
}

View File

@@ -1,5 +1,4 @@
{
"throws":
"This experimental syntax requires enabling the parser plugin: 'bigInt' (1:1)",
"throws": "This experimental syntax requires enabling the parser plugin: 'bigInt' (1:1)",
"plugins": []
}

View File

@@ -1,5 +1,4 @@
{
"throws":
"This experimental syntax requires enabling the parser plugin: 'classPrivateProperties' (2:3)",
"throws": "This experimental syntax requires enabling the parser plugin: 'classPrivateProperties' (2:3)",
"plugins": []
}

View File

@@ -1,5 +1,4 @@
{
"throws":
"This experimental syntax requires enabling the parser plugin: 'numericSeparator' (1:17)",
"throws": "This experimental syntax requires enabling the parser plugin: 'numericSeparator' (1:17)",
"plugins": []
}

View File

@@ -1,5 +1,4 @@
{
"throws":
"This experimental syntax requires enabling the parser plugin: 'asyncGenerators' (1:15)",
"throws": "This experimental syntax requires enabling the parser plugin: 'asyncGenerators' (1:15)",
"plugins": []
}

View File

@@ -1,5 +1,4 @@
{
"plugins": ["flow"],
"throws":
"This experimental syntax requires enabling the parser plugin: 'classProperties' (2:14)"
"throws": "This experimental syntax requires enabling the parser plugin: 'classProperties' (2:14)"
}

View File

@@ -1,5 +1,4 @@
{
"throws":
"This experimental syntax requires enabling the parser plugin: 'classProperties' (2:6)",
"throws": "This experimental syntax requires enabling the parser plugin: 'classProperties' (2:6)",
"plugins": []
}

View File

@@ -1,5 +1,4 @@
{
"throws":
"This experimental syntax requires enabling the parser plugin: 'classProperties' (2:5)",
"throws": "This experimental syntax requires enabling the parser plugin: 'classProperties' (2:5)",
"plugins": []
}

Some files were not shown because too many files have changed in this diff Show More