Skip to content
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

[array-type] Incorrect fix when using an Array of arrow functions with rest parameters #4756

Closed
3 tasks done
cheit-epic opened this issue Mar 28, 2022 · 3 comments · Fixed by #4971
Closed
3 tasks done
Labels
bug has pr package: eslint-plugin

Comments

@cheit-epic
Copy link

cheit-epic commented Mar 28, 2022

  • I have tried restarting my IDE and the issue persists.
  • I have updated to the latest version of the packages.
  • I have read the FAQ and my problem is not listed.

Repro

{
  "rules": {
    "@typescript-eslint/array-type": "error"
  }
}
const foo: Array<new (...args: any[]) => void> = [];

Expected Result

const foo: (new (...args: any[]) => void)[] = [];

Actual Result

const foo: new (...args: any[]) => void[] = [];

The lack of parentheses changes the type to be "a function that returns void[]" rather than "an array of functions that return void"

Versions

package version
@typescript-eslint/eslint-plugin 5.17.0
@typescript-eslint/parser 5.17.0
TypeScript 4.4.4
ESLint 8.8.0
node 8.1.0
@cheit-epic cheit-epic added package: eslint-plugin triage labels Mar 28, 2022
@bradzacher bradzacher added bug accepting prs and removed triage labels Mar 28, 2022
@bradzacher
Copy link
Member

bradzacher commented Mar 28, 2022

Same story with us not handling precedence correctly. We can reuse our new functions to help fix this.

@bradharms
Copy link

bradharms commented May 12, 2022

The title of this report may be wrong. The issue seems to be more with the type of an array of a constructor that takes a rest parameter:

Array<new (...args: any[]) => any> is corrected as new (...args: any[]) => any[]

I don't see the problem occurring for an array of functions:

Array<(...args: any[]) => any> is corrected as ((...args: any[]) => any)[]

@armano2 armano2 added has pr and removed accepting prs labels May 14, 2022
@armano2
Copy link
Member

armano2 commented May 14, 2022

@bradharms correct, issue is present for type constructors TSConstructorType

JoshuaKGoldberg pushed a commit that referenced this issue May 14, 2022
…tructor types #4756 (#4971)

fix(eslint-plugin): add missing parens in array-type for constructor types #4756
crapStone pushed a commit to Calciumdibromid/CaBr2 that referenced this issue May 19, 2022
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint) | devDependencies | minor | [`5.23.0` -> `5.25.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2feslint-plugin/5.23.0/5.25.0) |
| [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint) | devDependencies | minor | [`5.23.0` -> `5.25.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/5.23.0/5.25.0) |

---

### Release Notes

<details>
<summary>typescript-eslint/typescript-eslint (@&#8203;typescript-eslint/eslint-plugin)</summary>

### [`v5.25.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#&#8203;5250-httpsgithubcomtypescript-eslinttypescript-eslintcomparev5240v5250-2022-05-17)

[Compare Source](typescript-eslint/typescript-eslint@v5.24.0...v5.25.0)

##### Bug Fixes

-   **eslint-plugin:** \[typedef] stop enforcing rule for assignment expressions ([#&#8203;4958](typescript-eslint/typescript-eslint#4958)) ([04a216c](typescript-eslint/typescript-eslint@04a216c))
-   **eslint-plugin:** strict config should not extend recommended ([#&#8203;5005](typescript-eslint/typescript-eslint#5005)) ([05d71c2](typescript-eslint/typescript-eslint@05d71c2))
-   **website:** correct Presets link to be Configs ([#&#8203;5004](typescript-eslint/typescript-eslint#5004)) ([e18e91c](typescript-eslint/typescript-eslint@e18e91c))

##### Features

-   **eslint-plugin:** \[no-empty-function] new allow option overrideMethods ([#&#8203;4923](typescript-eslint/typescript-eslint#4923)) ([13c05ae](typescript-eslint/typescript-eslint@13c05ae))
-   **eslint-plugin:** deprecate `no-duplicate-imports` in favour of `import/no-duplicates` ([#&#8203;4973](typescript-eslint/typescript-eslint#4973)) ([1d2e41a](typescript-eslint/typescript-eslint@1d2e41a))
-   update to TypeScript 4.7-rc ([#&#8203;4829](typescript-eslint/typescript-eslint#4829)) ([6fe783c](typescript-eslint/typescript-eslint@6fe783c))

### [`v5.24.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#&#8203;5240-httpsgithubcomtypescript-eslinttypescript-eslintcomparev5230v5240-2022-05-16)

[Compare Source](typescript-eslint/typescript-eslint@v5.23.0...v5.24.0)

##### Bug Fixes

-   **eslint-plugin:** \[array-type] in fixer add missing parens for constructor types [#&#8203;4756](typescript-eslint/typescript-eslint#4756) ([#&#8203;4971](typescript-eslint/typescript-eslint#4971)) ([0377070](typescript-eslint/typescript-eslint@0377070))

##### Features

-   **eslint-plugin:** Add BigInt object type to default ban-types list ([#&#8203;4970](typescript-eslint/typescript-eslint#4970)) ([1867728](typescript-eslint/typescript-eslint@1867728))
-   **eslint-plugin:** add new 'strict' config ([#&#8203;4706](typescript-eslint/typescript-eslint#4706)) ([4a500b2](typescript-eslint/typescript-eslint@4a500b2))

</details>

<details>
<summary>typescript-eslint/typescript-eslint (@&#8203;typescript-eslint/parser)</summary>

### [`v5.25.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#&#8203;5250-httpsgithubcomtypescript-eslinttypescript-eslintcomparev5240v5250-2022-05-17)

[Compare Source](typescript-eslint/typescript-eslint@v5.24.0...v5.25.0)

**Note:** Version bump only for package [@&#8203;typescript-eslint/parser](https://github.com/typescript-eslint/parser)

### [`v5.24.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#&#8203;5240-httpsgithubcomtypescript-eslinttypescript-eslintcomparev5230v5240-2022-05-16)

[Compare Source](typescript-eslint/typescript-eslint@v5.23.0...v5.24.0)

**Note:** Version bump only for package [@&#8203;typescript-eslint/parser](https://github.com/typescript-eslint/parser)

</details>

---

### Configuration

📅 **Schedule**: 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 these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, click this checkbox.

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).

Co-authored-by: cabr2-bot <cabr2.help@gmail.com>
Reviewed-on: https://codeberg.org/Calciumdibromid/CaBr2/pulls/1357
Reviewed-by: 6543 <6543@noreply.codeberg.org>
Co-authored-by: Calciumdibromid Bot <cabr2_bot@noreply.codeberg.org>
Co-committed-by: Calciumdibromid Bot <cabr2_bot@noreply.codeberg.org>
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Jun 14, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug has pr package: eslint-plugin
Projects
None yet
4 participants