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

Exceptions when traversing using sibling, adjacent and nth-child selectors and non-standard AST nodes #13639

Comments

@bradzacher
Copy link
Contributor

@bradzacher bradzacher commented Aug 31, 2020

Tell us about your environment

  • ESLint Version: v7.7.0
  • Node Version: v12.14.1
  • npm Version: v6.13.4

What parser (default, @babel/eslint-parser, @typescript-eslint/parser, etc.) are you using?

@typescript-eslint/parser

Please show your full configuration:

Configuration
module.exports = {
  "parser": "@typescript-eslint/parser",
  "plugins": [ "eslint-plugin-test" ],
  "rules": { "test/test": "error" }
};

What did you do? Please include the actual source code causing the issue, as well as the command that you used to run ESLint.

eslint-plugin-test source:

exports.rules = {
    test: {
        create(context) {
            return {
                "Program ~ *": node => {
                    context.report({
                        message: "test",
                        node
                    })

                    // this code doesn't get a chance to get called :(
                }
            }
        }
    }
}

lint file source:

const foo: string = "bar"
eslint ./test.ts

What actually happened? Please include the actual, raw output from ESLint.

Oops! Something went wrong! :(

ESLint: 7.7.0

TypeError: Cannot read property 'length' of undefined
Occurred while linting /home/samual/test/index.ts:1
    at u (/home/samual/test/node_modules/esquery/dist/esquery.min.js:1:31904)
    at Function.l [as matches] (/home/samual/test/node_modules/esquery/dist/esquery.min.js:1:30807)
    at NodeEventGenerator.applySelector (/home/samual/test/node_modules/eslint/lib/linter/node-event-generator.js:253:21)
    at NodeEventGenerator.applySelectors (/home/samual/test/node_modules/eslint/lib/linter/node-event-generator.js:281:22)
    at NodeEventGenerator.enterNode (/home/samual/test/node_modules/eslint/lib/linter/node-event-generator.js:297:14)
    at CodePathAnalyzer.enterNode (/home/samual/test/node_modules/eslint/lib/linter/code-path-analysis/code-path-analyzer.js:673:23)
    at /home/samual/test/node_modules/eslint/lib/linter/linter.js:949:32
    at Array.forEach (<anonymous>)
    at runRules (/home/samual/test/node_modules/eslint/lib/linter/linter.js:944:15)
    at Linter._verifyWithoutProcessors (/home/samual/test/node_modules/eslint/lib/linter/linter.js:1170:31)

Context

Original issue: typescript-eslint/typescript-eslint#2439

Investigation so far:

Our parser (@typescript-eslint/parser) returns an extended list of visitor-keys (as specified by the ESLint docs) right here

However esquery uses its own (hard coded) visitor keys for 3 selectors:

So I think that this is this something we'll have to PR into the underlying esquery library?

@mdjermanovic
Copy link
Member

@mdjermanovic mdjermanovic commented Aug 31, 2020

I think we should treat this as a bug, since our selectors documentation lists those selectors, so it's reasonable to expect that they can work with custom parsers.

Also, they'll crash even with the default parser on any JSX code, as in this demo.

It's true that this needs to be supported in esquery first, so we could pass visitors keys.

Relevant PR: estools/esquery#112

An alternative is to remove those selectors from the documentation. If this doesn't get fixed, it seems best not to use them at all.

samualtnorman added a commit to samualtnorman/eslint-plugin-hackmud2 that referenced this issue Sep 1, 2020
disabled no-closure-siblings rule to prevent crash with typescript plugin (see eslint/eslint#13639)
@brettz9
Copy link
Contributor

@brettz9 brettz9 commented Feb 5, 2021

esquery has just published a new release with the support for custom visitor keys, so I think this should no longer be blocking.

@brettz9
Copy link
Contributor

@brettz9 brettz9 commented Feb 5, 2021

Also, has:() selectors are also supported which perhaps the eslint docs can be updated to indicate (the subject indicator is also supported, but per estools/esquery#61 , that implementation is buggy while the :has() one was working enough to be used as a base for the former–though with one issue on relative keys mentioned there).

@mdjermanovic
Copy link
Member

@mdjermanovic mdjermanovic commented Feb 7, 2021

@brettz9 can you please open a separate issue about the new esquery syntax?

ESLint selectors are using esquery, but we're also doing some optimizations and calculating specificity in NodeEventGenerator, so it's possible that some additional work has to be done before we can say that ESLint fully supports new selectors.

@brettz9
Copy link
Contributor

@brettz9 brettz9 commented Feb 7, 2021

@mdjermanovic : Thanks, I've filed #14076 .

ota-meshi added a commit to ota-meshi/eslint that referenced this issue Feb 11, 2021
Triage automation moved this from Pull Request Opened to Complete Feb 12, 2021
mdjermanovic pushed a commit that referenced this issue Feb 12, 2021
* Fix: Crash with esquery when using JSX (fixes #13639)

* Chore: Add and change test cases related to esquery options

* Chore: Add test cases related to esquery options
mergify bot added a commit to p6m7g8/p6common that referenced this issue Mar 18, 2021
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

If you make any changes to it yourself then they will take precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps [eslint](https://github.com/eslint/eslint) from 7.15.0 to 7.22.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/eslint/eslint/releases">eslint's releases</a>.</em></p>
<blockquote>
<h2>v7.22.0</h2>
<ul>
<li><a href="https://github.com/eslint/eslint/commit/3a432d82b3a5710aff7da20302fe0b94fedc46c2"><code>3a432d8</code></a> Docs: Improve documentation for indent rule (<a href="https://github.com/eslint/eslint/issues/14168">#14168</a>) (Serkan Özel)</li>
<li><a href="https://github.com/eslint/eslint/commit/f62ec8d30d925e70e4d0d40640857c587ac2e116"><code>f62ec8d</code></a> Update: throw error when fix range is invalid (<a href="https://github.com/eslint/eslint/issues/14142">#14142</a>) (Jacob Bandes-Storch)</li>
<li><a href="https://github.com/eslint/eslint/commit/0eecad271358f753730741fcfcb2f7cc915c1fa7"><code>0eecad2</code></a> Upgrade: Update lodash in package.json to V 4.17.21 (<a href="https://github.com/eslint/eslint/issues/14159">#14159</a>) (Basem Al-Nabulsi)</li>
<li><a href="https://github.com/eslint/eslint/commit/5ad91aa7df3d6bc185786e6eccd9e055fd951055"><code>5ad91aa</code></a> Update: report es2021 globals in no-extend-native (refs <a href="https://github.com/eslint/eslint/issues/13602">#13602</a>) (<a href="https://github.com/eslint/eslint/issues/14177">#14177</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/c295581aca4e08ec4ae8e5ee5726a6f454a3ee26"><code>c295581</code></a> Chore: remove leftover JSDoc from lint-result-cache (<a href="https://github.com/eslint/eslint/issues/14176">#14176</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/0d541f9d9d58966372e2055a8f69fb9483d56a4b"><code>0d541f9</code></a> Chore: Reduce lodash usage (<a href="https://github.com/eslint/eslint/issues/14178">#14178</a>) (Stephen Wade)</li>
<li><a href="https://github.com/eslint/eslint/commit/27a67d71ffa9bbd7af02ae448844e127bcf956dc"><code>27a67d7</code></a> Sponsors: Sync README with website (ESLint Jenkins)</li>
<li><a href="https://github.com/eslint/eslint/commit/459d821f4a599501ceb002f9d7a5034fc45ffbb0"><code>459d821</code></a> Chore: upgrade dependencies of browser test (<a href="https://github.com/eslint/eslint/issues/14127">#14127</a>) (Pig Fang)</li>
<li><a href="https://github.com/eslint/eslint/commit/ebfb63a682004a008f2707dbad616e5ae1630b2c"><code>ebfb63a</code></a> Sponsors: Sync README with website (ESLint Jenkins)</li>
<li><a href="https://github.com/eslint/eslint/commit/3ba029fbffd44068be93254890fc2aec3e92c212"><code>3ba029f</code></a> Docs: Remove Extraneous Dash (<a href="https://github.com/eslint/eslint/issues/14164">#14164</a>) (Danny Hurlburt)</li>
<li><a href="https://github.com/eslint/eslint/commit/6f4540ea7ea39775906526506fd7abd7ea97610c"><code>6f4540e</code></a> Sponsors: Sync README with website (ESLint Jenkins)</li>
<li><a href="https://github.com/eslint/eslint/commit/ddf361ca2a2a01a9974f421e5f62270df282d0e8"><code>ddf361c</code></a> Docs: Fix Formatting (<a href="https://github.com/eslint/eslint/issues/14154">#14154</a>) (Danny Hurlburt)</li>
<li><a href="https://github.com/eslint/eslint/commit/c0d2ac16f8f9c75c62c78e9fe6a24a25ba0d7828"><code>c0d2ac1</code></a> Sponsors: Sync README with website (ESLint Jenkins)</li>
<li><a href="https://github.com/eslint/eslint/commit/a8df03efe3bc47665d2112c2cdd5bead337d475d"><code>a8df03e</code></a> Docs: Clarify triage process (<a href="https://github.com/eslint/eslint/issues/14117">#14117</a>) (Nicholas C. Zakas)</li>
</ul>
<h2>v7.21.0</h2>
<ul>
<li><a href="https://github.com/eslint/eslint/commit/3cd5440b94d5fa4f11a09f50b685f6150f0c2d41"><code>3cd5440</code></a> Upgrade: @eslint/eslintrc to 0.4.0 (<a href="https://github.com/eslint/eslint/issues/14147">#14147</a>) (Brandon Mills)</li>
<li><a href="https://github.com/eslint/eslint/commit/c0b8c71df4d0b3f54b20587432d9133741985d5c"><code>c0b8c71</code></a> Upgrade: Puppeteer to 7.1.0 (<a href="https://github.com/eslint/eslint/issues/14122">#14122</a>) (Tim van der Lippe)</li>
<li><a href="https://github.com/eslint/eslint/commit/08ae31e539e381cd0eabf6393fa5c20f1d59125f"><code>08ae31e</code></a> New: Implement cacheStrategy (refs <a href="https://github.com/eslint/rfcs/issues/63">eslint/rfcs#63</a>) (<a href="https://github.com/eslint/eslint/issues/14119">#14119</a>) (Manu Chambon)</li>
<li><a href="https://github.com/eslint/eslint/commit/5e51fd28dc773c11c924450d24088f97f2824f00"><code>5e51fd2</code></a> Update: do not ignore symbolic links (fixes <a href="https://github.com/eslint/eslint/issues/13551">#13551</a>, fixes <a href="https://github.com/eslint/eslint/issues/13615">#13615</a>) (<a href="https://github.com/eslint/eslint/issues/14126">#14126</a>) (Pig Fang)</li>
<li><a href="https://github.com/eslint/eslint/commit/87c43a5d7ea2018cffd6d9b5c431ecb60caaf0d6"><code>87c43a5</code></a> Chore: improve a few comments and fix typos (<a href="https://github.com/eslint/eslint/issues/14125">#14125</a>) (Tobias Nießen)</li>
<li><a href="https://github.com/eslint/eslint/commit/e19c51ea2ef2cf666d94218c66f6b223bb2e9dae"><code>e19c51e</code></a> Sponsors: Sync README with website (ESLint Jenkins)</li>
<li><a href="https://github.com/eslint/eslint/commit/b8aea9988b6451b6a05af4f3ede8d6ed5c1d9926"><code>b8aea99</code></a> Fix: pluralize 'line' to 'lines' in max-lines-per-function description (<a href="https://github.com/eslint/eslint/issues/14115">#14115</a>) (Trevin Hofmann)</li>
<li><a href="https://github.com/eslint/eslint/commit/f5b53e285ab5286ea382d73b379b820f649c20d0"><code>f5b53e2</code></a> Sponsors: Sync README with website (ESLint Jenkins)</li>
<li><a href="https://github.com/eslint/eslint/commit/eee12134ce0956e9f825c1630776b1731551a948"><code>eee1213</code></a> Sponsors: Sync README with website (ESLint Jenkins)</li>
<li><a href="https://github.com/eslint/eslint/commit/5c4d7ea8d2e8d137c42b918dc99a84b4a5fed9b3"><code>5c4d7ea</code></a> Sponsors: Sync README with website (ESLint Jenkins)</li>
</ul>
<h2>v7.20.0</h2>
<ul>
<li><a href="https://github.com/eslint/eslint/commit/f4ac3b0e7072fbd3c14e9c64ff0c2c255a4eb730"><code>f4ac3b0</code></a> Docs: fix sibling selector descriptions (<a href="https://github.com/eslint/eslint/issues/14099">#14099</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/9d6063add931f0803cae1676d5df307baf114360"><code>9d6063a</code></a> Fix: Crash with esquery when using JSX (fixes <a href="https://github.com/eslint/eslint/issues/13639">#13639</a>) (<a href="https://github.com/eslint/eslint/issues/14072">#14072</a>) (Yosuke Ota)</li>
<li><a href="https://github.com/eslint/eslint/commit/a0871f1840060bd23cfe0952a096b107142db2f0"><code>a0871f1</code></a> Docs: Triage process (<a href="https://github.com/eslint/eslint/issues/14014">#14014</a>) (Nicholas C. Zakas)</li>
<li><a href="https://github.com/eslint/eslint/commit/ad9076183bc2c2029525edfc4596e403999348d1"><code>ad90761</code></a> Update: add enforceForJSX option to no-unused-expressions rule (<a href="https://github.com/eslint/eslint/issues/14012">#14012</a>) (Duncan Beevers)</li>
<li><a href="https://github.com/eslint/eslint/commit/d6c84af67318537177ffac0120a81af08e3e9df4"><code>d6c84af</code></a> Fix: <code>--init</code> autoconfig shouldn't add deprecated rules (fixes <a href="https://github.com/eslint/eslint/issues/14017">#14017</a>) (<a href="https://github.com/eslint/eslint/issues/14060">#14060</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/9b277a16a7261e51b7ba36d6de7f996e9203a6a4"><code>9b277a1</code></a> Fix: Support ENOTDIR error code in the folder existence checking utility (<a href="https://github.com/eslint/eslint/issues/13973">#13973</a>) (Constantine Genchevsky)</li>
<li><a href="https://github.com/eslint/eslint/commit/7aeb12798f2b9da706f3593f26a02e717929c9af"><code>7aeb127</code></a> Upgrade: pin @babel/code-frame@7.12.11 (<a href="https://github.com/eslint/eslint/issues/14067">#14067</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/b4e2af5db1c29343ffec2cd104b04bf39b77ee56"><code>b4e2af5</code></a> Docs: Add more fields to bug report template (<a href="https://github.com/eslint/eslint/issues/14039">#14039</a>) (Nicholas C. Zakas)</li>
<li><a href="https://github.com/eslint/eslint/commit/96f1d49a4647e59f2fb918be096654e290513adc"><code>96f1d49</code></a> Sponsors: Sync README with website (ESLint Jenkins)</li>
<li><a href="https://github.com/eslint/eslint/commit/cb27b0abeda6dfee55dd43b9cbe12afad321f55d"><code>cb27b0a</code></a> Build: package.json update for eslint-config-eslint release (ESLint Jenkins)</li>
<li><a href="https://github.com/eslint/eslint/commit/4cab165bf4e6e5e9f42a59a37a8ff2548c0af87d"><code>4cab165</code></a> Sponsors: Sync README with website (ESLint Jenkins)</li>
</ul>
<h2>v7.19.0</h2>
<ul>
<li><a href="https://github.com/eslint/eslint/commit/ce7f06121d9eb9cc2b3da24b4456b4d382e1413b"><code>ce7f061</code></a> Update: add shadowed variable loc to message in no-shadow (fixes <a href="https://github.com/eslint/eslint/issues/13646">#13646</a>) (<a href="https://github.com/eslint/eslint/issues/13841">#13841</a>) (t-mangoe)</li>
<li><a href="https://github.com/eslint/eslint/commit/c60e23ff306a14ca6eabcadb275ed27995fcc6e4"><code>c60e23f</code></a> Update: fix <code>let</code> logic in for-in and for-of loops in no-extra-parens (<a href="https://github.com/eslint/eslint/issues/14011">#14011</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/d76e8f69bd791357c67ada7b5c55608acf29b622"><code>d76e8f6</code></a> Fix: no-useless-rename invalid autofix with parenthesized identifiers (<a href="https://github.com/eslint/eslint/issues/14032">#14032</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/5800d921144ec330b6ee7cd03364434007331354"><code>5800d92</code></a> Docs: Clarify stylistic rule update policy (<a href="https://github.com/eslint/eslint/issues/14052">#14052</a>) (Brandon Mills)</li>
<li><a href="https://github.com/eslint/eslint/commit/0ccf6d200147437b338cadb34546451972befd75"><code>0ccf6d2</code></a> Docs: remove configuring.md (<a href="https://github.com/eslint/eslint/issues/14036">#14036</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/65bb0abde56f72586036fff151aa2d13f1b7be6c"><code>65bb0ab</code></a> Chore: Clean up new issue workflow (<a href="https://github.com/eslint/eslint/issues/14040">#14040</a>) (Nicholas C. Zakas)</li>
<li><a href="https://github.com/eslint/eslint/commit/e1da90fc414a3c9c16f52db4a5bd81bd4f9532a4"><code>e1da90f</code></a> Fix: nested indenting for offsetTernaryExpressions: true (fixes <a href="https://github.com/eslint/eslint/issues/13971">#13971</a>) (<a href="https://github.com/eslint/eslint/issues/13972">#13972</a>) (Chris Brody)</li>
<li><a href="https://github.com/eslint/eslint/commit/1a078b9166f29cb3760435ddbc1a0da4a0974d4a"><code>1a078b9</code></a> Update: check ternary <code>:</code> even if <code>?</code> was reported in space-infix-ops (<a href="https://github.com/eslint/eslint/issues/13963">#13963</a>) (Milos Djermanovic)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/eslint/eslint/blob/master/CHANGELOG.md">eslint's changelog</a>.</em></p>
<blockquote>
<p>v7.22.0 - March 12, 2021</p>
<ul>
<li><a href="https://github.com/eslint/eslint/commit/3a432d82b3a5710aff7da20302fe0b94fedc46c2"><code>3a432d8</code></a> Docs: Improve documentation for indent rule (<a href="https://github.com/eslint/eslint/issues/14168">#14168</a>) (Serkan Özel)</li>
<li><a href="https://github.com/eslint/eslint/commit/f62ec8d30d925e70e4d0d40640857c587ac2e116"><code>f62ec8d</code></a> Update: throw error when fix range is invalid (<a href="https://github.com/eslint/eslint/issues/14142">#14142</a>) (Jacob Bandes-Storch)</li>
<li><a href="https://github.com/eslint/eslint/commit/0eecad271358f753730741fcfcb2f7cc915c1fa7"><code>0eecad2</code></a> Upgrade: Update lodash in package.json to V 4.17.21 (<a href="https://github.com/eslint/eslint/issues/14159">#14159</a>) (Basem Al-Nabulsi)</li>
<li><a href="https://github.com/eslint/eslint/commit/5ad91aa7df3d6bc185786e6eccd9e055fd951055"><code>5ad91aa</code></a> Update: report es2021 globals in no-extend-native (refs <a href="https://github.com/eslint/eslint/issues/13602">#13602</a>) (<a href="https://github.com/eslint/eslint/issues/14177">#14177</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/c295581aca4e08ec4ae8e5ee5726a6f454a3ee26"><code>c295581</code></a> Chore: remove leftover JSDoc from lint-result-cache (<a href="https://github.com/eslint/eslint/issues/14176">#14176</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/0d541f9d9d58966372e2055a8f69fb9483d56a4b"><code>0d541f9</code></a> Chore: Reduce lodash usage (<a href="https://github.com/eslint/eslint/issues/14178">#14178</a>) (Stephen Wade)</li>
<li><a href="https://github.com/eslint/eslint/commit/27a67d71ffa9bbd7af02ae448844e127bcf956dc"><code>27a67d7</code></a> Sponsors: Sync README with website (ESLint Jenkins)</li>
<li><a href="https://github.com/eslint/eslint/commit/459d821f4a599501ceb002f9d7a5034fc45ffbb0"><code>459d821</code></a> Chore: upgrade dependencies of browser test (<a href="https://github.com/eslint/eslint/issues/14127">#14127</a>) (Pig Fang)</li>
<li><a href="https://github.com/eslint/eslint/commit/ebfb63a682004a008f2707dbad616e5ae1630b2c"><code>ebfb63a</code></a> Sponsors: Sync README with website (ESLint Jenkins)</li>
<li><a href="https://github.com/eslint/eslint/commit/3ba029fbffd44068be93254890fc2aec3e92c212"><code>3ba029f</code></a> Docs: Remove Extraneous Dash (<a href="https://github.com/eslint/eslint/issues/14164">#14164</a>) (Danny Hurlburt)</li>
<li><a href="https://github.com/eslint/eslint/commit/6f4540ea7ea39775906526506fd7abd7ea97610c"><code>6f4540e</code></a> Sponsors: Sync README with website (ESLint Jenkins)</li>
<li><a href="https://github.com/eslint/eslint/commit/ddf361ca2a2a01a9974f421e5f62270df282d0e8"><code>ddf361c</code></a> Docs: Fix Formatting (<a href="https://github.com/eslint/eslint/issues/14154">#14154</a>) (Danny Hurlburt)</li>
<li><a href="https://github.com/eslint/eslint/commit/c0d2ac16f8f9c75c62c78e9fe6a24a25ba0d7828"><code>c0d2ac1</code></a> Sponsors: Sync README with website (ESLint Jenkins)</li>
<li><a href="https://github.com/eslint/eslint/commit/a8df03efe3bc47665d2112c2cdd5bead337d475d"><code>a8df03e</code></a> Docs: Clarify triage process (<a href="https://github.com/eslint/eslint/issues/14117">#14117</a>) (Nicholas C. Zakas)</li>
</ul>
<p>v7.21.0 - February 27, 2021</p>
<ul>
<li><a href="https://github.com/eslint/eslint/commit/3cd5440b94d5fa4f11a09f50b685f6150f0c2d41"><code>3cd5440</code></a> Upgrade: @eslint/eslintrc to 0.4.0 (<a href="https://github.com/eslint/eslint/issues/14147">#14147</a>) (Brandon Mills)</li>
<li><a href="https://github.com/eslint/eslint/commit/c0b8c71df4d0b3f54b20587432d9133741985d5c"><code>c0b8c71</code></a> Upgrade: Puppeteer to 7.1.0 (<a href="https://github.com/eslint/eslint/issues/14122">#14122</a>) (Tim van der Lippe)</li>
<li><a href="https://github.com/eslint/eslint/commit/08ae31e539e381cd0eabf6393fa5c20f1d59125f"><code>08ae31e</code></a> New: Implement cacheStrategy (refs <a href="https://github.com/eslint/rfcs/issues/63">eslint/rfcs#63</a>) (<a href="https://github.com/eslint/eslint/issues/14119">#14119</a>) (Manu Chambon)</li>
<li><a href="https://github.com/eslint/eslint/commit/5e51fd28dc773c11c924450d24088f97f2824f00"><code>5e51fd2</code></a> Update: do not ignore symbolic links (fixes <a href="https://github.com/eslint/eslint/issues/13551">#13551</a>, fixes <a href="https://github.com/eslint/eslint/issues/13615">#13615</a>) (<a href="https://github.com/eslint/eslint/issues/14126">#14126</a>) (Pig Fang)</li>
<li><a href="https://github.com/eslint/eslint/commit/87c43a5d7ea2018cffd6d9b5c431ecb60caaf0d6"><code>87c43a5</code></a> Chore: improve a few comments and fix typos (<a href="https://github.com/eslint/eslint/issues/14125">#14125</a>) (Tobias Nießen)</li>
<li><a href="https://github.com/eslint/eslint/commit/e19c51ea2ef2cf666d94218c66f6b223bb2e9dae"><code>e19c51e</code></a> Sponsors: Sync README with website (ESLint Jenkins)</li>
<li><a href="https://github.com/eslint/eslint/commit/b8aea9988b6451b6a05af4f3ede8d6ed5c1d9926"><code>b8aea99</code></a> Fix: pluralize 'line' to 'lines' in max-lines-per-function description (<a href="https://github.com/eslint/eslint/issues/14115">#14115</a>) (Trevin Hofmann)</li>
<li><a href="https://github.com/eslint/eslint/commit/f5b53e285ab5286ea382d73b379b820f649c20d0"><code>f5b53e2</code></a> Sponsors: Sync README with website (ESLint Jenkins)</li>
<li><a href="https://github.com/eslint/eslint/commit/eee12134ce0956e9f825c1630776b1731551a948"><code>eee1213</code></a> Sponsors: Sync README with website (ESLint Jenkins)</li>
<li><a href="https://github.com/eslint/eslint/commit/5c4d7ea8d2e8d137c42b918dc99a84b4a5fed9b3"><code>5c4d7ea</code></a> Sponsors: Sync README with website (ESLint Jenkins)</li>
</ul>
<p>v7.20.0 - February 12, 2021</p>
<ul>
<li><a href="https://github.com/eslint/eslint/commit/f4ac3b0e7072fbd3c14e9c64ff0c2c255a4eb730"><code>f4ac3b0</code></a> Docs: fix sibling selector descriptions (<a href="https://github.com/eslint/eslint/issues/14099">#14099</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/9d6063add931f0803cae1676d5df307baf114360"><code>9d6063a</code></a> Fix: Crash with esquery when using JSX (fixes <a href="https://github.com/eslint/eslint/issues/13639">#13639</a>) (<a href="https://github.com/eslint/eslint/issues/14072">#14072</a>) (Yosuke Ota)</li>
<li><a href="https://github.com/eslint/eslint/commit/a0871f1840060bd23cfe0952a096b107142db2f0"><code>a0871f1</code></a> Docs: Triage process (<a href="https://github.com/eslint/eslint/issues/14014">#14014</a>) (Nicholas C. Zakas)</li>
<li><a href="https://github.com/eslint/eslint/commit/ad9076183bc2c2029525edfc4596e403999348d1"><code>ad90761</code></a> Update: add enforceForJSX option to no-unused-expressions rule (<a href="https://github.com/eslint/eslint/issues/14012">#14012</a>) (Duncan Beevers)</li>
<li><a href="https://github.com/eslint/eslint/commit/d6c84af67318537177ffac0120a81af08e3e9df4"><code>d6c84af</code></a> Fix: <code>--init</code> autoconfig shouldn't add deprecated rules (fixes <a href="https://github.com/eslint/eslint/issues/14017">#14017</a>) (<a href="https://github.com/eslint/eslint/issues/14060">#14060</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/9b277a16a7261e51b7ba36d6de7f996e9203a6a4"><code>9b277a1</code></a> Fix: Support ENOTDIR error code in the folder existence checking utility (<a href="https://github.com/eslint/eslint/issues/13973">#13973</a>) (Constantine Genchevsky)</li>
<li><a href="https://github.com/eslint/eslint/commit/7aeb12798f2b9da706f3593f26a02e717929c9af"><code>7aeb127</code></a> Upgrade: pin @babel/code-frame@7.12.11 (<a href="https://github.com/eslint/eslint/issues/14067">#14067</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/b4e2af5db1c29343ffec2cd104b04bf39b77ee56"><code>b4e2af5</code></a> Docs: Add more fields to bug report template (<a href="https://github.com/eslint/eslint/issues/14039">#14039</a>) (Nicholas C. Zakas)</li>
<li><a href="https://github.com/eslint/eslint/commit/96f1d49a4647e59f2fb918be096654e290513adc"><code>96f1d49</code></a> Sponsors: Sync README with website (ESLint Jenkins)</li>
<li><a href="https://github.com/eslint/eslint/commit/cb27b0abeda6dfee55dd43b9cbe12afad321f55d"><code>cb27b0a</code></a> Build: package.json update for eslint-config-eslint release (ESLint Jenkins)</li>
<li><a href="https://github.com/eslint/eslint/commit/4cab165bf4e6e5e9f42a59a37a8ff2548c0af87d"><code>4cab165</code></a> Sponsors: Sync README with website (ESLint Jenkins)</li>
</ul>
<p>v7.19.0 - January 30, 2021</p>
<ul>
<li><a href="https://github.com/eslint/eslint/commit/ce7f06121d9eb9cc2b3da24b4456b4d382e1413b"><code>ce7f061</code></a> Update: add shadowed variable loc to message in no-shadow (fixes <a href="https://github.com/eslint/eslint/issues/13646">#13646</a>) (<a href="https://github.com/eslint/eslint/issues/13841">#13841</a>) (t-mangoe)</li>
<li><a href="https://github.com/eslint/eslint/commit/c60e23ff306a14ca6eabcadb275ed27995fcc6e4"><code>c60e23f</code></a> Update: fix <code>let</code> logic in for-in and for-of loops in no-extra-parens (<a href="https://github.com/eslint/eslint/issues/14011">#14011</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/d76e8f69bd791357c67ada7b5c55608acf29b622"><code>d76e8f6</code></a> Fix: no-useless-rename invalid autofix with parenthesized identifiers (<a href="https://github.com/eslint/eslint/issues/14032">#14032</a>) (Milos Djermanovic)</li>
<li><a href="https://github.com/eslint/eslint/commit/5800d921144ec330b6ee7cd03364434007331354"><code>5800d92</code></a> Docs: Clarify stylistic rule update policy (<a href="https://github.com/eslint/eslint/issues/14052">#14052</a>) (Brandon Mills)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/eslint/eslint/commit/6ee803747fd996ff3bbcea2f7adcd560eae22576"><code>6ee8037</code></a> 7.22.0</li>
<li><a href="https://github.com/eslint/eslint/commit/a55e8a1a0174aee09e406d261ccb9b2bf7449602"><code>a55e8a1</code></a> Build: changelog update for 7.22.0</li>
<li><a href="https://github.com/eslint/eslint/commit/3a432d82b3a5710aff7da20302fe0b94fedc46c2"><code>3a432d8</code></a> Docs: Improve documentation for indent rule (<a href="https://github.com/eslint/eslint/issues/14168">#14168</a>)</li>
<li><a href="https://github.com/eslint/eslint/commit/f62ec8d30d925e70e4d0d40640857c587ac2e116"><code>f62ec8d</code></a> Update: throw error when fix range is invalid (<a href="https://github.com/eslint/eslint/issues/14142">#14142</a>)</li>
<li><a href="https://github.com/eslint/eslint/commit/0eecad271358f753730741fcfcb2f7cc915c1fa7"><code>0eecad2</code></a> Upgrade: Update lodash in package.json to V 4.17.21 (<a href="https://github.com/eslint/eslint/issues/14159">#14159</a>)</li>
<li><a href="https://github.com/eslint/eslint/commit/5ad91aa7df3d6bc185786e6eccd9e055fd951055"><code>5ad91aa</code></a> Update: report es2021 globals in no-extend-native (refs <a href="https://github.com/eslint/eslint/issues/13602">#13602</a>) (<a href="https://github.com/eslint/eslint/issues/14177">#14177</a>)</li>
<li><a href="https://github.com/eslint/eslint/commit/c295581aca4e08ec4ae8e5ee5726a6f454a3ee26"><code>c295581</code></a> Chore: remove leftover JSDoc from lint-result-cache (<a href="https://github.com/eslint/eslint/issues/14176">#14176</a>)</li>
<li><a href="https://github.com/eslint/eslint/commit/0d541f9d9d58966372e2055a8f69fb9483d56a4b"><code>0d541f9</code></a> Chore: Reduce lodash usage (<a href="https://github.com/eslint/eslint/issues/14178">#14178</a>)</li>
<li><a href="https://github.com/eslint/eslint/commit/27a67d71ffa9bbd7af02ae448844e127bcf956dc"><code>27a67d7</code></a> Sponsors: Sync README with website</li>
<li><a href="https://github.com/eslint/eslint/commit/459d821f4a599501ceb002f9d7a5034fc45ffbb0"><code>459d821</code></a> Chore: upgrade dependencies of browser test (<a href="https://github.com/eslint/eslint/issues/14127">#14127</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/eslint/eslint/compare/v7.15.0...v7.22.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=eslint&package-manager=npm_and_yarn&previous-version=7.15.0&new-version=7.22.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually


</details>
@eslint-github-bot eslint-github-bot bot locked and limited conversation to collaborators Aug 12, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.