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

fix(eslint-plugin): correct crashes with getTypeArguments for ts < 3.7 #6767

Merged
merged 2 commits into from Mar 27, 2023

Conversation

armano2
Copy link
Member

@armano2 armano2 commented Mar 25, 2023

PR Checklist

Overview

Tested in playground on ts 3.5.1

TypeError: e.getTypeArguments is not a function
Occurred while linting <input>:4
Rule: "@typescript-eslint/no-unsafe-argument"
    at FunctionSignature.create (https://typescript-eslint.io/sandbox/index.js:20:1047289)
    at CallExpression, NewExpression (https://typescript-eslint.io/sandbox/index.js:20:1048838)
    at https://typescript-eslint.io/sandbox/index.js:20:259967
    at https://typescript-eslint.io/sandbox/index.js:20:250486
    at Array.forEach (<anonymous>)
    at Object.emit (https://typescript-eslint.io/sandbox/index.js:20:250474)
    at NodeEventGenerator$1.applySelector (https://typescript-eslint.io/sandbox/index.js:4:122618)
    at NodeEventGenerator$1.applySelectors (https://typescript-eslint.io/sandbox/index.js:4:122920)
    at NodeEventGenerator$1.enterNode (https://typescript-eslint.io/sandbox/index.js:4:123011)
    at CodePathAnalyzer$1.enterNode (https://typescript-eslint.io/sandbox/index.js:4:56566)

no-unsafe-argument

playground main
playground this branch

/*eslint "@typescript-eslint/no-unsafe-argument": "error"*/

declare function foo(...params: [number, string, any]): void;
foo(1, 'a', 1 as any);

no-misused-promises

playground main
playground this branch

/*eslint "@typescript-eslint/no-misused-promises": "error"*/

declare function foo(...params: [number]): void;
foo(1);

require-array-sort-compare

playground main
playground this branch

/*eslint "@typescript-eslint/require-array-sort-compare": ["error", { "ignoreStringArrays": true }] */

function f(a: string[]) {
  a.sort();
}

note: type rules are not working on ts 3.3 this is most likely related to playground bug tho

ref #1752

@typescript-eslint

This comment was marked as resolved.

@netlify
Copy link

netlify bot commented Mar 25, 2023

Deploy Preview for typescript-eslint ready!

Name Link
🔨 Latest commit f678b6d
🔍 Latest deploy log https://app.netlify.com/sites/typescript-eslint/deploys/642130e61d09360008281fad
😎 Deploy Preview https://deploy-preview-6767--typescript-eslint.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site settings.

@codecov
Copy link

codecov bot commented Mar 25, 2023

Codecov Report

Merging #6767 (8f47a06) into main (f5631e9) will increase coverage by 0.03%.
The diff coverage is 100.00%.

❗ Current head 8f47a06 differs from pull request most recent head f678b6d. Consider uploading reports for the commit f678b6d to get more accurate results

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #6767      +/-   ##
==========================================
+ Coverage   87.29%   87.33%   +0.03%     
==========================================
  Files         384      384              
  Lines       13139    13139              
  Branches     3859     3857       -2     
==========================================
+ Hits        11470    11475       +5     
+ Misses       1302     1298       -4     
+ Partials      367      366       -1     
Flag Coverage Δ
unittest 87.33% <100.00%> (+0.03%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
...ges/eslint-plugin/src/rules/no-misused-promises.ts 97.47% <100.00%> (ø)
...ages/eslint-plugin/src/rules/no-unsafe-argument.ts 83.95% <100.00%> (ø)
...int-plugin/src/rules/require-array-sort-compare.ts 88.23% <100.00%> (ø)
packages/type-utils/src/isTypeReadonly.ts 88.00% <100.00%> (+2.00%) ⬆️

... and 1 file with indirect coverage changes

@armano2 armano2 changed the title fix: correct crashes with getTypeArguments for ts < 3.7 fix(eslint-plugin): correct crashes with getTypeArguments for ts < 3.7 Mar 25, 2023
@armano2 armano2 added bug Something isn't working package: eslint-plugin Issues related to @typescript-eslint/eslint-plugin labels Mar 25, 2023
Copy link
Member

@bradzacher bradzacher left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that this isn't really necessary any more - we're about to merge our v6 that will bump the minimum we'll past 3.7

Also given nobody has reported this it's probably not worth adding in the inconsistency into the codebase just to fill the gap for a few weeks? WDYT?

@armano2
Copy link
Member Author

armano2 commented Mar 26, 2023

I think that this isn't really necessary any more - we're about to merge our v6 that will bump the minimum we'll past 3.7

Also given nobody has reported this it's probably not worth adding in the inconsistency into the codebase just to fill the gap for a few weeks? WDYT?

as we still support this in current version its better to fix this now, that have ppl ask about this in feature,

util.getTypeArguments should be removed / deprecated in v6

@bradzacher
Copy link
Member

that have ppl ask about this in feature

That's kind of my point - 3.7 is 3 years old - so a lot of these have built up in the codebase over the last 3 years and I don't believe we've gotten one report about breakages.

There's some 250k weekly downloads for 3.7 versions (0.6% of the TS user base) and that number is likely dwindling. People aren't going to migrate onto 3.7 - and people that are using it certainly won't be using the latest version of our tooling.

Put another way - the intersection of people that are on the latest version of our tooling and the people that use TS3.7 is likely exactly 0.

@armano2 armano2 merged commit 59eab58 into main Mar 27, 2023
35 of 38 checks passed
@armano2 armano2 deleted the fix/crash-getTypeArguments-ts-3.7 branch March 27, 2023 06:14
crapStone pushed a commit to Calciumdibromid/CaBr2 that referenced this pull request Mar 28, 2023
This PR contains the following updates:

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

---

### Release Notes

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

### [`v5.57.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#&#8203;5570-httpsgithubcomtypescript-eslinttypescript-eslintcomparev5560v5570-2023-03-27)

[Compare Source](typescript-eslint/typescript-eslint@v5.56.0...v5.57.0)

##### Bug Fixes

-   **eslint-plugin:** \[no-unnecessary-boolean-literal-compare] simplify fixer and add support for double negation ([#&#8203;6620](typescript-eslint/typescript-eslint#6620)) ([81c8519](typescript-eslint/typescript-eslint@81c8519))
-   **eslint-plugin:** correct crashes with getTypeArguments for ts < 3.7 ([#&#8203;6767](typescript-eslint/typescript-eslint#6767)) ([59eab58](typescript-eslint/typescript-eslint@59eab58))

##### Features

-   **eslint-plugin:** \[consistent-type-assertions] add suggestions for objectLiteralTypeAssertions ([#&#8203;6642](typescript-eslint/typescript-eslint#6642)) ([720e811](typescript-eslint/typescript-eslint@720e811))
-   **eslint-plugin:** \[consistent-type-assertions] autofix angle bracket assertions to as ([#&#8203;6641](typescript-eslint/typescript-eslint#6641)) ([ad8ea64](typescript-eslint/typescript-eslint@ad8ea64))
-   **eslint-plugin:** add `no-duplicate-type-constituents` rule ([#&#8203;5728](typescript-eslint/typescript-eslint#5728)) ([bc31078](typescript-eslint/typescript-eslint@bc31078))

</details>

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

### [`v5.57.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#&#8203;5570-httpsgithubcomtypescript-eslinttypescript-eslintcomparev5560v5570-2023-03-27)

[Compare Source](typescript-eslint/typescript-eslint@v5.56.0...v5.57.0)

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

</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 these updates 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:eyJjcmVhdGVkSW5WZXIiOiIzNS4yNC4yIiwidXBkYXRlZEluVmVyIjoiMzUuMjQuMiJ9-->

Co-authored-by: cabr2-bot <cabr2.help@gmail.com>
Reviewed-on: https://codeberg.org/Calciumdibromid/CaBr2/pulls/1831
Reviewed-by: Epsilon_02 <epsilon_02@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 Apr 9, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Something isn't working package: eslint-plugin Issues related to @typescript-eslint/eslint-plugin
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants