From 487c2a925d9936f9612ed2884b974426dd85c7e6 Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Fri, 23 Dec 2022 09:32:59 +0900 Subject: [PATCH 1/5] Update `@babel/parser` --- package.json | 2 +- yarn.lock | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 5c6e20827e5d..417a94470970 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "dependencies": { "@angular/compiler": "12.2.16", "@babel/code-frame": "7.16.7", - "@babel/parser": "7.20.1", + "@babel/parser": "7.20.7", "@glimmer/syntax": "0.84.2", "@iarna/toml": "2.2.5", "@typescript-eslint/typescript-estree": "5.45.0", diff --git a/yarn.lock b/yarn.lock index c9930b25eae4..1319e658fc34 100644 --- a/yarn.lock +++ b/yarn.lock @@ -273,7 +273,12 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@7.20.1", "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.9": +"@babel/parser@7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.7.tgz#66fe23b3c8569220817d5feb8b9dcdc95bb4f71b" + integrity sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg== + +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.9": version "7.20.1" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.1.tgz#3e045a92f7b4623cafc2425eddcb8cf2e54f9cc5" integrity sha512-hp0AYxaZJhxULfM1zyp7Wgr+pSUKBcP3M+PHnSzWGdXOzg/kHWIgiUWARvubhUKGOEw3xqY4x+lyZ9ytBVcELw== From cd4ed7d8d81c834fe8d8c4bbc9609de55531ad05 Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Fri, 23 Dec 2022 09:35:50 +0900 Subject: [PATCH 2/5] Move tests to `/format/typescript` --- .../__snapshots__/jsfmt.spec.js.snap | 29 +++++++++++++++++++ ...corator-auto-accessors-type-annotations.ts | 0 .../decorator-auto-accessors/jsfmt.spec.js | 1 + 3 files changed, 30 insertions(+) create mode 100644 tests/format/typescript/decorator-auto-accessors/__snapshots__/jsfmt.spec.js.snap rename tests/format/{misc/typescript-only => typescript/decorator-auto-accessors}/decorator-auto-accessors-type-annotations.ts (100%) create mode 100644 tests/format/typescript/decorator-auto-accessors/jsfmt.spec.js diff --git a/tests/format/typescript/decorator-auto-accessors/__snapshots__/jsfmt.spec.js.snap b/tests/format/typescript/decorator-auto-accessors/__snapshots__/jsfmt.spec.js.snap new file mode 100644 index 000000000000..2b9e43887b0c --- /dev/null +++ b/tests/format/typescript/decorator-auto-accessors/__snapshots__/jsfmt.spec.js.snap @@ -0,0 +1,29 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`decorator-auto-accessors-type-annotations.ts format 1`] = ` +====================================options===================================== +parsers: ["typescript"] +printWidth: 80 + | printWidth +=====================================input====================================== +abstract class Foo { + accessor prop: number = 1; + static accessor prop2: number = 1; + accessor #prop3: number = 1; + accessor [prop4]: number = 1; + private accessor prop5: number = 1; + abstract accessor prop6: number; +} + +=====================================output===================================== +abstract class Foo { + accessor prop: number = 1; + static accessor prop2: number = 1; + accessor #prop3: number = 1; + accessor [prop4]: number = 1; + private accessor prop5: number = 1; + abstract accessor prop6: number; +} + +================================================================================ +`; diff --git a/tests/format/misc/typescript-only/decorator-auto-accessors-type-annotations.ts b/tests/format/typescript/decorator-auto-accessors/decorator-auto-accessors-type-annotations.ts similarity index 100% rename from tests/format/misc/typescript-only/decorator-auto-accessors-type-annotations.ts rename to tests/format/typescript/decorator-auto-accessors/decorator-auto-accessors-type-annotations.ts diff --git a/tests/format/typescript/decorator-auto-accessors/jsfmt.spec.js b/tests/format/typescript/decorator-auto-accessors/jsfmt.spec.js new file mode 100644 index 000000000000..2ea3bb6eb2e4 --- /dev/null +++ b/tests/format/typescript/decorator-auto-accessors/jsfmt.spec.js @@ -0,0 +1 @@ +run_spec(__dirname, ["typescript"]); From aae6b385b6fc24a07cfe8b6b73c770fe82ea16e7 Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Fri, 23 Dec 2022 09:38:07 +0900 Subject: [PATCH 3/5] Update tests --- .../object/__snapshots__/jsfmt.spec.js.snap | 4 +- .../__snapshots__/jsfmt.spec.js.snap | 57 ------------------- 2 files changed, 2 insertions(+), 59 deletions(-) diff --git a/tests/format/misc/errors/js/object/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/js/object/__snapshots__/jsfmt.spec.js.snap index 3f192ae93adc..fcb08c9b9d6d 100644 --- a/tests/format/misc/errors/js/object/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/misc/errors/js/object/__snapshots__/jsfmt.spec.js.snap @@ -44,7 +44,7 @@ exports[`getter-with-parameter.js [acorn] format 1`] = ` `; exports[`getter-with-parameter.js [babel] format 1`] = ` -"A 'get' accesor must not have any formal parameters. (1:4) +"A 'get' accessor must not have any formal parameters. (1:4) > 1 | ({ get x(a){} }); | ^ 2 |" @@ -108,7 +108,7 @@ exports[`setter-without-parameter.js [acorn] format 1`] = ` `; exports[`setter-without-parameter.js [babel] format 1`] = ` -"A 'set' accesor must have exactly one formal parameter. (1:4) +"A 'set' accessor must have exactly one formal parameter. (1:4) > 1 | ({ set x(){} }); | ^ 2 |" diff --git a/tests/format/misc/typescript-only/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/typescript-only/__snapshots__/jsfmt.spec.js.snap index eb9cd97c61bf..db01346e1c7d 100644 --- a/tests/format/misc/typescript-only/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/misc/typescript-only/__snapshots__/jsfmt.spec.js.snap @@ -406,63 +406,6 @@ class Foo { ================================================================================ `; -exports[`decorator-auto-accessors-type-annotations.ts - {"semi":false} format 1`] = ` -====================================options===================================== -parsers: ["typescript"] -printWidth: 80 -semi: false - | printWidth -=====================================input====================================== -abstract class Foo { - accessor prop: number = 1; - static accessor prop2: number = 1; - accessor #prop3: number = 1; - accessor [prop4]: number = 1; - private accessor prop5: number = 1; - abstract accessor prop6: number; -} - -=====================================output===================================== -abstract class Foo { - accessor prop: number = 1 - static accessor prop2: number = 1 - accessor #prop3: number = 1 - accessor [prop4]: number = 1 - private accessor prop5: number = 1 - abstract accessor prop6: number -} - -================================================================================ -`; - -exports[`decorator-auto-accessors-type-annotations.ts format 1`] = ` -====================================options===================================== -parsers: ["typescript"] -printWidth: 80 - | printWidth -=====================================input====================================== -abstract class Foo { - accessor prop: number = 1; - static accessor prop2: number = 1; - accessor #prop3: number = 1; - accessor [prop4]: number = 1; - private accessor prop5: number = 1; - abstract accessor prop6: number; -} - -=====================================output===================================== -abstract class Foo { - accessor prop: number = 1; - static accessor prop2: number = 1; - accessor #prop3: number = 1; - accessor [prop4]: number = 1; - private accessor prop5: number = 1; - abstract accessor prop6: number; -} - -================================================================================ -`; - exports[`invalid-modifiers.ts - {"semi":false} format 1`] = ` ====================================options===================================== parsers: ["typescript"] From 4d696f8de22d25aa2af3c6d9619e0e1807822654 Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Fri, 23 Dec 2022 09:42:40 +0900 Subject: [PATCH 4/5] Add changelog --- changelog_unreleased/typescript/14049.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 changelog_unreleased/typescript/14049.md diff --git a/changelog_unreleased/typescript/14049.md b/changelog_unreleased/typescript/14049.md new file mode 100644 index 000000000000..28448fa9662b --- /dev/null +++ b/changelog_unreleased/typescript/14049.md @@ -0,0 +1,10 @@ +#### Support type annotations on auto accessors via `babel-ts` (#14049 by @sosukesuzuki) + +[The bug that `@babel/parser` cannot parse auto accessors with type annotations](https://github.com/babel/babel/issues/15205) has been fixed. So we now support it via `babel-ts` parser. + + +```tsx +class Foo { + accessor prop: number; +} +``` From 31860b5a9a7eebb14a882376e30121dc43e6b578 Mon Sep 17 00:00:00 2001 From: fisker Date: Fri, 23 Dec 2022 14:54:33 +0800 Subject: [PATCH 5/5] Dedupe --- yarn.lock | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/yarn.lock b/yarn.lock index 1319e658fc34..3c706d719d8b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -273,16 +273,11 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@7.20.7": +"@babel/parser@7.20.7", "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.9": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.7.tgz#66fe23b3c8569220817d5feb8b9dcdc95bb4f71b" integrity sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg== -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.9": - version "7.20.1" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.1.tgz#3e045a92f7b4623cafc2425eddcb8cf2e54f9cc5" - integrity sha512-hp0AYxaZJhxULfM1zyp7Wgr+pSUKBcP3M+PHnSzWGdXOzg/kHWIgiUWARvubhUKGOEw3xqY4x+lyZ9ytBVcELw== - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050"