-
-
Notifications
You must be signed in to change notification settings - Fork 5.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Bug]: missing support for auto accessors with TypeScript annotations #15205
Comments
Hey @bradzacher! We really appreciate you taking the time to report an issue. The collaborators on this project attempt to help as many people as possible, but we're a limited number of volunteers, so it's possible this won't be addressed swiftly. If you need any help, or just have general Babel or JavaScript questions, we have a vibrant Slack community that typically always has someone willing to help. You can sign-up here for an invite. |
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [prettier](https://prettier.io) ([source](https://github.com/prettier/prettier)) | devDependencies | patch | [`2.8.1` -> `2.8.2`](https://renovatebot.com/diffs/npm/prettier/2.8.1/2.8.2) | --- ### Release Notes <details> <summary>prettier/prettier</summary> ### [`v2.8.2`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#​282) [Compare Source](prettier/prettier@2.8.1...2.8.2) [diff](prettier/prettier@2.8.1...2.8.2) ##### Don't lowercase link references ([#​13155](prettier/prettier#13155) by [@​DerekNonGeneric](https://github.com/DerekNonGeneric) & [@​fisker](https://github.com/fisker)) <!-- prettier-ignore --> ```markdown <!-- Input --> We now don't strictly follow the release notes format suggested by [Keep a Changelog]. [Keep a Changelog]: https://example.com/ <!-- Prettier 2.8.1 --> We now don't strictly follow the release notes format suggested by [Keep a Changelog]. [keep a changelog]: https://example.com/ <!-- ^^^^^^^^^^^^^^^^^^ lowercased --> <!-- Prettier 2.8.2 --> <Same as input> ``` ##### Preserve self-closing tags ([#​13691](prettier/prettier#13691) by [@​dcyriller](https://github.com/dcyriller)) <!-- prettier-ignore --> ```hbs {{! Input }} <div /> <div></div> <custom-component /> <custom-component></custom-component> <i /> <i></i> <Component /> <Component></Component> {{! Prettier 2.8.1 }} <div></div> <div></div> <custom-component></custom-component> <custom-component></custom-component> <i></i> <i></i> <Component /> <Component /> {{! Prettier 2.8.2 }} <div /> <div></div> <custom-component /> <custom-component></custom-component> <i /> <i></i> <Component /> <Component /> ``` ##### Allow custom "else if"-like blocks with block params ([#​13930](prettier/prettier#13930) by [@​jamescdavis](https://github.com/jamescdavis)) [#​13507](prettier/prettier#13507) added support for custom block keywords used with `else`, but failed to allow block params. This updates printer-glimmer to allow block params with custom "else if"-like blocks. <!-- prettier-ignore --> ```hbs {{! Input }} {{#when isAtWork as |work|}} Ship that {{work}}! {{else when isReading as |book|}} You can finish {{book}} eventually... {{else}} Go to bed! {{/when}} {{! Prettier 2.8.1 }} {{#when isAtWork as |work|}} Ship that {{work}}! {{else when isReading}} You can finish {{book}} eventually... {{else}} Go to bed! {{/when}} {{! Prettier 2.8.2 }} {{#when isAtWork as |work|}} Ship that {{work}}! {{else when isReading as |book|}} You can finish {{book}} eventually... {{else}} Go to bed! {{/when}} ``` ##### Preserve empty lines between nested SCSS maps ([#​13931](prettier/prettier#13931) by [@​jneander](https://github.com/jneander)) <!-- prettier-ignore --> ```scss /* Input */ $map: ( 'one': ( 'key': 'value', ), 'two': ( 'key': 'value', ), ) /* Prettier 2.8.1 */ $map: ( 'one': ( 'key': 'value', ), 'two': ( 'key': 'value', ), ) /* Prettier 2.8.2 */ $map: ( 'one': ( 'key': 'value', ), 'two': ( 'key': 'value', ), ) ``` ##### Fix missing parentheses when an expression statement starts with `let[` ([#​14000](prettier/prettier#14000), [#​14044](prettier/prettier#14044) by [@​fisker](https://github.com/fisker), [@​thorn0](https://github.com/thorn0)) <!-- prettier-ignore --> ```jsx // Input (let[0] = 2); // Prettier 2.8.1 let[0] = 2; // Prettier 2.8.1 (second format) SyntaxError: Unexpected token (1:5) > 1 | let[0] = 2; | ^ 2 | // Prettier 2.8.2 (let)[0] = 2; ``` ##### Fix semicolon duplicated at the end of LESS file ([#​14007](prettier/prettier#14007) by [@​mvorisek](https://github.com/mvorisek)) <!-- prettier-ignore --> ```less // Input @​variable: { field: something; }; // Prettier 2.8.1 @​variable: { field: something; }; ; // Prettier 2.8.2 @​variable: { field: something; }; ``` ##### Fix no space after unary minus when followed by opening parenthesis in LESS ([#​14008](prettier/prettier#14008) by [@​mvorisek](https://github.com/mvorisek)) <!-- prettier-ignore --> ```less // Input .unary_minus_single { margin: -(@​a); } .unary_minus_multi { margin: 0 -(@​a); } .binary_minus { margin: 0 - (@​a); } // Prettier 2.8.1 .unary_minus_single { margin: - (@​a); } .unary_minus_multi { margin: 0 - (@​a); } .binary_minus { margin: 0 - (@​a); } // Prettier 2.8.2 .unary_minus_single { margin: -(@​a); } .unary_minus_multi { margin: 0 -(@​a); } .binary_minus { margin: 0 - (@​a); } ``` ##### Do not change case of property name if inside a variable declaration in LESS ([#​14034](prettier/prettier#14034) by [@​mvorisek](https://github.com/mvorisek)) <!-- prettier-ignore --> ```less // Input @​var: { preserveCase: 0; }; // Prettier 2.8.1 @​var: { preservecase: 0; }; // Prettier 2.8.2 @​var: { preserveCase: 0; }; ``` ##### Fix formatting for auto-accessors with comments ([#​14038](prettier/prettier#14038) by [@​fisker](https://github.com/fisker)) <!-- prettier-ignore --> ```jsx // Input class A { @​dec() // comment accessor b; } // Prettier 2.8.1 class A { @​dec() accessor // comment b; } // Prettier 2.8.1 (second format) class A { @​dec() accessor; // comment b; } // Prettier 2.8.2 class A { @​dec() // comment accessor b; } ``` ##### Add parentheses for TSTypeQuery to improve readability ([#​14042](prettier/prettier#14042) by [@​onishi-kohei](https://github.com/onishi-kohei)) <!-- prettier-ignore --> ```tsx // Input a as (typeof node.children)[number] a as (typeof node.children)[] a as ((typeof node.children)[number])[] // Prettier 2.8.1 a as typeof node.children[number]; a as typeof node.children[]; a as typeof node.children[number][]; // Prettier 2.8.2 a as (typeof node.children)[number]; a as (typeof node.children)[]; a as (typeof node.children)[number][]; ``` ##### Fix displacing of comments in default switch case ([#​14047](prettier/prettier#14047) by [@​thorn0](https://github.com/thorn0)) It was a regression in Prettier 2.6.0. <!-- prettier-ignore --> ```jsx // Input switch (state) { default: result = state; // no change break; } // Prettier 2.8.1 switch (state) { default: // no change result = state; break; } // Prettier 2.8.2 switch (state) { default: result = state; // no change break; } ``` ##### Support type annotations on auto accessors via `babel-ts` ([#​14049](prettier/prettier#14049) by [@​sosukesuzuki](https://github.com/sosukesuzuki)) [The bug that `@babel/parser` cannot parse auto accessors with type annotations](babel/babel#15205) has been fixed. So we now support it via `babel-ts` parser. <!-- prettier-ignore --> ```tsx class Foo { accessor prop: number; } ``` ##### Fix formatting of empty type parameters ([#​14073](prettier/prettier#14073) by [@​fisker](https://github.com/fisker)) <!-- prettier-ignore --> ```jsx // Input const foo: bar</* comment */> = () => baz; // Prettier 2.8.1 Error: Comment "comment" was not printed. Please report this error! // Prettier 2.8.2 const foo: bar</* comment */> = () => baz; ``` ##### Add parentheses to head of `ExpressionStatement` instead of the whole statement ([#​14077](prettier/prettier#14077) by [@​fisker](https://github.com/fisker)) <!-- prettier-ignore --> ```jsx // Input ({}).toString.call(foo) === "[object Array]" ? foo.forEach(iterateArray) : iterateObject(foo); // Prettier 2.8.1 ({}.toString.call(foo) === "[object Array]" ? foo.forEach(iterateArray) : iterateObject(foo)); // Prettier 2.8.2 ({}).toString.call(foo.forEach) === "[object Array]" ? foo.forEach(iterateArray) : iterateObject(foo); ``` ##### Fix comments after directive ([#​14081](prettier/prettier#14081) by [@​fisker](https://github.com/fisker)) <!-- prettier-ignore --> ```jsx // Input "use strict" /* comment */; // Prettier 2.8.1 (with other js parsers except `babel`) Error: Comment "comment" was not printed. Please report this error! // Prettier 2.8.2 <Same as input> ``` ##### Fix formatting for comments inside JSX attribute ([#​14082](prettier/prettier#14082) with by [@​fisker](https://github.com/fisker)) <!-- prettier-ignore --> ```jsx // Input function MyFunctionComponent() { <button label=/*old*/"new">button</button> } // Prettier 2.8.1 Error: Comment "old" was not printed. Please report this error! // Prettier 2.8.2 function MyFunctionComponent() { <button label=/*old*/ "new">button</button>; } ``` ##### Quote numeric keys for json-stringify parser ([#​14083](prettier/prettier#14083) by [@​fisker](https://github.com/fisker)) <!-- prettier-ignore --> ```jsx // Input {0: 'value'} // Prettier 2.8.1 { 0: "value" } // Prettier 2.8.2 { "0": "value" } ``` ##### Fix removing commas from function arguments in maps ([#​14089](prettier/prettier#14089) by [@​sosukesuzuki](https://github.com/sosukesuzuki)) <!-- prettier-ignore --> ```scss /* Input */ $foo: map-fn( ( "#{prop}": inner-fn($first, $second), ) ); /* Prettier 2.8.1 */ $foo: map-fn(("#{prop}": inner-fn($first $second))); /* Prettier 2.8.2 */ $foo: map-fn( ( "#{prop}": inner-fn($first, $second), ) ); ``` ##### Do not insert space in LESS property access ([#​14103](prettier/prettier#14103) by [@​fisker](https://github.com/fisker)) <!-- prettier-ignore --> ```less // Input a { color: @​colors[@​white]; } // Prettier 2.8.1 a { color: @​colors[ @​white]; } // Prettier 2.8.2 <Same as input> ``` </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC45MC4wIiwidXBkYXRlZEluVmVyIjoiMzQuOTcuNSJ9--> Co-authored-by: cabr2-bot <[email protected]> Reviewed-on: https://codeberg.org/Calciumdibromid/CaBr2/pulls/1708 Reviewed-by: Epsilon_02 <[email protected]> Co-authored-by: Calciumdibromid Bot <[email protected]> Co-committed-by: Calciumdibromid Bot <[email protected]>
💻
How are you using Babel?
Programmatic API (
babel.transform
,babel.parse
)Input code
Configuration file name
No response
Configuration
https://babeljs.io/repl#?browsers=&build=&builtIns=false&corejs=3.6&spec=false&loose=false&code_lz=MYGwhgzhAEBiD29oG8BQ0PTMYBTK8ATtAA6HwkBc0EALoQJYB2A5tALzQCMA3KgL6ogA&debug=false&forceAllTransforms=false&shippedProposals=false&circleciRepo=&evaluate=true&fileSize=true&timeTravel=false&sourceType=module&lineWrap=true&presets=stage-2%2Cstage-3%2Ctypescript&prettier=true&targets=&version=7.20.4&assumptions=%7B%7D
Current and expected behavior
Current:
Expected:
parses fine as it's valid TS syntax
Environment
Website
Possible solution
Add support for type annotations on auto-accessors when parsing TS
Additional context
It looks like there is support for TS modifiers including
abstract
, but type annotations are not allowedThe text was updated successfully, but these errors were encountered: