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; +} +``` 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/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"] 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"]); diff --git a/yarn.lock b/yarn.lock index c9930b25eae4..3c706d719d8b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -273,10 +273,10 @@ 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": - 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/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/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": version "7.16.7"