From fef04b5c7fea99362d67b31b8e98cd4914020ed3 Mon Sep 17 00:00:00 2001 From: "Nicholas C. Zakas" Date: Wed, 2 Jul 2025 11:33:42 -0400 Subject: [PATCH 001/165] docs: Update working on issues info (#19902) * docs: Update working on issues info fixes #19900 * Update CONTRIBUTING.md * Update docs/src/contribute/work-on-issue.md Co-authored-by: Amaresh S M --------- Co-authored-by: Amaresh S M --- CONTRIBUTING.md | 5 +++- docs/src/contribute/work-on-issue.md | 34 +++++++++++++++++++++------- 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9eca8d435867..374b1fdca564 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -19,7 +19,10 @@ To report a security vulnerability in ESLint, please use our [create an advisory ## Contributing Code -In order to submit code or documentation to an ESLint project, you’ll be asked to sign our CLA when you send your first pull request. (Read more about the OpenJS Foundation CLA process at .) Also, please read over the [Pull Request Guidelines](https://eslint.org/docs/latest/contribute/pull-requests). +In order to submit code or documentation to an ESLint project, you’ll be asked to sign our CLA when you send your first pull request. (Read more about the OpenJS Foundation CLA process at .) Also, please read: + +- [Working on issues](https://eslint.org/docs/latest/contribute/work-on-issue) +- [Pull Request Guidelines](https://eslint.org/docs/latest/contribute/pull-requests) ## Full Documentation diff --git a/docs/src/contribute/work-on-issue.md b/docs/src/contribute/work-on-issue.md index 6d4745f92916..8232a1ef1d9a 100644 --- a/docs/src/contribute/work-on-issue.md +++ b/docs/src/contribute/work-on-issue.md @@ -13,9 +13,10 @@ Our public [issues tracker](https://github.com/eslint/eslint/issues) lists all o We use labels to indicate the status of issues. The most complete documentation on the labels is found in the [Maintain ESLint documentation](../maintain/manage-issues#when-an-issue-or-pull-request-is-opened), but most contributors should find the information on this page sufficient. The most important questions that labels can help you, as a contributor, answer are: -1. Is this issue available for me to work on? If you have little or no experience contributing to ESLint, the [`good first issue`](https://github.com/eslint/eslint/labels/good%20first%20issue) label marks appropriate issues. Otherwise, the [`help wanted`](https://github.com/eslint/eslint/labels/help%20wanted) label is an invitation to work on the issue. If you have more experience, you can try working on other issues labeled [`accepted`](https://github.com/eslint/eslint/labels/accepted). Conversely, issues not yet ready to work on are labeled `triage`, `evaluating`, and/or `needs bikeshedding`, and issues that cannot currently be worked on because of something else, such as a bug in a dependency, are labeled `blocked`. -1. What is this issue about? Labels describing the nature of issues include `bug`, `enhancement`, `feature`, `question`, `rule`, `documentation`, `core`, `build`, `cli`, `infrastructure`, `breaking`, and `chore`. These are documented in [Maintain ESLint](../maintain/manage-issues#types-of-issues-and-pull-requests). -1. What is the priority of this issue? Because we have a lot of issues, we prioritize certain issues above others. The following is the list of priorities, from highest to lowest: +1. **Is this issue ready for a pull request?** Issues that are ready for pull requests have the [`accepted`](https://github.com/eslint/eslint/labels/accepted) label, which indicates that the team has agreed to accept a pull request. Please do not send pull requests for issues that have not been marked as accepted. +2. **Is this issue right for a beginner?** If you have little or no experience contributing to ESLint, the [`good first issue`](https://github.com/eslint/eslint/labels/good%20first%20issue) label marks appropriate issues. Otherwise, the [`help wanted`](https://github.com/eslint/eslint/labels/help%20wanted) label is an invitation to work on the issue. If you have more experience, you can try working on other issues labeled [`accepted`](https://github.com/eslint/eslint/labels/accepted). +3. **What is this issue about?** Labels describing the nature of issues include `bug`, `enhancement`, `feature`, `question`, `rule`, `documentation`, `core`, `build`, `cli`, `infrastructure`, `breaking`, and `chore`. These are documented in [Maintain ESLint](../maintain/manage-issues#types-of-issues-and-pull-requests). +4. **What is the priority of this issue?** Because we have a lot of issues, we prioritize certain issues above others. The following is the list of priorities, from highest to lowest: 1. **Bugs** - problems with the project are actively affecting users. We want to get these resolved as quickly as possible. 1. **Documentation** - documentation issues are a type of bug in that they actively affect current users. As such, we want to address documentation issues as quickly as possible. @@ -23,19 +24,36 @@ We use labels to indicate the status of issues. The most complete documentation 1. **Enhancements** - requested improvements for existing functionality. 1. **Other** - anything else. - Some issues have had monetary rewards attached to them. Those are labeled `bounty`. Bounties are assigned via [BountySource](https://www.bountysource.com/teams/eslint/issues). - ## Starting Work -If you're going to work on an issue, please add a comment to that issue saying so and indicating when you think you will complete it. It will help us to avoid duplication of effort. Some examples of good comments are: +::: important +Before starting to work on an existing issue, please check if the issue has been assigned to anyone. If it has, then that person is already responsible for submitting a pull request and you should choose a different issue to work on. +::: + +### Claiming an issue + +If you're going to work on an issue, please _claim_ the issue by adding a comment saying you're working on it and indicating when you think you will complete it. This helps us to avoid duplication of effort. Some examples of good claim comments are: - "I'll take a look at this over the weekend." - "I'm going to do this, give me two weeks." - "Working on this" (as in, I'm working on it right now) -If an issue has already been claimed by someone, please be respectful of that person's desire to complete the work and don't work on it unless you verify that they are no longer interested. +The team will validate your claim by assigning the issue to you. + +### Offering help on a claimed issue + +If an issue has an assignee or has already been claimed by someone, please be respectful of that person's desire to complete the work and don't work on it unless you verify that they are no longer interested or would welcome the help. If there hasn't been activity on the issue after two weeks, you can express your interest in helping with the issue. For example: + +- "Are you still working on this? If not, I'd love to work on it." +- "Do you need any help on this? I'm interested." + +It is up to the assignee to decide if they're going to continue working on the issue or if they'd like your help. + +If there is no response after a week, please contact a team member for help. + +### Unclaiming an issue -If you find you can't finish the work, then simply add a comment letting people know, for example: +If you claimed an issue and find you can't finish the work, then add a comment letting people know, for example: - "Sorry, it looks like I don't have time to do this." - "I thought I knew enough to fix this, but it turns out I don't." From 5a0069d60815246cf24e1c96125540792c2507ef Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 3 Jul 2025 08:10:09 +0000 Subject: [PATCH 002/165] docs: Update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 30c3d6ccb0a9..dc848054f574 100644 --- a/README.md +++ b/README.md @@ -329,7 +329,7 @@ to get your logo on our READMEs and [website](https://eslint.org/sponsors).

Automattic Airbnb

Gold Sponsors

Qlty Software trunk.io Shopify

Silver Sponsors

Vite Liftoff American Express StackBlitz

Bronze Sponsors

-

Cybozu Icons8 Discord GitBook Nx Mercedes-Benz Group HeroCoders LambdaTest

+

Cybozu Anagram Solver Icons8 Discord GitBook Nx Mercedes-Benz Group HeroCoders LambdaTest

Technology Sponsors

Technology sponsors allow us to use their products and services for free as part of a contribution to the open source ecosystem and our work.

Netlify Algolia 1Password

From bb370b8e79f65ee32d9d89ecf249fb74a141ad22 Mon Sep 17 00:00:00 2001 From: Milos Djermanovic Date: Fri, 4 Jul 2025 06:06:15 +0200 Subject: [PATCH 003/165] feat: support explicit resource management in `no-const-assign` (#19892) * feat: support explicit resource management in `no-const-assign` * update When Not To Use It section * fix typo --- docs/src/rules/no-const-assign.md | 45 ++++++++++++++++--- lib/rules/no-const-assign.js | 15 ++++++- lib/types/rules.d.ts | 2 +- tests/lib/rules/no-const-assign.js | 72 +++++++++++++++++++++++++++++- 4 files changed, 124 insertions(+), 10 deletions(-) diff --git a/docs/src/rules/no-const-assign.md b/docs/src/rules/no-const-assign.md index 9f93286ae011..61fa4f9390ab 100644 --- a/docs/src/rules/no-const-assign.md +++ b/docs/src/rules/no-const-assign.md @@ -6,14 +6,11 @@ handled_by_typescript: true -We cannot modify variables that are declared using `const` keyword. -It will raise a runtime error. - -Under non ES2015 environment, it might be ignored merely. +Constant bindings cannot be modified. An attempt to modify a constant binding will raise a runtime error. ## Rule Details -This rule is aimed to flag modifying variables that are declared using `const` keyword. +This rule is aimed to flag modifying variables that are declared using `const`, `using`, or `await using` keywords. Examples of **incorrect** code for this rule: @@ -50,6 +47,24 @@ const a = 0; ::: +::: incorrect + +```js +/*eslint no-const-assign: "error"*/ + +if (foo) { + using a = getSomething(); + a = somethingElse; +} + +if (bar) { + await using a = getSomething(); + a = somethingElse; +} +``` + +::: + Examples of **correct** code for this rule: ::: correct @@ -68,6 +83,24 @@ console.log(a); ```js /*eslint no-const-assign: "error"*/ +if (foo) { + using a = getSomething(); + a.execute(); +} + +if (bar) { + await using a = getSomething(); + a.execute(); +} +``` + +::: + +::: correct + +```js +/*eslint no-const-assign: "error"*/ + for (const a in [1, 2, 3]) { // `a` is re-defined (not modified) on each loop step. console.log(a); } @@ -89,4 +122,4 @@ for (const a of [1, 2, 3]) { // `a` is re-defined (not modified) on each loop st ## When Not To Use It -If you don't want to be notified about modifying variables that are declared using `const` keyword, you can safely disable this rule. +If you don't want to be notified about modifying variables that are declared using `const`, `using`, and `await using` keywords, you can safely disable this rule. diff --git a/lib/rules/no-const-assign.js b/lib/rules/no-const-assign.js index 2f24a504793e..5e126c80e327 100644 --- a/lib/rules/no-const-assign.js +++ b/lib/rules/no-const-assign.js @@ -5,8 +5,18 @@ "use strict"; +//------------------------------------------------------------------------------ +// Requirements +//------------------------------------------------------------------------------ + const astUtils = require("./utils/ast-utils"); +//------------------------------------------------------------------------------ +// Helpers +//------------------------------------------------------------------------------ + +const CONSTANT_BINDINGS = new Set(["const", "using", "await using"]); + //------------------------------------------------------------------------------ // Rule Definition //------------------------------------------------------------------------------ @@ -17,7 +27,8 @@ module.exports = { type: "problem", docs: { - description: "Disallow reassigning `const` variables", + description: + "Disallow reassigning `const`, `using`, and `await using` variables", recommended: true, url: "https://eslint.org/docs/latest/rules/no-const-assign", }, @@ -51,7 +62,7 @@ module.exports = { return { VariableDeclaration(node) { - if (node.kind === "const") { + if (CONSTANT_BINDINGS.has(node.kind)) { sourceCode .getDeclaredVariables(node) .forEach(checkVariable); diff --git a/lib/types/rules.d.ts b/lib/types/rules.d.ts index 43974757e197..1cde13386d08 100644 --- a/lib/types/rules.d.ts +++ b/lib/types/rules.d.ts @@ -2126,7 +2126,7 @@ export interface ESLintRules extends Linter.RulesRecord { >; /** - * Rule to disallow reassigning `const` variables. + * Rule to disallow reassigning `const`, `using`, and `await using` variables. * * @remarks * Recommended by ESLint, the rule was enabled in `eslint:recommended`. diff --git a/tests/lib/rules/no-const-assign.js b/tests/lib/rules/no-const-assign.js index 59affb072dd7..739f7d21f1ca 100644 --- a/tests/lib/rules/no-const-assign.js +++ b/tests/lib/rules/no-const-assign.js @@ -16,7 +16,7 @@ const RuleTester = require("../../../lib/rule-tester/rule-tester"); // Tests //------------------------------------------------------------------------------ -const ruleTester = new RuleTester({ languageOptions: { ecmaVersion: 6 } }); +const ruleTester = new RuleTester(); ruleTester.run("no-const-assign", rule, { valid: [ @@ -26,6 +26,10 @@ ruleTester.run("no-const-assign", rule, { "for (const x in [1,2,3]) { foo(x); }", "for (const x of [1,2,3]) { foo(x); }", "const x = {key: 0}; x.key = 1;", + "using x = foo();", + "await using x = foo();", + "using x = foo(); bar(x);", + "await using x = foo(); bar(x);", // ignores non constant. "var x = 0; x = 1;", @@ -115,5 +119,71 @@ ruleTester.run("no-const-assign", rule, { { messageId: "const", data: { name: "x" }, type: "Identifier" }, ], }, + { + code: "using x = foo(); x = 1;", + errors: [ + { + messageId: "const", + data: { name: "x" }, + type: "Identifier", + column: 18, + }, + ], + }, + { + code: "await using x = foo(); x = 1;", + errors: [ + { + messageId: "const", + data: { name: "x" }, + type: "Identifier", + column: 24, + }, + ], + }, + { + code: "using x = foo(); x ??= bar();", + errors: [ + { + messageId: "const", + data: { name: "x" }, + type: "Identifier", + column: 18, + }, + ], + }, + { + code: "await using x = foo(); x ||= bar();", + errors: [ + { + messageId: "const", + data: { name: "x" }, + type: "Identifier", + column: 24, + }, + ], + }, + { + code: "using x = foo(); [x, y] = bar();", + errors: [ + { + messageId: "const", + data: { name: "x" }, + type: "Identifier", + column: 19, + }, + ], + }, + { + code: "await using x = foo(); [x = baz, y] = bar();", + errors: [ + { + messageId: "const", + data: { name: "x" }, + type: "Identifier", + column: 25, + }, + ], + }, ], }); From 58482165eaf597cc5c58216a956c301ae87520b3 Mon Sep 17 00:00:00 2001 From: Milos Djermanovic Date: Fri, 4 Jul 2025 06:15:56 +0200 Subject: [PATCH 004/165] feat: support explicit resource management in `init-declarations` (#19893) --- docs/src/rules/init-declarations.md | 14 ++++++++++++-- lib/rules/init-declarations.js | 4 +++- tests/lib/rules/init-declarations.js | 20 ++++++++++++++++++++ 3 files changed, 35 insertions(+), 3 deletions(-) diff --git a/docs/src/rules/init-declarations.md b/docs/src/rules/init-declarations.md index 846dd7075a7e..eb00bdda1624 100644 --- a/docs/src/rules/init-declarations.md +++ b/docs/src/rules/init-declarations.md @@ -36,7 +36,7 @@ This rule aims to bring consistency to variable initializations and declarations The rule takes two options: -1. A string which must be either `"always"` (the default), to enforce initialization at declaration, or `"never"` to disallow initialization during declaration. This rule applies to `var`, `let`, and `const` variables, however `"never"` is ignored for `const` variables, as unassigned `const`s generate a parse error. +1. A string which must be either `"always"` (the default), to enforce initialization at declaration, or `"never"` to disallow initialization during declaration. This rule applies to `var`, `let`, `const`, `using`, and `await using` variables, however `"never"` is ignored for `const`, `using`, and `await using` variables, as not initializing these variables would generate a parse error. 2. An object that further controls the behavior of this rule. Currently, the only available parameter is `ignoreForLoopInit`, which indicates if initialization at declaration is allowed in `for` loops when `"never"` is set, since it is a very typical use case. You can configure the rule as follows: @@ -93,6 +93,11 @@ function foo() { var bar = 1; let baz = 2; const qux = 3; + using quux = getSomething(); +} + +async function foobar() { + await using quux = getSomething(); } ``` @@ -128,12 +133,17 @@ function foo() { var bar; let baz; const buzz = 1; + using quux = getSomething(); +} + +async function foobar() { + await using quux = getSomething(); } ``` ::: -The `"never"` option ignores `const` variable initializations. +The `"never"` option ignores `const`, `using`, and `await using` variable initializations. ### ignoreForLoopInit diff --git a/lib/rules/init-declarations.js b/lib/rules/init-declarations.js index e5b976051315..15dac379fada 100644 --- a/lib/rules/init-declarations.js +++ b/lib/rules/init-declarations.js @@ -9,6 +9,8 @@ // Helpers //------------------------------------------------------------------------------ +const CONSTANT_BINDINGS = new Set(["const", "using", "await using"]); + /** * Checks whether or not a given node is a for loop. * @param {ASTNode} block A node to check. @@ -147,7 +149,7 @@ module.exports = { messageId = "initialized"; } else if ( mode === MODE_NEVER && - kind !== "const" && + !CONSTANT_BINDINGS.has(kind) && initialized && !isIgnoredForLoop ) { diff --git a/tests/lib/rules/init-declarations.js b/tests/lib/rules/init-declarations.js index 6cbeb03229f7..089892836dcb 100644 --- a/tests/lib/rules/init-declarations.js +++ b/tests/lib/rules/init-declarations.js @@ -39,6 +39,16 @@ ruleTester.run("init-declarations", rule, { options: ["always"], languageOptions: { ecmaVersion: 6 }, }, + { + code: "using a = foo();", + options: ["always"], + languageOptions: { ecmaVersion: 2026 }, + }, + { + code: "await using a = foo();", + options: ["always"], + languageOptions: { ecmaVersion: 2026 }, + }, { code: "function foo() { let a = 1, b = false; if (a) { let c = 3, d = null; } }", options: ["always"], @@ -79,6 +89,16 @@ ruleTester.run("init-declarations", rule, { options: ["never"], languageOptions: { ecmaVersion: 6 }, }, + { + code: "using a = foo();", + options: ["never"], + languageOptions: { ecmaVersion: 2026 }, + }, + { + code: "await using a = foo();", + options: ["never"], + languageOptions: { ecmaVersion: 2026 }, + }, { code: "function foo() { let a, b; if (a) { let c, d; } }", options: ["never"], From 4682cdc6960279ee17f23899fbab6f58d881eadf Mon Sep 17 00:00:00 2001 From: Milos Djermanovic Date: Fri, 4 Jul 2025 06:27:51 +0200 Subject: [PATCH 005/165] feat: support explicit resource management in `no-undef-init` (#19894) --- docs/src/rules/no-undef-init.md | 8 ++++++-- lib/rules/no-undef-init.js | 12 +++++++++++- tests/lib/rules/no-undef-init.js | 8 ++++++++ 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/docs/src/rules/no-undef-init.md b/docs/src/rules/no-undef-init.md index 31f40592a46f..8c94efcf5146 100644 --- a/docs/src/rules/no-undef-init.md +++ b/docs/src/rules/no-undef-init.md @@ -54,7 +54,7 @@ let bar; ::: -Please note that this rule does not check `const` declarations, destructuring patterns, function parameters, and class fields. +Please note that this rule does not check `const` declarations, `using` declarations, `await using` declarations, destructuring patterns, function parameters, and class fields. Examples of additional **correct** code for this rule: @@ -65,6 +65,10 @@ Examples of additional **correct** code for this rule: const foo = undefined; +using foo1 = undefined; + +await using foo2 = undefined; + let { bar = undefined } = baz; [quux = undefined] = quuux; @@ -159,7 +163,7 @@ Another such case is when a variable is redeclared using `var`. For example: function foo() { var x = 1; console.log(x); // output: 1 - + var x; console.log(x); // output: 1 diff --git a/lib/rules/no-undef-init.js b/lib/rules/no-undef-init.js index 9f8153d329f9..77a120043e2c 100644 --- a/lib/rules/no-undef-init.js +++ b/lib/rules/no-undef-init.js @@ -5,8 +5,18 @@ "use strict"; +//------------------------------------------------------------------------------ +// Requirements +//------------------------------------------------------------------------------ + const astUtils = require("./utils/ast-utils"); +//------------------------------------------------------------------------------ +// Helpers +//------------------------------------------------------------------------------ + +const CONSTANT_BINDINGS = new Set(["const", "using", "await using"]); + //------------------------------------------------------------------------------ // Rule Definition //------------------------------------------------------------------------------ @@ -49,7 +59,7 @@ module.exports = { if ( init === "undefined" && - node.parent.kind !== "const" && + !CONSTANT_BINDINGS.has(node.parent.kind) && !shadowed ) { context.report({ diff --git a/tests/lib/rules/no-undef-init.js b/tests/lib/rules/no-undef-init.js index a201d2769719..0fc937c2738f 100644 --- a/tests/lib/rules/no-undef-init.js +++ b/tests/lib/rules/no-undef-init.js @@ -22,6 +22,14 @@ ruleTester.run("no-undef-init", rule, { valid: [ "var a;", { code: "const foo = undefined", languageOptions: { ecmaVersion: 6 } }, + { + code: "using foo = undefined", + languageOptions: { ecmaVersion: 2026 }, + }, + { + code: "await using foo = undefined", + languageOptions: { ecmaVersion: 2026 }, + }, "var undefined = 5; var foo = undefined;", // doesn't apply to class fields From a6a63259de6cb5642f69c7be429554bbcedca4c0 Mon Sep 17 00:00:00 2001 From: Milos Djermanovic Date: Fri, 4 Jul 2025 06:40:19 +0200 Subject: [PATCH 006/165] feat: support explicit resource management in `no-loop-func` (#19895) * feat: support explicit resource management in `no-loop-func` * replace tabs with spaces --- docs/src/rules/no-loop-func.md | 28 ++++++++++++++ lib/rules/no-loop-func.js | 6 ++- tests/lib/rules/no-loop-func.js | 68 +++++++++++++++++++++++++++++---- 3 files changed, 92 insertions(+), 10 deletions(-) diff --git a/docs/src/rules/no-loop-func.md b/docs/src/rules/no-loop-func.md index c12971086520..549807b8b398 100644 --- a/docs/src/rules/no-loop-func.md +++ b/docs/src/rules/no-loop-func.md @@ -115,6 +115,34 @@ for (let i=10; i; i--) { a(); } +for (const i of foo) { + var a = function() { return i; }; // OK, all references are referring to block scoped variables in the loop. + a(); +} + +for (using i of foo) { + var a = function() { return i; }; // OK, all references are referring to block scoped variables in the loop. + a(); +} + +for (var i=10; i; i--) { + const foo = getsomething(i); + var a = function() { return foo; }; // OK, all references are referring to block scoped variables in the loop. + a(); +} + +for (var i=10; i; i--) { + using foo = getsomething(i); + var a = function() { return foo; }; // OK, all references are referring to block scoped variables in the loop. + a(); +} + +for (var i=10; i; i--) { + await using foo = getsomething(i); + var a = function() { return foo; }; // OK, all references are referring to block scoped variables in the loop. + a(); +} + var foo = 100; for (let i=10; i; i--) { var a = function() { return foo; }; // OK, all references are referring to never modified variables. diff --git a/lib/rules/no-loop-func.js b/lib/rules/no-loop-func.js index 5403bd5cd7ae..df6c8c5ecc74 100644 --- a/lib/rules/no-loop-func.js +++ b/lib/rules/no-loop-func.js @@ -9,6 +9,8 @@ // Helpers //------------------------------------------------------------------------------ +const CONSTANT_BINDINGS = new Set(["const", "using", "await using"]); + /** * Identifies is a node is a FunctionExpression which is part of an IIFE * @param {ASTNode} node Node to test @@ -148,8 +150,8 @@ module.exports = { ? declaration.kind : ""; - // Variables which are declared by `const` is safe. - if (kind === "const") { + // Constant variables are safe. + if (CONSTANT_BINDINGS.has(kind)) { return true; } diff --git a/tests/lib/rules/no-loop-func.js b/tests/lib/rules/no-loop-func.js index 1048596f5e27..0c9a7ccff42f 100644 --- a/tests/lib/rules/no-loop-func.js +++ b/tests/lib/rules/no-loop-func.js @@ -50,6 +50,22 @@ ruleTester.run("no-loop-func", rule, { code: "for (const i of {}) { (function() { i; }) }", languageOptions: { ecmaVersion: 6 }, }, + { + code: "for (using i of foo) { (function() { i; }) }", + languageOptions: { ecmaVersion: 2026 }, + }, + { + code: "for (await using i of foo) { (function() { i; }) }", + languageOptions: { ecmaVersion: 2026 }, + }, + { + code: "for (var i = 0; i < 10; ++i) { using foo = bar(i); (function() { foo; }) }", + languageOptions: { ecmaVersion: 2026 }, + }, + { + code: "for (var i = 0; i < 10; ++i) { await using foo = bar(i); (function() { foo; }) }", + languageOptions: { ecmaVersion: 2026 }, + }, { code: "for (let i = 0; i < 10; ++i) { for (let x in xs.filter(x => x != i)) { } }", languageOptions: { ecmaVersion: 6 }, @@ -170,7 +186,7 @@ ruleTester.run("no-loop-func", rule, { current.c; current.d; })(); - + current = current.upper; } `, @@ -208,6 +224,42 @@ ruleTester.run("no-loop-func", rule, { `, languageOptions: { ecmaVersion: 6 }, }, + { + code: ` + const foo = bar; + + for (var i = 0; i < 5; i++) { + arr.push(() => foo); + } + + foo = baz; // This is a runtime error, but not concern of this rule. For this rule, variable 'foo' is constant. + `, + languageOptions: { ecmaVersion: 6 }, + }, + { + code: ` + using foo = bar; + + for (var i = 0; i < 5; i++) { + arr.push(() => foo); + } + + foo = baz; // This is a runtime error, but not concern of this rule. For this rule, variable 'foo' is constant. + `, + languageOptions: { ecmaVersion: 2026 }, + }, + { + code: ` + await using foo = bar; + + for (var i = 0; i < 5; i++) { + arr.push(() => foo); + } + + foo = baz; // This is a runtime error, but not concern of this rule. For this rule, variable 'foo' is constant. + `, + languageOptions: { ecmaVersion: 2026 }, + }, ], invalid: [ { @@ -471,7 +523,7 @@ ruleTester.run("no-loop-func", rule, { current; arr.push(f); })(); - + current = current.upper; } `, @@ -615,7 +667,7 @@ ruleTester.run("no-loop-func", rule, { for (var i = 0; i < 5; i++) { arr.push((() => { - return () => + return () => (() => i)(); })()); } @@ -666,7 +718,7 @@ ruleTester.run("no-loop-func", rule, { return i; })(); })(); - + } `, languageOptions: { ecmaVersion: 2022 }, @@ -839,7 +891,7 @@ ruleTesterTypeScript.run("no-loop-func", rule, { // ConfiguredType is in globals, UnconfiguredType is not // Both should be considered safe as they are type references const process = (configItem: ConfiguredType, unconfigItem: UnconfiguredType) => { - return { + return { config: configItem.value, unconfig: unconfigItem.value }; @@ -892,14 +944,14 @@ ruleTesterTypeScript.run("no-loop-func", rule, { id: number; name: string; } - + const items: Item[] = []; for (var i = 0; i < 10; i++) { items.push({ id: i, name: "Item " + i }); - + const process = function(callback: (item: Item) => void): void { callback({ id: i, name: "Item " + i }); }; @@ -916,7 +968,7 @@ ruleTesterTypeScript.run("no-loop-func", rule, { { code: ` type Processor = (item: T) => void; - + for (var i = 0; i < 10; i++) { const processor: Processor = (item) => { return item + i; From 28cc7abbb72b29b1cac6fc4253646a7839586064 Mon Sep 17 00:00:00 2001 From: "Nicholas C. Zakas" Date: Fri, 4 Jul 2025 00:53:19 -0400 Subject: [PATCH 007/165] fix: Remove incorrect RuleContext types (#19910) fixes #19903 --- lib/types/index.d.ts | 20 +------------------- tests/lib/types/types.test.ts | 8 -------- 2 files changed, 1 insertion(+), 27 deletions(-) diff --git a/lib/types/index.d.ts b/lib/types/index.d.ts index 8723088dffa6..8c816338444f 100644 --- a/lib/types/index.d.ts +++ b/lib/types/index.d.ts @@ -1186,25 +1186,7 @@ export namespace Rule { RuleOptions: any[]; Node: JSSyntaxElement; MessageIds: string; - }> { - /* - * Need to extend the `RuleContext` interface to include the - * deprecated methods that have not yet been removed. - * TODO: Remove in v10.0.0. - */ - - /** @deprecated Use `sourceCode.getAncestors()` instead */ - getAncestors(): ESTree.Node[]; - - /** @deprecated Use `sourceCode.getDeclaredVariables()` instead */ - getDeclaredVariables(node: ESTree.Node): Scope.Variable[]; - - /** @deprecated Use `sourceCode.getScope()` instead */ - getScope(): Scope.Scope; - - /** @deprecated Use `sourceCode.markVariableAsUsed()` instead */ - markVariableAsUsed(name: string): boolean; - } + }> {} type ReportFixer = ( fixer: RuleFixer, diff --git a/tests/lib/types/types.test.ts b/tests/lib/types/types.test.ts index ceb7392c5bee..f55f1bf36bcf 100644 --- a/tests/lib/types/types.test.ts +++ b/tests/lib/types/types.test.ts @@ -625,10 +625,6 @@ rule = { rule = { create(context: Rule.RuleContext) { - context.getAncestors(); - - context.getDeclaredVariables(AST); - context.filename; context.getFilename(); @@ -653,16 +649,12 @@ rule = { context.getSourceCode(); context.getSourceCode().getLocFromIndex(42); - context.getScope(); - if (typeof context.parserPath === "string") { context.parserPath; } else { context.languageOptions?.parser; } - context.markVariableAsUsed("foo"); - // @ts-expect-error wrong `node` type context.report({ message: "foo", node: {} }); From 76c2340c368f96db77439b5cd1df0196cc39bf3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Mon, 7 Jul 2025 20:34:11 +0900 Subject: [PATCH 008/165] chore: bump mocha to v11 (#19917) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ba7a14eea552..26bbb22c4843 100644 --- a/package.json +++ b/package.json @@ -188,7 +188,7 @@ "metascraper-logo": "^5.25.7", "metascraper-logo-favicon": "^5.25.7", "metascraper-title": "^5.25.7", - "mocha": "^10.7.3", + "mocha": "^11.7.1", "node-polyfill-webpack-plugin": "^1.0.3", "npm-license": "^0.3.3", "pirates": "^4.0.5", From 40dbe2a43f83d366e9026faec70293512fb61ca2 Mon Sep 17 00:00:00 2001 From: MaoShizhong <122839503+MaoShizhong@users.noreply.github.com> Date: Mon, 7 Jul 2025 19:33:40 +0100 Subject: [PATCH 009/165] docs: fix mismatch between `globalIgnores()` code and text (#19914) docs: Update paragraphs to reference globalIgnores() helper examples --- docs/src/use/configure/ignore.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/src/use/configure/ignore.md b/docs/src/use/configure/ignore.md index c3c3ef5a50df..9aee7606d5e4 100644 --- a/docs/src/use/configure/ignore.md +++ b/docs/src/use/configure/ignore.md @@ -23,7 +23,7 @@ You can configure ESLint to ignore certain files and directories while linting b ## Ignoring Files -In your `eslint.config.js` file, if an `ignores` key is used without any other keys in the configuration object, then the patterns act as global ignores. Here's an example: +In your `eslint.config.js` file, you can use the `globalIgnores()` helper function to indicate patterns of files to be ignored. Here's an example: ```js // eslint.config.js @@ -43,7 +43,7 @@ You can also ignore files on the command line using [`--ignore-pattern`](../comm ## Ignoring Directories -Ignoring directories works the same way as ignoring files, by placing a pattern in the `ignores` key of a configuration object with no other keys. For example, the following ignores the `.config` directory as a whole (meaning file search will not traverse into it at all): +Ignoring directories works the same way as ignoring files, by passing a pattern to the `globalIgnores()` helper function. For example, the following ignores the `.config` directory as a whole (meaning file search will not traverse into it at all): ```js // eslint.config.js @@ -127,8 +127,8 @@ You can also unignore files on the command line using [`--ignore-pattern`](../co How glob patterns are evaluated depends on where they are located and how they are used: -1. When using `ignores` in an `eslint.config.js` file, glob patterns are evaluated relative to the `eslint.config.js` file. -1. When using `ignores` in an alternate configuration file specified using the [`--config`](../command-line-interface#-c---config) command line option, glob patterns are evaluated relative to the current working directory. +1. When using `globalIgnores()` in an `eslint.config.js` file, glob patterns are evaluated relative to the `eslint.config.js` file. +1. When using `globalIgnores()` in an alternate configuration file specified using the [`--config`](../command-line-interface#-c---config) command line option, glob patterns are evaluated relative to the current working directory. 1. When using [`--ignore-pattern`](../command-line-interface#--ignore-pattern), glob patterns are evaluated relative to the current working directory. ## Name the Global Ignores Config From 35cf44c22e36b1554486e7a75c870e86c10b83f8 Mon Sep 17 00:00:00 2001 From: ST-DDT Date: Mon, 7 Jul 2025 20:35:56 +0200 Subject: [PATCH 010/165] feat: output full actual location in rule tester if different (#19904) * test: output full location in rule tester * refactor: treat lcoation as atomic unit * refactor: use default assertion message * Update lib/rule-tester/rule-tester.js Co-authored-by: Milos Djermanovic * test: update expected error message --------- Co-authored-by: Milos Djermanovic --- lib/rule-tester/rule-tester.js | 37 ++++++++++++++-------------- tests/lib/rule-tester/rule-tester.js | 15 ++++++----- 2 files changed, 25 insertions(+), 27 deletions(-) diff --git a/lib/rule-tester/rule-tester.js b/lib/rule-tester/rule-tester.js index 382a3d19e8e0..dbd8c274f0fc 100644 --- a/lib/rule-tester/rule-tester.js +++ b/lib/rule-tester/rule-tester.js @@ -1236,35 +1236,34 @@ class RuleTester { ); } + const actualLocation = {}; + const expectedLocation = {}; + if (hasOwnProperty(error, "line")) { - assert.strictEqual( - message.line, - error.line, - `Error line should be ${error.line}`, - ); + actualLocation.line = message.line; + expectedLocation.line = error.line; } if (hasOwnProperty(error, "column")) { - assert.strictEqual( - message.column, - error.column, - `Error column should be ${error.column}`, - ); + actualLocation.column = message.column; + expectedLocation.column = error.column; } if (hasOwnProperty(error, "endLine")) { - assert.strictEqual( - message.endLine, - error.endLine, - `Error endLine should be ${error.endLine}`, - ); + actualLocation.endLine = message.endLine; + expectedLocation.endLine = error.endLine; } if (hasOwnProperty(error, "endColumn")) { - assert.strictEqual( - message.endColumn, - error.endColumn, - `Error endColumn should be ${error.endColumn}`, + actualLocation.endColumn = message.endColumn; + expectedLocation.endColumn = error.endColumn; + } + + if (Object.keys(expectedLocation).length > 0) { + assert.deepStrictEqual( + actualLocation, + expectedLocation, + "Actual error location does not match expected error location.", ); } diff --git a/tests/lib/rule-tester/rule-tester.js b/tests/lib/rule-tester/rule-tester.js index 1018ab7ac43e..74137086085a 100644 --- a/tests/lib/rule-tester/rule-tester.js +++ b/tests/lib/rule-tester/rule-tester.js @@ -1292,7 +1292,7 @@ describe("RuleTester", () => { ], }, ); - }, /Error line should be 5/u); + }, "Actual error location does not match expected error location."); }); it("should not skip line assertion if line is a falsy value", () => { @@ -1316,12 +1316,11 @@ describe("RuleTester", () => { ], }, ); - }, /Error line should be 0/u); + }, "Actual error location does not match expected error location."); }); it("should throw an error if invalid code specifies wrong column", () => { - const wrongColumn = 10, - expectedErrorMessage = "Error column should be 1"; + const wrongColumn = 10; assert.throws(() => { ruleTester.run( @@ -1342,7 +1341,7 @@ describe("RuleTester", () => { ], }, ); - }, expectedErrorMessage); + }, "Actual error location does not match expected error location."); }); it("should throw error for empty error array", () => { @@ -1398,7 +1397,7 @@ describe("RuleTester", () => { ], }, ); - }, /Error column should be 0/u); + }, "Actual error location does not match expected error location."); }); it("should throw an error if invalid code specifies wrong endLine", () => { @@ -1423,7 +1422,7 @@ describe("RuleTester", () => { ], }, ); - }, "Error endLine should be 10"); + }, "Actual error location does not match expected error location."); }); it("should throw an error if invalid code specifies wrong endColumn", () => { @@ -1448,7 +1447,7 @@ describe("RuleTester", () => { ], }, ); - }, "Error endColumn should be 10"); + }, "Actual error location does not match expected error location."); }); it("should throw an error if invalid code has the wrong number of errors", () => { From 07fac6cafa0426b4d1ea12d9001f3955f19b286d Mon Sep 17 00:00:00 2001 From: TKDev7 Date: Thu, 10 Jul 2025 07:14:14 +0300 Subject: [PATCH 011/165] fix: retry on EMFILE when writing autofix results (#19926) * fix: retry on EMFILE when writing autofix results * chore: update test --- lib/eslint/eslint.js | 9 ++++++++- tests/fixtures/emfile/eslint.config.js | 2 +- tools/check-emfile-handling.js | 4 ++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/eslint/eslint.js b/lib/eslint/eslint.js index 99bddf2bc864..7f75fc3a844a 100644 --- a/lib/eslint/eslint.js +++ b/lib/eslint/eslint.js @@ -530,6 +530,11 @@ class ESLint { throw new Error("'results' must be an array"); } + const retryCodes = new Set(["ENFILE", "EMFILE"]); + const retrier = new Retrier(error => retryCodes.has(error.code), { + concurrency: 100, + }); + await Promise.all( results .filter(result => { @@ -541,7 +546,9 @@ class ESLint { path.isAbsolute(result.filePath) ); }) - .map(r => fs.writeFile(r.filePath, r.output)), + .map(r => + retrier.retry(() => fs.writeFile(r.filePath, r.output)), + ), ); } diff --git a/tests/fixtures/emfile/eslint.config.js b/tests/fixtures/emfile/eslint.config.js index bdfb8f7349f6..41737b47204d 100644 --- a/tests/fixtures/emfile/eslint.config.js +++ b/tests/fixtures/emfile/eslint.config.js @@ -1,5 +1,5 @@ module.exports = { rules: { - "no-unused-vars": "error" + "capitalized-comments": "error" } }; diff --git a/tools/check-emfile-handling.js b/tools/check-emfile-handling.js index 79716ba8a333..8326fa8189c2 100644 --- a/tools/check-emfile-handling.js +++ b/tools/check-emfile-handling.js @@ -63,7 +63,7 @@ function generateFiles() { for (let i = 0; i < FILE_COUNT; i++) { const fileName = `file_${i}.js`; - const fileContent = `// This is file ${i}`; + const fileContent = `// this is file ${i}`; fs.writeFileSync(`${OUTPUT_DIRECTORY}/${fileName}`, fileContent); } @@ -97,7 +97,7 @@ generateFiles(); console.log("Running ESLint..."); execSync( - `node bin/eslint.js ${OUTPUT_DIRECTORY} -c ${CONFIG_DIRECTORY}/eslint.config.js`, + `node bin/eslint.js ${OUTPUT_DIRECTORY} -c ${CONFIG_DIRECTORY}/eslint.config.js --fix`, { stdio: "inherit" }, ); console.log("✅ No errors encountered running ESLint."); From 664cb44ab03785bd200a792607a7e20faa2d4b28 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 10 Jul 2025 08:10:29 +0000 Subject: [PATCH 012/165] docs: Update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dc848054f574..522cc9faf2da 100644 --- a/README.md +++ b/README.md @@ -329,7 +329,7 @@ to get your logo on our READMEs and [website](https://eslint.org/sponsors).

Automattic Airbnb

Gold Sponsors

Qlty Software trunk.io Shopify

Silver Sponsors

Vite Liftoff American Express StackBlitz

Bronze Sponsors

-

Cybozu Anagram Solver Icons8 Discord GitBook Nx Mercedes-Benz Group HeroCoders LambdaTest

+

Cybozu Sentry Anagram Solver Icons8 Discord GitBook Nx Mercedes-Benz Group HeroCoders LambdaTest

Technology Sponsors

Technology sponsors allow us to use their products and services for free as part of a contribution to the open source ecosystem and our work.

Netlify Algolia 1Password

From 0f4a3781fe7c11fad7b206c3c694655486ddd187 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 11 Jul 2025 21:44:46 +0200 Subject: [PATCH 013/165] chore: update eslint (#19933) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 26bbb22c4843..72303f587aea 100644 --- a/package.json +++ b/package.json @@ -108,7 +108,7 @@ "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.0", "@eslint/config-helpers": "^0.3.0", - "@eslint/core": "^0.14.0", + "@eslint/core": "^0.15.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.30.1", "@eslint/plugin-kit": "^0.3.1", @@ -145,7 +145,7 @@ "@babel/core": "^7.4.3", "@babel/preset-env": "^7.4.3", "@cypress/webpack-preprocessor": "^6.0.2", - "@eslint/json": "^0.12.0", + "@eslint/json": "^0.13.0", "@trunkio/launcher": "^1.3.4", "@types/esquery": "^1.5.4", "@types/node": "^22.13.14", From d5054e5454a537e9ade238c768c262c6c592cbc1 Mon Sep 17 00:00:00 2001 From: Jenkins Date: Fri, 11 Jul 2025 20:05:28 +0000 Subject: [PATCH 014/165] chore: package.json update for @eslint/js release --- packages/js/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/js/package.json b/packages/js/package.json index db572d449568..7d7394b3f90a 100644 --- a/packages/js/package.json +++ b/packages/js/package.json @@ -1,6 +1,6 @@ { "name": "@eslint/js", - "version": "9.30.1", + "version": "9.31.0", "description": "ESLint JavaScript language implementation", "funding": "https://eslint.org/donate", "main": "./src/index.js", From 3ddd454c1c73294e5af7905d60d03fac162f1b3e Mon Sep 17 00:00:00 2001 From: Francesco Trotta Date: Fri, 11 Jul 2025 22:22:06 +0200 Subject: [PATCH 015/165] chore: upgrade to `@eslint/js@9.31.0` (#19935) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 72303f587aea..efa6abf8a558 100644 --- a/package.json +++ b/package.json @@ -110,7 +110,7 @@ "@eslint/config-helpers": "^0.3.0", "@eslint/core": "^0.15.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.30.1", + "@eslint/js": "9.31.0", "@eslint/plugin-kit": "^0.3.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", From 2b77bd05dc50911bc97b2d2711dd75f6b5d9b9fd Mon Sep 17 00:00:00 2001 From: Jenkins Date: Fri, 11 Jul 2025 20:33:46 +0000 Subject: [PATCH 016/165] Build: changelog update for 9.31.0 --- CHANGELOG.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bbaf72830d87..a92a2ca3b9e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,21 @@ +v9.31.0 - July 11, 2025 + +* [`3ddd454`](https://github.com/eslint/eslint/commit/3ddd454c1c73294e5af7905d60d03fac162f1b3e) chore: upgrade to `@eslint/js@9.31.0` (#19935) (Francesco Trotta) +* [`d5054e5`](https://github.com/eslint/eslint/commit/d5054e5454a537e9ade238c768c262c6c592cbc1) chore: package.json update for @eslint/js release (Jenkins) +* [`0f4a378`](https://github.com/eslint/eslint/commit/0f4a3781fe7c11fad7b206c3c694655486ddd187) chore: update eslint (#19933) (renovate[bot]) +* [`664cb44`](https://github.com/eslint/eslint/commit/664cb44ab03785bd200a792607a7e20faa2d4b28) docs: Update README (GitHub Actions Bot) +* [`07fac6c`](https://github.com/eslint/eslint/commit/07fac6cafa0426b4d1ea12d9001f3955f19b286d) fix: retry on EMFILE when writing autofix results (#19926) (TKDev7) +* [`35cf44c`](https://github.com/eslint/eslint/commit/35cf44c22e36b1554486e7a75c870e86c10b83f8) feat: output full actual location in rule tester if different (#19904) (ST-DDT) +* [`40dbe2a`](https://github.com/eslint/eslint/commit/40dbe2a43f83d366e9026faec70293512fb61ca2) docs: fix mismatch between `globalIgnores()` code and text (#19914) (MaoShizhong) +* [`76c2340`](https://github.com/eslint/eslint/commit/76c2340c368f96db77439b5cd1df0196cc39bf3e) chore: bump mocha to v11 (#19917) (루밀LuMir) +* [`28cc7ab`](https://github.com/eslint/eslint/commit/28cc7abbb72b29b1cac6fc4253646a7839586064) fix: Remove incorrect RuleContext types (#19910) (Nicholas C. Zakas) +* [`a6a6325`](https://github.com/eslint/eslint/commit/a6a63259de6cb5642f69c7be429554bbcedca4c0) feat: support explicit resource management in `no-loop-func` (#19895) (Milos Djermanovic) +* [`4682cdc`](https://github.com/eslint/eslint/commit/4682cdc6960279ee17f23899fbab6f58d881eadf) feat: support explicit resource management in `no-undef-init` (#19894) (Milos Djermanovic) +* [`5848216`](https://github.com/eslint/eslint/commit/58482165eaf597cc5c58216a956c301ae87520b3) feat: support explicit resource management in `init-declarations` (#19893) (Milos Djermanovic) +* [`bb370b8`](https://github.com/eslint/eslint/commit/bb370b8e79f65ee32d9d89ecf249fb74a141ad22) feat: support explicit resource management in `no-const-assign` (#19892) (Milos Djermanovic) +* [`5a0069d`](https://github.com/eslint/eslint/commit/5a0069d60815246cf24e1c96125540792c2507ef) docs: Update README (GitHub Actions Bot) +* [`fef04b5`](https://github.com/eslint/eslint/commit/fef04b5c7fea99362d67b31b8e98cd4914020ed3) docs: Update working on issues info (#19902) (Nicholas C. Zakas) + v9.30.1 - July 1, 2025 * [`b035f74`](https://github.com/eslint/eslint/commit/b035f747c6e6d1c7a299c90b0ed0b8109cf24a53) chore: upgrade to `@eslint/js@9.30.1` (#19906) (Francesco Trotta) From 14053edc64bd378ab920575f2488fbfcbb5a4ea0 Mon Sep 17 00:00:00 2001 From: Jenkins Date: Fri, 11 Jul 2025 20:33:46 +0000 Subject: [PATCH 017/165] 9.31.0 --- docs/package.json | 2 +- docs/src/_data/rules.json | 2 +- docs/src/_data/rules_meta.json | 2 +- docs/src/_data/versions.json | 2 +- docs/src/use/formatters/html-formatter-example.html | 2 +- package.json | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/package.json b/docs/package.json index 6698ecb58371..3194255ff85c 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,7 +1,7 @@ { "name": "docs-eslint", "private": true, - "version": "9.30.1", + "version": "9.31.0", "description": "", "main": "index.js", "keywords": [], diff --git a/docs/src/_data/rules.json b/docs/src/_data/rules.json index a1f5e2e2ea45..b88c8da9ca7f 100644 --- a/docs/src/_data/rules.json +++ b/docs/src/_data/rules.json @@ -75,7 +75,7 @@ }, { "name": "no-const-assign", - "description": "Disallow reassigning `const` variables", + "description": "Disallow reassigning `const`, `using`, and `await using` variables", "recommended": true, "fixable": false, "frozen": false, diff --git a/docs/src/_data/rules_meta.json b/docs/src/_data/rules_meta.json index e262db98852f..5e240ae89314 100644 --- a/docs/src/_data/rules_meta.json +++ b/docs/src/_data/rules_meta.json @@ -1795,7 +1795,7 @@ "no-const-assign": { "type": "problem", "docs": { - "description": "Disallow reassigning `const` variables", + "description": "Disallow reassigning `const`, `using`, and `await using` variables", "recommended": true, "url": "https://eslint.org/docs/latest/rules/no-const-assign" } diff --git a/docs/src/_data/versions.json b/docs/src/_data/versions.json index df8e8b46d1eb..fa517d3ed27a 100644 --- a/docs/src/_data/versions.json +++ b/docs/src/_data/versions.json @@ -6,7 +6,7 @@ "path": "/docs/head/" }, { - "version": "9.30.1", + "version": "9.31.0", "branch": "latest", "path": "/docs/latest/" }, diff --git a/docs/src/use/formatters/html-formatter-example.html b/docs/src/use/formatters/html-formatter-example.html index b3c742130bcd..af978fa7e64b 100644 --- a/docs/src/use/formatters/html-formatter-example.html +++ b/docs/src/use/formatters/html-formatter-example.html @@ -118,7 +118,7 @@

ESLint Report

- 8 problems (4 errors, 4 warnings) - Generated on Tue Jul 01 2025 20:11:40 GMT+0000 (Coordinated Universal Time) + 8 problems (4 errors, 4 warnings) - Generated on Fri Jul 11 2025 20:33:47 GMT+0000 (Coordinated Universal Time)
diff --git a/package.json b/package.json index efa6abf8a558..30e6627a086d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "eslint", - "version": "9.30.1", + "version": "9.31.0", "author": "Nicholas C. Zakas ", "description": "An AST-based pattern checker for JavaScript.", "type": "commonjs", From 317330552e2d276221c7f2dd9c1516ad8b41cc3c Mon Sep 17 00:00:00 2001 From: TKDev7 Date: Tue, 15 Jul 2025 07:07:19 +0300 Subject: [PATCH 018/165] fix: update execScript message in no-implied-eval rule (#19937) --- lib/rules/no-implied-eval.js | 8 +++- tests/lib/rules/no-implied-eval.js | 72 ++++++++++++++++++++++++++++-- 2 files changed, 75 insertions(+), 5 deletions(-) diff --git a/lib/rules/no-implied-eval.js b/lib/rules/no-implied-eval.js index 70adde2aeb93..6d0998aad502 100644 --- a/lib/rules/no-implied-eval.js +++ b/lib/rules/no-implied-eval.js @@ -32,6 +32,7 @@ module.exports = { messages: { impliedEval: "Implied eval. Consider passing a function instead of a string.", + execScript: "Implied eval. Do not use execScript().", }, }, @@ -85,9 +86,14 @@ module.exports = { isStaticString || isEvaluatedString(firstArgument); if (isString) { + const calleeName = + node.callee.type === "Identifier" + ? node.callee.name + : astUtils.getStaticPropertyName(node.callee); + const isExecScript = calleeName === "execScript"; context.report({ node, - messageId: "impliedEval", + messageId: isExecScript ? "execScript" : "impliedEval", }); } } diff --git a/tests/lib/rules/no-implied-eval.js b/tests/lib/rules/no-implied-eval.js index 3af50663157d..692d890cc453 100644 --- a/tests/lib/rules/no-implied-eval.js +++ b/tests/lib/rules/no-implied-eval.js @@ -267,7 +267,10 @@ ruleTester.run("no-implied-eval", rule, { { code: 'setTimeout("x = 1;");', errors: [expectedError] }, { code: 'setTimeout("x = 1;", 100);', errors: [expectedError] }, { code: 'setInterval("x = 1;");', errors: [expectedError] }, - { code: 'execScript("x = 1;");', errors: [expectedError] }, + { + code: 'execScript("x = 1;");', + errors: [{ messageId: "execScript", type: "CallExpression" }], + }, { code: "const s = 'x=1'; setTimeout(s, 100);", @@ -291,6 +294,11 @@ ruleTester.run("no-implied-eval", rule, { languageOptions: { globals: globals.browser }, errors: [expectedError], }, + { + code: "window.execScript('foo')", + languageOptions: { globals: globals.browser }, + errors: [{ messageId: "execScript", type: "CallExpression" }], + }, { code: "window['setTimeout']('foo')", languageOptions: { globals: globals.browser }, @@ -306,11 +314,26 @@ ruleTester.run("no-implied-eval", rule, { languageOptions: { ecmaVersion: 6, globals: globals.browser }, errors: [expectedError], }, + { + code: "window['execScript']('foo')", + languageOptions: { globals: globals.browser }, + errors: [{ messageId: "execScript", type: "CallExpression" }], + }, + { + code: "window[`execScript`]('foo')", + languageOptions: { ecmaVersion: 6, globals: globals.browser }, + errors: [{ messageId: "execScript", type: "CallExpression" }], + }, { code: "window.window['setInterval']('foo')", languageOptions: { globals: globals.browser }, errors: [expectedError], }, + { + code: "window.window['execScript']('foo')", + languageOptions: { globals: globals.browser }, + errors: [{ messageId: "execScript", type: "CallExpression" }], + }, { code: "global.setTimeout('foo')", languageOptions: { sourceType: "commonjs" }, @@ -321,6 +344,11 @@ ruleTester.run("no-implied-eval", rule, { languageOptions: { sourceType: "commonjs" }, errors: [expectedError], }, + { + code: "global.execScript('foo')", + languageOptions: { sourceType: "commonjs" }, + errors: [{ messageId: "execScript", type: "CallExpression" }], + }, { code: "global['setTimeout']('foo')", languageOptions: { sourceType: "commonjs" }, @@ -336,11 +364,26 @@ ruleTester.run("no-implied-eval", rule, { languageOptions: { ecmaVersion: 6, sourceType: "commonjs" }, errors: [expectedError], }, + { + code: "global['execScript']('foo')", + languageOptions: { sourceType: "commonjs" }, + errors: [{ messageId: "execScript", type: "CallExpression" }], + }, + { + code: "global[`execScript`]('foo')", + languageOptions: { ecmaVersion: 6, sourceType: "commonjs" }, + errors: [{ messageId: "execScript", type: "CallExpression" }], + }, { code: "global.global['setInterval']('foo')", languageOptions: { sourceType: "commonjs" }, errors: [expectedError], }, + { + code: "global.global['execScript']('foo')", + languageOptions: { sourceType: "commonjs" }, + errors: [{ messageId: "execScript", type: "CallExpression" }], + }, { code: "globalThis.setTimeout('foo')", languageOptions: { ecmaVersion: 2020 }, @@ -351,6 +394,11 @@ ruleTester.run("no-implied-eval", rule, { languageOptions: { ecmaVersion: 2020 }, errors: [expectedError], }, + { + code: "globalThis.execScript('foo')", + languageOptions: { ecmaVersion: 2020 }, + errors: [{ messageId: "execScript", type: "CallExpression" }], + }, // template literals { @@ -456,7 +504,7 @@ ruleTester.run("no-implied-eval", rule, { // no error on line 2 { - messageId: "impliedEval", + messageId: "execScript", type: "CallExpression", line: 3, }, @@ -479,7 +527,7 @@ ruleTester.run("no-implied-eval", rule, { // no error on line 2 { - messageId: "impliedEval", + messageId: "execScript", type: "CallExpression", line: 3, }, @@ -502,7 +550,7 @@ ruleTester.run("no-implied-eval", rule, { // no error on line 2 { - messageId: "impliedEval", + messageId: "execScript", type: "CallExpression", line: 3, }, @@ -526,5 +574,21 @@ ruleTester.run("no-implied-eval", rule, { }, errors: [{ messageId: "impliedEval" }], }, + { + code: "window?.execScript('code')", + languageOptions: { + ecmaVersion: 2020, + globals: { window: "readonly" }, + }, + errors: [{ messageId: "execScript" }], + }, + { + code: "(window?.execScript)('code')", + languageOptions: { + ecmaVersion: 2020, + globals: { window: "readonly" }, + }, + errors: [{ messageId: "execScript" }], + }, ], }); From c565a530f50c96dacd44e096f7d531b073aa4dc7 Mon Sep 17 00:00:00 2001 From: Milos Djermanovic Date: Tue, 15 Jul 2025 12:16:30 +0200 Subject: [PATCH 019/165] chore: exclude `further_reading_links.json` from Prettier formatting (#19943) --- .prettierignore | 1 + docs/src/_data/further_reading_links.json | 2 +- tools/fetch-docs-links.js | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.prettierignore b/.prettierignore index 899a095338fa..33e6a2993fda 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,5 +1,6 @@ CHANGELOG.md docs/package.json +docs/src/_data/further_reading_links.json docs/src/_data/rule_versions.json docs/src/_data/rules.json docs/src/_data/rules_meta.json diff --git a/docs/src/_data/further_reading_links.json b/docs/src/_data/further_reading_links.json index fdc47abc82f7..8d4260b2935b 100644 --- a/docs/src/_data/further_reading_links.json +++ b/docs/src/_data/further_reading_links.json @@ -797,4 +797,4 @@ "title": "ECMAScript® 2020 Language Specification", "description": null } -} +} \ No newline at end of file diff --git a/tools/fetch-docs-links.js b/tools/fetch-docs-links.js index 035defaed249..958ec49a5f8e 100644 --- a/tools/fetch-docs-links.js +++ b/tools/fetch-docs-links.js @@ -103,5 +103,5 @@ async function fetchLinkMeta(url) { } // Last write new data into the current data file - await fs.writeFile(DATA_FILE_PATH, JSON.stringify(links, null, 4), "utf8"); + await fs.writeFile(DATA_FILE_PATH, JSON.stringify(links, null, 2), "utf8"); })(); From 7863d26b7cfb03a81ec86f93439757ff60bf6afb Mon Sep 17 00:00:00 2001 From: ntnyq Date: Tue, 15 Jul 2025 19:44:49 +0800 Subject: [PATCH 020/165] fix: remove outdated types in `ParserOptions.ecmaFeatures` (#19944) fix: remove outdated types `ParserOptions.ecmaFeatures.experimentalObjectRestSpread` --- lib/types/index.d.ts | 1 - tests/lib/types/types.test.ts | 20 -------------------- 2 files changed, 21 deletions(-) diff --git a/lib/types/index.d.ts b/lib/types/index.d.ts index 8c816338444f..953554f5e4d9 100644 --- a/lib/types/index.d.ts +++ b/lib/types/index.d.ts @@ -1597,7 +1597,6 @@ export namespace Linter { globalReturn?: boolean | undefined; impliedStrict?: boolean | undefined; jsx?: boolean | undefined; - experimentalObjectRestSpread?: boolean | undefined; [key: string]: any; } | undefined; diff --git a/tests/lib/types/types.test.ts b/tests/lib/types/types.test.ts index f55f1bf36bcf..8b3f42ab0051 100644 --- a/tests/lib/types/types.test.ts +++ b/tests/lib/types/types.test.ts @@ -929,16 +929,6 @@ linter.verify( { parserOptions: { ecmaVersion: 6, ecmaFeatures: { globalReturn: true } } }, "test.js", ); -linter.verify( - SOURCE, - { - parserOptions: { - ecmaVersion: 6, - ecmaFeatures: { experimentalObjectRestSpread: true }, - }, - }, - "test.js", -); linter.verify( SOURCE, { @@ -1358,16 +1348,6 @@ linterWithEslintrcConfig.verify( { parserOptions: { ecmaVersion: 6, ecmaFeatures: { globalReturn: true } } }, "test.js", ); -linterWithEslintrcConfig.verify( - SOURCE, - { - parserOptions: { - ecmaVersion: 6, - ecmaFeatures: { experimentalObjectRestSpread: true }, - }, - }, - "test.js", -); linterWithEslintrcConfig.verify( SOURCE, { From 2f73a23655092a41780859ffe0a07c44a2f1b5f5 Mon Sep 17 00:00:00 2001 From: Milos Djermanovic Date: Thu, 17 Jul 2025 05:50:08 +0200 Subject: [PATCH 021/165] test: switch to flat config mode in `ast-utils` tests (#19948) --- tests/lib/rules/utils/ast-utils.js | 532 +++++++++++++++++------------ 1 file changed, 308 insertions(+), 224 deletions(-) diff --git a/tests/lib/rules/utils/ast-utils.js b/tests/lib/rules/utils/ast-utils.js index 53d248b90c2b..30a43bdf9cc4 100644 --- a/tests/lib/rules/utils/ast-utils.js +++ b/tests/lib/rules/utils/ast-utils.js @@ -27,7 +27,7 @@ const ESPREE_CONFIG = { range: true, loc: true, }; -const linter = new Linter({ configType: "eslintrc" }); +const linter = new Linter(); describe("ast-utils", () => { let callCounts; @@ -89,37 +89,55 @@ describe("ast-utils", () => { describe("isTokenOnSameLine", () => { it("should return false if the tokens are not on the same line", () => { - linter.defineRule("checker", { - create: mustCall(context => ({ - BlockStatement: mustCall(node => { - assert.isFalse( - astUtils.isTokenOnSameLine( - context.sourceCode.getTokenBefore(node), - node, - ), - ); - }), - })), + linter.verify("if(a)\n{}", { + plugins: { + test: { + rules: { + checker: { + create: mustCall(context => ({ + BlockStatement: mustCall(node => { + assert.isFalse( + astUtils.isTokenOnSameLine( + context.sourceCode.getTokenBefore( + node, + ), + node, + ), + ); + }), + })), + }, + }, + }, + }, + rules: { "test/checker": "error" }, }); - - linter.verify("if(a)\n{}", { rules: { checker: "error" } }); }); it("should return true if the tokens are on the same line", () => { - linter.defineRule("checker", { - create: mustCall(context => ({ - BlockStatement: mustCall(node => { - assert.isTrue( - astUtils.isTokenOnSameLine( - context.sourceCode.getTokenBefore(node), - node, - ), - ); - }), - })), + linter.verify("if(a){}", { + plugins: { + test: { + rules: { + checker: { + create: mustCall(context => ({ + BlockStatement: mustCall(node => { + assert.isTrue( + astUtils.isTokenOnSameLine( + context.sourceCode.getTokenBefore( + node, + ), + node, + ), + ); + }), + })), + }, + }, + }, + }, + rules: { "test/checker": "error" }, }); - - linter.verify("if(a){}", { rules: { checker: "error" } }); }); }); @@ -185,124 +203,155 @@ describe("ast-utils", () => { describe("checkReference", () => { // catch it("should return true if reference is assigned for catch", () => { - linter.defineRule("checker", { - create: mustCall(context => ({ - CatchClause: mustCall(node => { - const variables = - context.sourceCode.getDeclaredVariables(node); - - assert.lengthOf( - astUtils.getModifyingReferences( - variables[0].references, - ), - 1, - ); - }), - })), - }); - linter.verify("try { } catch (e) { e = 10; }", { - rules: { checker: "error" }, + plugins: { + test: { + rules: { + checker: { + create: mustCall(context => ({ + CatchClause: mustCall(node => { + const variables = + context.sourceCode.getDeclaredVariables( + node, + ); + + assert.lengthOf( + astUtils.getModifyingReferences( + variables[0].references, + ), + 1, + ); + }), + })), + }, + }, + }, + }, + rules: { "test/checker": "error" }, }); }); // const it("should return true if reference is assigned for const", () => { - linter.defineRule("checker", { - create: mustCall(context => ({ - VariableDeclaration: mustCall(node => { - const variables = - context.sourceCode.getDeclaredVariables(node); - - assert.lengthOf( - astUtils.getModifyingReferences( - variables[0].references, - ), - 1, - ); - }), - })), - }); - linter.verify("const a = 1; a = 2;", { - rules: { checker: "error" }, - parserOptions: { ecmaVersion: 6 }, + plugins: { + test: { + rules: { + checker: { + create: mustCall(context => ({ + VariableDeclaration: mustCall(node => { + const variables = + context.sourceCode.getDeclaredVariables( + node, + ); + + assert.lengthOf( + astUtils.getModifyingReferences( + variables[0].references, + ), + 1, + ); + }), + })), + }, + }, + }, + }, + rules: { "test/checker": "error" }, }); }); it("should return false if reference is not assigned for const", () => { - linter.defineRule("checker", { - create: mustCall(context => ({ - VariableDeclaration: mustCall(node => { - const variables = - context.sourceCode.getDeclaredVariables(node); - - assert.lengthOf( - astUtils.getModifyingReferences( - variables[0].references, - ), - 0, - ); - }), - })), - }); - linter.verify("const a = 1; c = 2;", { - rules: { checker: "error" }, - parserOptions: { ecmaVersion: 6 }, + plugins: { + test: { + rules: { + checker: { + create: mustCall(context => ({ + VariableDeclaration: mustCall(node => { + const variables = + context.sourceCode.getDeclaredVariables( + node, + ); + + assert.lengthOf( + astUtils.getModifyingReferences( + variables[0].references, + ), + 0, + ); + }), + })), + }, + }, + }, + }, + rules: { "test/checker": "error" }, }); }); // class it("should return true if reference is assigned for class", () => { - linter.defineRule("checker", { - create: mustCall(context => ({ - ClassDeclaration: mustCall(node => { - const variables = - context.sourceCode.getDeclaredVariables(node); - - assert.lengthOf( - astUtils.getModifyingReferences( - variables[0].references, - ), - 1, - ); - assert.lengthOf( - astUtils.getModifyingReferences( - variables[1].references, - ), - 0, - ); - }), - })), - }); - linter.verify("class A { }\n A = 1;", { - rules: { checker: "error" }, - parserOptions: { ecmaVersion: 6 }, + plugins: { + test: { + rules: { + checker: { + create: mustCall(context => ({ + ClassDeclaration: mustCall(node => { + const variables = + context.sourceCode.getDeclaredVariables( + node, + ); + + assert.lengthOf( + astUtils.getModifyingReferences( + variables[0].references, + ), + 1, + ); + assert.lengthOf( + astUtils.getModifyingReferences( + variables[1].references, + ), + 0, + ); + }), + })), + }, + }, + }, + }, + rules: { "test/checker": "error" }, }); }); it("should return false if reference is not assigned for class", () => { - linter.defineRule("checker", { - create: mustCall(context => ({ - ClassDeclaration: mustCall(node => { - const variables = - context.sourceCode.getDeclaredVariables(node); - - assert.lengthOf( - astUtils.getModifyingReferences( - variables[0].references, - ), - 0, - ); - }), - })), - }); - linter.verify("class A { } foo(A);", { - rules: { checker: "error" }, - parserOptions: { ecmaVersion: 6 }, + plugins: { + test: { + rules: { + checker: { + create: mustCall(context => ({ + ClassDeclaration: mustCall(node => { + const variables = + context.sourceCode.getDeclaredVariables( + node, + ); + + assert.lengthOf( + astUtils.getModifyingReferences( + variables[0].references, + ), + 0, + ); + }), + })), + }, + }, + }, + }, + rules: { "test/checker": "error" }, }); }); }); @@ -504,16 +553,21 @@ describe("ast-utils", () => { function assertNodeTypeInLoop(code, nodeType, expectedInLoop) { const results = []; - linter.defineRule("checker", { - create: mustCall(() => ({ - [nodeType]: mustCall(node => { - results.push(astUtils.isInLoop(node)); - }), - })), - }); linter.verify(code, { - rules: { checker: "error" }, - parserOptions: { ecmaVersion: 6 }, + plugins: { + test: { + rules: { + checker: { + create: mustCall(() => ({ + [nodeType]: mustCall(node => { + results.push(astUtils.isInLoop(node)); + }), + })), + }, + }, + }, + }, + rules: { "test/checker": "error" }, }); assert.lengthOf(results, 1); @@ -1082,20 +1136,26 @@ describe("ast-utils", () => { Object.keys(expectedResults).forEach(key => { it(`should return "${expectedResults[key]}" for "${key}".`, () => { - linter.defineRule("checker", { - create: mustCall(() => ({ - ":function": mustCall(node => { - assert.strictEqual( - astUtils.getFunctionNameWithKind(node), - expectedResults[key], - ); - }), - })), - }); - linter.verify(key, { - rules: { checker: "error" }, - parserOptions: { ecmaVersion: 13 }, + plugins: { + test: { + rules: { + checker: { + create: mustCall(() => ({ + ":function": mustCall(node => { + assert.strictEqual( + astUtils.getFunctionNameWithKind( + node, + ), + expectedResults[key], + ); + }), + })), + }, + }, + }, + }, + rules: { "test/checker": "error" }, }); }); }); @@ -1165,25 +1225,29 @@ describe("ast-utils", () => { }; it(`should return "${JSON.stringify(expectedLoc)}" for "${key}".`, () => { - linter.defineRule("checker", { - create: mustCall(() => ({ - ":function": mustCall(node => { - assert.deepStrictEqual( - astUtils.getFunctionHeadLoc( - node, - linter.getSourceCode(), - ), - expectedLoc, - ); - }), - })), - }); - linter.verify( key, { - rules: { checker: "error" }, - parserOptions: { ecmaVersion: 13 }, + plugins: { + test: { + rules: { + checker: { + create: mustCall(() => ({ + ":function": mustCall(node => { + assert.deepStrictEqual( + astUtils.getFunctionHeadLoc( + node, + linter.getSourceCode(), + ), + expectedLoc, + ); + }), + })), + }, + }, + }, + }, + rules: { "test/checker": "error" }, }, "test.js", ); @@ -2341,20 +2405,26 @@ describe("ast-utils", () => { }); it("should return false if the node is not an ExpressionStatement", () => { - linter.defineRule("checker", { - create: mustCall(() => ({ - ":expression": mustCall(node => { - assert.strictEqual( - astUtils.isTopLevelExpressionStatement(node), - false, - ); - }), - })), - }); - linter.verify('var foo = () => "use strict";', { - rules: { checker: "error" }, - parserOptions: { ecmaVersion: 2022 }, + plugins: { + test: { + rules: { + checker: { + create: mustCall(() => ({ + ":expression": mustCall(node => { + assert.strictEqual( + astUtils.isTopLevelExpressionStatement( + node, + ), + false, + ); + }), + })), + }, + }, + }, + }, + rules: { "test/checker": "error" }, }); }); @@ -2377,31 +2447,38 @@ describe("ast-utils", () => { expectedResults.forEach(([code, nodeText, expectedRetVal]) => { it(`should return ${expectedRetVal} for \`${nodeText}\` in \`${code}\``, () => { - linter.defineRule("checker", { - create: mustCall(context => { - const assertForNode = mustCall(node => - assert.strictEqual( - astUtils.isTopLevelExpressionStatement(node), - expectedRetVal, - ), - ); - - return { - ExpressionStatement(node) { - if ( - context.sourceCode.getText(node) === - nodeText - ) { - assertForNode(node); - } - }, - }; - }), - }); - linter.verify(code, { - rules: { checker: "error" }, - parserOptions: { ecmaVersion: 2022 }, + plugins: { + test: { + rules: { + checker: { + create: mustCall(context => { + const assertForNode = mustCall(node => + assert.strictEqual( + astUtils.isTopLevelExpressionStatement( + node, + ), + expectedRetVal, + ), + ); + + return { + ExpressionStatement(node) { + if ( + context.sourceCode.getText( + node, + ) === nodeText + ) { + assertForNode(node); + } + }, + }; + }), + }, + }, + }, + }, + rules: { "test/checker": "error" }, }); }); }); @@ -2457,34 +2534,41 @@ describe("ast-utils", () => { expectedResults.forEach(({ code, nodeText = code, expectedRetVal }) => { it(`should return ${expectedRetVal} for \`${nodeText}\` in \`${code}\``, () => { - linter.defineRule("checker", { - create: mustCall(({ sourceCode }) => { - const assertForNode = mustCall(node => - assert.strictEqual( - astUtils.isDirective(node), - expectedRetVal, - ), - ); - - return { - ExpressionStatement(node) { - if (sourceCode.getText(node) === nodeText) { - assertForNode(node); - - if (!expectedRetVal) { - // The flow parser sets `directive` to null on non-directive ExpressionStatement nodes. - node.directive = null; - assertForNode(node); - } - } - }, - }; - }), - }); - linter.verify(code, { - rules: { checker: "error" }, - parserOptions: { ecmaVersion: 2022 }, + plugins: { + test: { + rules: { + checker: { + create: mustCall(({ sourceCode }) => { + const assertForNode = mustCall(node => + assert.strictEqual( + astUtils.isDirective(node), + expectedRetVal, + ), + ); + + return { + ExpressionStatement(node) { + if ( + sourceCode.getText(node) === + nodeText + ) { + assertForNode(node); + + if (!expectedRetVal) { + // The flow parser sets `directive` to null on non-directive ExpressionStatement nodes. + node.directive = null; + assertForNode(node); + } + } + }, + }; + }), + }, + }, + }, + }, + rules: { "test/checker": "error" }, }); }); }); From 0e957a7b5528f375a51e7c1a2fd1b03cdcd2af2d Mon Sep 17 00:00:00 2001 From: fnx <966276+DMartens@users.noreply.github.com> Date: Thu, 17 Jul 2025 07:04:27 +0200 Subject: [PATCH 022/165] feat: support typescript types in accessor rules (#19882) --- docs/src/rules/accessor-pairs.md | 66 ++++++++++ docs/src/rules/grouped-accessor-pairs.md | 50 +++++++- lib/rules/accessor-pairs.js | 35 +++++ lib/rules/grouped-accessor-pairs.js | 42 +++++- lib/rules/utils/ast-utils.js | 22 +++- lib/types/rules.d.ts | 14 +- tests/lib/rules/accessor-pairs.js | 150 ++++++++++++++++++++++ tests/lib/rules/grouped-accessor-pairs.js | 120 +++++++++++++++++ 8 files changed, 487 insertions(+), 12 deletions(-) diff --git a/docs/src/rules/accessor-pairs.md b/docs/src/rules/accessor-pairs.md index 776b116e6d28..9d243ece366f 100644 --- a/docs/src/rules/accessor-pairs.md +++ b/docs/src/rules/accessor-pairs.md @@ -51,6 +51,7 @@ This rule always checks object literals and property descriptors. By default, it * `setWithoutGet` set to `true` will warn for setters without getters (Default `true`). * `getWithoutSet` set to `true` will warn for getters without setters (Default `false`). * `enforceForClassMembers` set to `true` additionally applies this rule to class getters/setters (Default `true`). Set `enforceForClassMembers` to `false` if you want this rule to ignore class declarations and class expressions. +* `enforceForTSTypes`: set to `true` additionally applies this rule to TypeScript type definitions (Default `false`). ### setWithoutGet @@ -273,6 +274,71 @@ const Quux = class { ::: +### enforceForTSTypes + +When `enforceForTSTypes` is set to `true`: + +* `"getWithoutSet": true` will also warn for getters without setters in TypeScript types. +* `"setWithoutGet": true` will also warn for setters without getters in TypeScript types. + +Examples of **incorrect** code for `{ "getWithoutSet": true, "enforceForTSTypes": true }`: + +:::incorrect + +```ts +/*eslint accessor-pairs: ["error", { "getWithoutSet": true, "enforceForTSTypes": true }]*/ + +interface I { + get a(): string +} + +type T = { + get a(): number +} +``` + +::: + +Examples of **incorrect** code for `{ "setWithoutGet": true, "enforceForTSTypes": true }`: + +:::incorrect + +```ts +/*eslint accessor-pairs: ["error", { "setWithoutGet": true, "enforceForTSTypes": true }]*/ + +interface I { + set a(value: unknown): void +} + +type T = { + set a(value: unknown): void +} +``` + +::: + +When `enforceForTSTypes` is set to `false`, this rule ignores TypeScript types. + +Examples of **correct** code for `{ "getWithoutSet": true, "setWithoutGet": true, "enforceForTSTypes": false }`: + +:::correct + +```ts +/*eslint accessor-pairs: ["error", { + "getWithoutSet": true, "setWithoutGet": true, "enforceForTSTypes": false +}]*/ + +interface I { + get a(): string +} + +type T = { + set a(value: unknown): void +} +``` + +::: + ## Known Limitations Due to the limits of static analysis, this rule does not account for possible side effects and in certain cases diff --git a/docs/src/rules/grouped-accessor-pairs.md b/docs/src/rules/grouped-accessor-pairs.md index 61ee8c485dd7..53d6f8213abf 100644 --- a/docs/src/rules/grouped-accessor-pairs.md +++ b/docs/src/rules/grouped-accessor-pairs.md @@ -152,12 +152,15 @@ const Bar = class { ## Options -This rule has a string option: - +This rule has a primary string and an optional secondary object option. +The string option specifies the order: * `"anyOrder"` (default) does not enforce order. * `"getBeforeSet"` if a property has both getter and setter, requires the getter to be defined before the setter. * `"setBeforeGet"` if a property has both getter and setter, requires the setter to be defined before the getter. +The optional object option allows opting-in to check additional object-likes: +* `enforceForTSTypes`: also check TypeScript types (interfaces and type literals) + ### getBeforeSet Examples of **incorrect** code for this rule with the `"getBeforeSet"` option: @@ -308,6 +311,49 @@ const Bar = class { } ``` +::: +### enforceForTSTypes + +Examples of **incorrect** code for this rule with `["anyOrder", { enforceForTSTypes: true }]`: + +::: incorrect + +```ts +/*eslint grouped-accessor-pairs: ["error", "anyOrder", { enforceForTSTypes: true }] */ + +interface I { + get a(): string, + between: true, + set a(value: string): void +} + +type T = { + get a(): string, + between: true, + set a(value: string): void +}; +``` + +::: + +Examples of **correct** code for this rule with with `["anyOrder", { enforceForTSTypes: true }]`: + +::: correct + +```ts +/*eslint grouped-accessor-pairs: ["error", "anyOrder", { enforceForTSTypes: true }] */ + +interface I { + get a(): string, + set a(value: string): void, +} + +type T = { + set a(value: string): void, + get a(): string, +}; +``` + ::: ## Known Limitations diff --git a/lib/rules/accessor-pairs.js b/lib/rules/accessor-pairs.js index c7e2e2610862..4af67ad772ca 100644 --- a/lib/rules/accessor-pairs.js +++ b/lib/rules/accessor-pairs.js @@ -148,6 +148,7 @@ module.exports = { defaultOptions: [ { + enforceForTSTypes: false, enforceForClassMembers: true, getWithoutSet: false, setWithoutGet: true, @@ -174,6 +175,9 @@ module.exports = { enforceForClassMembers: { type: "boolean", }, + enforceForTSTypes: { + type: "boolean", + }, }, additionalProperties: false, }, @@ -190,6 +194,8 @@ module.exports = { "Setter is not present for {{ name }}.", missingGetterInClass: "Getter is not present for class {{ name }}.", missingSetterInClass: "Setter is not present for class {{ name }}.", + missingGetterInType: "Getter is not present for type {{ name }}.", + missingSetterInType: "Setter is not present for type {{ name }}.", }, }, create(context) { @@ -198,6 +204,7 @@ module.exports = { getWithoutSet: checkGetWithoutSet, setWithoutGet: checkSetWithoutGet, enforceForClassMembers, + enforceForTSTypes, }, ] = context.options; const sourceCode = context.sourceCode; @@ -228,6 +235,15 @@ module.exports = { name: astUtils.getFunctionNameWithKind(node.value), }, }); + } else if (node.type === "TSMethodSignature") { + context.report({ + node, + messageId: `${messageKind}InType`, + loc: astUtils.getFunctionHeadLoc(node, sourceCode), + data: { + name: astUtils.getFunctionNameWithKind(node), + }, + }); } else { context.report({ node, @@ -371,6 +387,22 @@ module.exports = { checkList(methodDefinitions.filter(m => !m.static)); } + /** + * Checks the given type. + * @param {ASTNode} node `TSTypeLiteral` or `TSInterfaceBody` node to check. + * @returns {void} + * @private + */ + function checkType(node) { + const members = + node.type === "TSTypeLiteral" ? node.members : node.body; + const methodDefinitions = members.filter( + m => m.type === "TSMethodSignature", + ); + + checkList(methodDefinitions); + } + const listeners = {}; if (checkSetWithoutGet || checkGetWithoutSet) { @@ -378,6 +410,9 @@ module.exports = { if (enforceForClassMembers) { listeners.ClassBody = checkClassBody; } + if (enforceForTSTypes) { + listeners["TSTypeLiteral, TSInterfaceBody"] = checkType; + } } return listeners; diff --git a/lib/rules/grouped-accessor-pairs.js b/lib/rules/grouped-accessor-pairs.js index ad6783f01b64..0f20f2fa5b80 100644 --- a/lib/rules/grouped-accessor-pairs.js +++ b/lib/rules/grouped-accessor-pairs.js @@ -87,6 +87,8 @@ function isAccessorKind(node) { return node.kind === "get" || node.kind === "set"; } +const DEFAULT_ORDER = "anyOrder"; + //------------------------------------------------------------------------------ // Rule Definition //------------------------------------------------------------------------------ @@ -96,7 +98,7 @@ module.exports = { meta: { type: "suggestion", - defaultOptions: ["anyOrder"], + defaultOptions: [DEFAULT_ORDER], docs: { description: @@ -106,8 +108,15 @@ module.exports = { }, schema: [ + { enum: ["anyOrder", "getBeforeSet", "setBeforeGet"] }, { - enum: ["anyOrder", "getBeforeSet", "setBeforeGet"], + type: "object", + properties: { + enforceForTSTypes: { + type: "boolean", + }, + }, + additionalProperties: false, }, ], @@ -120,7 +129,9 @@ module.exports = { }, create(context) { - const [order] = context.options; + const order = context.options[0] ?? DEFAULT_ORDER; + const enforceForTSTypes = + context.options[1]?.enforceForTSTypes ?? false; const sourceCode = context.sourceCode; /** @@ -135,13 +146,22 @@ module.exports = { context.report({ node: latterNode, messageId, - loc: astUtils.getFunctionHeadLoc(latterNode.value, sourceCode), + loc: astUtils.getFunctionHeadLoc( + latterNode.type !== "TSMethodSignature" + ? latterNode.value + : latterNode, + sourceCode, + ), data: { formerName: astUtils.getFunctionNameWithKind( - formerNode.value, + formerNode.type !== "TSMethodSignature" + ? formerNode.value + : formerNode, ), latterName: astUtils.getFunctionNameWithKind( - latterNode.value, + latterNode.type !== "TSMethodSignature" + ? latterNode.value + : latterNode, ), }, }); @@ -232,6 +252,16 @@ module.exports = { n => n.type === "MethodDefinition" && n.static, ); }, + "TSTypeLiteral, TSInterfaceBody"(node) { + if (enforceForTSTypes) { + checkList( + node.type === "TSTypeLiteral" + ? node.members + : node.body, + n => n.type === "TSMethodSignature", + ); + } + }, }; }, }; diff --git a/lib/rules/utils/ast-utils.js b/lib/rules/utils/ast-utils.js index 1225f8134f0c..fb4c7b8c29cf 100644 --- a/lib/rules/utils/ast-utils.js +++ b/lib/rules/utils/ast-utils.js @@ -298,6 +298,8 @@ function getStaticPropertyName(node) { case "Property": case "PropertyDefinition": case "MethodDefinition": + case "TSPropertySignature": + case "TSMethodSignature": prop = node.key; break; @@ -1989,13 +1991,15 @@ module.exports = { if ( parent.type === "MethodDefinition" || - parent.type === "PropertyDefinition" + parent.type === "PropertyDefinition" || + node.type === "TSPropertySignature" || + node.type === "TSMethodSignature" ) { // The proposal uses `static` word consistently before visibility words: https://github.com/tc39/proposal-static-class-features if (parent.static) { tokens.push("static"); } - if (!parent.computed && parent.key.type === "PrivateIdentifier") { + if (!parent.computed && parent.key?.type === "PrivateIdentifier") { tokens.push("private"); } } @@ -2017,6 +2021,14 @@ module.exports = { } else { tokens.push("method"); } + } else if (node.type === "TSMethodSignature") { + if (node.kind === "get") { + tokens.push("getter"); + } else if (node.kind === "set") { + tokens.push("setter"); + } else { + tokens.push("method"); + } } else if (parent.type === "PropertyDefinition") { tokens.push("method"); } else { @@ -2042,6 +2054,8 @@ module.exports = { tokens.push(`'${node.id.name}'`); } } + } else if (node.type === "TSMethodSignature") { + tokens.push(`'${getStaticPropertyName(node)}'`); } else if (node.id) { tokens.push(`'${node.id.name}'`); } @@ -2154,7 +2168,9 @@ module.exports = { if ( parent.type === "Property" || parent.type === "MethodDefinition" || - parent.type === "PropertyDefinition" + parent.type === "PropertyDefinition" || + parent.type === "TSPropertySignature" || + parent.type === "TSMethodSignature" ) { start = parent.loc.start; end = getOpeningParenOfParams(node, sourceCode).loc.start; diff --git a/lib/types/rules.d.ts b/lib/types/rules.d.ts index 1cde13386d08..c9e269d21b0d 100644 --- a/lib/types/rules.d.ts +++ b/lib/types/rules.d.ts @@ -116,6 +116,10 @@ export interface ESLintRules extends Linter.RulesRecord { * @default true */ enforceForClassMembers: boolean; + /** + * @default true + */ + enforceForTSTypes: boolean; }>, ] >; @@ -945,7 +949,15 @@ export interface ESLintRules extends Linter.RulesRecord { * @see https://eslint.org/docs/latest/rules/grouped-accessor-pairs */ "grouped-accessor-pairs": Linter.RuleEntry< - ["anyOrder" | "getBeforeSet" | "setBeforeGet"] + [ + "anyOrder" | "getBeforeSet" | "setBeforeGet", + Partial<{ + /** + * @default false + */ + enforceForTSTypes: boolean; + }>, + ] >; /** diff --git a/tests/lib/rules/accessor-pairs.js b/tests/lib/rules/accessor-pairs.js index 836c933b1be7..605f7eebdc14 100644 --- a/tests/lib/rules/accessor-pairs.js +++ b/tests/lib/rules/accessor-pairs.js @@ -3638,3 +3638,153 @@ ruleTester.run("accessor-pairs", rule, { }, ], }); + +const ruleTesterTypeScript = new RuleTester({ + languageOptions: { + parser: require("@typescript-eslint/parser"), + }, +}); + +ruleTesterTypeScript.run("accessor-pairs", rule, { + valid: [ + "interface I { get prop(): any }", + "type T = { set prop(value: any): void }", + { + code: "interface I { get prop(): any, set prop(value: any): void }", + options: [{ enforceForTSTypes: true }], + }, + { + code: "type T = { get prop(): any, set prop(value: any): void }", + options: [{ enforceForTSTypes: true }], + }, + { + code: "interface I { get prop(): any, between: true, set prop(value: any): void }", + options: [{ enforceForTSTypes: true }], + }, + { + code: "interface I { set prop(value: any): void, get prop(): any }", + options: [{ enforceForTSTypes: true }], + }, + { + code: "interface I { set prop(value: any): void, get 'prop'(): any }", + options: [{ enforceForTSTypes: true }], + }, + + { + code: "interface I {}", + options: [{ enforceForTSTypes: true }], + }, + { + code: "interface I { (...args): void }", + options: [{ enforceForTSTypes: true }], + }, + { + code: "interface I { new(...args): unknown }", + options: [{ enforceForTSTypes: true }], + }, + { + code: "interface I { prop: () => any }", + options: [{ enforceForTSTypes: true }], + }, + { + code: "interface I { method(): any }", + options: [{ enforceForTSTypes: true }], + }, + + { + code: "type T = { get prop(): any }", + options: [{ enforceForTSTypes: true }], + }, + ], + invalid: [ + { + code: "({ set prop(value) {} });", + errors: [ + { + message: "Getter is not present for setter 'prop'.", + type: "Property", + }, + ], + }, + { + code: "interface I { set prop(value: any): any }", + options: [{ enforceForTSTypes: true }], + errors: [ + { + message: "Getter is not present for type setter 'prop'.", + type: "TSMethodSignature", + }, + ], + }, + { + code: "interface I { set prop(value: any): any, get other(): any }", + options: [{ enforceForTSTypes: true }], + errors: [ + { + message: "Getter is not present for type setter 'prop'.", + type: "TSMethodSignature", + }, + ], + }, + { + code: "interface I { set prop(value: any): any, prop(): any }", + options: [{ enforceForTSTypes: true }], + errors: [ + { + message: "Getter is not present for type setter 'prop'.", + type: "TSMethodSignature", + }, + ], + }, + { + code: "interface I { set [prop](value: any): any }", + options: [{ enforceForTSTypes: true }], + errors: [ + { + message: "Getter is not present for type setter 'null'.", + type: "TSMethodSignature", + }, + ], + }, + { + code: "interface I { get prop(): any } interface J { set prop(value: any): void }", + options: [{ enforceForTSTypes: true }], + errors: [ + { + message: "Getter is not present for type setter 'prop'.", + type: "TSMethodSignature", + }, + ], + }, + { + code: "type T = { set prop(value: any): any }", + options: [{ enforceForTSTypes: true }], + errors: [ + { + message: "Getter is not present for type setter 'prop'.", + type: "TSMethodSignature", + }, + ], + }, + { + code: "function fn(): { set prop(value: any): any }", + options: [{ enforceForTSTypes: true }], + errors: [ + { + message: "Getter is not present for type setter 'prop'.", + type: "TSMethodSignature", + }, + ], + }, + { + code: "type T = { get prop(): any }", + options: [{ enforceForTSTypes: true, getWithoutSet: true }], + errors: [ + { + message: "Setter is not present for type getter 'prop'.", + type: "TSMethodSignature", + }, + ], + }, + ], +}); diff --git a/tests/lib/rules/grouped-accessor-pairs.js b/tests/lib/rules/grouped-accessor-pairs.js index 7d2bc849b71b..847a81f65539 100644 --- a/tests/lib/rules/grouped-accessor-pairs.js +++ b/tests/lib/rules/grouped-accessor-pairs.js @@ -1034,3 +1034,123 @@ ruleTester.run("grouped-accessor-pairs", rule, { }, ], }); + +const ruleTesterTypeScript = new RuleTester({ + languageOptions: { + parser: require("@typescript-eslint/parser"), + }, +}); + +ruleTesterTypeScript.run("grouped-accessor-pairs", rule, { + valid: [ + "interface I { get prop(): any, between: true, set prop(value: any): void }", + "type T = { get prop(): any, between: true, set prop(value: any): void }", + + { + code: "interface I { get prop(): any, set prop(value: any): void }", + options: ["anyOrder", { enforceForTSTypes: true }], + }, + { + code: "interface I { set prop(value: any): void, get prop(): any }", + options: ["anyOrder", { enforceForTSTypes: true }], + }, + { + code: "interface I { get a(): any, between: true, set b(value: any): void }", + options: ["anyOrder", { enforceForTSTypes: true }], + }, + + { + code: "interface I { before: true, get prop(): any, set prop(value: any): void, after: true }", + options: ["getBeforeSet", { enforceForTSTypes: true }], + }, + { + code: "interface I { set prop(value: any): void, get prop(): any }", + options: ["setBeforeGet", { enforceForTSTypes: true }], + }, + { + code: "type T = { get prop(): any, set prop(value: any): void }", + options: ["anyOrder", { enforceForTSTypes: true }], + }, + { + code: "type T = { set prop(value: any): void, get prop(): any }", + options: ["setBeforeGet", { enforceForTSTypes: true }], + }, + ], + invalid: [ + { + code: "interface I { get a(): any, between: true, set a(value: any): void }", + options: ["anyOrder", { enforceForTSTypes: true }], + errors: [ + { + messageId: "notGrouped", + data: { + formerName: "getter 'a'", + latterName: "setter 'a'", + }, + type: "TSMethodSignature", + column: 44, + }, + ], + }, + { + code: "interface I { get a(): any, set a(value: any): void }", + options: ["setBeforeGet", { enforceForTSTypes: true }], + errors: [ + { + messageId: "invalidOrder", + data: { + formerName: "getter 'a'", + latterName: "setter 'a'", + }, + type: "TSMethodSignature", + column: 29, + }, + ], + }, + { + code: "interface I { set a(value: any): void, get a(): any }", + options: ["getBeforeSet", { enforceForTSTypes: true }], + errors: [ + { + messageId: "invalidOrder", + data: { + formerName: "setter 'a'", + latterName: "getter 'a'", + }, + type: "TSMethodSignature", + column: 40, + }, + ], + }, + { + code: "type T = { get a(): any, between: true, set a(value: any): void }", + options: ["anyOrder", { enforceForTSTypes: true }], + errors: [ + { + messageId: "notGrouped", + data: { + formerName: "getter 'a'", + latterName: "setter 'a'", + }, + type: "TSMethodSignature", + column: 41, + }, + ], + }, + { + code: "type T = { get a(): any, set a(value: any): void }", + options: ["setBeforeGet", { enforceForTSTypes: true }], + errors: [ + { + messageId: "invalidOrder", + data: { + formerName: "getter 'a'", + latterName: "setter 'a'", + }, + type: "TSMethodSignature", + column: 26, + }, + ], + }, + ], +}); From e85571730f1360464b7ee00695c678d551f9c643 Mon Sep 17 00:00:00 2001 From: Francesco Trotta Date: Thu, 17 Jul 2025 12:19:49 +0200 Subject: [PATCH 023/165] chore: switch performance tests to hyperfine (#19919) * chore: switch performance tests to hyperfine * run hyperfine with `execFileSync` * improve naming * update "Loading" test command --- Makefile.js | 308 ++++++++++++++++++++------------------------------- package.json | 1 - 2 files changed, 122 insertions(+), 187 deletions(-) diff --git a/Makefile.js b/Makefile.js index 2b96713d4b3b..4360f4f678a4 100644 --- a/Makefile.js +++ b/Makefile.js @@ -16,13 +16,12 @@ const checker = require("npm-license"), glob = require("glob"), marked = require("marked"), matter = require("gray-matter"), - os = require("node:os"), path = require("node:path"), semver = require("semver"), ejs = require("ejs"), - loadPerf = require("load-perf"), { CLIEngine } = require("./lib/cli-engine"), - builtinRules = require("./lib/rules/index"); + builtinRules = require("./lib/rules"), + childProcess = require("node:child_process"); require("shelljs/make"); /* global target -- global.target is declared in `shelljs/make.js` */ @@ -47,14 +46,6 @@ const { // Settings //------------------------------------------------------------------------------ -/* - * A little bit fuzzy. My computer has a first CPU speed of 3392 and the perf test - * always completes in < 3800ms. However, Travis is less predictable due to - * multiple different VM types. So I'm fudging this for now in the hopes that it - * at least provides some sort of useful signal. - */ -const PERF_MULTIPLIER = 13e6; - const OPEN_SOURCE_LICENSES = [ /MIT/u, /BSD/u, @@ -73,8 +64,7 @@ const MAIN_GIT_BRANCH = "main"; // Data //------------------------------------------------------------------------------ -const NODE = "node ", // intentional extra space - NODE_MODULES = "./node_modules/", +const NODE_MODULES = "./node_modules/", TEMP_DIR = "./tmp/", DEBUG_DIR = "./debug/", BUILD_DIR = "build", @@ -85,21 +75,15 @@ const NODE = "node ", // intentional extra space PERF_TMP_DIR = path.join(TEMP_DIR, "eslint", "performance"), // Utilities - intentional extra space at the end of each string MOCHA = `${NODE_MODULES}mocha/bin/_mocha `, - ESLINT = `${NODE} bin/eslint.js `, // Files RULE_FILES = glob .sync("lib/rules/*.js") .filter(filePath => path.basename(filePath) !== "index.js"), TEST_FILES = '"tests/{bin,conf,lib,tools}/**/*.js"', - PERF_ESLINTRC = path.join(PERF_TMP_DIR, "eslint.config.js"), + PERF_ESLINT_CONFIG = path.join(PERF_TMP_DIR, "eslint.config.js"), PERF_MULTIFILES_TARGET_DIR = path.join(PERF_TMP_DIR, "eslint"), CHANGELOG_FILE = "./CHANGELOG.md", VERSIONS_FILE = "./docs/src/_data/versions.json", - /* - * glob arguments with Windows separator `\` don't work: - * https://github.com/eslint/eslint/issues/16259 - */ - PERF_MULTIFILES_TARGETS = `"${TEMP_DIR}eslint/performance/eslint/{lib,tests/lib}/**/*.js"`, // Settings MOCHA_TIMEOUT = parseInt(process.env.ESLINT_MOCHA_TIMEOUT, 10) || 10000; @@ -364,13 +348,13 @@ function updateVersions(oldVersion, newVersion) { * @returns {void} */ function updateRuleTypeHeaders() { - const { execFileSync } = require("node:child_process"); - // We don't need the stack trace of execFileSync if the command fails. try { - execFileSync(process.execPath, ["tools/update-rule-type-headers.js"], { - stdio: "inherit", - }); + childProcess.execFileSync( + process.execPath, + ["tools/update-rule-type-headers.js"], + { stdio: "inherit" }, + ); } catch { exit(1); } @@ -945,11 +929,9 @@ target.checkRuleFiles = function () { }; target.checkRuleExamples = function () { - const { execFileSync } = require("node:child_process"); - // We don't need the stack trace of execFileSync if the command fails. try { - execFileSync( + childProcess.execFileSync( process.execPath, ["tools/check-rule-examples.js", "docs/src/rules/*.md"], { stdio: "inherit" }, @@ -1009,24 +991,60 @@ target.checkLicenses = function () { ); }; +/** + * Checks if hyperfine is installed and has a supported version. + * If hyperfine is not installed or has an unsupported version, + * an error message with a link to installation instructions is printed, + * and the process exits with code 1. + * @returns {void} + * @throws If an unexpected error occurs while checking the installation. + */ +function checkHyperfineInstallation() { + const INSTALLATION_INSTRUCTIONS_URL = + "https://github.com/sharkdp/hyperfine?tab=readme-ov-file#installation"; + let output; + try { + output = childProcess.execFileSync("hyperfine", ["--version"], { + encoding: "utf8", + }); + } catch (error) { + // If hyperfine is not installed, the error code will be "ENOENT". + if ( + error.code === "ENOENT" && + error.signal === null && + error.status === null + ) { + console.error( + `hyperfine is not installed. Please install it to run performance tests:\n${INSTALLATION_INSTRUCTIONS_URL}`, + ); + exit(1); + } + throw error; + } + // `--shell=none` is not supported by hyperfine < 1.13.0, so we check the version. + const version = / (?\d+\.\d+\.\d+)\n$/u.exec(output)?.groups + .version; + if (!version || semver.lt(version, "1.13.0")) { + console.error( + `Your hyperfine version is not supported. Please install the latest version to run performance tests:\n${INSTALLATION_INSTRUCTIONS_URL}`, + ); + exit(1); + } +} + /** * Downloads a repository which has many js files to test performance with multi files. - * Here, it's eslint@1.10.3 (450 files) - * @param {Function} cb A callback function. + * Here, it's eslint@1.10.3 (450 files). * @returns {void} */ -function downloadMultifilesTestTarget(cb) { - if (test("-d", PERF_MULTIFILES_TARGET_DIR)) { - process.nextTick(cb); - } else { - mkdir("-p", PERF_MULTIFILES_TARGET_DIR); +function downloadMultifilesTestTarget() { + if (!fs.existsSync(PERF_MULTIFILES_TARGET_DIR)) { echo( "Downloading the repository of multi-files performance test target.", ); - exec( - `git clone -b v1.10.3 --depth 1 https://github.com/eslint/eslint.git "${PERF_MULTIFILES_TARGET_DIR}"`, - { silent: true }, - cb, + childProcess.execSync( + `git clone -b v1.10.3 --no-tags --depth 1 https://github.com/eslint/eslint.git "${PERF_MULTIFILES_TARGET_DIR}"`, + { stdio: "ignore" }, ); } } @@ -1037,172 +1055,90 @@ function downloadMultifilesTestTarget(cb) { * @returns {void} */ function createConfigForPerformanceTest() { - let rules = ""; - - for (const [ruleId] of builtinRules) { - rules += ` "${ruleId}": 1,\n`; + const rules = {}; + for (const ruleId of builtinRules.keys()) { + rules[ruleId] = "warn"; } - - const content = ` -module.exports = [{ - "languageOptions": {sourceType: "commonjs"}, - "rules": { - ${rules} - } -}];`; - - content.to(PERF_ESLINTRC); + const config = [{ languageOptions: { sourceType: "commonjs" }, rules }]; + const content = `module.exports = ${JSON.stringify(config, null, 4)};\n`; + fs.writeFileSync(PERF_ESLINT_CONFIG, content); } /** - * @callback TimeCallback - * @param {number[] | null} results - * @returns {void} + * Creates a command to run ESLint with a given argument. + * @param {string} arg A file or glob pattern to pass to ESLint. This should not include any unescaped double quotes (`"`). + * @returns {string} The command to run ESLint with the given argument. */ +function createESLintCommand(arg) { + const eslintBin = require("./package.json").bin.eslint; -/** - * Calculates the time for each run for performance - * @param {string} cmd cmd - * @param {number} runs Total number of runs to do - * @param {number} runNumber Current run number - * @param {number[]} results Collection results from each run - * @param {TimeCallback} cb Function to call when everything is done - * @returns {void} calls the cb with all the results - * @private - */ -function time(cmd, runs, runNumber, results, cb) { - const start = process.hrtime(); - - exec( - cmd, - { maxBuffer: 64 * 1024 * 1024, silent: true }, - (code, stdout, stderr) => { - const diff = process.hrtime(start), - actual = diff[0] * 1e3 + diff[1] / 1e6; // ms - - if (code) { - echo(` Performance Run #${runNumber} failed.`); - if (stdout) { - echo(`STDOUT:\n${stdout}\n\n`); - } - - if (stderr) { - echo(`STDERR:\n${stderr}\n\n`); - } - return cb(null); - } - - results.push(actual); - echo(` Performance Run #${runNumber}: %dms`, actual); - if (runs > 1) { - return time(cmd, runs - 1, runNumber + 1, results, cb); - } - return cb(results); - }, - ); + return `"${process.execPath}" "${eslintBin}" --config "${PERF_ESLINT_CONFIG}" --no-ignore "${arg}"`; } /** - * Run a performance test. - * @param {string} title A title. - * @param {string} targets Test targets. - * @param {number} multiplier A multiplier for limitation. - * @param {Function} cb A callback function. + * Runs hyperfine to measure the performance of a command. + * If the command fails, the current process exits with code 1. + * @param {string} title The title of the command in the hyperfine output. + * @param {string} command The command to run. * @returns {void} */ -function runPerformanceTest(title, targets, multiplier, cb) { - const cpuSpeed = os.cpus()[0].speed, - max = multiplier / cpuSpeed, - cmd = `${ESLINT}--config "${PERF_ESLINTRC}" --no-config-lookup --no-ignore ${targets}`; - - echo(""); - echo(title); - echo(" CPU Speed is %d with multiplier %d", cpuSpeed, multiplier); - - time(cmd, 5, 1, [], results => { - if (!results || results.length === 0) { - // No results? Something is wrong. - throw new Error("Performance test failed."); - } - - results.sort((a, b) => a - b); - - const median = results[~~(results.length / 2)]; - - echo(""); - if (median > max) { - echo( - " Performance budget exceeded: %dms (limit: %dms)", - median, - max, - ); - } else { - echo(" Performance budget ok: %dms (limit: %dms)", median, max); - } - echo(""); - cb(); - }); +function runPerformanceTest(title, command) { + // We don't need the stack trace of execFileSync if the command fails. + try { + /* + * The used hyperfine options are: + * --shell=none turns off the shell escaping, so that glob patterns are not expanded. + * --warmup=1 runs the command once before measuring, to avoid cold start issues. + * --runs=5 runs the command 5 times, not counting the warmup run. + * --command-name sets the title of the command in the hyperfine output. + * + * The ANSI escape codes are used to overwrite the text "Benchmark 1: " that hyperfine prints by default, + * and to set the title in bold. + * `\x1b[1K` clears the line + * `\x1b[99D` moves the cursor back to the beginning of the line + * `\x1b[1m` sets the text to bold + * `\x1b[0m` resets the text formatting + */ + childProcess.execFileSync( + "hyperfine", + [ + "--shell=none", + "--warmup=1", + "--runs=5", + "--command-name", + `\x1b[1K\x1b[99D\x1b[1m${title}\x1b[0m`, + command, + ], + { stdio: "inherit" }, + ); + } catch { + exit(1); + } } -/** - * Run the load performance for eslint - * @returns {void} - * @private - */ -function loadPerformance() { - echo(""); - echo("Loading:"); +target.perf = () => { + checkHyperfineInstallation(); - const results = []; + downloadMultifilesTestTarget(); - for (let cnt = 0; cnt < 5; cnt++) { - const loadPerfData = loadPerf({ - checkDependencies: false, - }); + createConfigForPerformanceTest(); - echo( - ` Load performance Run #${cnt + 1}: %dms`, - loadPerfData.loadTime, - ); - results.push(loadPerfData.loadTime); - } + // Empty line for better readability in the console output. + console.log(); - results.sort((a, b) => a - b); - const median = results[~~(results.length / 2)]; + const loadingCommand = `"${process.execPath}" "${require("./package.json").main}"`; + runPerformanceTest("Loading", loadingCommand); - echo(""); - echo(" Load Performance median: %dms", median); - echo(""); -} + const singleFileCommand = createESLintCommand( + "tests/performance/jshint.js", + ); + runPerformanceTest("Single File", singleFileCommand); -target.perf = function () { - downloadMultifilesTestTarget(() => { - createConfigForPerformanceTest(); - - loadPerformance(); - - runPerformanceTest( - "Single File:", - "tests/performance/jshint.js", - PERF_MULTIPLIER, - () => { - // Count test target files. - const count = glob.sync( - (process.platform === "win32" - ? PERF_MULTIFILES_TARGETS.replace(/\\/gu, "/") - : PERF_MULTIFILES_TARGETS - ).slice(1, -1), // strip quotes - ).length; - - runPerformanceTest( - `Multi Files (${count} files):`, - PERF_MULTIFILES_TARGETS, - 3 * PERF_MULTIPLIER, - () => {}, - ); - }, - ); - }); + const PERF_MULTIFILES_TARGETS = `${TEMP_DIR}eslint/performance/eslint/{lib,tests/lib}/**/*.js`; + // Count test target files. + const fileCount = glob.sync(PERF_MULTIFILES_TARGETS).length; + const multiFilesCommand = createESLintCommand(PERF_MULTIFILES_TARGETS); + runPerformanceTest(`Multi Files (${fileCount} files)`, multiFilesCommand); }; target.generateRelease = ([packageTag]) => generateRelease({ packageTag }); diff --git a/package.json b/package.json index 30e6627a086d..9e5a9741101f 100644 --- a/package.json +++ b/package.json @@ -178,7 +178,6 @@ "jiti-v2.1": "npm:jiti@2.1.x", "knip": "^5.60.2", "lint-staged": "^11.0.0", - "load-perf": "^0.2.0", "markdown-it": "^12.2.0", "markdown-it-container": "^3.0.0", "marked": "^4.0.8", From 1245000c5a81954d42f0c7eb670efe450c3bbad5 Mon Sep 17 00:00:00 2001 From: fnx <966276+DMartens@users.noreply.github.com> Date: Thu, 17 Jul 2025 12:42:24 +0200 Subject: [PATCH 024/165] feat: support explicit resource management in core rules (#19828) --- docs/src/rules/no-await-in-loop.md | 6 +++ docs/src/rules/no-unused-vars.md | 29 ++++++++++++ docs/src/rules/require-await.md | 5 ++ lib/rules/no-await-in-loop.js | 13 +++++- lib/rules/no-unused-vars.js | 27 +++++++++++ lib/rules/prefer-destructuring.js | 8 ++++ lib/rules/require-await.js | 9 ++++ lib/rules/utils/ast-utils.js | 12 +++-- lib/types/rules.d.ts | 4 ++ tests/lib/rules/curly.js | 16 +++++++ tests/lib/rules/no-await-in-loop.js | 59 ++++++++++++++++++++++++ tests/lib/rules/no-inner-declarations.js | 16 +++++++ tests/lib/rules/no-undef-init.js | 7 +++ tests/lib/rules/no-unused-vars.js | 53 +++++++++++++++++++++ tests/lib/rules/no-var.js | 14 ++++++ tests/lib/rules/prefer-const.js | 14 ++++++ tests/lib/rules/prefer-destructuring.js | 28 +++++++++++ tests/lib/rules/require-await.js | 32 +++++++++++++ 18 files changed, 347 insertions(+), 5 deletions(-) diff --git a/docs/src/rules/no-await-in-loop.md b/docs/src/rules/no-await-in-loop.md index b65a5a59e65a..911b644313d9 100644 --- a/docs/src/rules/no-await-in-loop.md +++ b/docs/src/rules/no-await-in-loop.md @@ -111,6 +111,12 @@ async function foo(things) { } return results; } + +async function bar(things) { + for (const thing of things) { + await using resource = getAsyncResource(thing); + } +} ``` ::: diff --git a/docs/src/rules/no-unused-vars.md b/docs/src/rules/no-unused-vars.md index 872a888bed50..4cd918f4eed4 100644 --- a/docs/src/rules/no-unused-vars.md +++ b/docs/src/rules/no-unused-vars.md @@ -142,6 +142,7 @@ By default this rule is enabled with `all` option for caught errors and variable "args": "after-used", "caughtErrors": "all", "ignoreRestSiblings": false, + "ignoreUsingDeclarations": false, "reportUsedIgnorePattern": false }] } @@ -461,6 +462,34 @@ class Foo { ::: +### ignoreUsingDeclarations + +The `ignoreUsingDeclarations` option is a boolean (default: `false`). Explicit resource management allows automatic teardown of disposables by calling `Symbol.dispose` or `Symbol.asyncDispose` method implicitly at the end of the variable's scope. When this option is set to `true`, this rule ignores variables declared with `using` or `await using`. + +Examples of **incorrect** code for the `{ "ignoreUsingDeclarations": true }` option: + +::: incorrect + +```js +/*eslint no-unused-vars: ["error", { "ignoreUsingDeclarations": true }]*/ +const resource = getResource(); +``` + +::: + +Examples of **correct** code for the `{ "ignoreUsingDeclarations": true }` option: + +::: correct + +```js +/*eslint no-unused-vars: ["error", { "ignoreUsingDeclarations": true }]*/ + +using syncResource = getSyncResource(); +await using asyncResource = getAsyncResource(); +``` + +::: + ### reportUsedIgnorePattern The `reportUsedIgnorePattern` option is a boolean (default: `false`). diff --git a/docs/src/rules/require-await.md b/docs/src/rules/require-await.md index e0371dfb6ade..f106fa8345b1 100644 --- a/docs/src/rules/require-await.md +++ b/docs/src/rules/require-await.md @@ -71,6 +71,11 @@ bar(() => { doSomething(); }); +async function resourceManagement() { + await using resource = getAsyncResource(); + resource.use(); +} + // Allow empty functions. async function noop() {} ``` diff --git a/lib/rules/no-await-in-loop.js b/lib/rules/no-await-in-loop.js index 205e5bcf1c9b..2945257d1104 100644 --- a/lib/rules/no-await-in-loop.js +++ b/lib/rules/no-await-in-loop.js @@ -41,7 +41,10 @@ function isLooped(node, parent) { case "ForOfStatement": case "ForInStatement": - return node === parent.body; + return ( + node === parent.body || + (node === parent.left && node.kind === "await using") + ); case "WhileStatement": case "DoWhileStatement": @@ -76,6 +79,13 @@ module.exports = { * @returns {void} */ function validate(awaitNode) { + if ( + awaitNode.type === "VariableDeclaration" && + awaitNode.kind !== "await using" + ) { + return; + } + if (awaitNode.type === "ForOfStatement" && !awaitNode.await) { return; } @@ -99,6 +109,7 @@ module.exports = { return { AwaitExpression: validate, ForOfStatement: validate, + VariableDeclaration: validate, }; }, }; diff --git a/lib/rules/no-unused-vars.js b/lib/rules/no-unused-vars.js index a8318bd67ef4..da5361fa7745 100644 --- a/lib/rules/no-unused-vars.js +++ b/lib/rules/no-unused-vars.js @@ -88,6 +88,9 @@ module.exports = { ignoreClassWithStaticInitBlock: { type: "boolean", }, + ignoreUsingDeclarations: { + type: "boolean", + }, reportUsedIgnorePattern: { type: "boolean", }, @@ -119,6 +122,7 @@ module.exports = { ignoreRestSiblings: false, caughtErrors: "all", ignoreClassWithStaticInitBlock: false, + ignoreUsingDeclarations: false, reportUsedIgnorePattern: false, }; @@ -137,6 +141,9 @@ module.exports = { config.ignoreClassWithStaticInitBlock = firstOption.ignoreClassWithStaticInitBlock || config.ignoreClassWithStaticInitBlock; + config.ignoreUsingDeclarations = + firstOption.ignoreUsingDeclarations || + config.ignoreUsingDeclarations; config.reportUsedIgnorePattern = firstOption.reportUsedIgnorePattern || config.reportUsedIgnorePattern; @@ -357,6 +364,22 @@ module.exports = { return false; } + /** + * Determines if a given variable uses the explicit resource management protocol. + * @param {Variable} variable eslint-scope variable object. + * @returns {boolean} True if the variable is declared with "using" or "await using" + * @private + */ + function usesExplicitResourceManagement(variable) { + const [definition] = variable.defs; + + return ( + definition?.type === "Variable" && + (definition.parent.kind === "using" || + definition.parent.kind === "await using") + ); + } + /** * Checks whether a node is a sibling of the rest property or not. * @param {ASTNode} node a node to check @@ -922,6 +945,10 @@ module.exports = { if ( !isUsedVariable(variable) && !isExported(variable) && + !( + config.ignoreUsingDeclarations && + usesExplicitResourceManagement(variable) + ) && !hasRestSpreadSibling(variable) ) { unusedVars.push(variable); diff --git a/lib/rules/prefer-destructuring.js b/lib/rules/prefer-destructuring.js index cf108aacee82..09d0e5be3ad5 100644 --- a/lib/rules/prefer-destructuring.js +++ b/lib/rules/prefer-destructuring.js @@ -293,6 +293,14 @@ module.exports = { return; } + // Variable declarations using explicit resource management cannot use destructuring (parse error) + if ( + node.parent.kind === "using" || + node.parent.kind === "await using" + ) { + return; + } + // We only care about member expressions past this point if (node.init.type !== "MemberExpression") { return; diff --git a/lib/rules/require-await.js b/lib/rules/require-await.js index 2663e78e7e8e..7f3194979c37 100644 --- a/lib/rules/require-await.js +++ b/lib/rules/require-await.js @@ -170,6 +170,15 @@ module.exports = { scopeInfo.hasAwait = true; } }, + VariableDeclaration(node) { + if (!scopeInfo) { + return; + } + + if (node.kind === "await using") { + scopeInfo.hasAwait = true; + } + }, }; }, }; diff --git a/lib/rules/utils/ast-utils.js b/lib/rules/utils/ast-utils.js index fb4c7b8c29cf..6e4c989ef73f 100644 --- a/lib/rules/utils/ast-utils.js +++ b/lib/rules/utils/ast-utils.js @@ -47,6 +47,12 @@ const STATEMENT_LIST_PARENTS = new Set([ "StaticBlock", "SwitchCase", ]); +const LEXICAL_DECLARATION_KINDS = new Set([ + "let", + "const", + "using", + "await using", +]); const DECIMAL_INTEGER_PATTERN = /^(?:0|0[0-7]*[89]\d*|[1-9](?:_?\d)*)$/u; @@ -2589,16 +2595,14 @@ module.exports = { */ areBracesNecessary(node, sourceCode) { /** - * Determines if the given node is a lexical declaration (let, const, function, or class) + * Determines if the given node is a lexical declaration (let, const, using, await using, function, or class) * @param {ASTNode} nodeToCheck The node to check * @returns {boolean} True if the node is a lexical declaration * @private */ function isLexicalDeclaration(nodeToCheck) { if (nodeToCheck.type === "VariableDeclaration") { - return ( - nodeToCheck.kind === "const" || nodeToCheck.kind === "let" - ); + return LEXICAL_DECLARATION_KINDS.has(nodeToCheck.kind); } return ( diff --git a/lib/types/rules.d.ts b/lib/types/rules.d.ts index c9e269d21b0d..2c5bef850171 100644 --- a/lib/types/rules.d.ts +++ b/lib/types/rules.d.ts @@ -4078,6 +4078,10 @@ export interface ESLintRules extends Linter.RulesRecord { * @default false */ ignoreClassWithStaticInitBlock: boolean; + /** + * @default false + */ + ignoreUsingDeclarations: boolean; /** * @default false */ diff --git a/tests/lib/rules/curly.js b/tests/lib/rules/curly.js index 0d4400390121..f00319fae890 100644 --- a/tests/lib/rules/curly.js +++ b/tests/lib/rules/curly.js @@ -174,6 +174,22 @@ ruleTester.run("curly", rule, { options: ["multi"], languageOptions: { ecmaVersion: 6 }, }, + { + code: "if (foo) { using bar = 'baz'; }", + options: ["multi"], + languageOptions: { + sourceType: "module", + ecmaVersion: 2026, + }, + }, + { + code: "if (foo) { await using bar = 'baz'; }", + options: ["multi"], + languageOptions: { + sourceType: "module", + ecmaVersion: 2026, + }, + }, { code: "while (foo) { let bar = 'baz'; }", options: ["multi"], diff --git a/tests/lib/rules/no-await-in-loop.js b/tests/lib/rules/no-await-in-loop.js index 586861c5ccfc..fd9d9ee9ba8c 100644 --- a/tests/lib/rules/no-await-in-loop.js +++ b/tests/lib/rules/no-await-in-loop.js @@ -50,6 +50,39 @@ ruleTester.run("no-await-in-loop", rule, { // Asynchronous iteration intentionally "async function foo() { for await (var x of xs) { await f(x) } }", + + // Explicit Resource Management + "while (true) { const value = 0; }", + "while (true) { let value = 0; }", + "while (true) { var value = 0; }", + { + code: "await using resource = getResource();", + languageOptions: { + sourceType: "module", + ecmaVersion: 2026, + }, + }, + { + code: "while (true) { using resource = getResource(); }", + languageOptions: { + sourceType: "module", + ecmaVersion: 2026, + }, + }, + { + code: "async function foo() { while (true) { async function foo() { await using resource = getResource(); } } }", + languageOptions: { + sourceType: "module", + ecmaVersion: 2026, + }, + }, + { + code: "for (await using resource = getResource(); ;) {}", + languageOptions: { + sourceType: "module", + ecmaVersion: 2026, + }, + }, ], invalid: [ // While loops @@ -123,5 +156,31 @@ ruleTester.run("no-await-in-loop", rule, { code: "async function foo() { for await (var x of xs) { while (1) await f(x) } }", errors: [error], }, + + // Explicit Resource Management + { + code: "while (true) { await using resource = getResource(); }", + languageOptions: { + sourceType: "module", + ecmaVersion: 2026, + }, + errors: [{ ...error, type: "VariableDeclaration" }], + }, + { + code: "for (;;) { await using resource = getResource(); }", + languageOptions: { + sourceType: "module", + ecmaVersion: 2026, + }, + errors: [{ ...error, type: "VariableDeclaration" }], + }, + { + code: "for (await using resource of resources) {}", + languageOptions: { + sourceType: "module", + ecmaVersion: 2026, + }, + errors: [{ ...error, type: "VariableDeclaration" }], + }, ], }); diff --git a/tests/lib/rules/no-inner-declarations.js b/tests/lib/rules/no-inner-declarations.js index fe97dcbb88a4..af3b5cf2f330 100644 --- a/tests/lib/rules/no-inner-declarations.js +++ b/tests/lib/rules/no-inner-declarations.js @@ -52,6 +52,22 @@ ruleTester.run("no-inner-declarations", rule, { options: ["both"], languageOptions: { ecmaVersion: 6 }, }, + { + code: "if (test) { using x = 1; }", + options: ["both"], + languageOptions: { + ecmaVersion: 2026, + sourceType: "module", + }, + }, + { + code: "if (test) { await using x = 1; }", + options: ["both"], + languageOptions: { + ecmaVersion: 2026, + sourceType: "module", + }, + }, "function doSomething() { while (test) { var foo; } }", { code: "var foo;", options: ["both"] }, { code: "var foo = 42;", options: ["both"] }, diff --git a/tests/lib/rules/no-undef-init.js b/tests/lib/rules/no-undef-init.js index 0fc937c2738f..614dbddcb645 100644 --- a/tests/lib/rules/no-undef-init.js +++ b/tests/lib/rules/no-undef-init.js @@ -37,6 +37,13 @@ ruleTester.run("no-undef-init", rule, { code: "class C { field = undefined; }", languageOptions: { ecmaVersion: 2022 }, }, + { + code: "using a = condition ? getDisposableResource() : undefined;", + languageOptions: { + ecmaVersion: 2026, + sourceType: "module", + }, + }, ], invalid: [ { diff --git a/tests/lib/rules/no-unused-vars.js b/tests/lib/rules/no-unused-vars.js index 0ca588ae8646..2d8a24a41954 100644 --- a/tests/lib/rules/no-unused-vars.js +++ b/tests/lib/rules/no-unused-vars.js @@ -765,6 +765,29 @@ ruleTester.run("no-unused-vars", rule, { ], languageOptions: { ecmaVersion: 6 }, }, + { + code: "using resource = getResource();\nresource;", + languageOptions: { + sourceType: "module", + ecmaVersion: 2026, + }, + }, + { + code: "using resource = getResource();", + options: [{ ignoreUsingDeclarations: true }], + languageOptions: { + sourceType: "module", + ecmaVersion: 2026, + }, + }, + { + code: "await using resource = getResource();", + options: [{ ignoreUsingDeclarations: true }], + languageOptions: { + sourceType: "module", + ecmaVersion: 2026, + }, + }, ], invalid: [ { @@ -4609,5 +4632,35 @@ try { assignedError("a"), ], }, + { + code: "using resource = getResource();", + languageOptions: { + sourceType: "module", + ecmaVersion: 2026, + }, + errors: [ + assignedError("resource", [ + { + output: "", + messageId: "removeVar", + }, + ]), + ], + }, + { + code: "await using resource = getResource();", + languageOptions: { + sourceType: "module", + ecmaVersion: 2026, + }, + errors: [ + assignedError("resource", [ + { + output: "", + messageId: "removeVar", + }, + ]), + ], + }, ], }); diff --git a/tests/lib/rules/no-var.js b/tests/lib/rules/no-var.js index 69651c4ab7e3..f8f395495d54 100644 --- a/tests/lib/rules/no-var.js +++ b/tests/lib/rules/no-var.js @@ -36,6 +36,20 @@ ruleTester.run("no-var", rule, { parserOptions: { ecmaFeatures: { globalReturn: true } }, }, }, + { + code: "using moo = 'car';", + languageOptions: { + sourceType: "module", + ecmaVersion: 2026, + }, + }, + { + code: "await using moo = 'car';", + languageOptions: { + sourceType: "module", + ecmaVersion: 2026, + }, + }, ], invalid: [ diff --git a/tests/lib/rules/prefer-const.js b/tests/lib/rules/prefer-const.js index 37988e2177e0..05f4f98f2391 100644 --- a/tests/lib/rules/prefer-const.js +++ b/tests/lib/rules/prefer-const.js @@ -44,6 +44,20 @@ ruleTester.run("prefer-const", rule, { "let x;", "let x; { x = 0; } foo(x);", "let x = 0; x = 1;", + { + code: "using resource = fn();", + languageOptions: { + sourceType: "module", + ecmaVersion: 2026, + }, + }, + { + code: "await using resource = fn();", + languageOptions: { + sourceType: "module", + ecmaVersion: 2026, + }, + }, "const x = 0;", "for (let i = 0, end = 10; i < end; ++i) {}", "for (let i in [1,2,3]) { i = 0; }", diff --git a/tests/lib/rules/prefer-destructuring.js b/tests/lib/rules/prefer-destructuring.js index 71cae63e538c..fc1ae7ba0f11 100644 --- a/tests/lib/rules/prefer-destructuring.js +++ b/tests/lib/rules/prefer-destructuring.js @@ -256,6 +256,34 @@ ruleTester.run("prefer-destructuring", rule, { { enforceForRenamedProperties: true }, ], }, + { + code: "using foo = array[0];", + languageOptions: { + sourceType: "module", + ecmaVersion: 2026, + }, + }, + { + code: "using foo = object.foo;", + languageOptions: { + sourceType: "module", + ecmaVersion: 2026, + }, + }, + { + code: "await using foo = array[0];", + languageOptions: { + sourceType: "module", + ecmaVersion: 2026, + }, + }, + { + code: "await using foo = object.foo;", + languageOptions: { + sourceType: "module", + ecmaVersion: 2026, + }, + }, ], invalid: [ diff --git a/tests/lib/rules/require-await.js b/tests/lib/rules/require-await.js index 5bf3b3cc550b..5112a0cdae3f 100644 --- a/tests/lib/rules/require-await.js +++ b/tests/lib/rules/require-await.js @@ -89,6 +89,20 @@ ruleTester.run("require-await", rule, { code: 'async function* run() { console.log("bar") }', languageOptions: { ecmaVersion: 9 }, }, + { + code: "await using resource = getResource();", + languageOptions: { + sourceType: "module", + ecmaVersion: 2026, + }, + }, + { + code: "async function run() { await using resource = getResource(); }", + languageOptions: { + sourceType: "module", + ecmaVersion: 2026, + }, + }, ], invalid: [ { @@ -335,5 +349,23 @@ ruleTester.run("require-await", rule, { }, ], }, + { + code: "async function run() { using resource = getResource(); }", + languageOptions: { + ecmaVersion: 2026, + }, + errors: [ + { + messageId: "missingAwait", + data: { name: "Async function 'run'" }, + suggestions: [ + { + output: "function run() { using resource = getResource(); }", + messageId: "removeAsync", + }, + ], + }, + ], + }, ], }); From e22af8c42d622d8d912ee7bedf49bf4283247fdc Mon Sep 17 00:00:00 2001 From: Francesco Trotta Date: Fri, 18 Jul 2025 08:00:19 +0200 Subject: [PATCH 025/165] refactor: use `CustomRuleDefinitionType` in `JSRuleDefinition` (#19949) --- lib/types/index.d.ts | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/lib/types/index.d.ts b/lib/types/index.d.ts index 953554f5e4d9..8d5411019d5d 100644 --- a/lib/types/index.d.ts +++ b/lib/types/index.d.ts @@ -27,15 +27,17 @@ import * as ESTree from "estree"; import type { - RuleVisitor, - TextSourceCode, + CustomRuleDefinitionType, + CustomRuleTypeDefinitions, + DeprecatedInfo, Language, - SourceRange, - TraversalStep, LanguageOptions as GenericLanguageOptions, - RuleDefinition, RuleContext as CoreRuleContext, - DeprecatedInfo, + RuleDefinition, + RuleVisitor, + SourceRange, + TextSourceCode, + TraversalStep, } from "@eslint/core"; import { JSONSchema4 } from "json-schema"; import { LegacyESLint } from "./use-at-your-own-risk.js"; @@ -1250,27 +1252,18 @@ export namespace Rule { } } -export type JSRuleDefinitionTypeOptions = { - RuleOptions: unknown[]; - MessageIds: string; - ExtRuleDocs: Record; -}; +export type JSRuleDefinitionTypeOptions = CustomRuleTypeDefinitions; export type JSRuleDefinition< Options extends Partial = {}, -> = RuleDefinition< - // Language specific type options (non-configurable) +> = CustomRuleDefinitionType< { LangOptions: Linter.LanguageOptions; Code: SourceCode; Visitor: Rule.NodeListener; Node: JSSyntaxElement; - } & Required< - // Rule specific type options (custom) - Options & - // Rule specific type options (defaults) - Omit - > + }, + Options >; // #region Linter From 86e7426e4463ca49ffa5c82e825ecb6aa19ca8a0 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Fri, 18 Jul 2025 08:10:31 +0000 Subject: [PATCH 026/165] docs: Update README --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 522cc9faf2da..5e0c1aba199e 100644 --- a/README.md +++ b/README.md @@ -324,8 +324,7 @@ Percy Ma The following companies, organizations, and individuals support ESLint's ongoing maintenance and development. [Become a Sponsor](https://eslint.org/donate) to get your logo on our READMEs and [website](https://eslint.org/sponsors). -

Diamond Sponsors

-

AG Grid

Platinum Sponsors

+

Platinum Sponsors

Automattic Airbnb

Gold Sponsors

Qlty Software trunk.io Shopify

Silver Sponsors

Vite Liftoff American Express StackBlitz

Bronze Sponsors

From f46fc6c137c951bc73cf3bd9446053c1b11f769b Mon Sep 17 00:00:00 2001 From: Nitin Kumar Date: Sat, 19 Jul 2025 14:11:24 +0530 Subject: [PATCH 027/165] fix: report only global references in no-implied-eval (#19932) * fix: report only global references in no-implied-eval * chore: fix formatting * test: add more cases * docs: fix examples * chore: apply suggestions from code review Co-authored-by: Milos Djermanovic --------- Co-authored-by: Milos Djermanovic --- docs/src/rules/no-implied-eval.md | 3 +- lib/rules/no-implied-eval.js | 6 +- tests/lib/rules/no-implied-eval.js | 349 +++++++++++++++++++++++++---- 3 files changed, 308 insertions(+), 50 deletions(-) diff --git a/docs/src/rules/no-implied-eval.md b/docs/src/rules/no-implied-eval.md index f763059bc5b1..d6428744e5d7 100644 --- a/docs/src/rules/no-implied-eval.md +++ b/docs/src/rules/no-implied-eval.md @@ -35,7 +35,7 @@ Examples of **incorrect** code for this rule: ```js /*eslint no-implied-eval: "error"*/ -/*global window*/ +/*global window, setTimeout, setInterval, execScript*/ setTimeout("alert('Hi!');", 100); @@ -56,6 +56,7 @@ Examples of **correct** code for this rule: ```js /*eslint no-implied-eval: "error"*/ +/*global setTimeout, setInterval*/ setTimeout(function() { alert("Hi!"); diff --git a/lib/rules/no-implied-eval.js b/lib/rules/no-implied-eval.js index 6d0998aad502..7757d5a735d0 100644 --- a/lib/rules/no-implied-eval.js +++ b/lib/rules/no-implied-eval.js @@ -145,7 +145,11 @@ module.exports = { return { CallExpression(node) { if ( - astUtils.isSpecificId(node.callee, EVAL_LIKE_FUNC_PATTERN) + astUtils.isSpecificId( + node.callee, + EVAL_LIKE_FUNC_PATTERN, + ) && + sourceCode.isGlobalReference(node.callee) ) { reportImpliedEvalCallExpression(node); } diff --git a/tests/lib/rules/no-implied-eval.js b/tests/lib/rules/no-implied-eval.js index 692d890cc453..bf06ef2b5f9f 100644 --- a/tests/lib/rules/no-implied-eval.js +++ b/tests/lib/rules/no-implied-eval.js @@ -27,7 +27,10 @@ const expectedError = { messageId: "impliedEval", type: "CallExpression" }; ruleTester.run("no-implied-eval", rule, { valid: [ - "setTimeout();", + { + code: "setTimeout();", + languageOptions: { globals: globals.browser }, + }, { code: "setTimeout;", languageOptions: { globals: globals.browser } }, { @@ -52,19 +55,27 @@ ruleTester.run("no-implied-eval", rule, { }, { code: "global.setTimeout;", - languageOptions: { sourceType: "commonjs" }, + languageOptions: { + sourceType: "commonjs", + }, }, { code: "global.setTimeout = foo;", - languageOptions: { sourceType: "commonjs" }, + languageOptions: { + sourceType: "commonjs", + }, }, { code: "global['setTimeout'];", - languageOptions: { sourceType: "commonjs" }, + languageOptions: { + sourceType: "commonjs", + }, }, { code: "global['setTimeout'] = foo;", - languageOptions: { sourceType: "commonjs" }, + languageOptions: { + sourceType: "commonjs", + }, }, { code: "globalThis['setTimeout'] = foo;", @@ -110,11 +121,11 @@ ruleTester.run("no-implied-eval", rule, { }, { code: "globalThis.setTimeout('foo')", - languageOptions: { ecmaVersion: 6 }, + languageOptions: { ecmaVersion: 6, globals: globals.browser }, }, { code: "globalThis['setInterval']('foo')", - languageOptions: { ecmaVersion: 2017 }, + languageOptions: { ecmaVersion: 2017, globals: globals.browser }, }, { @@ -123,7 +134,10 @@ ruleTester.run("no-implied-eval", rule, { }, { code: "global[`SetTimeOut`]('foo', 100);", - languageOptions: { ecmaVersion: 6, sourceType: "commonjs" }, + languageOptions: { + ecmaVersion: 6, + sourceType: "commonjs", + }, }, { code: "global[`setTimeout${foo}`]('foo', 100);", @@ -131,7 +145,10 @@ ruleTester.run("no-implied-eval", rule, { }, { code: "global[`setTimeout${foo}`]('foo', 100);", - languageOptions: { ecmaVersion: 6, sourceType: "commonjs" }, + languageOptions: { + ecmaVersion: 6, + sourceType: "commonjs", + }, }, { code: "globalThis[`setTimeout${foo}`]('foo', 100);", @@ -139,9 +156,18 @@ ruleTester.run("no-implied-eval", rule, { }, // normal usage - "setTimeout(function() { x = 1; }, 100);", - "setInterval(function() { x = 1; }, 100)", - "execScript(function() { x = 1; }, 100)", + { + code: "setTimeout(function() { x = 1; }, 100);", + languageOptions: { globals: globals.browser }, + }, + { + code: "setInterval(function() { x = 1; }, 100);", + languageOptions: { globals: globals.browser }, + }, + { + code: "execScript(function() { x = 1; }, 100);", + languageOptions: { globals: { execScript: false } }, + }, { code: "window.setTimeout(function() { x = 1; }, 100);", languageOptions: { globals: globals.browser }, @@ -168,27 +194,39 @@ ruleTester.run("no-implied-eval", rule, { }, { code: "global.setTimeout(function() { x = 1; }, 100);", - languageOptions: { sourceType: "commonjs" }, + languageOptions: { + sourceType: "commonjs", + }, }, { code: "global.setInterval(function() { x = 1; }, 100);", - languageOptions: { sourceType: "commonjs" }, + languageOptions: { + sourceType: "commonjs", + }, }, { code: "global.execScript(function() { x = 1; }, 100);", - languageOptions: { sourceType: "commonjs" }, + languageOptions: { + sourceType: "commonjs", + }, }, { code: "global.setTimeout(foo, 100);", - languageOptions: { sourceType: "commonjs" }, + languageOptions: { + sourceType: "commonjs", + }, }, { code: "global.setInterval(foo, 100);", - languageOptions: { sourceType: "commonjs" }, + languageOptions: { + sourceType: "commonjs", + }, }, { code: "global.execScript(foo, 100);", - languageOptions: { sourceType: "commonjs" }, + languageOptions: { + sourceType: "commonjs", + }, }, { code: "globalThis.setTimeout(foo, 100);", @@ -196,38 +234,86 @@ ruleTester.run("no-implied-eval", rule, { }, // only checks on top-level statements or window.* - "foo.setTimeout('hi')", + { + code: "foo.setTimeout('hi')", + languageOptions: { globals: globals.browser }, + }, // identifiers are fine - "setTimeout(foo, 10)", - "setInterval(1, 10)", - "execScript(2)", + { + code: "setTimeout(foo, 10)", + languageOptions: { globals: globals.browser }, + }, + { + code: "setInterval(1, 10)", + languageOptions: { globals: globals.browser }, + }, + { + code: "execScript(2)", + languageOptions: { globals: { execScript: false } }, + }, // as are function expressions - "setTimeout(function() {}, 10)", + { + code: "setTimeout(function() {}, 10)", + languageOptions: { globals: globals.browser }, + }, // setInterval - "foo.setInterval('hi')", - "setInterval(foo, 10)", - "setInterval(function() {}, 10)", + { + code: "foo.setInterval('hi')", + languageOptions: { globals: globals.browser }, + }, + { + code: "setInterval(foo, 10)", + languageOptions: { globals: globals.browser }, + }, + { + code: "setInterval(function() {}, 10)", + languageOptions: { globals: globals.browser }, + }, // execScript - "foo.execScript('hi')", - "execScript(foo)", - "execScript(function() {})", + { + code: "foo.execScript('hi')", + languageOptions: { globals: globals.browser }, + }, + { + code: "execScript(foo)", + languageOptions: { globals: { execScript: false } }, + }, + { + code: "execScript(function() {})", + languageOptions: { globals: { execScript: false } }, + }, // a binary plus on non-strings doesn't guarantee a string - "setTimeout(foo + bar, 10)", + { + code: "setTimeout(foo + bar, 10)", + languageOptions: { globals: globals.browser }, + }, // doesn't check anything but the first argument - "setTimeout(foobar, 'buzz')", - "setTimeout(foobar, foo + 'bar')", + { + code: "setTimeout(foobar, 'buzz')", + languageOptions: { globals: globals.browser }, + }, + { + code: "setTimeout(foobar, foo + 'bar')", + languageOptions: { globals: globals.browser }, + }, // only checks immediate subtrees of the argument - "setTimeout(function() { return 'foobar'; }, 10)", + { + code: "setTimeout(function() { return 'foobar'; }, 10)", + languageOptions: { globals: globals.browser }, + }, // https://github.com/eslint/eslint/issues/7821 - "setTimeoutFooBar('Foo Bar')", + { + code: "setTimeoutFooBar('Foo Bar')", + languageOptions: { globals: globals.browser }, + }, { code: "foo.window.setTimeout('foo', 100);", @@ -235,7 +321,10 @@ ruleTester.run("no-implied-eval", rule, { }, { code: "foo.global.setTimeout('foo', 100);", - languageOptions: { sourceType: "commonjs" }, + languageOptions: { + sourceType: "commonjs", + globals: globals.browser, + }, }, { code: "var window; window.setTimeout('foo', 100);", @@ -243,7 +332,9 @@ ruleTester.run("no-implied-eval", rule, { }, { code: "var global; global.setTimeout('foo', 100);", - languageOptions: { sourceType: "commonjs" }, + languageOptions: { + sourceType: "commonjs", + }, }, { code: "function foo(window) { window.setTimeout('foo', 100); }", @@ -251,7 +342,9 @@ ruleTester.run("no-implied-eval", rule, { }, { code: "function foo(global) { global.setTimeout('foo', 100); }", - languageOptions: { sourceType: "commonjs" }, + languageOptions: { + sourceType: "commonjs", + }, }, { code: "foo('', window.setTimeout);", @@ -261,25 +354,167 @@ ruleTester.run("no-implied-eval", rule, { code: "foo('', global.setTimeout);", languageOptions: { sourceType: "commonjs" }, }, + + // https://github.com/eslint/eslint/issues/19923 + { + code: ` + function execScript(string) { + console.log("This is not your grandparent's execScript()."); + } + + execScript('wibble'); + `, + languageOptions: { + globals: { execScript: false }, + }, + }, + { + code: ` + function setTimeout(string) { + console.log("This is not your grandparent's setTimeout()."); + } + + setTimeout('wibble'); + `, + languageOptions: { + globals: globals.browser, + }, + }, + { + code: ` + function setInterval(string) { + console.log("This is not your grandparent's setInterval()."); + } + + setInterval('wibble'); + `, + languageOptions: { + globals: globals.browser, + }, + }, + { + code: ` + function outer() { + function setTimeout(string) { + console.log("Shadowed setTimeout"); + } + setTimeout('code'); + } + `, + languageOptions: { + globals: globals.browser, + }, + }, + { + code: ` + function outer() { + function setInterval(string) { + console.log("Shadowed setInterval"); + } + setInterval('code'); + } + `, + languageOptions: { + globals: globals.browser, + }, + }, + { + code: ` + function outer() { + function execScript(string) { + console.log("Shadowed execScript"); + } + execScript('code'); + } + `, + languageOptions: { + globals: { execScript: false }, + }, + }, + { + code: ` + { + const setTimeout = function(string) { + console.log("Block-scoped setTimeout"); + }; + setTimeout('code'); + } + `, + languageOptions: { + ecmaVersion: 6, + globals: globals.browser, + }, + }, + { + code: ` + { + const setInterval = function(string) { + console.log("Block-scoped setInterval"); + }; + setInterval('code'); + } + `, + languageOptions: { + ecmaVersion: 6, + globals: globals.browser, + }, + }, + { + code: "setTimeout('code');", + languageOptions: { + globals: {}, // No globals defined + }, + }, + { + code: "setInterval('code');", + languageOptions: { + globals: {}, // No globals defined + }, + }, + { + code: "execScript('code');", + languageOptions: { + globals: {}, // No globals defined + }, + }, + { + code: "window.setTimeout('code');", + languageOptions: { + globals: {}, // No window global defined + }, + }, ], invalid: [ - { code: 'setTimeout("x = 1;");', errors: [expectedError] }, - { code: 'setTimeout("x = 1;", 100);', errors: [expectedError] }, - { code: 'setInterval("x = 1;");', errors: [expectedError] }, + { + code: 'setTimeout("x = 1;");', + languageOptions: { globals: globals.browser }, + errors: [expectedError], + }, + { + code: 'setTimeout("x = 1;", 100);', + languageOptions: { globals: globals.browser }, + errors: [expectedError], + }, + { + code: 'setInterval("x = 1;");', + languageOptions: { globals: globals.browser }, + errors: [expectedError], + }, { code: 'execScript("x = 1;");', + languageOptions: { globals: { execScript: false } }, errors: [{ messageId: "execScript", type: "CallExpression" }], }, { code: "const s = 'x=1'; setTimeout(s, 100);", - languageOptions: { ecmaVersion: 6 }, + languageOptions: { ecmaVersion: 6, globals: globals.browser }, errors: [expectedError], }, { code: "setTimeout(String('x=1'), 100);", - languageOptions: { ecmaVersion: 6 }, + languageOptions: { ecmaVersion: 6, globals: globals.browser }, errors: [expectedError], }, @@ -403,7 +638,7 @@ ruleTester.run("no-implied-eval", rule, { // template literals { code: "setTimeout(`foo${bar}`)", - languageOptions: { ecmaVersion: 6 }, + languageOptions: { ecmaVersion: 6, globals: globals.browser }, errors: [expectedError], }, { @@ -423,14 +658,26 @@ ruleTester.run("no-implied-eval", rule, { }, // string concatenation - { code: "setTimeout('foo' + bar)", errors: [expectedError] }, - { code: "setTimeout(foo + 'bar')", errors: [expectedError] }, + { + code: "setTimeout('foo' + bar)", + languageOptions: { globals: globals.browser }, + errors: [expectedError], + }, + { + code: "setTimeout(foo + 'bar')", + languageOptions: { globals: globals.browser }, + errors: [expectedError], + }, { code: "setTimeout(`foo` + bar)", - languageOptions: { ecmaVersion: 6 }, + languageOptions: { ecmaVersion: 6, globals: globals.browser }, + errors: [expectedError], + }, + { + code: "setTimeout(1 + ';' + 1)", + languageOptions: { globals: globals.browser }, errors: [expectedError], }, - { code: "setTimeout(1 + ';' + 1)", errors: [expectedError] }, { code: "window.setTimeout('foo' + bar)", languageOptions: { globals: globals.browser }, @@ -495,6 +742,9 @@ ruleTester.run("no-implied-eval", rule, { " execScript('str');\n" + " return 'bar';\n" + "})())", + languageOptions: { + globals: { ...globals.browser, execScript: false }, + }, errors: [ { messageId: "impliedEval", @@ -540,7 +790,10 @@ ruleTester.run("no-implied-eval", rule, { " global.execScript('str');\n" + " return 'bar';\n" + "})())", - languageOptions: { sourceType: "commonjs" }, + languageOptions: { + sourceType: "commonjs", + globals: globals.browser, + }, errors: [ { messageId: "impliedEval", From f5a35e3b7cee17cd31fc02c24c3e74b42ee202bc Mon Sep 17 00:00:00 2001 From: Milos Djermanovic Date: Tue, 22 Jul 2025 17:08:11 +0200 Subject: [PATCH 028/165] test: switch to flat config mode in eslint-fuzzer (#19960) --- tests/tools/eslint-fuzzer.js | 47 ++++++++++++++++++++++++------------ tools/eslint-fuzzer.js | 11 ++++++--- tools/fuzzer-runner.js | 2 +- 3 files changed, 40 insertions(+), 20 deletions(-) diff --git a/tests/tools/eslint-fuzzer.js b/tests/tools/eslint-fuzzer.js index ce0b99b83bd0..a266d76eed04 100644 --- a/tests/tools/eslint-fuzzer.js +++ b/tests/tools/eslint-fuzzer.js @@ -9,6 +9,7 @@ const eslint = require("../.."); const espree = require("espree"); const sinon = require("sinon"); const configRule = require("../../tools/config-rule"); +const coreRules = require("../../lib/rules"); //------------------------------------------------------------------------------ // Tests @@ -23,8 +24,7 @@ describe("eslint-fuzzer", function () { */ this.timeout(15000); // eslint-disable-line no-invalid-this -- Mocha timeout - const linter = new eslint.Linter({ configType: "eslintrc" }); - const coreRules = linter.getRules(); + const linter = new eslint.Linter(); const fixableRuleNames = Array.from(coreRules) .filter(rulePair => rulePair[1].meta && rulePair[1].meta.fixable) .map(rulePair => rulePair[0]); @@ -50,10 +50,25 @@ describe("eslint-fuzzer", function () { configRule.createCoreRuleConfigs.restore(); }); + afterEach(() => { + /* + * LazyLoadingRuleMap prototype has the `delete` property set to `undefined` + * in order to prevent accidental mutations, so we need to call `Map.prototype.delete` + * directly here. + */ + Map.prototype.delete.call(coreRules, "test-fuzzer-rule"); + }); + + /* + * LazyLoadingRuleMap prototype has the `set` property set to `undefined` + * in order to prevent accidental mutations, so we need to call `Map.prototype.set` + * directly in tests that add `test-fuzzer-rule`. + */ + describe("when running in crash-only mode", () => { describe("when a rule crashes on the given input", () => { it("should report the crash with a minimal config", () => { - linter.defineRule("test-fuzzer-rule", { + Map.prototype.set.call(coreRules, "test-fuzzer-rule", () => ({ create: context => ({ Program() { if (context.sourceCode.text === "foo") { @@ -61,7 +76,7 @@ describe("eslint-fuzzer", function () { } }, }), - }); + })); const results = fuzz({ count: 1, @@ -82,7 +97,9 @@ describe("eslint-fuzzer", function () { describe("when no rules crash", () => { it("should return an empty array", () => { - linter.defineRule("test-fuzzer-rule", { create: () => ({}) }); + Map.prototype.set.call(coreRules, "test-fuzzer-rule", () => ({ + create: () => ({}), + })); assert.deepStrictEqual( fuzz({ @@ -109,7 +126,7 @@ describe("eslint-fuzzer", function () { describe("when a rule crashes on the given input", () => { it("should report the crash with a minimal config", () => { - linter.defineRule("test-fuzzer-rule", { + Map.prototype.set.call(coreRules, "test-fuzzer-rule", () => ({ create: context => ({ Program() { if (context.sourceCode.text === "foo") { @@ -117,7 +134,7 @@ describe("eslint-fuzzer", function () { } }, }), - }); + })); const results = fuzz({ count: 1, @@ -139,7 +156,7 @@ describe("eslint-fuzzer", function () { describe("when a rule's autofix produces valid syntax", () => { it("does not report any errors", () => { // Replaces programs that start with "foo" with "bar" - linter.defineRule("test-fuzzer-rule", { + Map.prototype.set.call(coreRules, "test-fuzzer-rule", () => ({ meta: { fixable: "code" }, create: context => ({ Program(node) { @@ -159,7 +176,7 @@ describe("eslint-fuzzer", function () { } }, }), - }); + })); const results = fuzz({ count: 1, @@ -180,7 +197,7 @@ describe("eslint-fuzzer", function () { describe("when a rule's autofix produces invalid syntax on the first pass", () => { it("reports an autofix error with a minimal config", () => { // Replaces programs that start with "foo" with invalid syntax - linter.defineRule("test-fuzzer-rule", { + Map.prototype.set.call(coreRules, "test-fuzzer-rule", () => ({ meta: { fixable: "code" }, create: context => ({ Program(node) { @@ -202,7 +219,7 @@ describe("eslint-fuzzer", function () { } }, }), - }); + })); const results = fuzz({ count: 1, @@ -237,7 +254,7 @@ describe("eslint-fuzzer", function () { const intermediateCode = `bar ${disableFixableRulesComment}`; // Replaces programs that start with "foo" with invalid syntax - linter.defineRule("test-fuzzer-rule", { + Map.prototype.set.call(coreRules, "test-fuzzer-rule", () => ({ meta: { fixable: "code" }, create: context => ({ Program(node) { @@ -262,7 +279,7 @@ describe("eslint-fuzzer", function () { } }, }), - }); + })); const results = fuzz({ count: 1, @@ -292,7 +309,7 @@ describe("eslint-fuzzer", function () { describe("when a rule crashes on the second autofix pass", () => { it("reports a crash error with a minimal config", () => { // Replaces programs that start with "foo" with invalid syntax - linter.defineRule("test-fuzzer-rule", { + Map.prototype.set.call(coreRules, "test-fuzzer-rule", () => ({ meta: { fixable: "code" }, create: context => ({ Program(node) { @@ -313,7 +330,7 @@ describe("eslint-fuzzer", function () { } }, }), - }); + })); const results = fuzz({ count: 1, diff --git a/tools/eslint-fuzzer.js b/tools/eslint-fuzzer.js index 2e8a5b6cd3da..7ec029157b57 100644 --- a/tools/eslint-fuzzer.js +++ b/tools/eslint-fuzzer.js @@ -158,10 +158,11 @@ function fuzz(options) { * @param {ConfigData} config The config used * @returns {Parser} a parser */ - function getParser({ parserOptions }) { + function getParser(config) { return sourceText => espree.parse(sourceText, { - ...parserOptions, + sourceType: config.languageOptions.sourceType, + ecmaVersion: "latest", loc: true, range: true, raw: true, @@ -181,9 +182,11 @@ function fuzz(options) { const text = codeGenerator({ sourceType }); const config = { rules, - parserOptions: { + languageOptions: { sourceType, - ecmaVersion: espree.latestEcmaVersion, + }, + linterOptions: { + reportUnusedDisableDirectives: "off", // needed for tests }, }; diff --git a/tools/fuzzer-runner.js b/tools/fuzzer-runner.js index 8faffefc8ff3..dbe0cf561abc 100644 --- a/tools/fuzzer-runner.js +++ b/tools/fuzzer-runner.js @@ -12,7 +12,7 @@ const ProgressBar = require("progress"); const fuzz = require("./eslint-fuzzer"); const eslint = require(".."); -const linter = new eslint.Linter({ configType: "eslintrc" }); +const linter = new eslint.Linter(); //------------------------------------------------------------------------------ // Helpers From b7f75454695079f54b77fcdc9ebe3b9199d5ad30 Mon Sep 17 00:00:00 2001 From: Milos Djermanovic Date: Tue, 22 Jul 2025 17:10:02 +0200 Subject: [PATCH 029/165] test: switch to flat config mode in `SourceCode` tests (#19953) --- .../languages/js/source-code/source-code.js | 1065 +++++++++++------ 1 file changed, 682 insertions(+), 383 deletions(-) diff --git a/tests/lib/languages/js/source-code/source-code.js b/tests/lib/languages/js/source-code/source-code.js index fda822f666bf..4ff4a2afb416 100644 --- a/tests/lib/languages/js/source-code/source-code.js +++ b/tests/lib/languages/js/source-code/source-code.js @@ -29,8 +29,8 @@ const DEFAULT_CONFIG = { range: true, loc: true, }; -const linter = new Linter({ configType: "eslintrc" }); -const flatLinter = new Linter({ configType: "flat" }); +const eslintrcLinter = new Linter({ configType: "eslintrc" }); +const linter = new Linter({ configType: "flat" }); const AST = espree.parse("let foo = bar;", DEFAULT_CONFIG), TEST_CODE = "var answer = 6 * 7;", SHEBANG_TEST_CODE = `#!/usr/bin/env node\n${TEST_CODE}`; @@ -330,14 +330,22 @@ describe("SourceCode", () => { const spy = sinon.spy(assertJSDoc); - linter.defineRule("checker", { - create() { - return { - FunctionExpression: spy, - }; + linter.verify(code, { + plugins: { + test: { + rules: { + checker: { + create() { + return { + FunctionExpression: spy, + }; + }, + }, + }, + }, }, + rules: { "test/checker": "error" }, }); - linter.verify(code, { rules: { checker: "error" } }); assert.isTrue(spy.calledOnce, "Event handler should be called."); }); @@ -361,14 +369,22 @@ describe("SourceCode", () => { const spy = sinon.spy(assertJSDoc); - linter.defineRule("checker", { - create() { - return { - FunctionExpression: spy, - }; + linter.verify(code, { + plugins: { + test: { + rules: { + checker: { + create() { + return { + FunctionExpression: spy, + }; + }, + }, + }, + }, }, + rules: { "test/checker": "error" }, }); - linter.verify(code, { rules: { checker: "error" } }); assert.isTrue(spy.calledOnce, "Event handler should be called."); }); @@ -395,14 +411,22 @@ describe("SourceCode", () => { const spy = sinon.spy(assertJSDoc); - linter.defineRule("checker", { - create() { - return { - FunctionExpression: spy, - }; + linter.verify(code, { + plugins: { + test: { + rules: { + checker: { + create() { + return { + FunctionExpression: spy, + }; + }, + }, + }, + }, }, + rules: { "test/checker": "error" }, }); - linter.verify(code, { rules: { checker: "error" } }); assert.isTrue( spy.calledTwice, "Event handler should be called twice.", @@ -435,14 +459,22 @@ describe("SourceCode", () => { const spy = sinon.spy(assertJSDoc); - linter.defineRule("checker", { - create() { - return { - FunctionExpression: spy, - }; + linter.verify(code, { + plugins: { + test: { + rules: { + checker: { + create() { + return { + FunctionExpression: spy, + }; + }, + }, + }, + }, }, + rules: { "test/checker": "error" }, }); - linter.verify(code, { rules: { checker: "error" } }); assert.isTrue(spy.calledOnce, "Event handler should be called."); }); @@ -465,14 +497,22 @@ describe("SourceCode", () => { const spy = sinon.spy(assertJSDoc); - linter.defineRule("checker", { - create() { - return { - FunctionDeclaration: spy, - }; + linter.verify(code, { + plugins: { + test: { + rules: { + checker: { + create() { + return { + FunctionDeclaration: spy, + }; + }, + }, + }, + }, }, + rules: { "test/checker": "error" }, }); - linter.verify(code, { rules: { checker: "error" } }); assert.isTrue(spy.calledOnce, "Event handler should be called."); }); @@ -495,16 +535,21 @@ describe("SourceCode", () => { const spy = sinon.spy(assertJSDoc); - linter.defineRule("checker", { - create() { - return { - FunctionDeclaration: spy, - }; - }, - }); linter.verify(code, { - rules: { checker: "error" }, - parserOptions: { ecmaVersion: 6, sourceType: "module" }, + plugins: { + test: { + rules: { + checker: { + create() { + return { + FunctionDeclaration: spy, + }; + }, + }, + }, + }, + }, + rules: { "test/checker": "error" }, }); assert.isTrue(spy.calledOnce, "Event handler should be called."); }); @@ -532,14 +577,22 @@ describe("SourceCode", () => { const spy = sinon.spy(assertJSDoc); - linter.defineRule("checker", { - create() { - return { - FunctionDeclaration: spy, - }; + linter.verify(code, { + plugins: { + test: { + rules: { + checker: { + create() { + return { + FunctionDeclaration: spy, + }; + }, + }, + }, + }, }, + rules: { "test/checker": "error" }, }); - linter.verify(code, { rules: { checker: "error" } }); assert.isTrue(spy.calledOnce, "Event handler should be called."); }); @@ -566,14 +619,22 @@ describe("SourceCode", () => { const spy = sinon.spy(assertJSDoc); - linter.defineRule("checker", { - create() { - return { - FunctionDeclaration: spy, - }; + linter.verify(code, { + plugins: { + test: { + rules: { + checker: { + create() { + return { + FunctionDeclaration: spy, + }; + }, + }, + }, + }, }, + rules: { "test/checker": "error" }, }); - linter.verify(code, { rules: { checker: "error" } }); assert.isTrue(spy.calledOnce, "Event handler should be called."); }); @@ -600,14 +661,22 @@ describe("SourceCode", () => { const spy = sinon.spy(assertJSDoc); - linter.defineRule("checker", { - create() { - return { - FunctionDeclaration: spy, - }; + linter.verify(code, { + plugins: { + test: { + rules: { + checker: { + create() { + return { + FunctionDeclaration: spy, + }; + }, + }, + }, + }, }, + rules: { "test/checker": "error" }, }); - linter.verify(code, { rules: { checker: "error" } }); assert.isTrue(spy.calledOnce, "Event handler should be called."); }); @@ -636,14 +705,22 @@ describe("SourceCode", () => { const spy = sinon.spy(assertJSDoc); - linter.defineRule("checker", { - create() { - return { - FunctionDeclaration: spy, - }; + linter.verify(code, { + plugins: { + test: { + rules: { + checker: { + create() { + return { + FunctionDeclaration: spy, + }; + }, + }, + }, + }, }, + rules: { "test/checker": "error" }, }); - linter.verify(code, { rules: { checker: "error" } }); assert.isTrue(spy.calledOnce, "Event handler should be called."); }); @@ -672,14 +749,22 @@ describe("SourceCode", () => { const spy = sinon.spy(assertJSDoc); - linter.defineRule("checker", { - create() { - return { - FunctionExpression: spy, - }; + linter.verify(code, { + plugins: { + test: { + rules: { + checker: { + create() { + return { + FunctionExpression: spy, + }; + }, + }, + }, + }, }, + rules: { "test/checker": "error" }, }); - linter.verify(code, { rules: { checker: "error" } }); assert.isTrue(spy.calledOnce, "Event handler should be called."); }); @@ -708,16 +793,21 @@ describe("SourceCode", () => { const spy = sinon.spy(assertJSDoc); - linter.defineRule("checker", { - create() { - return { - ArrowFunctionExpression: spy, - }; - }, - }); linter.verify(code, { - rules: { checker: "error" }, - parserOptions: { ecmaVersion: 6 }, + plugins: { + test: { + rules: { + checker: { + create() { + return { + ArrowFunctionExpression: spy, + }; + }, + }, + }, + }, + }, + rules: { "test/checker": "error" }, }); assert.isTrue(spy.calledOnce, "Event handler should be called."); }); @@ -745,14 +835,22 @@ describe("SourceCode", () => { const spy = sinon.spy(assertJSDoc); - linter.defineRule("checker", { - create() { - return { - FunctionExpression: spy, - }; + linter.verify(code, { + plugins: { + test: { + rules: { + checker: { + create() { + return { + FunctionExpression: spy, + }; + }, + }, + }, + }, }, + rules: { "test/checker": "error" }, }); - linter.verify(code, { rules: { checker: "error" } }); assert.isTrue(spy.calledOnce, "Event handler should be called."); }); @@ -783,14 +881,22 @@ describe("SourceCode", () => { const spy = sinon.spy(assertJSDoc); - linter.defineRule("checker", { - create() { - return { - FunctionExpression: spy, - }; + linter.verify(code, { + plugins: { + test: { + rules: { + checker: { + create() { + return { + FunctionExpression: spy, + }; + }, + }, + }, + }, }, + rules: { "test/checker": "error" }, }); - linter.verify(code, { rules: { checker: "error" } }); assert.isTrue(spy.calledTwice, "Event handler should be called."); }); @@ -820,14 +926,22 @@ describe("SourceCode", () => { const spy = sinon.spy(assertJSDoc); - linter.defineRule("checker", { - create() { - return { - FunctionExpression: spy, - }; + linter.verify(code, { + plugins: { + test: { + rules: { + checker: { + create() { + return { + FunctionExpression: spy, + }; + }, + }, + }, + }, }, + rules: { "test/checker": "error" }, }); - linter.verify(code, { rules: { checker: "error" } }); assert.isTrue(spy.calledTwice, "Event handler should be called."); }); @@ -855,14 +969,22 @@ describe("SourceCode", () => { const spy = sinon.spy(assertJSDoc); - linter.defineRule("checker", { - create() { - return { - FunctionExpression: spy, - }; + linter.verify(code, { + plugins: { + test: { + rules: { + checker: { + create() { + return { + FunctionExpression: spy, + }; + }, + }, + }, + }, }, + rules: { "test/checker": "error" }, }); - linter.verify(code, { rules: { checker: "error" } }); assert.isTrue(spy.calledOnce, "Event handler should be called."); }); @@ -898,14 +1020,22 @@ describe("SourceCode", () => { const spy = sinon.spy(assertJSDoc); - linter.defineRule("checker", { - create() { - return { - FunctionExpression: spy, - }; + linter.verify(code, { + plugins: { + test: { + rules: { + checker: { + create() { + return { + FunctionExpression: spy, + }; + }, + }, + }, + }, }, + rules: { "test/checker": "error" }, }); - linter.verify(code, { rules: { checker: "error" } }); assert.isTrue(spy.calledTwice, "Event handler should be called."); }); @@ -935,16 +1065,21 @@ describe("SourceCode", () => { const spy = sinon.spy(assertJSDoc); - linter.defineRule("checker", { - create() { - return { - ClassExpression: spy, - }; - }, - }); linter.verify(code, { - rules: { checker: "error" }, - parserOptions: { ecmaVersion: 6 }, + plugins: { + test: { + rules: { + checker: { + create() { + return { + ClassExpression: spy, + }; + }, + }, + }, + }, + }, + rules: { "test/checker": "error" }, }); assert.isTrue(spy.calledOnce, "Event handler should be called."); }); @@ -975,16 +1110,21 @@ describe("SourceCode", () => { const spy = sinon.spy(assertJSDoc); - linter.defineRule("checker", { - create() { - return { - ClassDeclaration: spy, - }; - }, - }); linter.verify(code, { - rules: { checker: "error" }, - parserOptions: { ecmaVersion: 6 }, + plugins: { + test: { + rules: { + checker: { + create() { + return { + ClassDeclaration: spy, + }; + }, + }, + }, + }, + }, + rules: { "test/checker": "error" }, }); assert.isTrue(spy.calledOnce, "Event handler should be called."); }); @@ -1012,16 +1152,21 @@ describe("SourceCode", () => { const spy = sinon.spy(assertJSDoc); - linter.defineRule("checker", { - create() { - return { - FunctionExpression: spy, - }; - }, - }); linter.verify(code, { - rules: { checker: "error" }, - parserOptions: { ecmaVersion: 6 }, + plugins: { + test: { + rules: { + checker: { + create() { + return { + FunctionExpression: spy, + }; + }, + }, + }, + }, + }, + rules: { "test/checker": "error" }, }); assert.isTrue(spy.calledOnce, "Event handler should be called."); }); @@ -1056,16 +1201,21 @@ describe("SourceCode", () => { const spy = sinon.spy(assertJSDoc); - linter.defineRule("checker", { - create() { - return { - FunctionExpression: spy, - }; - }, - }); linter.verify(code, { - rules: { checker: "error" }, - parserOptions: { ecmaVersion: 6 }, + plugins: { + test: { + rules: { + checker: { + create() { + return { + FunctionExpression: spy, + }; + }, + }, + }, + }, + }, + rules: { "test/checker": "error" }, }); assert.isTrue(spy.calledOnce, "Event handler should be called."); }); @@ -1095,16 +1245,21 @@ describe("SourceCode", () => { const spy = sinon.spy(assertJSDoc); - linter.defineRule("checker", { - create() { - return { - FunctionDeclaration: spy, - }; - }, - }); linter.verify(code, { - rules: { checker: "error" }, - parserOptions: { ecmaVersion: 6 }, + plugins: { + test: { + rules: { + checker: { + create() { + return { + FunctionDeclaration: spy, + }; + }, + }, + }, + }, + }, + rules: { "test/checker": "error" }, }); assert.isTrue(spy.calledOnce, "Event handler should be called."); }); @@ -2148,8 +2303,42 @@ describe("SourceCode", () => { }); // need to check that linter.verify() works with SourceCode - describe("linter.verify()", () => { + it("should work when passed a SourceCode object without a config", () => { + const ast = espree.parse(TEST_CODE, DEFAULT_CONFIG); + + const sourceCode = new SourceCode(TEST_CODE, ast), + messages = linter.verify(sourceCode); + + assert.strictEqual(messages.length, 0); + }); + + it("should work when passed a SourceCode object containing ES6 syntax and config", () => { + const sourceCode = new SourceCode("let foo = bar;", AST), + messages = linter.verify(sourceCode, { + languageOptions: { ecmaVersion: 6 }, + }); + + assert.strictEqual(messages.length, 0); + }); + + it("should report an error when using let and ecmaVersion is 6", () => { + const sourceCode = new SourceCode("let foo = bar;", AST), + messages = linter.verify(sourceCode, { + languageOptions: { ecmaVersion: 6 }, + rules: { "no-unused-vars": 2 }, + }); + + assert.strictEqual(messages.length, 1); + assert.strictEqual( + messages[0].message, + "'foo' is assigned a value but never used.", + ); + }); + }); + + // TODO: remove this when eslintrc mode is dropped + describe("linter.verify() in eslintrc mode", () => { const CONFIG = { parserOptions: { ecmaVersion: 6 }, }; @@ -2158,21 +2347,21 @@ describe("SourceCode", () => { const ast = espree.parse(TEST_CODE, DEFAULT_CONFIG); const sourceCode = new SourceCode(TEST_CODE, ast), - messages = linter.verify(sourceCode); + messages = eslintrcLinter.verify(sourceCode); assert.strictEqual(messages.length, 0); }); it("should work when passed a SourceCode object containing ES6 syntax and config", () => { const sourceCode = new SourceCode("let foo = bar;", AST), - messages = linter.verify(sourceCode, CONFIG); + messages = eslintrcLinter.verify(sourceCode, CONFIG); assert.strictEqual(messages.length, 0); }); it("should report an error when using let and ecmaVersion is 6", () => { const sourceCode = new SourceCode("let foo = bar;", AST), - messages = linter.verify(sourceCode, { + messages = eslintrcLinter.verify(sourceCode, { parserOptions: { ecmaVersion: 6 }, rules: { "no-unused-vars": 2 }, }); @@ -2385,17 +2574,22 @@ describe("SourceCode", () => { describe("getScope()", () => { it("should throw an error when argument is missing", () => { - linter.defineRule("get-scope", { - create: context => ({ - Program() { - context.sourceCode.getScope(); - }, - }), - }); - assert.throws(() => { linter.verify("foo", { - rules: { "get-scope": 2 }, + plugins: { + test: { + rules: { + "get-scope": { + create: context => ({ + Program() { + context.sourceCode.getScope(); + }, + }), + }, + }, + }, + }, + rules: { "test/get-scope": "error" }, }); }, /Missing required argument: node/u); }); @@ -2410,17 +2604,24 @@ describe("SourceCode", () => { function getScope(code, astSelector, ecmaVersion = 5) { let node, scope; - linter.defineRule("get-scope", { - create: context => ({ - [astSelector](node0) { - node = node0; - scope = context.sourceCode.getScope(node); - }, - }), - }); linter.verify(code, { - parserOptions: { ecmaVersion }, - rules: { "get-scope": 2 }, + languageOptions: { ecmaVersion, sourceType: "script" }, + plugins: { + test: { + rules: { + "get-scope": { + create: context => ({ + [astSelector](node0) { + node = node0; + scope = + context.sourceCode.getScope(node); + }, + }), + }, + }, + }, + }, + rules: { "test/get-scope": 2 }, }); return { node, scope }; @@ -2854,7 +3055,7 @@ describe("SourceCode", () => { rules: { "test/checker": "error" }, }; - flatLinter.verify(code, config, filename); + linter.verify(code, config, filename); assert(spy && spy.calledOnce, "Spy was not called."); }); @@ -2884,7 +3085,7 @@ describe("SourceCode", () => { rules: { "test/checker": "error" }, }; - flatLinter.verify(code, config); + linter.verify(code, config); assert(spy && spy.calledOnce, "Spy was not called."); }); @@ -2914,7 +3115,7 @@ describe("SourceCode", () => { rules: { "test/checker": "error" }, }; - flatLinter.verify(code, config); + linter.verify(code, config); assert(spy && spy.calledOnce, "Spy was not called."); }); }); @@ -2928,100 +3129,109 @@ describe("SourceCode", () => { * @returns {void} */ function verify(code, type, expectedNamesList) { - linter.defineRules({ - test: { - create(context) { - const sourceCode = context.sourceCode; - - /** - * Assert `sourceCode.getDeclaredVariables(node)` is empty. - * @param {ASTNode} node A node to check. - * @returns {void} - */ - function checkEmpty(node) { - assert.strictEqual( - 0, - sourceCode.getDeclaredVariables(node).length, - ); - } - const rule = { - Program: checkEmpty, - EmptyStatement: checkEmpty, - BlockStatement: checkEmpty, - ExpressionStatement: checkEmpty, - LabeledStatement: checkEmpty, - BreakStatement: checkEmpty, - ContinueStatement: checkEmpty, - WithStatement: checkEmpty, - SwitchStatement: checkEmpty, - ReturnStatement: checkEmpty, - ThrowStatement: checkEmpty, - TryStatement: checkEmpty, - WhileStatement: checkEmpty, - DoWhileStatement: checkEmpty, - ForStatement: checkEmpty, - ForInStatement: checkEmpty, - DebuggerStatement: checkEmpty, - ThisExpression: checkEmpty, - ArrayExpression: checkEmpty, - ObjectExpression: checkEmpty, - Property: checkEmpty, - SequenceExpression: checkEmpty, - UnaryExpression: checkEmpty, - BinaryExpression: checkEmpty, - AssignmentExpression: checkEmpty, - UpdateExpression: checkEmpty, - LogicalExpression: checkEmpty, - ConditionalExpression: checkEmpty, - CallExpression: checkEmpty, - NewExpression: checkEmpty, - MemberExpression: checkEmpty, - SwitchCase: checkEmpty, - Identifier: checkEmpty, - Literal: checkEmpty, - ForOfStatement: checkEmpty, - ArrowFunctionExpression: checkEmpty, - YieldExpression: checkEmpty, - TemplateLiteral: checkEmpty, - TaggedTemplateExpression: checkEmpty, - TemplateElement: checkEmpty, - ObjectPattern: checkEmpty, - ArrayPattern: checkEmpty, - RestElement: checkEmpty, - AssignmentPattern: checkEmpty, - ClassBody: checkEmpty, - MethodDefinition: checkEmpty, - MetaProperty: checkEmpty, - }; - - rule[type] = function (node) { - const expectedNames = expectedNamesList.shift(); - const variables = - sourceCode.getDeclaredVariables(node); - - assert(Array.isArray(expectedNames)); - assert(Array.isArray(variables)); - assert.strictEqual( - expectedNames.length, - variables.length, - ); - for (let i = variables.length - 1; i >= 0; i--) { - assert.strictEqual( - expectedNames[i], - variables[i].name, - ); - } - }; - return rule; - }, - }, - }); linter.verify(code, { - rules: { test: 2 }, - parserOptions: { - ecmaVersion: 6, - sourceType: "module", + plugins: { + test: { + rules: { + checker: { + create(context) { + const sourceCode = context.sourceCode; + + /** + * Assert `sourceCode.getDeclaredVariables(node)` is empty. + * @param {ASTNode} node A node to check. + * @returns {void} + */ + function checkEmpty(node) { + assert.strictEqual( + 0, + sourceCode.getDeclaredVariables( + node, + ).length, + ); + } + const rule = { + Program: checkEmpty, + EmptyStatement: checkEmpty, + BlockStatement: checkEmpty, + ExpressionStatement: checkEmpty, + LabeledStatement: checkEmpty, + BreakStatement: checkEmpty, + ContinueStatement: checkEmpty, + WithStatement: checkEmpty, + SwitchStatement: checkEmpty, + ReturnStatement: checkEmpty, + ThrowStatement: checkEmpty, + TryStatement: checkEmpty, + WhileStatement: checkEmpty, + DoWhileStatement: checkEmpty, + ForStatement: checkEmpty, + ForInStatement: checkEmpty, + DebuggerStatement: checkEmpty, + ThisExpression: checkEmpty, + ArrayExpression: checkEmpty, + ObjectExpression: checkEmpty, + Property: checkEmpty, + SequenceExpression: checkEmpty, + UnaryExpression: checkEmpty, + BinaryExpression: checkEmpty, + AssignmentExpression: checkEmpty, + UpdateExpression: checkEmpty, + LogicalExpression: checkEmpty, + ConditionalExpression: checkEmpty, + CallExpression: checkEmpty, + NewExpression: checkEmpty, + MemberExpression: checkEmpty, + SwitchCase: checkEmpty, + Identifier: checkEmpty, + Literal: checkEmpty, + ForOfStatement: checkEmpty, + ArrowFunctionExpression: checkEmpty, + YieldExpression: checkEmpty, + TemplateLiteral: checkEmpty, + TaggedTemplateExpression: checkEmpty, + TemplateElement: checkEmpty, + ObjectPattern: checkEmpty, + ArrayPattern: checkEmpty, + RestElement: checkEmpty, + AssignmentPattern: checkEmpty, + ClassBody: checkEmpty, + MethodDefinition: checkEmpty, + MetaProperty: checkEmpty, + }; + + rule[type] = function (node) { + const expectedNames = + expectedNamesList.shift(); + const variables = + sourceCode.getDeclaredVariables( + node, + ); + + assert(Array.isArray(expectedNames)); + assert(Array.isArray(variables)); + assert.strictEqual( + expectedNames.length, + variables.length, + ); + for ( + let i = variables.length - 1; + i >= 0; + i-- + ) { + assert.strictEqual( + expectedNames[i], + variables[i].name, + ); + } + }; + return rule; + }, + }, + }, + }, }, + rules: { "test/checker": 2 }, }); // Check all expected names are asserted. @@ -3167,24 +3377,38 @@ describe("SourceCode", () => { const code = "var a = 1, b = 2;"; let spy; - linter.defineRule("checker", { - create(context) { - const sourceCode = context.sourceCode; + linter.verify(code, { + plugins: { + test: { + rules: { + checker: { + create(context) { + const sourceCode = context.sourceCode; - spy = sinon.spy(node => { - assert.isTrue(sourceCode.markVariableAsUsed("a")); + spy = sinon.spy(node => { + assert.isTrue( + sourceCode.markVariableAsUsed("a"), + ); - const scope = sourceCode.getScope(node); + const scope = sourceCode.getScope(node); - assert.isTrue(getVariable(scope, "a").eslintUsed); - assert.notOk(getVariable(scope, "b").eslintUsed); - }); + assert.isTrue( + getVariable(scope, "a").eslintUsed, + ); + assert.notOk( + getVariable(scope, "b").eslintUsed, + ); + }); - return { "Program:exit": spy }; + return { "Program:exit": spy }; + }, + }, + }, + }, }, + rules: { "test/checker": "error" }, + languageOptions: { sourceType: "script" }, }); - - linter.verify(code, { rules: { checker: "error" } }); assert(spy && spy.calledOnce); }); @@ -3192,24 +3416,40 @@ describe("SourceCode", () => { const code = "function abc(a, b) { return 1; }"; let spy; - linter.defineRule("checker", { - create(context) { - const sourceCode = context.sourceCode; + linter.verify(code, { + plugins: { + test: { + rules: { + checker: { + create(context) { + const sourceCode = context.sourceCode; - spy = sinon.spy(node => { - assert.isTrue(sourceCode.markVariableAsUsed("a", node)); + spy = sinon.spy(node => { + assert.isTrue( + sourceCode.markVariableAsUsed( + "a", + node, + ), + ); - const scope = sourceCode.getScope(node); + const scope = sourceCode.getScope(node); - assert.isTrue(getVariable(scope, "a").eslintUsed); - assert.notOk(getVariable(scope, "b").eslintUsed); - }); + assert.isTrue( + getVariable(scope, "a").eslintUsed, + ); + assert.notOk( + getVariable(scope, "b").eslintUsed, + ); + }); - return { ReturnStatement: spy }; + return { ReturnStatement: spy }; + }, + }, + }, + }, }, + rules: { "test/checker": "error" }, }); - - linter.verify(code, { rules: { checker: "error" } }); assert(spy && spy.calledOnce); }); @@ -3217,28 +3457,45 @@ describe("SourceCode", () => { const code = "var a, b; function abc() { return 1; }"; let returnSpy, exitSpy; - linter.defineRule("checker", { - create(context) { - const sourceCode = context.sourceCode; + linter.verify(code, { + plugins: { + test: { + rules: { + checker: { + create(context) { + const sourceCode = context.sourceCode; - returnSpy = sinon.spy(node => { - assert.isTrue(sourceCode.markVariableAsUsed("a", node)); - }); - exitSpy = sinon.spy(node => { - const scope = sourceCode.getScope(node); + returnSpy = sinon.spy(node => { + assert.isTrue( + sourceCode.markVariableAsUsed( + "a", + node, + ), + ); + }); + exitSpy = sinon.spy(node => { + const scope = sourceCode.getScope(node); - assert.isTrue(getVariable(scope, "a").eslintUsed); - assert.notOk(getVariable(scope, "b").eslintUsed); - }); + assert.isTrue( + getVariable(scope, "a").eslintUsed, + ); + assert.notOk( + getVariable(scope, "b").eslintUsed, + ); + }); - return { - ReturnStatement: returnSpy, - "Program:exit": exitSpy, - }; + return { + ReturnStatement: returnSpy, + "Program:exit": exitSpy, + }; + }, + }, + }, + }, }, + rules: { "test/checker": "error" }, + languageOptions: { sourceType: "script" }, }); - - linter.verify(code, { rules: { checker: "error" } }); assert(returnSpy && returnSpy.calledOnce); assert(exitSpy && exitSpy.calledOnce); }); @@ -3247,29 +3504,42 @@ describe("SourceCode", () => { const code = "var a = 1, b = 2;"; let spy; - linter.defineRule("checker", { - create(context) { - const sourceCode = context.sourceCode; + linter.verify(code, { + plugins: { + test: { + rules: { + checker: { + create(context) { + const sourceCode = context.sourceCode; - spy = sinon.spy(node => { - const globalScope = sourceCode.getScope(node), - childScope = globalScope.childScopes[0]; + spy = sinon.spy(node => { + const globalScope = + sourceCode.getScope(node), + childScope = + globalScope.childScopes[0]; - assert.isTrue(sourceCode.markVariableAsUsed("a")); + assert.isTrue( + sourceCode.markVariableAsUsed("a"), + ); - assert.isTrue(getVariable(childScope, "a").eslintUsed); - assert.isUndefined( - getVariable(childScope, "b").eslintUsed, - ); - }); + assert.isTrue( + getVariable(childScope, "a") + .eslintUsed, + ); + assert.isUndefined( + getVariable(childScope, "b") + .eslintUsed, + ); + }); - return { "Program:exit": spy }; + return { "Program:exit": spy }; + }, + }, + }, + }, }, - }); - - linter.verify(code, { - rules: { checker: "error" }, - env: { node: true }, + rules: { "test/checker": "error" }, + languageOptions: { sourceType: "commonjs" }, }); assert(spy && spy.calledOnce); }); @@ -3278,31 +3548,45 @@ describe("SourceCode", () => { const code = "var a = 1, b = 2;"; let spy; - linter.defineRule("checker", { - create(context) { - const sourceCode = context.sourceCode; - - spy = sinon.spy(node => { - const globalScope = sourceCode.getScope(node), - childScope = globalScope.childScopes[0]; + linter.verify( + code, + { + plugins: { + test: { + rules: { + checker: { + create(context) { + const sourceCode = context.sourceCode; - assert.isTrue(sourceCode.markVariableAsUsed("a")); + spy = sinon.spy(node => { + const globalScope = + sourceCode.getScope(node), + childScope = + globalScope.childScopes[0]; - assert.isTrue(getVariable(childScope, "a").eslintUsed); - assert.isUndefined( - getVariable(childScope, "b").eslintUsed, - ); - }); + assert.isTrue( + sourceCode.markVariableAsUsed( + "a", + ), + ); - return { "Program:exit": spy }; - }, - }); + assert.isTrue( + getVariable(childScope, "a") + .eslintUsed, + ); + assert.isUndefined( + getVariable(childScope, "b") + .eslintUsed, + ); + }); - linter.verify( - code, - { - rules: { checker: "error" }, - parserOptions: { ecmaVersion: 6, sourceType: "module" }, + return { "Program:exit": spy }; + }, + }, + }, + }, + }, + rules: { "test/checker": "error" }, }, filename, ); @@ -3313,19 +3597,29 @@ describe("SourceCode", () => { const code = "var a = 1, b = 2;"; let spy; - linter.defineRule("checker", { - create(context) { - const sourceCode = context.sourceCode; + linter.verify(code, { + plugins: { + test: { + rules: { + checker: { + create(context) { + const sourceCode = context.sourceCode; - spy = sinon.spy(() => { - assert.isFalse(sourceCode.markVariableAsUsed("c")); - }); + spy = sinon.spy(() => { + assert.isFalse( + sourceCode.markVariableAsUsed("c"), + ); + }); - return { "Program:exit": spy }; + return { "Program:exit": spy }; + }, + }, + }, + }, }, + rules: { "test/checker": "error" }, + languageOptions: { sourceType: "script" }, }); - - linter.verify(code, { rules: { checker: "error" } }); assert(spy && spy.calledOnce); }); }); @@ -3849,17 +4143,22 @@ describe("SourceCode", () => { describe("isGlobalReference(node)", () => { it("should throw an error when argument is missing", () => { - linter.defineRule("is-global-reference", { - create: context => ({ - Program() { - context.sourceCode.isGlobalReference(); - }, - }), - }); - assert.throws(() => { linter.verify("foo", { - rules: { "is-global-reference": 2 }, + plugins: { + test: { + rules: { + "is-global-reference": { + create: context => ({ + Program() { + context.sourceCode.isGlobalReference(); + }, + }), + }, + }, + }, + }, + rules: { "test/is-global-reference": 2 }, }); }, /Missing required argument: node/u); }); @@ -3926,7 +4225,7 @@ describe("SourceCode", () => { rules: { "test/checker": "error" }, }; - flatLinter.verify(code, config); + linter.verify(code, config); assert(identifierSpy.called, "Identifier spy was not called."); assert( identifierSpy.callCount > 10, @@ -3983,7 +4282,7 @@ describe("SourceCode", () => { rules: { "test/checker": "error" }, }; - flatLinter.verify(code, config); + linter.verify(code, config); assert(spy && spy.calledOnce, "Spy was not called."); }); @@ -4028,7 +4327,7 @@ describe("SourceCode", () => { }, }; - flatLinter.verify(code, config); + linter.verify(code, config); assert(spy && spy.calledOnce, "Spy was not called."); }); @@ -4070,7 +4369,7 @@ describe("SourceCode", () => { rules: { "test/checker": "error" }, }; - flatLinter.verify(code, config); + linter.verify(code, config); assert(spy && spy.calledOnce, "Spy was not called."); }); @@ -4138,7 +4437,7 @@ describe("SourceCode", () => { rules: { "test/checker": "error" }, }; - flatLinter.verify(code, config); + linter.verify(code, config); assert(identifierSpy.called, "Identifier spy was not called."); }); @@ -4196,7 +4495,7 @@ describe("SourceCode", () => { languageOptions: { ecmaVersion: 2015 }, }; - flatLinter.verify(code, config); + linter.verify(code, config); assert(spy && spy.calledOnce, "Spy was not called."); }); @@ -4251,7 +4550,7 @@ describe("SourceCode", () => { rules: { "test/checker": "error" }, }; - flatLinter.verify(code, config); + linter.verify(code, config); assert(spy && spy.calledOnce, "Spy was not called."); }); @@ -4292,7 +4591,7 @@ describe("SourceCode", () => { languageOptions: { ecmaVersion: 2015 }, }; - flatLinter.verify(code, config); + linter.verify(code, config); assert(spy && spy.called, "Spy was not called."); }); @@ -4335,7 +4634,7 @@ describe("SourceCode", () => { rules: { "test/checker": "error" }, }; - flatLinter.verify(code, config); + linter.verify(code, config); assert(spy && spy.called, "Spy was not called."); }); @@ -4391,7 +4690,7 @@ describe("SourceCode", () => { languageOptions: { ecmaVersion: 2015 }, }; - flatLinter.verify(code, config); + linter.verify(code, config); assert(spy && spy.called, "Spy was not called."); }); @@ -4435,7 +4734,7 @@ describe("SourceCode", () => { rules: { "test/checker": "error" }, }; - flatLinter.verify(code, config); + linter.verify(code, config); assert(spy && spy.called, "Spy was not called."); }); @@ -4468,7 +4767,7 @@ describe("SourceCode", () => { rules: { "test/checker": "error" }, }; - flatLinter.verify(code, config); + linter.verify(code, config); // Spy on the internal cache const cache = From 2ab13813a7e7f3014c35490b351447ec43229951 Mon Sep 17 00:00:00 2001 From: Francesco Trotta Date: Thu, 24 Jul 2025 14:03:43 +0200 Subject: [PATCH 030/165] ci: pin `jiti` to version 2.4.2 (#19964) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9e5a9741101f..149821195a26 100644 --- a/package.json +++ b/package.json @@ -173,7 +173,7 @@ "globals": "^16.2.0", "got": "^11.8.3", "gray-matter": "^4.0.3", - "jiti": "^2.2.0", + "jiti": "2.4.2", "jiti-v2.0": "npm:jiti@2.0.x", "jiti-v2.1": "npm:jiti@2.1.x", "knip": "^5.60.2", From d4988872f375890bf677ce1a1d92a505085b51fa Mon Sep 17 00:00:00 2001 From: Milos Djermanovic Date: Thu, 24 Jul 2025 17:03:14 +0200 Subject: [PATCH 031/165] fix: bump @eslint/plugin-kit to 0.3.4 to resolve vulnerability (#19965) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 149821195a26..36f4de5dcf42 100644 --- a/package.json +++ b/package.json @@ -111,7 +111,7 @@ "@eslint/core": "^0.15.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.31.0", - "@eslint/plugin-kit": "^0.3.1", + "@eslint/plugin-kit": "^0.3.4", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", From 74f01a3f5905aaa0902837ced2425209c09c048f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Fri, 25 Jul 2025 17:25:01 +0900 Subject: [PATCH 032/165] ci: unpin `jiti` to version `^2.5.1` (#19970) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 36f4de5dcf42..3c54688055c2 100644 --- a/package.json +++ b/package.json @@ -173,7 +173,7 @@ "globals": "^16.2.0", "got": "^11.8.3", "gray-matter": "^4.0.3", - "jiti": "2.4.2", + "jiti": "^2.5.1", "jiti-v2.0": "npm:jiti@2.0.x", "jiti-v2.1": "npm:jiti@2.1.x", "knip": "^5.60.2", From bbf23fa2f1c6058f6cb5c9f2f32460a15e75e596 Mon Sep 17 00:00:00 2001 From: "Nicholas C. Zakas" Date: Fri, 25 Jul 2025 10:21:06 -0400 Subject: [PATCH 033/165] fix: Refactor reporting into FileReport (#19877) * refactor: Reporting into FileReport refs #18787 * Remove unused file * Update tests * Update lib/linter/linter.js Co-authored-by: Milos Djermanovic * Refactor runRules * Don't pass language * Update lib/linter/linter.js Co-authored-by: Milos Djermanovic * Update lib/linter/linter.js Co-authored-by: Milos Djermanovic * Update lib/linter/file-report.js Co-authored-by: Milos Djermanovic * Update lib/linter/file-report.js Co-authored-by: Milos Djermanovic * Update lib/linter/file-report.js Co-authored-by: Milos Djermanovic * Update lib/linter/linter.js Co-authored-by: Milos Djermanovic * Update tests/lib/linter/file-report.js Co-authored-by: Milos Djermanovic * Update tests/lib/linter/file-report.js Co-authored-by: Milos Djermanovic * Add back add* method tests * Fix tests * Update lib/linter/file-report.js Co-authored-by: Milos Djermanovic * Update lib/linter/file-report.js Co-authored-by: Milos Djermanovic * Update lib/linter/file-report.js Co-authored-by: Milos Djermanovic * Update tests/lib/linter/file-report.js Co-authored-by: Milos Djermanovic * Update tests/lib/linter/file-report.js Co-authored-by: Milos Djermanovic * Update tests/lib/linter/file-report.js Co-authored-by: Milos Djermanovic * Update tests/lib/linter/file-report.js Co-authored-by: Milos Djermanovic * Update tests/lib/linter/file-report.js Co-authored-by: Milos Djermanovic * Update tests/lib/linter/file-report.js Co-authored-by: Milos Djermanovic * Update tests/lib/linter/file-report.js Co-authored-by: Milos Djermanovic * Clean up tests * Update tests/lib/linter/file-report.js Co-authored-by: Milos Djermanovic * Remove methods, return message from others * Fix file comments --------- Co-authored-by: Milos Djermanovic --- .../{report-translator.js => file-report.js} | 316 ++++- lib/linter/linter.js | 433 ++---- .../{report-translator.js => file-report.js} | 1254 ++++++++++++----- tests/lib/linter/linter.js | 32 +- 4 files changed, 1277 insertions(+), 758 deletions(-) rename lib/linter/{report-translator.js => file-report.js} (56%) rename tests/lib/linter/{report-translator.js => file-report.js} (50%) diff --git a/lib/linter/report-translator.js b/lib/linter/file-report.js similarity index 56% rename from lib/linter/report-translator.js rename to lib/linter/file-report.js index f424318610de..9528aa16e8d6 100644 --- a/lib/linter/report-translator.js +++ b/lib/linter/file-report.js @@ -1,6 +1,6 @@ /** - * @fileoverview A helper that translates context.report() calls from the rule API into generic problem objects - * @author Teddy Katz + * @fileoverview A class to track messages reported by the linter for a file. + * @author Nicholas C. Zakas */ "use strict"; @@ -12,6 +12,7 @@ const assert = require("../shared/assert"); const { RuleFixer } = require("./rule-fixer"); const { interpolate } = require("./interpolate"); +const ruleReplacements = require("../../conf/replacements.json"); //------------------------------------------------------------------------------ // Typedefs @@ -19,6 +20,8 @@ const { interpolate } = require("./interpolate"); /** @typedef {import("../types").Linter.LintMessage} LintMessage */ /** @typedef {import("../types").Linter.LintSuggestion} SuggestionResult */ +/** @typedef {import("@eslint/core").Language} Language */ +/** @typedef {import("@eslint/core").SourceLocation} SourceLocation */ /** * An error message description @@ -32,10 +35,99 @@ const { interpolate } = require("./interpolate"); * @property {Array<{desc?: string, messageId?: string, fix: Function}>} suggest Suggestion descriptions and functions to create a the associated fixes. */ +/** + * @typedef {Object} LintProblem + * @property {string} ruleId The rule ID that reported the problem. + * @property {string} message The problem message. + * @property {SourceLocation} loc The location of the problem. + */ + //------------------------------------------------------------------------------ -// Module Definition +// Helpers //------------------------------------------------------------------------------ +const DEFAULT_ERROR_LOC = { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 }, +}; + +/** + * Updates a given location based on the language offsets. This allows us to + * change 0-based locations to 1-based locations. We always want ESLint + * reporting lines and columns starting from 1. + * @todo Potentially this should be moved into a shared utility file. + * @param {Object} location The location to update. + * @param {number} location.line The starting line number. + * @param {number} location.column The starting column number. + * @param {number} [location.endLine] The ending line number. + * @param {number} [location.endColumn] The ending column number. + * @param {Language} language The language to use to adjust the location information. + * @returns {Object} The updated location. + */ +function updateLocationInformation( + { line, column, endLine, endColumn }, + language, +) { + const columnOffset = language.columnStart === 1 ? 0 : 1; + const lineOffset = language.lineStart === 1 ? 0 : 1; + + // calculate separately to account for undefined + const finalEndLine = endLine === void 0 ? endLine : endLine + lineOffset; + const finalEndColumn = + endColumn === void 0 ? endColumn : endColumn + columnOffset; + + return { + line: line + lineOffset, + column: column + columnOffset, + endLine: finalEndLine, + endColumn: finalEndColumn, + }; +} + +/** + * creates a missing-rule message. + * @param {string} ruleId the ruleId to create + * @returns {string} created error message + * @private + */ +function createMissingRuleMessage(ruleId) { + return Object.hasOwn(ruleReplacements.rules, ruleId) + ? `Rule '${ruleId}' was removed and replaced by: ${ruleReplacements.rules[ruleId].join(", ")}` + : `Definition for rule '${ruleId}' was not found.`; +} + +/** + * creates a linting problem + * @param {LintProblem} options to create linting error + * @param {RuleSeverity} severity the error message to report + * @param {Language} language the language to use to adjust the location information. + * @returns {LintMessage} created problem, returns a missing-rule problem if only provided ruleId. + * @private + */ +function createLintingProblem(options, severity, language) { + const { + ruleId = null, + loc = DEFAULT_ERROR_LOC, + message = createMissingRuleMessage(options.ruleId), + } = options; + + return { + ruleId, + message, + ...updateLocationInformation( + { + line: loc.start.line, + column: loc.start.column, + endLine: loc.end.line, + endColumn: loc.end.column, + }, + language, + ), + severity, + nodeType: null, + }; +} + /** * Translates a multi-argument context.report() call into a single object argument call * @param {...*} args A list of arguments passed to `context.report` @@ -342,73 +434,175 @@ function validateSuggestions(suggest, messages) { } /** - * Returns a function that converts the arguments of a `context.report` call from a rule into a reported - * problem for the Node.js API. - * @param {{ruleId: string, severity: number, sourceCode: SourceCode, messageIds: Object, disableFixes: boolean, language:Language}} metadata Metadata for the reported problem - * @returns {function(...args): LintMessage} Function that returns information about the report + * Computes the message from a report descriptor. + * @param {MessageDescriptor} descriptor The report descriptor. + * @param {Object} messages Object of meta messages for the rule. + * @returns {string} The computed message. + * @throws {TypeError} If messageId is not found or both message and messageId are provided. */ +function computeMessageFromDescriptor(descriptor, messages) { + if (descriptor.messageId) { + if (!messages) { + throw new TypeError( + "context.report() called with a messageId, but no messages were present in the rule metadata.", + ); + } + const id = descriptor.messageId; -module.exports = function createReportTranslator(metadata) { - /* - * `createReportTranslator` gets called once per enabled rule per file. It needs to be very performant. - * The report translator itself (i.e. the function that `createReportTranslator` returns) gets - * called every time a rule reports a problem, which happens much less frequently (usually, the vast - * majority of rules don't report any problems for a given file). + if (descriptor.message) { + throw new TypeError( + "context.report() called with a message and a messageId. Please only pass one.", + ); + } + if (!messages || !Object.hasOwn(messages, id)) { + throw new TypeError( + `context.report() called with a messageId of '${id}' which is not present in the 'messages' config: ${JSON.stringify(messages, null, 2)}`, + ); + } + return messages[id]; + } + + if (descriptor.message) { + return descriptor.message; + } + + throw new TypeError( + "Missing `message` property in report() call; add a message that describes the linting problem.", + ); +} + +/** + * A report object that contains the messages reported the linter + * for a file. + */ +class FileReport { + /** + * The messages reported by the linter for this file. + * @type {LintMessage[]} + */ + messages = []; + + /** + * A rule mapper that maps rule IDs to their metadata. + * @type {(string) => RuleDefinition} + */ + #ruleMapper; + + /** + * The source code object for the file. + * @type {SourceCode} + */ + #sourceCode; + + /** + * The language to use to adjust line and column offsets. + * @type {Language} + */ + #language; + + /** + * Whether to disable fixes for this report. + * @type {boolean} */ - return (...args) => { + #disableFixes; + + /** + * Creates a new FileReport instance. + * @param {Object} options The options for the file report + * @param {(string) => RuleDefinition} options.ruleMapper A rule mapper that maps rule IDs to their metadata. + * @param {SourceCode} options.sourceCode The source code object for the file. + * @param {Language} options.language The language to use to adjust line and column offsets. + * @param {boolean} [options.disableFixes=false] Whether to disable fixes for this report. + */ + constructor({ ruleMapper, sourceCode, language, disableFixes = false }) { + this.#ruleMapper = ruleMapper; + this.#sourceCode = sourceCode; + this.#language = language; + this.#disableFixes = disableFixes; + } + + /** + * Adds a rule-generated message to the report. + * @param {string} ruleId The rule ID that reported the problem. + * @param {0|1|2} severity The severity of the problem (0 = off, 1 = warning, 2 = error). + * @param {...*} args The arguments passed to `context.report()`. + * @returns {LintMessage} The created message object. + * @throws {TypeError} If the messageId is not found or both message and messageId are provided. + * @throws {AssertionError} If the node is not an object or neither a node nor a loc is provided. + */ + addRuleMessage(ruleId, severity, ...args) { const descriptor = normalizeMultiArgReportCall(...args); - const messages = metadata.messageIds; - const { sourceCode } = metadata; + const ruleDefinition = this.#ruleMapper(ruleId); + const messages = ruleDefinition?.meta?.messages; assertValidNodeInfo(descriptor); - let computedMessage; + const computedMessage = computeMessageFromDescriptor( + descriptor, + messages, + ); - if (descriptor.messageId) { - if (!messages) { - throw new TypeError( - "context.report() called with a messageId, but no messages were present in the rule metadata.", - ); - } - const id = descriptor.messageId; + validateSuggestions(descriptor.suggest, messages); - if (descriptor.message) { - throw new TypeError( - "context.report() called with a message and a messageId. Please only pass one.", - ); - } - if (!messages || !Object.hasOwn(messages, id)) { - throw new TypeError( - `context.report() called with a messageId of '${id}' which is not present in the 'messages' config: ${JSON.stringify(messages, null, 2)}`, - ); - } - computedMessage = messages[id]; - } else if (descriptor.message) { - computedMessage = descriptor.message; - } else { - throw new TypeError( - "Missing `message` property in report() call; add a message that describes the linting problem.", - ); - } + this.messages.push( + createProblem({ + ruleId, + severity, + node: descriptor.node, + message: interpolate(computedMessage, descriptor.data), + messageId: descriptor.messageId, + loc: descriptor.loc + ? normalizeReportLoc(descriptor) + : this.#sourceCode.getLoc(descriptor.node), + fix: this.#disableFixes + ? null + : normalizeFixes(descriptor, this.#sourceCode), + suggestions: this.#disableFixes + ? [] + : mapSuggestions(descriptor, this.#sourceCode, messages), + language: this.#language, + }), + ); - validateSuggestions(descriptor.suggest, messages); + return this.messages.at(-1); + } - return createProblem({ - ruleId: metadata.ruleId, - severity: metadata.severity, - node: descriptor.node, - message: interpolate(computedMessage, descriptor.data), - messageId: descriptor.messageId, - loc: descriptor.loc - ? normalizeReportLoc(descriptor) - : sourceCode.getLoc(descriptor.node), - fix: metadata.disableFixes - ? null - : normalizeFixes(descriptor, sourceCode), - suggestions: metadata.disableFixes - ? [] - : mapSuggestions(descriptor, sourceCode, messages), - language: metadata.language, - }); - }; + /** + * Adds an error message to the report. Meant to be called outside of rules. + * @param {LintProblem} descriptor The descriptor for the error message. + * @returns {LintMessage} The created message object. + */ + addError(descriptor) { + const message = createLintingProblem(descriptor, 2, this.#language); + this.messages.push(message); + return message; + } + + /** + * Adds a fatal error message to the report. Meant to be called outside of rules. + * @param {LintProblem} descriptor The descriptor for the fatal error message. + * @returns {LintMessage} The created message object. + */ + addFatal(descriptor) { + const message = createLintingProblem(descriptor, 2, this.#language); + message.fatal = true; + this.messages.push(message); + return message; + } + + /** + * Adds a warning message to the report. Meant to be called outside of rules. + * @param {LintProblem} descriptor The descriptor for the warning message. + * @returns {LintMessage} The created message object. + */ + addWarning(descriptor) { + const message = createLintingProblem(descriptor, 1, this.#language); + this.messages.push(message); + return message; + } +} + +module.exports = { + FileReport, + updateLocationInformation, }; diff --git a/lib/linter/linter.js b/lib/linter/linter.js index db059b268525..f46f5e32e6b2 100644 --- a/lib/linter/linter.js +++ b/lib/linter/linter.js @@ -27,12 +27,10 @@ const path = require("node:path"), { SourceCode } = require("../languages/js/source-code"), applyDisableDirectives = require("./apply-disable-directives"), { ConfigCommentParser } = require("@eslint/plugin-kit"), - createReportTranslator = require("./report-translator"), Rules = require("./rules"), SourceCodeFixer = require("./source-code-fixer"), { SourceCodeVisitor } = require("./source-code-visitor"), - timing = require("./timing"), - ruleReplacements = require("../../conf/replacements.json"); + timing = require("./timing"); const { FlatConfigArray } = require("../config/flat-config-array"); const { startTime, endTime } = require("../shared/stats"); const { assertIsRuleSeverity } = require("../config/flat-config-schema"); @@ -52,10 +50,6 @@ const MAX_AUTOFIX_PASSES = 10; const DEFAULT_PARSER_NAME = "espree"; const DEFAULT_ECMA_VERSION = 5; const commentParser = new ConfigCommentParser(); -const DEFAULT_ERROR_LOC = { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 }, -}; const parserSymbol = Symbol.for("eslint.RuleTester.parser"); const { LATEST_ECMA_VERSION } = require("../../conf/ecma-version"); const { VFile } = require("./vfile"); @@ -66,6 +60,7 @@ const { containsDifferentProperty } = require("../shared/option-utils"); const { Config } = require("../config/config"); const { WarningService } = require("../services/warning-service"); const { SourceCodeTraverser } = require("./source-code-traverser"); +const { FileReport, updateLocationInformation } = require("./file-report"); //------------------------------------------------------------------------------ // Typedefs @@ -253,92 +248,6 @@ function addDeclaredGlobals( }); } -/** - * creates a missing-rule message. - * @param {string} ruleId the ruleId to create - * @returns {string} created error message - * @private - */ -function createMissingRuleMessage(ruleId) { - return Object.hasOwn(ruleReplacements.rules, ruleId) - ? `Rule '${ruleId}' was removed and replaced by: ${ruleReplacements.rules[ruleId].join(", ")}` - : `Definition for rule '${ruleId}' was not found.`; -} - -/** - * Updates a given location based on the language offsets. This allows us to - * change 0-based locations to 1-based locations. We always want ESLint - * reporting lines and columns starting from 1. - * @param {Object} location The location to update. - * @param {number} location.line The starting line number. - * @param {number} location.column The starting column number. - * @param {number} [location.endLine] The ending line number. - * @param {number} [location.endColumn] The ending column number. - * @param {Language} language The language to use to adjust the location information. - * @returns {Object} The updated location. - */ -function updateLocationInformation( - { line, column, endLine, endColumn }, - language, -) { - const columnOffset = language.columnStart === 1 ? 0 : 1; - const lineOffset = language.lineStart === 1 ? 0 : 1; - - // calculate separately to account for undefined - const finalEndLine = endLine === void 0 ? endLine : endLine + lineOffset; - const finalEndColumn = - endColumn === void 0 ? endColumn : endColumn + columnOffset; - - return { - line: line + lineOffset, - column: column + columnOffset, - endLine: finalEndLine, - endColumn: finalEndColumn, - }; -} - -/** - * creates a linting problem - * @param {Object} options to create linting error - * @param {string} [options.ruleId] the ruleId to report - * @param {Object} [options.loc] the loc to report - * @param {string} [options.message] the error message to report - * @param {RuleSeverity} [options.severity] the error message to report - * @param {Language} [options.language] the language to use to adjust the location information - * @returns {LintMessage} created problem, returns a missing-rule problem if only provided ruleId. - * @private - */ -function createLintingProblem(options) { - const { - ruleId = null, - loc = DEFAULT_ERROR_LOC, - message = createMissingRuleMessage(options.ruleId), - severity = 2, - - // fallback for eslintrc mode - language = { - columnStart: 0, - lineStart: 1, - }, - } = options; - - return { - ruleId, - message, - ...updateLocationInformation( - { - line: loc.start.line, - column: loc.start.column, - endLine: loc.end.line, - endColumn: loc.end.column, - }, - language, - ), - severity, - nodeType: null, - }; -} - /** * Wraps the value in an Array if it isn't already one. * @template T @@ -353,7 +262,7 @@ function asArray(value) { * Pushes a problem to inlineConfigProblems if ruleOptions are redundant. * @param {Config} config Provided config. * @param {Object} loc A line/column location - * @param {Array} problems Problems that may be added to. + * @param {FileReport} report Report that may be added to. * @param {string} ruleId The rule ID. * @param {Array} ruleOptions The rule options, merged with the config's. * @param {Array} ruleOptionsInline The rule options from the comment. @@ -363,7 +272,7 @@ function asArray(value) { function addProblemIfSameSeverityAndOptions( config, loc, - problems, + report, ruleId, ruleOptions, ruleOptionsInline, @@ -404,15 +313,17 @@ function addProblemIfSameSeverityAndOptions( } if (message) { - problems.push( - createLintingProblem({ - ruleId: null, - message, - loc, - language: config.language, - severity: normalizeSeverityToNumber(severity), - }), - ); + const numericSeverity = normalizeSeverityToNumber(severity); + const descriptor = { + message, + loc, + }; + + if (numericSeverity === 1) { + report.addWarning(descriptor); + } else if (numericSeverity === 2) { + report.addError(descriptor); + } } } @@ -427,20 +338,19 @@ function addProblemIfSameSeverityAndOptions( * @param {function(string): {create: Function}} ruleMapper A map from rule IDs to defined rules * @param {Language} language The language to use to adjust the location information. * @param {SourceCode} sourceCode The SourceCode object to get comments from. - * @returns {Object} Directives and problems from the comment + * @param {FileReport} report The report to add problems to. + * @returns {Object[]} Directives from the comment */ function createDisableDirectives( { type, value, justification, node }, ruleMapper, language, sourceCode, + report, ) { const ruleIds = Object.keys(commentParser.parseListConfig(value)); const directiveRules = ruleIds.length ? ruleIds : [null]; - const result = { - directives: [], // valid disable directives - directiveProblems: [], // problems in directives - }; + const directives = []; // valid disable directives const parentDirective = { node, value, ruleIds }; for (const ruleId of directiveRules) { @@ -454,7 +364,7 @@ function createDisableDirectives( language, ); - result.directives.push({ + directives.push({ parentDirective, type, line, @@ -468,7 +378,7 @@ function createDisableDirectives( language, ); - result.directives.push({ + directives.push({ parentDirective, type, line, @@ -478,12 +388,11 @@ function createDisableDirectives( }); } } else { - result.directiveProblems.push( - createLintingProblem({ ruleId, loc, language }), - ); + report.addError({ ruleId, loc }); } } - return result; + + return directives; } /** @@ -494,7 +403,8 @@ function createDisableDirectives( * @param {function(string): {create: Function}} ruleMapper A map from rule IDs to defined rules * @param {string|null} warnInlineConfig If a string then it should warn directive comments as disabled. The string value is the config name what the setting came from. * @param {ConfigData} config Provided config. - * @returns {{configuredRules: Object, enabledGlobals: {value:string,comment:Token}[], exportedVariables: Object, problems: LintMessage[], disableDirectives: DisableDirective[]}} + * @param {FileReport} report The report to add problems to. + * @returns {{configuredRules: Object, enabledGlobals: {value:string,comment:Token}[], exportedVariables: Object, disableDirectives: DisableDirective[]}} * A collection of the directive comments that were found, along with any problems that occurred when parsing */ function getDirectiveComments( @@ -502,11 +412,11 @@ function getDirectiveComments( ruleMapper, warnInlineConfig, config, + report, ) { const configuredRules = {}; const enabledGlobals = Object.create(null); const exportedVariables = {}; - const problems = []; const disableDirectives = []; const validator = new ConfigValidator({ builtInRules: Rules, @@ -542,14 +452,11 @@ function getDirectiveComments( const kind = comment.type === "Block" ? `/*${label}*/` : `//${label}`; - problems.push( - createLintingProblem({ - ruleId: null, - message: `'${kind}' has no effect because you have 'noInlineConfig' setting in ${warnInlineConfig}.`, - loc, - severity: 1, - }), - ); + report.addWarning({ + ruleId: null, + message: `'${kind}' has no effect because you have 'noInlineConfig' setting in ${warnInlineConfig}.`, + loc, + }); return; } @@ -559,13 +466,10 @@ function getDirectiveComments( ) { const message = `${label} comment should not span multiple lines.`; - problems.push( - createLintingProblem({ - ruleId: null, - message, - loc, - }), - ); + report.addError({ + message, + loc, + }); return; } @@ -575,21 +479,20 @@ function getDirectiveComments( case "eslint-disable-next-line": case "eslint-disable-line": { const directiveType = label.slice("eslint-".length); - const { directives, directiveProblems } = - createDisableDirectives( - { - type: directiveType, - value, - justification: justificationPart, - node: comment, - }, - ruleMapper, - jslang, - sourceCode, - ); + const directives = createDisableDirectives( + { + type: directiveType, + value, + justification: justificationPart, + node: comment, + }, + ruleMapper, + jslang, + sourceCode, + report, + ); disableDirectives.push(...directives); - problems.push(...directiveProblems); break; } @@ -611,13 +514,10 @@ function getDirectiveComments( normalizedValue = ConfigOps.normalizeConfigGlobal(idSetting); } catch (err) { - problems.push( - createLintingProblem({ - ruleId: null, - loc, - message: err.message, - }), - ); + report.addError({ + loc, + message: err.message, + }); continue; } @@ -643,19 +543,15 @@ function getDirectiveComments( const ruleValue = parseResult.config[name]; if (!rule) { - problems.push( - createLintingProblem({ ruleId: name, loc }), - ); + report.addError({ ruleId: name, loc }); return; } if (Object.hasOwn(configuredRules, name)) { - problems.push( - createLintingProblem({ - message: `Rule "${name}" is already configured by another configuration comment in the preceding code. This configuration is ignored.`, - loc, - }), - ); + report.addError({ + message: `Rule "${name}" is already configured by another configuration comment in the preceding code. This configuration is ignored.`, + loc, + }); return; } @@ -717,13 +613,11 @@ function getDirectiveComments( throw err; } - problems.push( - createLintingProblem({ - ruleId: name, - message: err.message, - loc, - }), - ); + report.addError({ + ruleId: name, + message: err.message, + loc, + }); // do not apply the config, if found invalid options. return; @@ -732,14 +626,10 @@ function getDirectiveComments( configuredRules[name] = ruleOptions; }); } else { - const problem = createLintingProblem({ - ruleId: null, + report.addFatal({ loc, message: parseResult.error.message, }); - - problem.fatal = true; - problems.push(problem); } break; @@ -753,7 +643,6 @@ function getDirectiveComments( configuredRules, enabledGlobals, exportedVariables, - problems, disableDirectives, }; } @@ -763,43 +652,40 @@ function getDirectiveComments( * @param {SourceCode} sourceCode The SourceCode object to get comments from. * @param {function(string): {create: Function}} ruleMapper A map from rule IDs to defined rules * @param {Language} language The language to use to adjust the location information - * @returns {{problems: LintMessage[], disableDirectives: DisableDirective[]}} + * @param {FileReport} report The report to add problems to. + * @returns {DisableDirective[]} * A collection of the directive comments that were found, along with any problems that occurred when parsing */ -function getDirectiveCommentsForFlatConfig(sourceCode, ruleMapper, language) { +function getDirectiveCommentsForFlatConfig( + sourceCode, + ruleMapper, + language, + report, +) { const disableDirectives = []; - const problems = []; if (sourceCode.getDisableDirectives) { const { directives: directivesSources, problems: directivesProblems } = sourceCode.getDisableDirectives(); - problems.push( - ...directivesProblems.map(directiveProblem => - createLintingProblem({ - ...directiveProblem, - language, - }), - ), - ); + if (Array.isArray(directivesProblems)) { + directivesProblems.forEach(problem => report.addError(problem)); + } directivesSources.forEach(directive => { - const { directives, directiveProblems } = createDisableDirectives( + const directives = createDisableDirectives( directive, ruleMapper, language, sourceCode, + report, ); disableDirectives.push(...directives); - problems.push(...directiveProblems); }); } - return { - problems, - disableDirectives, - }; + return disableDirectives; } /** @@ -1149,13 +1035,13 @@ function createRuleListeners(rule, ruleContext) { * @param {Object} settings The settings that were enabled in the config * @param {string} filename The reported filename of the code * @param {boolean} applyDefaultOptions If true, apply rules' meta.defaultOptions in computing their config options. - * @param {boolean} disableFixes If true, it doesn't make `fix` properties. * @param {string | undefined} cwd cwd of the cli * @param {string} physicalFilename The full path of the file on disk without any code block information * @param {Function} ruleFilter A predicate function to filter which rules should be executed. * @param {boolean} stats If true, stats are collected appended to the result * @param {WeakMap} slots InternalSlotsMap of linter - * @returns {LintMessage[]} An array of reported problems + * @param {FileReport} report The report to add problems to + * @returns {FileReport} report The report with added problems * @throws {Error} If traversal into a node fails. */ function runRules( @@ -1168,12 +1054,12 @@ function runRules( settings, filename, applyDefaultOptions, - disableFixes, cwd, physicalFilename, ruleFilter, stats, slots, + report, ) { const visitor = new SourceCodeVisitor(); @@ -1195,7 +1081,6 @@ function runRules( settings, }); - const lintingProblems = []; const steps = sourceCode.traverse(); Object.keys(configuredRules).forEach(ruleId => { @@ -1213,12 +1098,10 @@ function runRules( const rule = ruleMapper(ruleId); if (!rule) { - lintingProblems.push(createLintingProblem({ ruleId, language })); + report.addError({ ruleId }); return; } - const messageIds = rule.meta && rule.meta.messages; - let reportTranslator = null; const ruleContext = fileContext.extend({ id: ruleId, options: getRuleOptions( @@ -1226,33 +1109,18 @@ function runRules( applyDefaultOptions ? rule.meta?.defaultOptions : void 0, ), report(...args) { - /* - * Create a report translator lazily. - * In a vast majority of cases, any given rule reports zero errors on a given - * piece of code. Creating a translator lazily avoids the performance cost of - * creating a new translator function for each rule that usually doesn't get - * called. - * - * Using lazy report translators improves end-to-end performance by about 3% - * with Node 8.4.0. - */ - if (reportTranslator === null) { - reportTranslator = createReportTranslator({ - ruleId, - severity, - sourceCode, - messageIds, - disableFixes, - language, - }); - } - const problem = reportTranslator(...args); + const problem = report.addRuleMessage( + ruleId, + severity, + ...args, + ); if (problem.fix && !(rule.meta && rule.meta.fixable)) { throw new Error( 'Fixable rules must set the `meta.fixable` property to "code" or "whitespace".', ); } + if ( problem.suggestions && !(rule.meta && rule.meta.hasSuggestions === true) @@ -1271,7 +1139,6 @@ function runRules( "Rules with suggestions must set the `meta.hasSuggestions` property to `true`.", ); } - lintingProblems.push(problem); }, }); @@ -1347,7 +1214,7 @@ function runRules( traverser.traverseSync(sourceCode, visitor, { steps }); - return lintingProblems; + return report; } /** @@ -1636,18 +1503,25 @@ class Linter { } const sourceCode = slots.lastSourceCode; + const report = new FileReport({ + ruleMapper: ruleId => getRule(slots, ruleId), + language: jslang, + sourceCode, + disableFixes: options.disableFixes, + }); + const commentDirectives = options.allowInlineConfig ? getDirectiveComments( sourceCode, ruleId => getRule(slots, ruleId), options.warnInlineConfig, config, + report, ) : { configuredRules: {}, enabledGlobals: {}, exportedVariables: {}, - problems: [], disableDirectives: [], }; @@ -1666,10 +1540,8 @@ class Linter { commentDirectives.configuredRules, ); - let lintingProblems; - try { - lintingProblems = runRules( + runRules( sourceCode, configuredRules, ruleId => getRule(slots, ruleId), @@ -1679,12 +1551,12 @@ class Linter { settings, options.filename, true, - options.disableFixes, slots.cwd, providedOptions.physicalFilename, null, options.stats, slots, + report, ); } catch (err) { err.message += `\nOccurred while linting ${options.filename}`; @@ -1712,13 +1584,11 @@ class Linter { sourceCode, directives: commentDirectives.disableDirectives, disableFixes: options.disableFixes, - problems: lintingProblems - .concat(commentDirectives.problems) - .sort( - (problemA, problemB) => - problemA.line - problemB.line || - problemA.column - problemB.column, - ), + problems: report.messages.sort( + (problemA, problemB) => + problemA.line - problemB.line || + problemA.column - problemB.column, + ), reportUnusedDisableDirectives: options.reportUnusedDisableDirectives, }); @@ -2013,6 +1883,12 @@ class Linter { } const sourceCode = slots.lastSourceCode; + const report = new FileReport({ + ruleMapper: ruleId => config.getRuleDefinition(ruleId), + language: config.language, + sourceCode, + disableFixes: options.disableFixes, + }); /* * Make adjustments based on the language options. For JavaScript, @@ -2024,7 +1900,6 @@ class Linter { const mergedInlineConfig = { rules: {}, }; - const inlineConfigProblems = []; /* * Inline config can be either enabled or disabled. If disabled, it's possible @@ -2040,34 +1915,19 @@ class Linter { const loc = sourceCode.getLoc(node); const range = sourceCode.getRange(node); - inlineConfigProblems.push( - createLintingProblem({ - ruleId: null, - message: `'${sourceCode.text.slice(range[0], range[1])}' has no effect because you have 'noInlineConfig' setting in ${options.warnInlineConfig}.`, - loc, - severity: 1, - language: config.language, - }), - ); + report.addWarning({ + message: `'${sourceCode.text.slice(range[0], range[1])}' has no effect because you have 'noInlineConfig' setting in ${options.warnInlineConfig}.`, + loc, + }); }); } } else { const inlineConfigResult = sourceCode.applyInlineConfig?.(); if (inlineConfigResult) { - inlineConfigProblems.push( - ...inlineConfigResult.problems - .map(problem => - createLintingProblem({ - ...problem, - language: config.language, - }), - ) - .map(problem => { - problem.fatal = true; - return problem; - }), - ); + inlineConfigResult.problems.forEach(problem => { + report.addFatal(problem); + }); for (const { config: inlineConfig, @@ -2078,26 +1938,20 @@ class Linter { const ruleValue = inlineConfig.rules[ruleId]; if (!rule) { - inlineConfigProblems.push( - createLintingProblem({ - ruleId, - loc, - language: config.language, - }), - ); + report.addError({ + ruleId, + loc, + }); return; } if ( Object.hasOwn(mergedInlineConfig.rules, ruleId) ) { - inlineConfigProblems.push( - createLintingProblem({ - message: `Rule "${ruleId}" is already configured by another configuration comment in the preceding code. This configuration is ignored.`, - loc, - language: config.language, - }), - ); + report.addError({ + message: `Rule "${ruleId}" is already configured by another configuration comment in the preceding code. This configuration is ignored.`, + loc, + }); return; } @@ -2175,7 +2029,7 @@ class Linter { addProblemIfSameSeverityAndOptions( config, loc, - inlineConfigProblems, + report, ruleId, ruleOptions, ruleOptionsInline, @@ -2214,14 +2068,11 @@ class Linter { baseMessage += ` You passed "${ruleValue}".`; } - inlineConfigProblems.push( - createLintingProblem({ - ruleId, - message: `Inline configuration for rule "${ruleId}" is invalid:\n\t${baseMessage}\n`, - loc, - language: config.language, - }), - ); + report.addError({ + ruleId, + message: `Inline configuration for rule "${ruleId}" is invalid:\n\t${baseMessage}\n`, + loc, + }); } }); } @@ -2235,8 +2086,9 @@ class Linter { sourceCode, ruleId => config.getRuleDefinition(ruleId), config.language, + report, ) - : { problems: [], disableDirectives: [] }; + : []; const configuredRules = Object.assign( {}, @@ -2244,12 +2096,10 @@ class Linter { mergedInlineConfig.rules, ); - let lintingProblems; - sourceCode.finalize?.(); try { - lintingProblems = runRules( + runRules( sourceCode, configuredRules, ruleId => config.getRuleDefinition(ruleId), @@ -2259,12 +2109,12 @@ class Linter { settings, options.filename, false, - options.disableFixes, slots.cwd, providedOptions.physicalFilename, options.ruleFilter, options.stats, slots, + report, ); } catch (err) { err.message += `\nOccurred while linting ${options.filename}`; @@ -2291,16 +2141,13 @@ class Linter { return applyDisableDirectives({ language: config.language, sourceCode, - directives: commentDirectives.disableDirectives, + directives: commentDirectives, disableFixes: options.disableFixes, - problems: lintingProblems - .concat(commentDirectives.problems) - .concat(inlineConfigProblems) - .sort( - (problemA, problemB) => - problemA.line - problemB.line || - problemA.column - problemB.column, - ), + problems: report.messages.sort( + (problemA, problemB) => + problemA.line - problemB.line || + problemA.column - problemB.column, + ), reportUnusedDisableDirectives: options.reportUnusedDisableDirectives, ruleFilter: options.ruleFilter, diff --git a/tests/lib/linter/report-translator.js b/tests/lib/linter/file-report.js similarity index 50% rename from tests/lib/linter/report-translator.js rename to tests/lib/linter/file-report.js index fd075e906626..8c6593642833 100644 --- a/tests/lib/linter/report-translator.js +++ b/tests/lib/linter/file-report.js @@ -1,6 +1,6 @@ /** - * @fileoverview Tests for createReportTranslator - * @author Teddy Katz + * @fileoverview Tests for FileReport class + * @author Nicholas C. Zakas */ "use strict"; @@ -9,79 +9,402 @@ //------------------------------------------------------------------------------ const assert = require("chai").assert; +const { + FileReport, + updateLocationInformation, +} = require("../../../lib/linter/file-report"); const { SourceCode } = require("../../../lib/languages/js/source-code"); const espree = require("espree"); -const createReportTranslator = require("../../../lib/linter/report-translator"); -const jslang = require("../../../lib/languages/js"); + +//------------------------------------------------------------------------------ +// Helpers +//------------------------------------------------------------------------------ + +/** + * Creates a SourceCode instance out of JavaScript text + * @param {string} text Source text + * @returns {SourceCode} A SourceCode instance for that text + */ +function createSourceCode(text) { + return new SourceCode( + text, + espree.parse(text.replace(/^\uFEFF/u, ""), { + loc: true, + range: true, + raw: true, + tokens: true, + comment: true, + }), + ); +} + +/** + * Mock rule mapper for testing + * @returns {Object} Mock rule definition + */ +function mockRuleMapper() { + return { + meta: { + messages: { + testMessage: "foo", + suggestion1: "First suggestion", + suggestion2: "Second suggestion {{interpolated}}", + }, + }, + }; +} + +const language = { columnStart: 0, lineStart: 1 }; //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -describe("createReportTranslator", () => { - /** - * Creates a SourceCode instance out of JavaScript text - * @param {string} text Source text - * @returns {SourceCode} A SourceCode instance for that text - */ - function createSourceCode(text) { - return new SourceCode( - text, - espree.parse(text.replace(/^\uFEFF/u, ""), { - loc: true, - range: true, - raw: true, - tokens: true, - comment: true, - }), - ); - } - - let node, location, message, translateReport, suggestion1, suggestion2; +describe("FileReport", () => { + let sourceCode, node, location, fileReport, message; beforeEach(() => { - const sourceCode = createSourceCode("foo\nbar"); - + sourceCode = createSourceCode("foo\nbar"); node = sourceCode.ast.body[0]; location = sourceCode.ast.body[1].loc.start; message = "foo"; - suggestion1 = "First suggestion"; - suggestion2 = "Second suggestion {{interpolated}}"; - translateReport = createReportTranslator({ - language: jslang, - ruleId: "foo-rule", - severity: 2, + fileReport = new FileReport({ + ruleMapper: mockRuleMapper, sourceCode, - messageIds: { - testMessage: message, - suggestion1, - suggestion2, - }, + language, + }); + }); + + describe("addRuleMessage", () => { + it("should add a message with a string message", () => { + fileReport.addRuleMessage("foo-rule", 2, node, location, "foo", {}); + + assert.strictEqual(fileReport.messages.length, 1); + assert.deepStrictEqual(fileReport.messages[0], { + ruleId: "foo-rule", + severity: 2, + message: "foo", + line: 2, + column: 1, + nodeType: "ExpressionStatement", + }); + }); + + it("should add a message with messageId", () => { + fileReport.addRuleMessage("foo-rule", 2, { + node, + loc: location, + messageId: "testMessage", + }); + + assert.strictEqual(fileReport.messages.length, 1); + assert.deepStrictEqual(fileReport.messages[0], { + ruleId: "foo-rule", + severity: 2, + message: "foo", + messageId: "testMessage", + line: 2, + column: 1, + nodeType: "ExpressionStatement", + }); + }); + + it("should add a message with suggestions", () => { + fileReport.addRuleMessage("foo-rule", 2, { + node, + loc: location, + message: "foo", + suggest: [ + { + messageId: "suggestion1", + fix: () => ({ range: [2, 3], text: "s1" }), + }, + { + messageId: "suggestion2", + data: { interpolated: "'interpolated value'" }, + fix: () => ({ range: [3, 4], text: "s2" }), + }, + ], + }); + + assert.strictEqual(fileReport.messages.length, 1); + assert.deepStrictEqual(fileReport.messages[0], { + ruleId: "foo-rule", + severity: 2, + message: "foo", + line: 2, + column: 1, + nodeType: "ExpressionStatement", + suggestions: [ + { + messageId: "suggestion1", + desc: "First suggestion", + fix: { range: [2, 3], text: "s1" }, + }, + { + messageId: "suggestion2", + data: { interpolated: "'interpolated value'" }, + desc: "Second suggestion 'interpolated value'", + fix: { range: [3, 4], text: "s2" }, + }, + ], + }); + }); + + it("should add a message with a fix", () => { + fileReport.addRuleMessage("foo-rule", 2, { + node, + loc: location, + message: "foo", + fix: () => ({ range: [1, 2], text: "foo" }), + }); + + assert.strictEqual(fileReport.messages.length, 1); + assert.deepStrictEqual(fileReport.messages[0], { + ruleId: "foo-rule", + severity: 2, + message: "foo", + line: 2, + column: 1, + nodeType: "ExpressionStatement", + fix: { range: [1, 2], text: "foo" }, + }); + }); + + it("should return the lint message object", () => { + const messageObject = fileReport.addRuleMessage("foo-rule", 2, { + node, + loc: location, + message: "foo", + fix: () => ({ range: [1, 2], text: "foo" }), + }); + + assert.strictEqual(fileReport.messages.length, 1); + assert.deepStrictEqual(messageObject, fileReport.messages[0]); + assert.strictEqual(messageObject.ruleId, "foo-rule"); + assert.strictEqual(messageObject.severity, 2); + assert.strictEqual(messageObject.message, "foo"); + }); + + it("should throw if both message and messageId are provided", () => { + assert.throws(() => { + fileReport.addRuleMessage("foo-rule", 2, { + node, + loc: location, + message: "foo", + messageId: "testMessage", + }); + }, /context\.report\(\) called with a message and a messageId/u); + + assert.strictEqual(fileReport.messages.length, 0); + }); + + it("should throw when an invalid messageId is provided", () => { + assert.throws(() => { + fileReport.addRuleMessage("foo-rule", 2, { + node, + loc: location, + messageId: "thisIsNotASpecifiedMessageId", + }); + }, /^context\.report\(\) called with a messageId of '[^']+' which is not present in the 'messages' config:/u); + + assert.strictEqual(fileReport.messages.length, 0); + }); + + it("should throw when no message is provided", () => { + assert.throws(() => { + fileReport.addRuleMessage("foo-rule", 2, { node }); + }, "Missing `message` property in report() call; add a message that describes the linting problem."); + + assert.strictEqual(fileReport.messages.length, 0); + }); + + it("should throw when a suggestion defines both a desc and messageId", () => { + assert.throws(() => { + fileReport.addRuleMessage("foo-rule", 2, { + node, + loc: location, + message: "foo", + suggest: [ + { + desc: "The description", + messageId: "suggestion1", + fix: () => ({ range: [2, 3], text: "s1" }), + }, + ], + }); + }, "context.report() called with a suggest option that defines both a 'messageId' and an 'desc'. Please only pass one."); + + assert.strictEqual(fileReport.messages.length, 0); + }); + + it("should throw when a suggestion uses an invalid messageId", () => { + assert.throws(() => { + fileReport.addRuleMessage("foo-rule", 2, { + node, + loc: location, + message: "foo", + suggest: [ + { + messageId: "noMatchingMessage", + fix: () => ({ range: [2, 3], text: "s1" }), + }, + ], + }); + }, /^context\.report\(\) called with a suggest option with a messageId '[^']+' which is not present in the 'messages' config:/u); + + assert.strictEqual(fileReport.messages.length, 0); + }); + + it("should throw when a suggestion does not provide either a desc or messageId", () => { + assert.throws(() => { + fileReport.addRuleMessage("foo-rule", 2, { + node, + loc: location, + message: "foo", + suggest: [ + { + fix: () => ({ range: [2, 3], text: "s1" }), + }, + ], + }); + }, "context.report() called with a suggest option that doesn't have either a `desc` or `messageId`"); + + assert.strictEqual(fileReport.messages.length, 0); + }); + + it("should throw when a suggestion does not provide a fix function", () => { + assert.throws(() => { + fileReport.addRuleMessage("foo-rule", 2, { + node, + loc: location, + message: "foo", + suggest: [ + { + desc: "The description", + fix: false, + }, + ], + }); + }, /^context\.report\(\) called with a suggest option without a fix function. See:/u); + + assert.strictEqual(fileReport.messages.length, 0); + }); + }); + + describe("addError", () => { + it("should add an error message", () => { + const loc = { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 }, + }; + + fileReport.addError({ + message: "test error message", + loc, + }); + + assert.strictEqual(fileReport.messages.length, 1); + assert.deepStrictEqual(fileReport.messages[0], { + ruleId: null, + severity: 2, + message: "test error message", + line: 1, + column: 1, + endLine: 1, + endColumn: 2, + nodeType: null, + }); + }); + }); + + describe("addWarning", () => { + it("should add a warning message", () => { + const loc = { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 }, + }; + + const warning = fileReport.addWarning({ + message: "test warning message", + loc, + }); + + assert.strictEqual(fileReport.messages.length, 1); + assert.strictEqual(warning, fileReport.messages[0]); + assert.deepStrictEqual(warning, { + ruleId: null, + severity: 1, + message: "test warning message", + line: 1, + column: 1, + endLine: 1, + endColumn: 2, + nodeType: null, + }); + }); + }); + + describe("addFatal", () => { + it("should add a fatal error message", () => { + const loc = { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 }, + }; + + const fatal = fileReport.addFatal({ + message: "test fatal message", + loc, + }); + + assert.strictEqual(fileReport.messages.length, 1); + assert.strictEqual(fatal, fileReport.messages[0]); + assert.deepStrictEqual(fatal, { + ruleId: null, + severity: 2, + fatal: true, + message: "test fatal message", + line: 1, + column: 1, + endLine: 1, + endColumn: 2, + nodeType: null, + }); }); }); describe("old-style call with location", () => { it("should extract the location correctly", () => { - assert.deepStrictEqual( - translateReport(node, location, message, {}), - { - ruleId: "foo-rule", - severity: 2, - message: "foo", - line: 2, - column: 1, - nodeType: "ExpressionStatement", - }, + fileReport.addRuleMessage( + "foo-rule", + 2, + node, + location, + message, + {}, ); + + assert.strictEqual(fileReport.messages.length, 1); + assert.deepStrictEqual(fileReport.messages[0], { + ruleId: "foo-rule", + severity: 2, + message, + line: 2, + column: 1, + nodeType: "ExpressionStatement", + }); }); }); describe("old-style call without location", () => { it("should use the start location and end location of the node", () => { - assert.deepStrictEqual(translateReport(node, message, {}), { + fileReport.addRuleMessage("foo-rule", 2, node, message, {}); + + assert.strictEqual(fileReport.messages.length, 1); + assert.deepStrictEqual(fileReport.messages[0], { ruleId: "foo-rule", severity: 2, - message: "foo", + message, line: 1, column: 1, endLine: 1, @@ -110,10 +433,12 @@ describe("createReportTranslator", () => { ], }; - assert.deepStrictEqual(translateReport(reportDescriptor), { + fileReport.addRuleMessage("foo-rule", 2, reportDescriptor); + + assert.deepStrictEqual(fileReport.messages[0], { ruleId: "foo-rule", severity: 2, - message: "foo", + message, line: 2, column: 1, nodeType: "ExpressionStatement", @@ -142,7 +467,9 @@ describe("createReportTranslator", () => { fix: () => ({ range: [1, 2], text: "foo" }), }; - assert.deepStrictEqual(translateReport(reportDescriptor), { + fileReport.addRuleMessage("foo-rule", 2, reportDescriptor); + + assert.deepStrictEqual(fileReport.messages[0], { ruleId: "foo-rule", severity: 2, message: "foo", @@ -167,7 +494,8 @@ describe("createReportTranslator", () => { }; assert.throws( - () => translateReport(reportDescriptor), + () => + fileReport.addRuleMessage("foo-rule", 2, reportDescriptor), TypeError, "context.report() called with a message and a messageId. Please only pass one.", ); @@ -182,7 +510,8 @@ describe("createReportTranslator", () => { }; assert.throws( - () => translateReport(reportDescriptor), + () => + fileReport.addRuleMessage("foo-rule", 2, reportDescriptor), TypeError, /^context\.report\(\) called with a messageId of '[^']+' which is not present in the 'messages' config:/u, ); @@ -192,7 +521,8 @@ describe("createReportTranslator", () => { const reportDescriptor = { node }; assert.throws( - () => translateReport(reportDescriptor), + () => + fileReport.addRuleMessage("foo-rule", 2, reportDescriptor), TypeError, "Missing `message` property in report() call; add a message that describes the linting problem.", ); @@ -216,7 +546,9 @@ describe("createReportTranslator", () => { ], }; - assert.deepStrictEqual(translateReport(reportDescriptor), { + fileReport.addRuleMessage("foo-rule", 2, reportDescriptor); + + assert.deepStrictEqual(fileReport.messages[0], { ruleId: "foo-rule", severity: 2, message: "foo", @@ -254,7 +586,8 @@ describe("createReportTranslator", () => { }; assert.throws( - () => translateReport(reportDescriptor), + () => + fileReport.addRuleMessage("foo-rule", 2, reportDescriptor), TypeError, "context.report() called with a suggest option that defines both a 'messageId' and an 'desc'. Please only pass one.", ); @@ -274,7 +607,8 @@ describe("createReportTranslator", () => { }; assert.throws( - () => translateReport(reportDescriptor), + () => + fileReport.addRuleMessage("foo-rule", 2, reportDescriptor), TypeError, /^context\.report\(\) called with a suggest option with a messageId '[^']+' which is not present in the 'messages' config:/u, ); @@ -293,7 +627,8 @@ describe("createReportTranslator", () => { }; assert.throws( - () => translateReport(reportDescriptor), + () => + fileReport.addRuleMessage("foo-rule", 2, reportDescriptor), TypeError, "context.report() called with a suggest option that doesn't have either a `desc` or `messageId`", ); @@ -313,7 +648,8 @@ describe("createReportTranslator", () => { }; assert.throws( - () => translateReport(reportDescriptor), + () => + fileReport.addRuleMessage("foo-rule", 2, reportDescriptor), TypeError, /^context\.report\(\) called with a suggest option without a fix function. See:/u, ); @@ -332,7 +668,9 @@ describe("createReportTranslator", () => { ], }; - assert.deepStrictEqual(translateReport(reportDescriptor), { + fileReport.addRuleMessage("foo-rule", 2, reportDescriptor); + + assert.deepStrictEqual(fileReport.messages[0], { ruleId: "foo-rule", severity: 2, message: "foo", @@ -357,7 +695,9 @@ describe("createReportTranslator", () => { }, }; - assert.deepStrictEqual(translateReport(reportDescriptor), { + fileReport.addRuleMessage("foo-rule", 2, reportDescriptor); + + assert.deepStrictEqual(fileReport.messages[0], { ruleId: "foo-rule", severity: 2, message: "foo", @@ -383,7 +723,9 @@ describe("createReportTranslator", () => { }, }; - assert.deepStrictEqual(translateReport(reportDescriptor), { + fileReport.addRuleMessage("foo-rule", 2, reportDescriptor); + + assert.deepStrictEqual(fileReport.messages[0], { ruleId: "foo-rule", severity: 2, message: "foo", @@ -405,7 +747,9 @@ describe("createReportTranslator", () => { fix: () => [{ range: [1, 2], text: "foo" }], }; - assert.deepStrictEqual(translateReport(reportDescriptor), { + fileReport.addRuleMessage("foo-rule", 2, reportDescriptor); + + assert.deepStrictEqual(fileReport.messages[0], { ruleId: "foo-rule", severity: 2, message: "foo", @@ -430,7 +774,9 @@ describe("createReportTranslator", () => { ], }; - assert.deepStrictEqual(translateReport(reportDescriptor), { + fileReport.addRuleMessage("foo-rule", 2, reportDescriptor); + + assert.deepStrictEqual(fileReport.messages[0], { ruleId: "foo-rule", severity: 2, message: "foo", @@ -445,8 +791,12 @@ describe("createReportTranslator", () => { }); it("should handle removing BOM correctly.", () => { - const sourceCode = createSourceCode("\uFEFFfoo\nbar"); - + sourceCode = createSourceCode("\uFEFFfoo\nbar"); + fileReport = new FileReport({ + ruleMapper: mockRuleMapper, + sourceCode, + language, + }); node = sourceCode.ast.body[0]; const reportDescriptor = { @@ -458,28 +808,22 @@ describe("createReportTranslator", () => { ], }; - assert.deepStrictEqual( - createReportTranslator({ - language: jslang, - ruleId: "foo-rule", - severity: 1, - sourceCode, - })(reportDescriptor), - { - ruleId: "foo-rule", - severity: 1, - message: "foo", - line: 1, - column: 1, - endLine: 1, - endColumn: 4, - nodeType: "ExpressionStatement", - fix: { - range: [-1, 5], - text: "foo\nx", - }, + fileReport.addRuleMessage("foo-rule", 1, reportDescriptor); + + assert.deepStrictEqual(fileReport.messages[0], { + ruleId: "foo-rule", + severity: 1, + message: "foo", + line: 1, + column: 1, + endLine: 1, + endColumn: 4, + nodeType: "ExpressionStatement", + fix: { + range: [-1, 5], + text: "foo\nx", }, - ); + }); }); it("should throw an assertion error if ranges are overlapped.", () => { @@ -494,33 +838,35 @@ describe("createReportTranslator", () => { }; assert.throws( - translateReport.bind(null, reportDescriptor), + () => + fileReport.addRuleMessage("foo-rule", 2, reportDescriptor), "Fix objects must not be overlapped in a report.", ); }); it("should include a fix passed as the last argument when location is passed", () => { - assert.deepStrictEqual( - translateReport( - node, - { line: 42, column: 23 }, - "my message {{1}}{{0}}", - ["!", "testing"], - () => ({ range: [1, 1], text: "" }), - ), - { - ruleId: "foo-rule", - severity: 2, - message: "my message testing!", - line: 42, - column: 24, - nodeType: "ExpressionStatement", - fix: { - range: [1, 1], - text: "", - }, - }, + fileReport.addRuleMessage( + "foo-rule", + 2, + node, + { line: 42, column: 23 }, + "my message {{1}}{{0}}", + ["!", "testing"], + () => ({ range: [1, 1], text: "" }), ); + + assert.deepStrictEqual(fileReport.messages[0], { + ruleId: "foo-rule", + severity: 2, + message: "my message testing!", + line: 42, + column: 24, + nodeType: "ExpressionStatement", + fix: { + range: [1, 1], + text: "", + }, + }); }); }); @@ -542,7 +888,9 @@ describe("createReportTranslator", () => { ], }; - assert.deepStrictEqual(translateReport(reportDescriptor), { + fileReport.addRuleMessage("foo-rule", 2, reportDescriptor); + + assert.deepStrictEqual(fileReport.messages[0], { ruleId: "foo-rule", severity: 2, message: "foo", @@ -578,7 +926,9 @@ describe("createReportTranslator", () => { ], }; - assert.deepStrictEqual(translateReport(reportDescriptor), { + fileReport.addRuleMessage("foo-rule", 2, reportDescriptor); + + assert.deepStrictEqual(fileReport.messages[0], { ruleId: "foo-rule", severity: 2, message: "foo", @@ -610,7 +960,9 @@ describe("createReportTranslator", () => { ], }; - assert.deepStrictEqual(translateReport(reportDescriptor), { + fileReport.addRuleMessage("foo-rule", 2, reportDescriptor); + + assert.deepStrictEqual(fileReport.messages[0], { ruleId: "foo-rule", severity: 2, message: "foo", @@ -633,7 +985,9 @@ describe("createReportTranslator", () => { ], }; - assert.deepStrictEqual(translateReport(reportDescriptor), { + fileReport.addRuleMessage("foo-rule", 2, reportDescriptor); + + assert.deepStrictEqual(fileReport.messages[0], { ruleId: "foo-rule", severity: 2, message: "foo", @@ -656,7 +1010,9 @@ describe("createReportTranslator", () => { ], }; - assert.deepStrictEqual(translateReport(reportDescriptor), { + fileReport.addRuleMessage("foo-rule", 2, reportDescriptor); + + assert.deepStrictEqual(fileReport.messages[0], { ruleId: "foo-rule", severity: 2, message: "foo", @@ -680,7 +1036,9 @@ describe("createReportTranslator", () => { ], }; - assert.deepStrictEqual(translateReport(reportDescriptor), { + fileReport.addRuleMessage("foo-rule", 2, reportDescriptor); + + assert.deepStrictEqual(fileReport.messages[0], { ruleId: "foo-rule", severity: 2, message: "foo", @@ -707,7 +1065,9 @@ describe("createReportTranslator", () => { ], }; - assert.deepStrictEqual(translateReport(reportDescriptor), { + fileReport.addRuleMessage("foo-rule", 2, reportDescriptor); + + assert.deepStrictEqual(fileReport.messages[0], { ruleId: "foo-rule", severity: 2, message: "foo", @@ -740,7 +1100,9 @@ describe("createReportTranslator", () => { ], }; - assert.deepStrictEqual(translateReport(reportDescriptor), { + fileReport.addRuleMessage("foo-rule", 2, reportDescriptor); + + assert.deepStrictEqual(fileReport.messages[0], { ruleId: "foo-rule", severity: 2, message: "foo", @@ -797,7 +1159,9 @@ describe("createReportTranslator", () => { ], }; - assert.deepStrictEqual(translateReport(reportDescriptor), { + fileReport.addRuleMessage("foo-rule", 2, reportDescriptor); + + assert.deepStrictEqual(fileReport.messages[0], { ruleId: "foo-rule", severity: 2, message: "foo", @@ -827,168 +1191,177 @@ describe("createReportTranslator", () => { }); describe("message interpolation", () => { + /** + * Asserts that a message is correctly formatted. + * @param {string} expected The expected message. + * @param {...any} args The arguments to pass to `addRuleMessage`. + * @returns {void} + */ + function assertMessage(expected, ...args) { + fileReport.addRuleMessage("foo-rule", 2, ...args); + assert.strictEqual(fileReport.messages[0].message, expected); + } + it("should correctly parse a message when being passed all options in an old-style report", () => { - assert.deepStrictEqual( - translateReport(node, node.loc.end, "hello {{dynamic}}", { - dynamic: node.type, - }), + fileReport.addRuleMessage( + "foo-rule", + 2, + node, + node.loc.end, + "hello {{dynamic}}", { - severity: 2, - ruleId: "foo-rule", - message: "hello ExpressionStatement", - nodeType: "ExpressionStatement", - line: 1, - column: 4, + dynamic: node.type, }, ); + + assert.deepStrictEqual(fileReport.messages[0], { + severity: 2, + ruleId: "foo-rule", + message: "hello ExpressionStatement", + nodeType: "ExpressionStatement", + line: 1, + column: 4, + }); }); it("should correctly parse a message when being passed all options in a new-style report", () => { - assert.deepStrictEqual( - translateReport({ - node, - loc: node.loc.end, - message: "hello {{dynamic}}", - data: { dynamic: node.type }, - }), - { - severity: 2, - ruleId: "foo-rule", - message: "hello ExpressionStatement", - nodeType: "ExpressionStatement", - line: 1, - column: 4, - }, - ); + fileReport.addRuleMessage("foo-rule", 2, { + node, + loc: node.loc.end, + message: "hello {{dynamic}}", + data: { dynamic: node.type }, + }); + + assert.deepStrictEqual(fileReport.messages[0], { + severity: 2, + ruleId: "foo-rule", + message: "hello ExpressionStatement", + nodeType: "ExpressionStatement", + line: 1, + column: 4, + }); }); it("should correctly parse a message with object keys as numbers", () => { - assert.strictEqual( - translateReport(node, "my message {{name}}{{0}}", { + assertMessage( + "my message testing!", + node, + "my message {{name}}{{0}}", + { 0: "!", name: "testing", - }).message, - "my message testing!", + }, ); }); it("should correctly parse a message with array", () => { - assert.strictEqual( - translateReport(node, "my message {{1}}{{0}}", ["!", "testing"]) - .message, + assertMessage( "my message testing!", + node, + "my message {{1}}{{0}}", + ["!", "testing"], ); }); it("should allow template parameter with inner whitespace", () => { - assert.strictEqual( - translateReport(node, "message {{parameter name}}", { - "parameter name": "yay!", - }).message, - "message yay!", - ); + assertMessage("message yay!", node, "message {{parameter name}}", { + "parameter name": "yay!", + }); }); it("should allow template parameter with non-identifier characters", () => { - assert.strictEqual( - translateReport(node, "message {{parameter-name}}", { - "parameter-name": "yay!", - }).message, - "message yay!", - ); + assertMessage("message yay!", node, "message {{parameter-name}}", { + "parameter-name": "yay!", + }); }); it("should allow template parameter wrapped in braces", () => { - assert.strictEqual( - translateReport(node, "message {{{param}}}", { param: "yay!" }) - .message, - "message {yay!}", - ); + assertMessage("message {yay!}", node, "message {{{param}}}", { + param: "yay!", + }); }); it("should ignore template parameter with no specified value", () => { - assert.strictEqual( - translateReport(node, "message {{parameter}}", {}).message, + assertMessage( "message {{parameter}}", + node, + "message {{parameter}}", + {}, ); }); it("should handle leading whitespace in template parameter", () => { - assert.strictEqual( - translateReport({ - node, - message: "message {{ parameter}}", - data: { parameter: "yay!" }, - }).message, - "message yay!", - ); + assertMessage("message yay!", node, "message {{ parameter}}", { + parameter: "yay!", + }); }); it("should handle trailing whitespace in template parameter", () => { - assert.strictEqual( - translateReport({ - node, - message: "message {{parameter }}", - data: { parameter: "yay!" }, - }).message, - "message yay!", - ); + assertMessage("message yay!", node, "message {{parameter }}", { + parameter: "yay!", + }); }); it("should still allow inner whitespace as well as leading/trailing", () => { - assert.strictEqual( - translateReport(node, "message {{ parameter name }}", { - "parameter name": "yay!", - }).message, + assertMessage( "message yay!", + node, + "message {{ parameter name }}", + { "parameter name": "yay!" }, ); }); it("should still allow non-identifier characters as well as leading/trailing whitespace", () => { - assert.strictEqual( - translateReport(node, "message {{ parameter-name }}", { - "parameter-name": "yay!", - }).message, + assertMessage( "message yay!", + node, + "message {{ parameter-name }}", + { "parameter-name": "yay!" }, ); }); }); describe("location inference", () => { it("should use the provided location when given in an old-style call", () => { - assert.deepStrictEqual( - translateReport(node, { line: 42, column: 13 }, "hello world"), - { - severity: 2, - ruleId: "foo-rule", - message: "hello world", - nodeType: "ExpressionStatement", - line: 42, - column: 14, - }, + fileReport.addRuleMessage( + "foo-rule", + 2, + node, + { line: 42, column: 13 }, + "hello world", ); + + assert.deepStrictEqual(fileReport.messages[0], { + severity: 2, + ruleId: "foo-rule", + message: "hello world", + nodeType: "ExpressionStatement", + line: 42, + column: 14, + }); }); it("should use the provided location when given in an new-style call", () => { - assert.deepStrictEqual( - translateReport({ - node, - loc: { line: 42, column: 13 }, - message: "hello world", - }), - { - severity: 2, - ruleId: "foo-rule", - message: "hello world", - nodeType: "ExpressionStatement", - line: 42, - column: 14, - }, - ); + fileReport.addRuleMessage("foo-rule", 2, { + node, + loc: { line: 42, column: 13 }, + message: "hello world", + }); + + assert.deepStrictEqual(fileReport.messages[0], { + severity: 2, + ruleId: "foo-rule", + message: "hello world", + nodeType: "ExpressionStatement", + line: 42, + column: 14, + }); }); it("should extract the start and end locations from a node if no location is provided", () => { - assert.deepStrictEqual(translateReport(node, "hello world"), { + fileReport.addRuleMessage("foo-rule", 2, node, "hello world"); + + assert.deepStrictEqual(fileReport.messages[0], { severity: 2, ruleId: "foo-rule", message: "hello world", @@ -1001,121 +1374,139 @@ describe("createReportTranslator", () => { }); it("should have 'endLine' and 'endColumn' when 'loc' property has 'end' property.", () => { - assert.deepStrictEqual( - translateReport({ loc: node.loc, message: "hello world" }), - { - severity: 2, - ruleId: "foo-rule", - message: "hello world", - nodeType: null, - line: 1, - column: 1, - endLine: 1, - endColumn: 4, - }, - ); + fileReport.addRuleMessage("foo-rule", 2, { + loc: node.loc, + message: "hello world", + }); + + assert.deepStrictEqual(fileReport.messages[0], { + severity: 2, + ruleId: "foo-rule", + message: "hello world", + nodeType: null, + line: 1, + column: 1, + endLine: 1, + endColumn: 4, + }); }); it("should not have 'endLine' and 'endColumn' when 'loc' property does not have 'end' property.", () => { - assert.deepStrictEqual( - translateReport({ - loc: node.loc.start, - message: "hello world", - }), - { - severity: 2, - ruleId: "foo-rule", - message: "hello world", - nodeType: null, - line: 1, - column: 1, - }, - ); + fileReport.addRuleMessage("foo-rule", 2, { + loc: node.loc.start, + message: "hello world", + }); + + assert.deepStrictEqual(fileReport.messages[0], { + severity: 2, + ruleId: "foo-rule", + message: "hello world", + nodeType: null, + line: 1, + column: 1, + }); }); it("should infer an 'endLine' and 'endColumn' property when using the object-based context.report API", () => { - assert.deepStrictEqual( - translateReport({ node, message: "hello world" }), - { - severity: 2, - ruleId: "foo-rule", - message: "hello world", - nodeType: "ExpressionStatement", - line: 1, - column: 1, - endLine: 1, - endColumn: 4, - }, - ); + fileReport.addRuleMessage("foo-rule", 2, { + node, + message: "hello world", + }); + + assert.deepStrictEqual(fileReport.messages[0], { + severity: 2, + ruleId: "foo-rule", + message: "hello world", + nodeType: "ExpressionStatement", + line: 1, + column: 1, + endLine: 1, + endColumn: 4, + }); }); }); describe("converting old-style calls", () => { it("should include a fix passed as the last argument when location is not passed", () => { - assert.deepStrictEqual( - translateReport( - node, - "my message {{1}}{{0}}", - ["!", "testing"], - () => ({ range: [1, 1], text: "" }), - ), - { - severity: 2, - ruleId: "foo-rule", - message: "my message testing!", - nodeType: "ExpressionStatement", - line: 1, - column: 1, - endLine: 1, - endColumn: 4, - fix: { range: [1, 1], text: "" }, - }, + fileReport.addRuleMessage( + "foo-rule", + 2, + node, + "my message {{1}}{{0}}", + ["!", "testing"], + () => ({ range: [1, 1], text: "" }), ); + assert.deepStrictEqual(fileReport.messages[0], { + severity: 2, + ruleId: "foo-rule", + message: "my message testing!", + nodeType: "ExpressionStatement", + line: 1, + column: 1, + endLine: 1, + endColumn: 4, + fix: { range: [1, 1], text: "" }, + }); }); }); describe("validation", () => { it("should throw an error if node is not an object", () => { assert.throws( - () => translateReport("not a node", "hello world"), + () => + fileReport.addRuleMessage( + "foo-rule", + 2, + "not a node", + "hello world", + ), "Node must be an object", ); }); it("should not throw an error if location is provided and node is not in an old-style call", () => { - assert.deepStrictEqual( - translateReport(null, { line: 1, column: 1 }, "hello world"), - { - severity: 2, - ruleId: "foo-rule", - message: "hello world", - nodeType: null, - line: 1, - column: 2, - }, + fileReport.addRuleMessage( + "foo-rule", + 2, + null, + { line: 1, column: 1 }, + "hello world", ); + + assert.deepStrictEqual(fileReport.messages[0], { + severity: 2, + ruleId: "foo-rule", + message: "hello world", + nodeType: null, + line: 1, + column: 2, + }); }); it("should not throw an error if location is provided and node is not in a new-style call", () => { - assert.deepStrictEqual( - translateReport({ - loc: { line: 1, column: 1 }, - message: "hello world", - }), - { - severity: 2, - ruleId: "foo-rule", - message: "hello world", - nodeType: null, - line: 1, - column: 2, - }, - ); + fileReport.addRuleMessage("foo-rule", 2, { + loc: { line: 1, column: 1 }, + message: "hello world", + }); + assert.deepStrictEqual(fileReport.messages[0], { + severity: 2, + ruleId: "foo-rule", + message: "hello world", + nodeType: null, + line: 1, + column: 2, + }); }); it("should throw an error if neither node nor location is provided", () => { assert.throws( - () => translateReport(null, "hello world"), + () => + fileReport.addRuleMessage( + "foo-rule", + 2, + null, + "hello world", + ), "Node must be provided when reporting error if location is not provided", ); }); @@ -1123,7 +1514,7 @@ describe("createReportTranslator", () => { it("should throw an error if fix range is invalid", () => { assert.throws( () => - translateReport({ + fileReport.addRuleMessage("foo-rule", 2, { node, messageId: "testMessage", fix: () => ({ text: "foo" }), @@ -1143,7 +1534,7 @@ describe("createReportTranslator", () => { assert.throws( // eslint-disable-next-line no-loop-func -- Using arrow functions () => - translateReport({ + fileReport.addRuleMessage("foo-rule", 2, { node, messageId: "testMessage", fix: () => ({ range: badRange, text: "foo" }), @@ -1154,7 +1545,7 @@ describe("createReportTranslator", () => { assert.throws( // eslint-disable-next-line no-loop-func -- Using arrow functions () => - translateReport({ + fileReport.addRuleMessage("foo-rule", 2, { node, messageId: "testMessage", fix: () => [ @@ -1176,48 +1567,112 @@ describe("createReportTranslator", () => { const additionalRange = [4, 7]; const additionalFix = { range: additionalRange, text: "qux" }; + /** + * Asserts that the fix object in the file report matches the expected fix. + * @param {boolean} [hasAdditionalFix=false] Whether an additional fix is expected. + * @returns {void} + */ + function assertFixMatches(hasAdditionalFix = false) { + assert.strictEqual(fileReport.messages.length, 1); + + if (!hasAdditionalFix) { + assert.deepStrictEqual(fileReport.messages[0].fix, fix); + } + + assert.notStrictEqual(fileReport.messages[0].fix, fix); + assert.notStrictEqual(fileReport.messages[0].fix.range, fix.range); + } + + /** + * Asserts that the additional fix object in the file report does not match + * the expected additional fix. + * @returns {void} + */ + function assertAdditionalFixNoMatch() { + assert.notStrictEqual(fileReport.messages[0].fix, additionalFix); + assert.notStrictEqual( + fileReport.messages[0].fix.range, + additionalFix.range, + ); + } + + /** + * Asserts that the suggestion fix in the file report matches the expected fix. + * @returns {void} + */ + function assertSuggestionFixMatches() { + assert.strictEqual(fileReport.messages.length, 1); + assert.strictEqual(fileReport.messages[0].suggestions.length, 1); + assert.deepStrictEqual( + fileReport.messages[0].suggestions[0].fix, + fix, + ); + assert.notStrictEqual( + fileReport.messages[0].suggestions[0].fix, + fix, + ); + assert.notStrictEqual( + fileReport.messages[0].suggestions[0].fix.range, + fix.range, + ); + } + + /** + * Asserts that the suggestion fix in the file report does not match the expected fix. + * @returns {void} + */ + function assertSuggestionFixNoMatch() { + assert.notStrictEqual( + fileReport.messages[0].suggestions[0].fix, + fix, + ); + assert.notStrictEqual( + fileReport.messages[0].suggestions[0].fix.range, + fix.range, + ); + assert.notStrictEqual( + fileReport.messages[0].suggestions[0].fix, + additionalFix, + ); + assert.notStrictEqual( + fileReport.messages[0].suggestions[0].fix.range, + additionalFix.range, + ); + } + it("should deep clone returned fix object", () => { - const translatedReport = translateReport({ + fileReport.addRuleMessage("foo-rule", 2, { node, messageId: "testMessage", fix: () => fix, }); - assert.deepStrictEqual(translatedReport.fix, fix); - assert.notStrictEqual(translatedReport.fix, fix); - assert.notStrictEqual(translatedReport.fix.range, fix.range); + assertFixMatches(); }); it("should create a new fix object with a new range array when `fix()` returns an array with a single item", () => { - const translatedReport = translateReport({ + fileReport.addRuleMessage("foo-rule", 2, { node, messageId: "testMessage", fix: () => [fix], }); - assert.deepStrictEqual(translatedReport.fix, fix); - assert.notStrictEqual(translatedReport.fix, fix); - assert.notStrictEqual(translatedReport.fix.range, fix.range); + assertFixMatches(); }); it("should create a new fix object with a new range array when `fix()` returns an array with multiple items", () => { - const translatedReport = translateReport({ + fileReport.addRuleMessage("foo-rule", 2, { node, messageId: "testMessage", fix: () => [fix, additionalFix], }); - assert.notStrictEqual(translatedReport.fix, fix); - assert.notStrictEqual(translatedReport.fix.range, fix.range); - assert.notStrictEqual(translatedReport.fix, additionalFix); - assert.notStrictEqual( - translatedReport.fix.range, - additionalFix.range, - ); + assertFixMatches(true); + assertAdditionalFixNoMatch(); }); it("should create a new fix object with a new range array when `fix()` generator yields a single item", () => { - const translatedReport = translateReport({ + fileReport.addRuleMessage("foo-rule", 2, { node, messageId: "testMessage", *fix() { @@ -1225,13 +1680,11 @@ describe("createReportTranslator", () => { }, }); - assert.deepStrictEqual(translatedReport.fix, fix); - assert.notStrictEqual(translatedReport.fix, fix); - assert.notStrictEqual(translatedReport.fix.range, fix.range); + assertFixMatches(); }); it("should create a new fix object with a new range array when `fix()` generator yields multiple items", () => { - const translatedReport = translateReport({ + fileReport.addRuleMessage("foo-rule", 2, { node, messageId: "testMessage", *fix() { @@ -1240,17 +1693,12 @@ describe("createReportTranslator", () => { }, }); - assert.notStrictEqual(translatedReport.fix, fix); - assert.notStrictEqual(translatedReport.fix.range, fix.range); - assert.notStrictEqual(translatedReport.fix, additionalFix); - assert.notStrictEqual( - translatedReport.fix.range, - additionalFix.range, - ); + assertFixMatches(true); + assertAdditionalFixNoMatch(); }); it("should deep clone returned suggestion fix object", () => { - const translatedReport = translateReport({ + fileReport.addRuleMessage("foo-rule", 2, { node, messageId: "testMessage", suggest: [ @@ -1261,16 +1709,11 @@ describe("createReportTranslator", () => { ], }); - assert.deepStrictEqual(translatedReport.suggestions[0].fix, fix); - assert.notStrictEqual(translatedReport.suggestions[0].fix, fix); - assert.notStrictEqual( - translatedReport.suggestions[0].fix.range, - fix.range, - ); + assertSuggestionFixMatches(); }); it("should create a new fix object with a new range array when suggestion `fix()` returns an array with a single item", () => { - const translatedReport = translateReport({ + fileReport.addRuleMessage("foo-rule", 2, { node, messageId: "testMessage", suggest: [ @@ -1281,16 +1724,11 @@ describe("createReportTranslator", () => { ], }); - assert.deepStrictEqual(translatedReport.suggestions[0].fix, fix); - assert.notStrictEqual(translatedReport.suggestions[0].fix, fix); - assert.notStrictEqual( - translatedReport.suggestions[0].fix.range, - fix.range, - ); + assertSuggestionFixMatches(); }); it("should create a new fix object with a new range array when suggestion `fix()` returns an array with multiple items", () => { - const translatedReport = translateReport({ + fileReport.addRuleMessage("foo-rule", 2, { node, messageId: "testMessage", suggest: [ @@ -1301,23 +1739,11 @@ describe("createReportTranslator", () => { ], }); - assert.notStrictEqual(translatedReport.suggestions[0].fix, fix); - assert.notStrictEqual( - translatedReport.suggestions[0].fix.range, - fix.range, - ); - assert.notStrictEqual( - translatedReport.suggestions[0].fix, - additionalFix, - ); - assert.notStrictEqual( - translatedReport.suggestions[0].fix.range, - additionalFix.range, - ); + assertSuggestionFixNoMatch(); }); it("should create a new fix object with a new range array when suggestion `fix()` generator yields a single item", () => { - const translatedReport = translateReport({ + fileReport.addRuleMessage("foo-rule", 2, { node, messageId: "testMessage", suggest: [ @@ -1330,16 +1756,11 @@ describe("createReportTranslator", () => { ], }); - assert.deepStrictEqual(translatedReport.suggestions[0].fix, fix); - assert.notStrictEqual(translatedReport.suggestions[0].fix, fix); - assert.notStrictEqual( - translatedReport.suggestions[0].fix.range, - fix.range, - ); + assertSuggestionFixMatches(); }); it("should create a new fix object with a new range array when suggestion `fix()` generator yields multiple items", () => { - const translatedReport = translateReport({ + fileReport.addRuleMessage("foo-rule", 2, { node, messageId: "testMessage", suggest: [ @@ -1353,23 +1774,11 @@ describe("createReportTranslator", () => { ], }); - assert.notStrictEqual(translatedReport.suggestions[0].fix, fix); - assert.notStrictEqual( - translatedReport.suggestions[0].fix.range, - fix.range, - ); - assert.notStrictEqual( - translatedReport.suggestions[0].fix, - additionalFix, - ); - assert.notStrictEqual( - translatedReport.suggestions[0].fix.range, - additionalFix.range, - ); + assertSuggestionFixNoMatch(); }); it("should create different instances of range arrays when suggestions reuse the same instance", () => { - const translatedReport = translateReport({ + fileReport.addRuleMessage("foo-rule", 2, { node, messageId: "testMessage", suggest: [ @@ -1386,17 +1795,84 @@ describe("createReportTranslator", () => { }); assert.deepStrictEqual( - translatedReport.suggestions[0].fix.range, + fileReport.messages[0].suggestions[0].fix.range, range, ); assert.deepStrictEqual( - translatedReport.suggestions[1].fix.range, + fileReport.messages[0].suggestions[1].fix.range, range, ); assert.notStrictEqual( - translatedReport.suggestions[0].fix.range, - translatedReport.suggestions[1].fix.range, + fileReport.messages[0].suggestions[0].fix.range, + fileReport.messages[0].suggestions[1].fix.range, ); }); }); + + describe("updateLocationInformation", () => { + it("should offset line and column by 1 when language starts at 0", () => { + const loc = { line: 0, column: 0, endLine: 0, endColumn: 3 }; + const lang = { columnStart: 0, lineStart: 0 }; + const result = updateLocationInformation(loc, lang); + + assert.deepStrictEqual(result, { + line: 1, + column: 1, + endLine: 1, + endColumn: 4, + }); + }); + + it("should not offset when language starts at 1", () => { + const loc = { line: 1, column: 1, endLine: 2, endColumn: 2 }; + const lang = { columnStart: 1, lineStart: 1 }; + const result = updateLocationInformation(loc, lang); + + assert.deepStrictEqual(result, { + line: 1, + column: 1, + endLine: 2, + endColumn: 2, + }); + }); + + it("should offset only column if lineStart is 1 and columnStart is 0", () => { + const loc = { line: 2, column: 0, endLine: 2, endColumn: 3 }; + const lang = { columnStart: 0, lineStart: 1 }; + const result = updateLocationInformation(loc, lang); + + assert.deepStrictEqual(result, { + line: 2, + column: 1, + endLine: 2, + endColumn: 4, + }); + }); + + it("should offset only line if lineStart is 0 and columnStart is 1", () => { + const loc = { line: 0, column: 2, endLine: 0, endColumn: 5 }; + const lang = { columnStart: 1, lineStart: 0 }; + const result = updateLocationInformation(loc, lang); + + assert.deepStrictEqual(result, { + line: 1, + column: 2, + endLine: 1, + endColumn: 5, + }); + }); + + it("should handle undefined endLine and endColumn", () => { + const loc = { line: 1, column: 2 }; + const lang = { columnStart: 1, lineStart: 1 }; + const result = updateLocationInformation(loc, lang); + + assert.deepStrictEqual(result, { + line: 1, + column: 2, + endLine: void 0, + endColumn: void 0, + }); + }); + }); }); diff --git a/tests/lib/linter/linter.js b/tests/lib/linter/linter.js index eb4595b73dd8..4b56f06a80dc 100644 --- a/tests/lib/linter/linter.js +++ b/tests/lib/linter/linter.js @@ -13381,21 +13381,22 @@ describe("Linter with FlatConfigArray", () => { assert.strictEqual(messages.length, 2); assert.strictEqual( messages[0].ruleId, - "test/my-rule", + null, ); - assert.strictEqual(messages[0].severity, 1); + assert.strictEqual(messages[0].severity, 2); assert.strictEqual( messages[0].message, - expectedRuleMessage, + "Unused inline config ('test/my-rule' is already configured to 'warn').", ); + assert.strictEqual( messages[1].ruleId, - null, + "test/my-rule", ); - assert.strictEqual(messages[1].severity, 2); + assert.strictEqual(messages[1].severity, 1); assert.strictEqual( messages[1].message, - "Unused inline config ('test/my-rule' is already configured to 'warn').", + expectedRuleMessage, ); assert.strictEqual( suppressedMessages.length, @@ -13455,21 +13456,22 @@ describe("Linter with FlatConfigArray", () => { linter.getSuppressedMessages(); assert.strictEqual(messages.length, 2); + assert.strictEqual(messages[0].ruleId, null); + assert.strictEqual(messages[0].severity, 2); assert.strictEqual( - messages[0].ruleId, - "test/my-rule", + messages[0].message, + `Unused inline config ('test/my-rule' is already configured to '${severity}' with the same options).`, ); + assert.strictEqual( - messages[0].severity, - severityCode, + messages[1].ruleId, + "test/my-rule", ); - assert.strictEqual(messages[0].message, "bar"); - assert.strictEqual(messages[1].ruleId, null); - assert.strictEqual(messages[1].severity, 2); assert.strictEqual( - messages[1].message, - `Unused inline config ('test/my-rule' is already configured to '${severity}' with the same options).`, + messages[1].severity, + severityCode, ); + assert.strictEqual(messages[1].message, "bar"); assert.strictEqual( suppressedMessages.length, 0, From 50de1ced9df2b1ee48ee6843c8cfe0f5d8edbc27 Mon Sep 17 00:00:00 2001 From: Jenkins Date: Fri, 25 Jul 2025 14:29:39 +0000 Subject: [PATCH 034/165] chore: package.json update for @eslint/js release --- packages/js/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/js/package.json b/packages/js/package.json index 7d7394b3f90a..0c2e8bae38c5 100644 --- a/packages/js/package.json +++ b/packages/js/package.json @@ -1,6 +1,6 @@ { "name": "@eslint/js", - "version": "9.31.0", + "version": "9.32.0", "description": "ESLint JavaScript language implementation", "funding": "https://eslint.org/donate", "main": "./src/index.js", From 960fd40dfd204af30726b49b6bec714fe49a606e Mon Sep 17 00:00:00 2001 From: "Nicholas C. Zakas" Date: Fri, 25 Jul 2025 10:40:21 -0400 Subject: [PATCH 035/165] fix: Upgrade @eslint/js (#19971) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3c54688055c2..418552bc670f 100644 --- a/package.json +++ b/package.json @@ -110,7 +110,7 @@ "@eslint/config-helpers": "^0.3.0", "@eslint/core": "^0.15.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.31.0", + "@eslint/js": "9.32.0", "@eslint/plugin-kit": "^0.3.4", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", From a0e62e2739a5e214b1d371eda76f6a3b664e222a Mon Sep 17 00:00:00 2001 From: Jenkins Date: Fri, 25 Jul 2025 14:45:44 +0000 Subject: [PATCH 036/165] Build: changelog update for 9.32.0 --- CHANGELOG.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a92a2ca3b9e8..b642c2f45486 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,24 @@ +v9.32.0 - July 25, 2025 + +* [`960fd40`](https://github.com/eslint/eslint/commit/960fd40dfd204af30726b49b6bec714fe49a606e) fix: Upgrade @eslint/js (#19971) (Nicholas C. Zakas) +* [`50de1ce`](https://github.com/eslint/eslint/commit/50de1ced9df2b1ee48ee6843c8cfe0f5d8edbc27) chore: package.json update for @eslint/js release (Jenkins) +* [`bbf23fa`](https://github.com/eslint/eslint/commit/bbf23fa2f1c6058f6cb5c9f2f32460a15e75e596) fix: Refactor reporting into FileReport (#19877) (Nicholas C. Zakas) +* [`74f01a3`](https://github.com/eslint/eslint/commit/74f01a3f5905aaa0902837ced2425209c09c048f) ci: unpin `jiti` to version `^2.5.1` (#19970) (루밀LuMir) +* [`d498887`](https://github.com/eslint/eslint/commit/d4988872f375890bf677ce1a1d92a505085b51fa) fix: bump @eslint/plugin-kit to 0.3.4 to resolve vulnerability (#19965) (Milos Djermanovic) +* [`2ab1381`](https://github.com/eslint/eslint/commit/2ab13813a7e7f3014c35490b351447ec43229951) ci: pin `jiti` to version 2.4.2 (#19964) (Francesco Trotta) +* [`b7f7545`](https://github.com/eslint/eslint/commit/b7f75454695079f54b77fcdc9ebe3b9199d5ad30) test: switch to flat config mode in `SourceCode` tests (#19953) (Milos Djermanovic) +* [`f5a35e3`](https://github.com/eslint/eslint/commit/f5a35e3b7cee17cd31fc02c24c3e74b42ee202bc) test: switch to flat config mode in eslint-fuzzer (#19960) (Milos Djermanovic) +* [`f46fc6c`](https://github.com/eslint/eslint/commit/f46fc6c137c951bc73cf3bd9446053c1b11f769b) fix: report only global references in no-implied-eval (#19932) (Nitin Kumar) +* [`86e7426`](https://github.com/eslint/eslint/commit/86e7426e4463ca49ffa5c82e825ecb6aa19ca8a0) docs: Update README (GitHub Actions Bot) +* [`e22af8c`](https://github.com/eslint/eslint/commit/e22af8c42d622d8d912ee7bedf49bf4283247fdc) refactor: use `CustomRuleDefinitionType` in `JSRuleDefinition` (#19949) (Francesco Trotta) +* [`1245000`](https://github.com/eslint/eslint/commit/1245000c5a81954d42f0c7eb670efe450c3bbad5) feat: support explicit resource management in core rules (#19828) (fnx) +* [`e855717`](https://github.com/eslint/eslint/commit/e85571730f1360464b7ee00695c678d551f9c643) chore: switch performance tests to hyperfine (#19919) (Francesco Trotta) +* [`0e957a7`](https://github.com/eslint/eslint/commit/0e957a7b5528f375a51e7c1a2fd1b03cdcd2af2d) feat: support typescript types in accessor rules (#19882) (fnx) +* [`2f73a23`](https://github.com/eslint/eslint/commit/2f73a23655092a41780859ffe0a07c44a2f1b5f5) test: switch to flat config mode in `ast-utils` tests (#19948) (Milos Djermanovic) +* [`7863d26`](https://github.com/eslint/eslint/commit/7863d26b7cfb03a81ec86f93439757ff60bf6afb) fix: remove outdated types in `ParserOptions.ecmaFeatures` (#19944) (ntnyq) +* [`c565a53`](https://github.com/eslint/eslint/commit/c565a530f50c96dacd44e096f7d531b073aa4dc7) chore: exclude `further_reading_links.json` from Prettier formatting (#19943) (Milos Djermanovic) +* [`3173305`](https://github.com/eslint/eslint/commit/317330552e2d276221c7f2dd9c1516ad8b41cc3c) fix: update execScript message in no-implied-eval rule (#19937) (TKDev7) + v9.31.0 - July 11, 2025 * [`3ddd454`](https://github.com/eslint/eslint/commit/3ddd454c1c73294e5af7905d60d03fac162f1b3e) chore: upgrade to `@eslint/js@9.31.0` (#19935) (Francesco Trotta) From 2364031090daafe34e80904c32065bfe4692d7a2 Mon Sep 17 00:00:00 2001 From: Jenkins Date: Fri, 25 Jul 2025 14:45:45 +0000 Subject: [PATCH 037/165] 9.32.0 --- docs/package.json | 2 +- docs/src/_data/rules_meta.json | 1 + docs/src/_data/versions.json | 2 +- docs/src/use/formatters/html-formatter-example.html | 2 +- package.json | 2 +- 5 files changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/package.json b/docs/package.json index 3194255ff85c..60834b160a74 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,7 +1,7 @@ { "name": "docs-eslint", "private": true, - "version": "9.31.0", + "version": "9.32.0", "description": "", "main": "index.js", "keywords": [], diff --git a/docs/src/_data/rules_meta.json b/docs/src/_data/rules_meta.json index 5e240ae89314..def40ec57e34 100644 --- a/docs/src/_data/rules_meta.json +++ b/docs/src/_data/rules_meta.json @@ -3,6 +3,7 @@ "type": "suggestion", "defaultOptions": [ { + "enforceForTSTypes": false, "enforceForClassMembers": true, "getWithoutSet": false, "setWithoutGet": true diff --git a/docs/src/_data/versions.json b/docs/src/_data/versions.json index fa517d3ed27a..45d23bf7e151 100644 --- a/docs/src/_data/versions.json +++ b/docs/src/_data/versions.json @@ -6,7 +6,7 @@ "path": "/docs/head/" }, { - "version": "9.31.0", + "version": "9.32.0", "branch": "latest", "path": "/docs/latest/" }, diff --git a/docs/src/use/formatters/html-formatter-example.html b/docs/src/use/formatters/html-formatter-example.html index af978fa7e64b..cc7d6449cb2a 100644 --- a/docs/src/use/formatters/html-formatter-example.html +++ b/docs/src/use/formatters/html-formatter-example.html @@ -118,7 +118,7 @@

ESLint Report

- 8 problems (4 errors, 4 warnings) - Generated on Fri Jul 11 2025 20:33:47 GMT+0000 (Coordinated Universal Time) + 8 problems (4 errors, 4 warnings) - Generated on Fri Jul 25 2025 14:45:46 GMT+0000 (Coordinated Universal Time)
diff --git a/package.json b/package.json index 418552bc670f..7570ff3e359e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "eslint", - "version": "9.31.0", + "version": "9.32.0", "author": "Nicholas C. Zakas ", "description": "An AST-based pattern checker for JavaScript.", "type": "commonjs", From 27fa86551bd173387e29a139293de78b0e14f0f3 Mon Sep 17 00:00:00 2001 From: Milos Djermanovic Date: Mon, 28 Jul 2025 17:13:33 +0200 Subject: [PATCH 038/165] build: use `ESLint` class to generate formatter examples (#19972) * build: use `ESLint` class to generate formatter examples * ignore `tools/generate-formatter-examples.js` in knip config --- Makefile.js | 92 +++------------------ knip.jsonc | 2 + tools/generate-formatter-examples.js | 114 +++++++++++++++++++++++++++ 3 files changed, 127 insertions(+), 81 deletions(-) create mode 100644 tools/generate-formatter-examples.js diff --git a/Makefile.js b/Makefile.js index 4360f4f678a4..09080d0008bd 100644 --- a/Makefile.js +++ b/Makefile.js @@ -19,7 +19,6 @@ const checker = require("npm-license"), path = require("node:path"), semver = require("semver"), ejs = require("ejs"), - { CLIEngine } = require("./lib/cli-engine"), builtinRules = require("./lib/rules"), childProcess = require("node:child_process"); @@ -154,24 +153,19 @@ function generateBlogPost(releaseInfo, prereleaseMajorVersion) { /** * Generates a doc page with formatter result examples - * @param {Object} formatterInfo Linting results from each formatter * @returns {void} */ -function generateFormatterExamples(formatterInfo) { - const output = ejs.render( - cat("./templates/formatter-examples.md.ejs"), - formatterInfo, - ); - const outputDir = path.join(DOCS_SRC_DIR, "use/formatters/"), - filename = path.join(outputDir, "index.md"), - htmlFilename = path.join(outputDir, "html-formatter-example.html"); - - if (!test("-d", outputDir)) { - mkdir(outputDir); +function generateFormatterExamples() { + // We don't need the stack trace of execFileSync if the command fails. + try { + childProcess.execFileSync( + process.execPath, + ["tools/generate-formatter-examples.js"], + { stdio: "inherit" }, + ); + } catch { + exit(1); } - - output.to(filename); - formatterInfo.formatterResults.html.result.to(htmlFilename); } /** @@ -523,70 +517,6 @@ function getFirstVersionOfDeletion(filePath) { .sort(semver.compare)[0]; } -/** - * Gets linting results from every formatter, based on a hard-coded snippet and config - * @returns {Object} Output from each formatter - */ -function getFormatterResults() { - const util = require("node:util"); - const formattersMetadata = require("./lib/cli-engine/formatters/formatters-meta.json"); - - const formatterFiles = fs - .readdirSync("./lib/cli-engine/formatters/") - .filter(fileName => !fileName.includes("formatters-meta.json")), - rules = { - "no-else-return": "warn", - indent: ["warn", 4], - "space-unary-ops": "error", - semi: ["warn", "always"], - "consistent-return": "error", - }, - cli = new CLIEngine({ - useEslintrc: false, - baseConfig: { extends: "eslint:recommended" }, - rules, - }), - codeString = [ - "function addOne(i) {", - " if (i != NaN) {", - " return i ++", - " } else {", - " return", - " }", - "};", - ].join("\n"), - rawMessages = cli.executeOnText(codeString, "fullOfProblems.js", true), - rulesMap = cli.getRules(), - rulesMeta = {}; - - Object.keys(rules).forEach(ruleId => { - rulesMeta[ruleId] = rulesMap.get(ruleId).meta; - }); - - return formatterFiles.reduce( - (data, filename) => { - const fileExt = path.extname(filename), - name = path.basename(filename, fileExt); - - if (fileExt === ".js") { - const formattedOutput = cli.getFormatter(name)( - rawMessages.results, - { rulesMeta }, - ); - - data.formatterResults[name] = { - result: util.stripVTControlCharacters(formattedOutput), - description: formattersMetadata.find( - formatter => formatter.name === name, - ).description, - }; - } - return data; - }, - { formatterResults: {} }, - ); -} - /** * Gets a path to an executable in node_modules/.bin * @param {string} command The executable name @@ -745,7 +675,7 @@ target.gensite = function () { // 3. Create Example Formatter Output Page echo("> Creating the formatter examples (Step 3)"); - generateFormatterExamples(getFormatterResults()); + generateFormatterExamples(); echo("Done generating documentation"); }; diff --git a/knip.jsonc b/knip.jsonc index 9bc7e052f084..e065fb338f1a 100644 --- a/knip.jsonc +++ b/knip.jsonc @@ -21,6 +21,8 @@ "tests/performance/jshint.js", // Many are required using dynamic paths such as `fs.readFileSync(path.join())`: "tests/fixtures/**", + // Run from Makefile.js + "tools/generate-formatter-examples.js", ], "ignoreDependencies": [ "c8", diff --git a/tools/generate-formatter-examples.js b/tools/generate-formatter-examples.js new file mode 100644 index 000000000000..868dca1bd572 --- /dev/null +++ b/tools/generate-formatter-examples.js @@ -0,0 +1,114 @@ +/** + * @fileoverview Generates documentation files for formatters: + * - docs/src/use/formatters/index.md + * - docs/src/use/formatters/html-formatter-example.html + * @author Milos Djermanovic + */ + +"use strict"; + +//----------------------------------------------------------------------------- +// Requirements +//----------------------------------------------------------------------------- + +const fs = require("node:fs/promises"); +const path = require("node:path"); +const util = require("node:util"); + +const ejs = require("ejs"); + +const { ESLint } = require("../lib/api"); +const { defineConfig } = require("../lib/config-api"); +const js = require("../packages/js"); + +const formattersMetadata = require("../lib/cli-engine/formatters/formatters-meta.json"); + +//----------------------------------------------------------------------------- +// Helpers +//----------------------------------------------------------------------------- + +const FORMATTERS_DOCS_DIR = path.join(__dirname, "../docs/src/use/formatters"); +const INDEX_FILENAME = path.resolve(FORMATTERS_DOCS_DIR, "index.md"); +const HTML_FORMATTER_FILENAME = path.resolve( + FORMATTERS_DOCS_DIR, + "html-formatter-example.html", +); + +const TEMPLATE_FILENAME = path.resolve( + __dirname, + "../templates/formatter-examples.md.ejs", +); + +const exampleCode = [ + "function addOne(i) {", + " if (i != NaN) {", + " return i ++", + " } else {", + " return", + " }", + "};", +].join("\n"); + +const exampleConfig = defineConfig([ + js.configs.recommended, + { + rules: { + "consistent-return": 2, + indent: [1, 4], + "no-else-return": 1, + semi: [1, "always"], + "space-unary-ops": 2, + }, + }, +]); + +/** + * Gets linting results from every formatter, based on a hard-coded snippet and config + * @returns {Promise} Output from each formatter + */ +async function getFormatterResults() { + const eslint = new ESLint({ + ignore: false, + overrideConfigFile: true, + baseConfig: exampleConfig, + }); + + const lintResults = await eslint.lintText(exampleCode, { + filePath: "fullOfProblems.js", + }); + + return Object.fromEntries( + await Promise.all( + formattersMetadata.map(async ({ name, description }) => { + const formatter = await eslint.loadFormatter(name); + + return [ + name, + { + result: util.stripVTControlCharacters( + formatter.format(lintResults), + ), + description, + }, + ]; + }), + ), + ); +} + +//----------------------------------------------------------------------------- +// CLI +//----------------------------------------------------------------------------- + +(async () => { + const formatterResults = await getFormatterResults(); + const indexFileContent = ejs.render( + await fs.readFile(TEMPLATE_FILENAME, "utf8"), + { formatterResults }, + ); + + await Promise.all([ + fs.writeFile(INDEX_FILENAME, indexFileContent), + fs.writeFile(HTML_FORMATTER_FILENAME, formatterResults.html.result), + ]); +})(); From 90b050ec11557cab08b6be9f05fabf97dba6a63d Mon Sep 17 00:00:00 2001 From: Sweta Tanwar Date: Mon, 28 Jul 2025 22:34:57 +0530 Subject: [PATCH 039/165] feat: support explicit resource management in `one-var` (#19941) * feat: support explicit resource management in `one-var` * chore: reverted unwanted formatting * docs: apply suggestions from code review Co-authored-by: Milos Djermanovic * fix: correct autofix * chore: apply suggestions from code review Co-authored-by: Milos Djermanovic * fix: update one-var rule type --------- Co-authored-by: Milos Djermanovic --- docs/src/rules/one-var.md | 102 ++++++++++++--- lib/rules/one-var.js | 93 +++++++++----- lib/types/rules.d.ts | 2 +- tests/lib/rules/one-var.js | 247 +++++++++++++++++++++++++++++++++++++ 4 files changed, 396 insertions(+), 48 deletions(-) diff --git a/docs/src/rules/one-var.md b/docs/src/rules/one-var.md index 8f9e5c450ec3..88c62796a317 100644 --- a/docs/src/rules/one-var.md +++ b/docs/src/rules/one-var.md @@ -3,9 +3,7 @@ title: one-var rule_type: suggestion --- - - -Variables can be declared at any point in JavaScript code using `var`, `let`, or `const`. There are many styles and preferences related to the declaration of variables, and one of those is deciding on how many variable declarations should be allowed in a single function. +Variables can be declared at any point in JavaScript code using `var`, `let`, `const`, `using`, or `await using`. There are many styles and preferences related to the declaration of variables, and one of those is deciding on how many variable declarations should be allowed in a single function. There are two schools of thought in this regard: @@ -31,7 +29,7 @@ The single-declaration school of thought is based in pre-ECMAScript 6 behaviors, ## Rule Details -This rule enforces variables to be declared either together or separately per function ( for `var`) or block (for `let` and `const`) scope. +This rule enforces variables to be declared either together or separately per function ( for `var`) or block (for `let`, `const`, `using`, and `await using`) scope. ## Options @@ -54,6 +52,12 @@ Object option: * `"const": "always"` requires one `const` declaration per block * `"const": "never"` requires multiple `const` declarations per block * `"const": "consecutive"` requires consecutive `const` declarations to be a single declaration +* `"using": "always"` requires one `using` declaration per block +* `"using": "never"` requires multiple `using` declarations per block +* `"using": "consecutive"` requires consecutive `using` declarations to be a single declaration +* `"awaitUsing": "always"` requires one `await using` declaration per block +* `"awaitUsing": "never"` requires multiple `await using` declarations per block +* `"awaitUsing": "consecutive"` requires consecutive `await using` declarations to be a single declaration * `"separateRequires": true` enforces `requires` to be separate from declarations Alternate object option: @@ -339,14 +343,14 @@ class C { ::: -### var, let, and const +### var, let, const, using, and awaitUsing -Examples of **incorrect** code for this rule with the `{ var: "always", let: "never", const: "never" }` option: +Examples of **incorrect** code for this rule with the `{ var: "always", let: "never", const: "never", using: "never", awaitUsing: "never" }` option: ::: incorrect ```js -/*eslint one-var: ["error", { var: "always", let: "never", const: "never" }]*/ +/*eslint one-var: ["error", { var: "always", let: "never", const: "never", using: "never", awaitUsing: "never" }]*/ function foo1() { var bar; @@ -361,16 +365,23 @@ function foo2() { let qux, norf; } + +async function foo3() { + using bar = 1, + baz = 2; + await using qux = 3, + norf = 4; +} ``` ::: -Examples of **correct** code for this rule with the `{ var: "always", let: "never", const: "never" }` option: +Examples of **correct** code for this rule with the `{ var: "always", let: "never", const: "never", using: "never", awaitUsing: "never" }` option: ::: correct ```js -/*eslint one-var: ["error", { var: "always", let: "never", const: "never" }]*/ +/*eslint one-var: ["error", { var: "always", let: "never", const: "never", using: "never", awaitUsing: "never" }]*/ function foo1() { var bar, @@ -385,6 +396,13 @@ function foo2() { let qux; let norf; } + +async function foo3() { + using bar = 1; + using baz = 2; + await using qux = 3; + await using norf = 4; +} ``` ::: @@ -411,17 +429,23 @@ Examples of **correct** code for this rule with the `{ var: "never" }` option: ```js /*eslint one-var: ["error", { var: "never" }]*/ -function foo() { +async function foo() { var bar; var baz; - // `const` and `let` declarations are ignored if they are not specified + // `const`, `let`, `using` and `await using` declarations are ignored if they are not specified const foobar = 1; const foobaz = 2; const barfoo = 1, bazfoo = 2; let qux; let norf; let fooqux, foonorf; + using foobarfoo = 1; + using foobazfoo = 2; + using bazbarfoo = 1, bazfoobar = 2; + await using foobarbaz = 1; + await using foobazqux = 2; + await using bazbarqux = 1, bazfooqux = 2; } ``` @@ -464,12 +488,12 @@ var foo = require("foo"), ::: -Examples of **incorrect** code for this rule with the `{ var: "never", let: "consecutive", const: "consecutive" }` option: +Examples of **incorrect** code for this rule with the `{ var: "never", let: "consecutive", const: "consecutive", using: "consecutive", awaitUsing: "consecutive" }` option: ::: incorrect ```js -/*eslint one-var: ["error", { var: "never", let: "consecutive", const: "consecutive" }]*/ +/*eslint one-var: ["error", { var: "never", let: "consecutive", const: "consecutive", using: "consecutive", awaitUsing: "consecutive" }]*/ function foo1() { let a, @@ -488,16 +512,34 @@ function foo2() { var d, e; } + +function foo3() { + using a = 1, + b = 2; + using c = 3; + + var d, + e; +} + +async function foo4() { + await using a = 1, + b = 2; + await using c = 3; + + var d, + e; +} ``` ::: -Examples of **correct** code for this rule with the `{ var: "never", let: "consecutive", const: "consecutive" }` option: +Examples of **correct** code for this rule with the `{ var: "never", let: "consecutive", const: "consecutive", using: "consecutive", awaitUsing: "consecutive" }` option: ::: correct ```js -/*eslint one-var: ["error", { var: "never", let: "consecutive", const: "consecutive" }]*/ +/*eslint one-var: ["error", { var: "never", let: "consecutive", const: "consecutive", using: "consecutive", awaitUsing: "consecutive" }]*/ function foo1() { let a, @@ -518,6 +560,26 @@ function foo2() { const e = 3; } + +function foo3() { + using a = 1, + b = 2; + + var c; + var d; + + using e = 3; +} + +async function foo4() { + await using a = 1, + b = 2; + + var c; + var d; + + await using e = 3; +} ``` ::: @@ -544,13 +606,19 @@ Examples of **correct** code for this rule with the `{ var: "consecutive" }` opt ```js /*eslint one-var: ["error", { var: "consecutive" }]*/ -function foo() { +async function foo() { var a, b; - const c = 1; // `const` and `let` declarations are ignored if they are not specified + + // `const`, `let`, `using`, and `await using` declarations are ignored if they are not specified + const c = 1; const d = 2; let e; let f; + using g = 3; + using h = 4; + await using i = 5; + await using j = 6; } ``` diff --git a/lib/rules/one-var.js b/lib/rules/one-var.js index c49fc60182e2..6a4cc074d667 100644 --- a/lib/rules/one-var.js +++ b/lib/rules/one-var.js @@ -64,6 +64,12 @@ module.exports = { const: { enum: ["always", "never", "consecutive"], }, + using: { + enum: ["always", "never", "consecutive"], + }, + awaitUsing: { + enum: ["always", "never", "consecutive"], + }, }, additionalProperties: false, }, @@ -112,6 +118,8 @@ module.exports = { options.var = { uninitialized: mode, initialized: mode }; options.let = { uninitialized: mode, initialized: mode }; options.const = { uninitialized: mode, initialized: mode }; + options.using = { uninitialized: mode, initialized: mode }; + options.awaitUsing = { uninitialized: mode, initialized: mode }; } else if (typeof mode === "object") { // options configuration is an object options.separateRequires = !!mode.separateRequires; @@ -121,15 +129,27 @@ module.exports = { uninitialized: mode.const, initialized: mode.const, }; + options.using = { + uninitialized: mode.using, + initialized: mode.using, + }; + options.awaitUsing = { + uninitialized: mode.awaitUsing, + initialized: mode.awaitUsing, + }; if (Object.hasOwn(mode, "uninitialized")) { options.var.uninitialized = mode.uninitialized; options.let.uninitialized = mode.uninitialized; options.const.uninitialized = mode.uninitialized; + options.using.uninitialized = mode.uninitialized; + options.awaitUsing.uninitialized = mode.uninitialized; } if (Object.hasOwn(mode, "initialized")) { options.var.initialized = mode.initialized; options.let.initialized = mode.initialized; options.const.initialized = mode.initialized; + options.using.initialized = mode.initialized; + options.awaitUsing.initialized = mode.initialized; } } @@ -151,6 +171,8 @@ module.exports = { blockStack.push({ let: { initialized: false, uninitialized: false }, const: { initialized: false, uninitialized: false }, + using: { initialized: false, uninitialized: false }, + awaitUsing: { initialized: false, uninitialized: false }, }); } @@ -199,7 +221,7 @@ module.exports = { /** * Records whether initialized/uninitialized/required variables are defined in current scope. - * @param {string} statementType node.kind, one of: "var", "let", or "const" + * @param {string} statementType one of: "var", "let", "const", "using", or "awaitUsing" * @param {ASTNode[]} declarations List of declarations * @param {Object} currentScope The scope being investigated * @returns {void} @@ -234,7 +256,7 @@ module.exports = { /** * Determines the current scope (function or block) - * @param {string} statementType node.kind, one of: "var", "let", or "const" + * @param {string} statementType one of: "var", "let", "const", "using", or "awaitUsing" * @returns {Object} The scope associated with statementType */ function getCurrentScope(statementType) { @@ -246,6 +268,10 @@ module.exports = { currentScope = blockStack.at(-1).let; } else if (statementType === "const") { currentScope = blockStack.at(-1).const; + } else if (statementType === "using") { + currentScope = blockStack.at(-1).using; + } else if (statementType === "awaitUsing") { + currentScope = blockStack.at(-1).awaitUsing; } return currentScope; } @@ -271,7 +297,7 @@ module.exports = { /** * Determines if there is more than one var statement in the current scope. - * @param {string} statementType node.kind, one of: "var", "let", or "const" + * @param {string} statementType one of: "var", "let", "const", "using", or "awaitUsing" * @param {ASTNode[]} declarations List of declarations * @returns {boolean} Returns true if it is the first var declaration, false if not. * @private @@ -333,24 +359,27 @@ module.exports = { ); const previousNode = body[currentIndex - 1]; - return fixer => { - const type = sourceCode.getTokenBefore(declaration); - const prevSemi = sourceCode.getTokenBefore(type); - const res = []; + return function* joinDeclarationsFixer(fixer) { + const type = sourceCode.getFirstToken(declaration.parent); + const beforeType = sourceCode.getTokenBefore(type); if ( previousNode && - previousNode.kind === sourceCode.getText(type) + previousNode.kind === declaration.parent.kind ) { - if (prevSemi.value === ";") { - res.push(fixer.replaceText(prevSemi, ",")); + if (beforeType.value === ";") { + yield fixer.replaceText(beforeType, ","); } else { - res.push(fixer.insertTextAfter(prevSemi, ",")); + yield fixer.insertTextAfter(beforeType, ","); + } + + if (declaration.parent.kind === "await using") { + const usingToken = sourceCode.getTokenAfter(type); + yield fixer.remove(usingToken); } - res.push(fixer.replaceText(type, "")); - } - return res; + yield fixer.replaceText(type, ""); + } }; } @@ -440,7 +469,10 @@ module.exports = { tokenAfterDeclarator.range[0], lastComment.range[0], ], - `;${sourceCode.text.slice(tokenAfterDeclarator.range[1], lastComment.range[0])}${exportPlacement}${declaration.kind} `, + `;${sourceCode.text.slice( + tokenAfterDeclarator.range[1], + lastComment.range[0], + )}${exportPlacement}${declaration.kind} `, ); } @@ -461,8 +493,9 @@ module.exports = { function checkVariableDeclaration(node) { const parent = node.parent; const type = node.kind; + const key = type === "await using" ? "awaitUsing" : type; - if (!options[type]) { + if (!options[key]) { return; } @@ -471,7 +504,7 @@ module.exports = { const mixedRequires = declarations.some(isRequire) && !declarations.every(isRequire); - if (options[type].initialized === MODE_ALWAYS) { + if (options[key].initialized === MODE_ALWAYS) { if (options.separateRequires && mixedRequires) { context.report({ node, @@ -508,8 +541,8 @@ module.exports = { ); if ( - options[type].initialized === MODE_CONSECUTIVE && - options[type].uninitialized === MODE_CONSECUTIVE + options[key].initialized === MODE_CONSECUTIVE && + options[key].uninitialized === MODE_CONSECUTIVE ) { context.report({ node, @@ -520,7 +553,7 @@ module.exports = { fix: joinDeclarations(declarations), }); } else if ( - options[type].initialized === MODE_CONSECUTIVE && + options[key].initialized === MODE_CONSECUTIVE && declarationCounts.initialized > 0 && previousDeclCounts.initialized > 0 ) { @@ -533,7 +566,7 @@ module.exports = { fix: joinDeclarations(declarations), }); } else if ( - options[type].uninitialized === MODE_CONSECUTIVE && + options[key].uninitialized === MODE_CONSECUTIVE && declarationCounts.uninitialized > 0 && previousDeclCounts.uninitialized > 0 ) { @@ -550,10 +583,10 @@ module.exports = { } // always - if (!hasOnlyOneStatement(type, declarations)) { + if (!hasOnlyOneStatement(key, declarations)) { if ( - options[type].initialized === MODE_ALWAYS && - options[type].uninitialized === MODE_ALWAYS + options[key].initialized === MODE_ALWAYS && + options[key].uninitialized === MODE_ALWAYS ) { context.report({ node, @@ -565,7 +598,7 @@ module.exports = { }); } else { if ( - options[type].initialized === MODE_ALWAYS && + options[key].initialized === MODE_ALWAYS && declarationCounts.initialized > 0 ) { context.report({ @@ -578,7 +611,7 @@ module.exports = { }); } if ( - options[type].uninitialized === MODE_ALWAYS && + options[key].uninitialized === MODE_ALWAYS && declarationCounts.uninitialized > 0 ) { if ( @@ -608,8 +641,8 @@ module.exports = { if (totalDeclarations > 1) { if ( - options[type].initialized === MODE_NEVER && - options[type].uninitialized === MODE_NEVER + options[key].initialized === MODE_NEVER && + options[key].uninitialized === MODE_NEVER ) { // both initialized and uninitialized context.report({ @@ -621,7 +654,7 @@ module.exports = { fix: splitDeclarations(node), }); } else if ( - options[type].initialized === MODE_NEVER && + options[key].initialized === MODE_NEVER && declarationCounts.initialized > 0 ) { // initialized @@ -634,7 +667,7 @@ module.exports = { fix: splitDeclarations(node), }); } else if ( - options[type].uninitialized === MODE_NEVER && + options[key].uninitialized === MODE_NEVER && declarationCounts.uninitialized > 0 ) { // uninitialized diff --git a/lib/types/rules.d.ts b/lib/types/rules.d.ts index 2c5bef850171..5c2817dad9f0 100644 --- a/lib/types/rules.d.ts +++ b/lib/types/rules.d.ts @@ -4509,7 +4509,7 @@ export interface ESLintRules extends Linter.RulesRecord { */ separateRequires: boolean; } & Record< - "var" | "let" | "const", + "var" | "let" | "const" | "using" | "awaitUsing", "always" | "never" | "consecutive" > > diff --git a/tests/lib/rules/one-var.js b/tests/lib/rules/one-var.js index e399e132040c..106c9d0e8a83 100644 --- a/tests/lib/rules/one-var.js +++ b/tests/lib/rules/one-var.js @@ -637,6 +637,123 @@ ruleTester.run("one-var", rule, { options: [{ initialized: "consecutive" }], languageOptions: { ecmaVersion: 2022 }, }, + + // Explicit Resource Management + { + code: "using a = 0; let b = 1; const c = 2;", + languageOptions: { + ecmaVersion: 2026, + sourceType: "module", + }, + }, + { + code: "await using a = 0; let b = 1; const c = 2;", + languageOptions: { + ecmaVersion: 2026, + sourceType: "module", + }, + }, + { + code: "using a = 0, b = 1;", + languageOptions: { + ecmaVersion: 2026, + sourceType: "module", + }, + }, + { + code: "await using a = 0, b = 1;", + languageOptions: { + ecmaVersion: 2026, + sourceType: "module", + }, + }, + { + code: "function fn() { { using a = 0; } using b = 1; }", + languageOptions: { + ecmaVersion: 2026, + sourceType: "module", + }, + }, + { + code: "using a = 0; using b = 1;", + options: ["never"], + languageOptions: { + ecmaVersion: 2026, + sourceType: "module", + }, + }, + { + code: "await using a = 0; await using b = 1;", + options: ["never"], + languageOptions: { + ecmaVersion: 2026, + sourceType: "module", + }, + }, + { + code: "using a = 0, b = 1;", + options: ["consecutive"], + languageOptions: { + ecmaVersion: 2026, + sourceType: "module", + }, + }, + { + code: "await using a = 0, b = 1;", + options: ["consecutive"], + languageOptions: { + ecmaVersion: 2026, + sourceType: "module", + }, + }, + { + code: "using a = 0, b = 1;", + options: [{ initialized: "always" }], + languageOptions: { + ecmaVersion: 2026, + sourceType: "module", + }, + }, + { + code: "await using a = 0, b = 1;", + options: [{ initialized: "always" }], + languageOptions: { + ecmaVersion: 2026, + sourceType: "module", + }, + }, + { + code: "using a = 0; using b = 1;", + options: [{ initialized: "never" }], + languageOptions: { + ecmaVersion: 2026, + sourceType: "module", + }, + }, + { + code: "await using a = 0; await using b = 1;", + options: [{ initialized: "never" }], + languageOptions: { + ecmaVersion: 2026, + sourceType: "module", + }, + }, + { + code: "using a = 0, b = 1; foo(); using c = 2, d = 3;", + options: [{ initialized: "consecutive" }], + languageOptions: { + ecmaVersion: 2026, + sourceType: "module", + }, + }, + { + code: "await using a = 0, b = 1; foo(); await using c = 2, d = 3;", + options: [{ initialized: "consecutive" }], + languageOptions: { + ecmaVersion: 2026, + sourceType: "module", + }, + }, ], invalid: [ { @@ -2648,5 +2765,135 @@ ruleTester.run("one-var", rule, { }, ], }, + + // Explicit Resource Management + { + code: "using a = 0; using b = 1;", + output: "using a = 0, b = 1;", + options: ["always"], + languageOptions: { + ecmaVersion: 2026, + sourceType: "module", + }, + errors: [ + { + messageId: "combine", + data: { type: "using" }, + type: "VariableDeclaration", + }, + ], + }, + { + code: "await using a = 0; await using b = 1;", + output: "await using a = 0, b = 1;", + options: ["always"], + languageOptions: { + ecmaVersion: 2026, + sourceType: "module", + }, + errors: [ + { + messageId: "combine", + data: { type: "await using" }, + type: "VariableDeclaration", + }, + ], + }, + { + code: "using a = 0, b = 1;", + output: "using a = 0; using b = 1;", + options: ["never"], + languageOptions: { + ecmaVersion: 2026, + sourceType: "module", + }, + errors: [ + { + messageId: "split", + data: { type: "using" }, + type: "VariableDeclaration", + }, + ], + }, + { + code: "await using a = 0, b = 1;", + output: "await using a = 0; await using b = 1;", + options: ["never"], + languageOptions: { + ecmaVersion: 2026, + sourceType: "module", + }, + errors: [ + { + messageId: "split", + data: { type: "await using" }, + type: "VariableDeclaration", + }, + ], + }, + { + code: "using a = 0; using b = 1;", + output: "using a = 0, b = 1;", + options: ["consecutive"], + languageOptions: { + ecmaVersion: 2026, + sourceType: "module", + }, + errors: [ + { + messageId: "combine", + data: { type: "using" }, + type: "VariableDeclaration", + }, + ], + }, + { + code: "await using a = 0; await using b = 1;", + output: "await using a = 0, b = 1;", + options: ["consecutive"], + languageOptions: { + ecmaVersion: 2026, + sourceType: "module", + }, + errors: [ + { + messageId: "combine", + data: { type: "await using" }, + type: "VariableDeclaration", + }, + ], + }, + { + code: "using a = 0, b = 1;", + output: "using a = 0; using b = 1;", + options: [{ initialized: "never" }], + languageOptions: { + ecmaVersion: 2026, + sourceType: "module", + }, + errors: [ + { + messageId: "splitInitialized", + data: { type: "using" }, + type: "VariableDeclaration", + }, + ], + }, + { + code: "await using a = 0, b = 1;", + output: "await using a = 0; await using b = 1;", + options: [{ initialized: "never" }], + languageOptions: { + ecmaVersion: 2026, + sourceType: "module", + }, + errors: [ + { + messageId: "splitInitialized", + data: { type: "await using" }, + type: "VariableDeclaration", + }, + ], + }, ], }); From e8a6914a249d036e12494004e586b2a2b6e104d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=AB=8F=E8=A8=AA=E5=8E=9F=E6=85=B6=E6=96=97?= <131525647+suwakei@users.noreply.github.com> Date: Wed, 30 Jul 2025 01:09:50 +0900 Subject: [PATCH 040/165] fix: Fixed potential bug in check-emfile-handling.js (#19975) --- tools/check-emfile-handling.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tools/check-emfile-handling.js b/tools/check-emfile-handling.js index 8326fa8189c2..67eeb0c02310 100644 --- a/tools/check-emfile-handling.js +++ b/tools/check-emfile-handling.js @@ -36,7 +36,13 @@ let FILE_COUNT = DEFAULT_FILE_COUNT; // if the platform isn't windows, get the ulimit to see what the actual limit is if (os.platform() !== "win32") { try { - FILE_COUNT = parseInt(execSync("ulimit -n").toString().trim(), 10) + 1; + const limit = execSync("ulimit -n").toString().trim(); + const parsedLimit = parseInt(limit, 10); + + // "unlimited" will result in NaN, in which case use the default value + if (!isNaN(parsedLimit)) { + FILE_COUNT = parsedLimit + 1; + } console.log(`Detected Linux file limit of ${FILE_COUNT}.`); From 54920ed229693f23650dace6e567bf44413aaf98 Mon Sep 17 00:00:00 2001 From: Francesco Trotta Date: Thu, 31 Jul 2025 17:19:03 +0200 Subject: [PATCH 041/165] test: switch to `Linter.Config` in `ESLintRules` type tests (#19977) --- tests/lib/types/types.test.ts | 73 ++++++++++++++++++----------------- 1 file changed, 38 insertions(+), 35 deletions(-) diff --git a/tests/lib/types/types.test.ts b/tests/lib/types/types.test.ts index 8b3f42ab0051..b44b695d5ec6 100644 --- a/tests/lib/types/types.test.ts +++ b/tests/lib/types/types.test.ts @@ -1824,35 +1824,40 @@ for (const result of results) { // #region ESLintRules -let eslintConfig: Linter.LegacyConfig; +let eslintConfig: Linter.Config[]; -eslintConfig = { - rules: { - "capitalized-comments": [2, "always", { ignorePattern: "const|let" }], - "no-promise-executor-return": [2, { allowVoid: true }], - "sort-keys": [2, "asc", { allowLineSeparatedGroups: true }], +eslintConfig = [ + { + rules: { + "capitalized-comments": [ + 2, + "always", + { ignorePattern: "const|let" }, + ], + "no-promise-executor-return": [2, { allowVoid: true }], + "sort-keys": [2, "asc", { allowLineSeparatedGroups: true }], + }, }, - overrides: [ - { - files: "*.json", - rules: { - "max-len": 0, - }, + { + files: ["**/*.json"], + rules: { + "no-restricted-syntax": 0, }, - { - files: "*.ts", - rules: { - "@typescript-eslint/no-invalid-void-type": [ - 2, - { allowAsThisParameter: true }, - ], - }, + }, + { + files: ["**/*.ts"], + rules: { + "@typescript-eslint/no-invalid-void-type": [ + 2, + { allowAsThisParameter: true }, + ], }, - ], -}; + }, +]; -eslintConfig.rules; // $ExpectType Partial | undefined -eslintConfig.overrides?.[0].rules; // $ExpectType Partial | undefined +(configIndex: number) => { + eslintConfig[configIndex].rules; // $ExpectType Partial | undefined +}; interface TSLinterRules { "@typescript-eslint/no-invalid-void-type"?: Linter.RuleEntry< @@ -1865,19 +1870,17 @@ interface TSLinterRules { >; } -const eslintConfig2: Linter.LegacyConfig< - ESLintRules, - ESLintRules & TSLinterRules -> = eslintConfig; +const eslintConfig2: Linter.Config[] = + eslintConfig; -eslintConfig2.rules; // $ExpectType Partial | undefined -eslintConfig2.overrides?.[1].rules; // $ExpectType Partial | undefined - -const eslintConfig3: Linter.LegacyConfig = - eslintConfig2; +(configIndex: number) => { + eslintConfig2[configIndex].rules; // $ExpectType Partial | undefined +}; -eslintConfig3.rules; // $ExpectType Partial | undefined -eslintConfig3.overrides?.[1].rules; // $ExpectType Partial | undefined +(configIndex: number) => { + const rules: Partial | undefined = + eslintConfig2[configIndex].rules; +}; // #endregion From fa20b9db8ff90ea9f0527118114dda17c656d095 Mon Sep 17 00:00:00 2001 From: "Nicholas C. Zakas" Date: Thu, 31 Jul 2025 12:00:49 -0400 Subject: [PATCH 042/165] docs: Clarify when to open an issue for a PR (#19974) * docs: Clarify when to open an issue for a PR fixes #19922 * Apply feedback * Update docs/src/contribute/pull-requests.md Co-authored-by: Amaresh S M --------- Co-authored-by: Amaresh S M --- docs/src/contribute/pull-requests.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/docs/src/contribute/pull-requests.md b/docs/src/contribute/pull-requests.md index 6b5f395b1ce9..9a1556cbcbd0 100644 --- a/docs/src/contribute/pull-requests.md +++ b/docs/src/contribute/pull-requests.md @@ -11,15 +11,20 @@ If you want to contribute to an ESLint repo, please use a GitHub pull request. T ## Getting Started -If you'd like to work on a pull request and you've never submitted code before, follow these steps: +The ESLint project uses issues to track our work, so it's important to ensure that a proper issue is open: -1. Set up a [development environment](./development-environment). -1. If you want to implement a breaking change or a change to the core, ensure there's an issue that describes what you're doing and the issue has been accepted. You can create a new issue or just indicate you're [working on an existing issue](./work-on-issue). Bug fixes, documentation changes, and other pull requests do not require an issue. +- **If there is an existing issue,** follow the instructions on [work on issues](work-on-issue). +- **If there isn't an existing issue,** then open one to describe the change you want to make. Use the appropriate issue template. + - **Exceptions:** Small changes, such as bug fixes, documentation updates, or package upgrades don't require an issue. Make sure the pull request description explains clearly what it is you're doing and why. After that, you're ready to start working on code. ## Working with Code +::: important +If you'd like to work on a pull request and you've never submitted code before, make sure to set up a [development environment](./development-environment). +::: + The process of submitting a pull request is fairly straightforward and generally follows the same pattern each time: 1. [Create a new branch](#step1). From e07820e66fd1fceaf2620dc931154955a706cc0f Mon Sep 17 00:00:00 2001 From: sethamus <32633697+sethamus@users.noreply.github.com> Date: Thu, 31 Jul 2025 19:31:50 +0300 Subject: [PATCH 043/165] feat: add global object access detection to no-restricted-globals (#19939) * feat: add global object access detection to no-restricted-globals * fix ci * add tests * add self to default global objects * refactor --- docs/src/rules/no-restricted-globals.md | 86 ++- lib/rules/no-restricted-globals.js | 152 +++- lib/types/rules.d.ts | 27 +- tests/lib/rules/no-restricted-globals.js | 849 +++++++++++++++++++++++ 4 files changed, 1085 insertions(+), 29 deletions(-) diff --git a/docs/src/rules/no-restricted-globals.md b/docs/src/rules/no-restricted-globals.md index d3105329151e..73567fe74fb4 100644 --- a/docs/src/rules/no-restricted-globals.md +++ b/docs/src/rules/no-restricted-globals.md @@ -20,7 +20,9 @@ This rule allows you to specify global variable names that you don't want to use ## Options -This rule takes a list of strings, where each string is a global to be restricted: +This rule has both string and object options to specify the global variables to restrict. + +Using the string option, you can specify the name of a global variable that you want to restrict as a value in the rule options array: ```json { @@ -107,6 +109,88 @@ function onClick() { ::: +### globals + +An object option whose value is an array containing the names of the globals you want to restrict. + +Examples of **incorrect** code for `"event"` and `"fdescribe"` global variable names: + +::: incorrect + +```js +/*global event, fdescribe*/ +/*eslint no-restricted-globals: ["error", { globals: ["event", "fdescribe"] }]*/ + +function onClick() { + console.log(event); +} + +fdescribe("foo", function() { +}); +``` + +::: + +Custom messages for a particular global can also be specified in `globals` array using objects with `name` and `message`: + +Examples of **incorrect** code for an `"event"` global variable name, along with a custom error message: + +::: incorrect + +```js +/*global event*/ +/* eslint no-restricted-globals: ["error", { globals: [{ name: "event", message: "Use local parameter instead." }] }] */ + +function onClick() { + console.log(event); +} +``` + +::: + +### checkGlobalObject + +A boolean option that enables detection of restricted globals accessed via global objects. Default is `false`. + +Examples of **incorrect** code for `checkGlobalObject: true` option: + +::: incorrect + +```js +/*global globalThis, self, window*/ +/*eslint no-restricted-globals: ["error", { globals: ["Promise"], checkGlobalObject: true }]*/ + +globalThis.Promise +self.Promise +window.Promise +``` + +::: + +### globalObjects + +An array option that specifies additional global object names to check when `checkGlobalObject` is enabled. By default, the rule checks these global objects: `globalThis`, `self`, and `window`. + +Examples of **incorrect** code for `globalObjects` option: + +::: incorrect + +```js +/*global globalThis, self, window, myGlobal*/ +/*eslint no-restricted-globals: ["error", { + globals: ["Promise"], + checkGlobalObject: true, + globalObjects: ["myGlobal"] +}]*/ + +globalThis.Promise +self.Promise +window.Promise +myGlobal.Promise; +``` + +::: + Restricted globals used in TypeScript type annotations—such as type references, interface inheritance, or class implementations—are ignored by this rule. Examples of **correct** TypeScript code for "Promise", "Event", and "Window" global variable names: diff --git a/lib/rules/no-restricted-globals.js b/lib/rules/no-restricted-globals.js index 046356f104a4..a883988c4f3a 100644 --- a/lib/rules/no-restricted-globals.js +++ b/lib/rules/no-restricted-globals.js @@ -4,6 +4,12 @@ */ "use strict"; +//------------------------------------------------------------------------------ +// Requirements +//------------------------------------------------------------------------------ + +const astUtils = require("./utils/ast-utils"); + //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ @@ -16,10 +22,34 @@ const TYPE_NODES = new Set([ "TSQualifiedName", ]); +const GLOBAL_OBJECTS = new Set(["globalThis", "self", "window"]); + //------------------------------------------------------------------------------ // Rule Definition //------------------------------------------------------------------------------ +const arrayOfGlobals = { + type: "array", + items: { + oneOf: [ + { + type: "string", + }, + { + type: "object", + properties: { + name: { type: "string" }, + message: { type: "string" }, + }, + required: ["name"], + additionalProperties: false, + }, + ], + }, + uniqueItems: true, + minItems: 0, +}; + /** @type {import('../types').Rule.RuleModule} */ module.exports = { meta: { @@ -34,25 +64,33 @@ module.exports = { }, schema: { - type: "array", - items: { - oneOf: [ - { - type: "string", - }, - { - type: "object", - properties: { - name: { type: "string" }, - message: { type: "string" }, + anyOf: [ + arrayOfGlobals, + { + type: "array", + items: [ + { + type: "object", + properties: { + globals: arrayOfGlobals, + checkGlobalObject: { + type: "boolean", + }, + globalObjects: { + type: "array", + items: { + type: "string", + }, + uniqueItems: true, + }, + }, + required: ["globals"], + additionalProperties: false, }, - required: ["name"], - additionalProperties: false, - }, - ], - }, - uniqueItems: true, - minItems: 0, + ], + additionalItems: false, + }, + ], }, messages: { @@ -63,14 +101,33 @@ module.exports = { }, create(context) { - const sourceCode = context.sourceCode; + const { sourceCode, options } = context; + + const isGlobalsObject = + typeof options[0] === "object" && + Object.hasOwn(options[0], "globals"); + + const restrictedGlobals = isGlobalsObject + ? options[0].globals + : options; + const checkGlobalObject = isGlobalsObject + ? options[0].checkGlobalObject + : false; + const userGlobalObjects = isGlobalsObject + ? options[0].globalObjects || [] + : []; + + const globalObjects = new Set([ + ...GLOBAL_OBJECTS, + ...userGlobalObjects, + ]); // If no globals are restricted, we don't need to do anything - if (context.options.length === 0) { + if (restrictedGlobals.length === 0) { return {}; } - const restrictedGlobalMessages = context.options.reduce( + const restrictedGlobalMessages = restrictedGlobals.reduce( (memo, option) => { if (typeof option === "string") { memo[option] = null; @@ -151,6 +208,59 @@ module.exports = { } }); }, + + "Program:exit"(node) { + if (!checkGlobalObject) { + return; + } + + const globalScope = sourceCode.getScope(node); + globalObjects.forEach(globalObjectName => { + const variable = astUtils.getVariableByName( + globalScope, + globalObjectName, + ); + + if (!variable) { + return; + } + + variable.references.forEach(reference => { + const identifier = reference.identifier; + let parent = identifier.parent; + + // To detect code like `window.window.Promise`. + while ( + astUtils.isSpecificMemberAccess( + parent, + null, + globalObjectName, + ) + ) { + parent = parent.parent; + } + + const propertyName = + astUtils.getStaticPropertyName(parent); + if (propertyName && isRestricted(propertyName)) { + const customMessage = + restrictedGlobalMessages[propertyName]; + const messageId = customMessage + ? "customMessage" + : "defaultMessage"; + + context.report({ + node: parent.property, + messageId, + data: { + name: propertyName, + customMessage, + }, + }); + } + }); + }); + }, }; }, }; diff --git a/lib/types/rules.d.ts b/lib/types/rules.d.ts index 5c2817dad9f0..5b815fcaa062 100644 --- a/lib/types/rules.d.ts +++ b/lib/types/rules.d.ts @@ -3403,13 +3403,26 @@ export interface ESLintRules extends Linter.RulesRecord { */ "no-restricted-globals": Linter.RuleEntry< [ - ...Array< - | string - | { - name: string; - message?: string | undefined; - } - >, + ...( + | Array< + | string + | { + name: string; + message?: string | undefined; + } + > + | Array<{ + globals: Array< + | string + | { + name: string; + message?: string | undefined; + } + >; + checkGlobalObject?: boolean; + globalObjects?: string[]; + }> + ), ] >; diff --git a/tests/lib/rules/no-restricted-globals.js b/tests/lib/rules/no-restricted-globals.js index 9eacea48d985..30be39e5bb51 100644 --- a/tests/lib/rules/no-restricted-globals.js +++ b/tests/lib/rules/no-restricted-globals.js @@ -57,6 +57,198 @@ ruleTester.run("no-restricted-globals", rule, { code: "foo", options: [{ name: "bar", message: "Use baz instead." }], }, + { + code: "foo", + options: [{ globals: ["bar"] }], + }, + { + code: "const foo = 1", + options: [{ globals: ["foo"] }], + }, + { + code: "event", + options: [{ globals: ["bar"] }], + languageOptions: { globals: globals.browser }, + }, + { + code: "import foo from 'bar';", + options: [{ globals: ["foo"] }], + languageOptions: { ecmaVersion: 6, sourceType: "module" }, + }, + { + code: "function foo() {}", + options: [{ globals: ["foo"] }], + }, + { + code: "function fn() { let foo; }", + options: [{ globals: ["foo"] }], + }, + { + code: "foo.bar", + options: [{ globals: ["bar"] }], + }, + { + code: "foo", + options: [ + { globals: [{ name: "bar", message: "Use baz instead." }] }, + ], + }, + { + code: "window.foo()", + options: [{ globals: ["foo"] }], + languageOptions: { globals: globals.browser }, + }, + { + code: "self.foo()", + options: [{ globals: ["foo"] }], + languageOptions: { globals: globals.browser }, + }, + { + code: "globalThis.foo()", + options: [{ globals: ["foo"] }], + languageOptions: { ecmaVersion: 2020 }, + }, + { + code: "myGlobal.foo()", + options: [ + { + globals: ["foo"], + globalObjects: ["myGlobal"], + }, + ], + languageOptions: { globals: { myGlobal: "readonly" } }, + }, + { + code: "window.foo()", + options: [ + { + globals: ["foo"], + checkGlobalObject: true, + }, + ], + }, + { + code: "self.foo()", + options: [ + { + globals: ["foo"], + checkGlobalObject: true, + }, + ], + }, + { + code: "globalThis.foo()", + options: [ + { + globals: ["foo"], + checkGlobalObject: true, + }, + ], + languageOptions: { ecmaVersion: 6 }, + }, + { + code: "myGlobal.foo()", + options: [ + { + globals: ["foo"], + checkGlobalObject: true, + globalObjects: ["myGlobal"], + }, + ], + }, + { + code: "otherGlobal.foo()", + options: [ + { + globals: ["foo"], + checkGlobalObject: true, + globalObjects: ["myGlobal"], + }, + ], + languageOptions: { globals: { otherGlobal: "readonly" } }, + }, + { + code: "foo.window.bar()", + options: [ + { + globals: ["bar"], + checkGlobalObject: true, + }, + ], + languageOptions: { globals: globals.browser }, + }, + { + code: "foo.self.bar()", + options: [ + { + globals: ["bar"], + checkGlobalObject: true, + }, + ], + languageOptions: { globals: globals.browser }, + }, + { + code: "foo.globalThis.bar()", + options: [ + { + globals: ["bar"], + checkGlobalObject: true, + }, + ], + languageOptions: { ecmaVersion: 2020 }, + }, + { + code: "foo.myGlobal.bar()", + options: [ + { + globals: ["bar"], + checkGlobalObject: true, + globalObjects: ["myGlobal"], + }, + ], + languageOptions: { globals: { myGlobal: "readonly" } }, + }, + { + code: "let window; window.foo()", + options: [ + { + globals: ["foo"], + checkGlobalObject: true, + }, + ], + languageOptions: { globals: globals.browser }, + }, + { + code: "let self; self.foo()", + options: [ + { + globals: ["foo"], + checkGlobalObject: true, + }, + ], + languageOptions: { globals: globals.browser }, + }, + { + code: "let globalThis; globalThis.foo()", + options: [ + { + globals: ["foo"], + checkGlobalObject: true, + }, + ], + languageOptions: { ecmaVersion: 2020 }, + }, + { + code: "let myGlobal; myGlobal.foo()", + options: [ + { + globals: ["foo"], + checkGlobalObject: true, + globalObjects: ["myGlobal"], + }, + ], + languageOptions: { globals: { myGlobal: "readonly" } }, + }, ], invalid: [ { @@ -329,6 +521,663 @@ ruleTester.run("no-restricted-globals", rule, { }, ], }, + { + code: "foo", + options: [{ globals: ["foo"] }], + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + ], + }, + { + code: "function fn() { foo; }", + options: [{ globals: ["foo"] }], + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + ], + }, + { + code: "function fn() { foo; }", + options: [{ globals: ["foo"] }], + languageOptions: { + globals: { foo: "readonly" }, + }, + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + ], + }, + { + code: "event", + options: [{ globals: ["foo", "event"] }], + languageOptions: { globals: globals.browser }, + errors: [ + { + messageId: "defaultMessage", + data: { name: "event" }, + type: "Identifier", + }, + ], + }, + { + code: "foo", + options: [{ globals: ["foo"] }], + languageOptions: { + globals: { foo: "readonly" }, + }, + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + ], + }, + { + code: "foo()", + options: [{ globals: ["foo"] }], + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + ], + }, + { + code: "foo.bar()", + options: [{ globals: ["foo"] }], + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + ], + }, + { + code: "foo", + options: [{ globals: [{ name: "foo" }] }], + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + ], + }, + { + code: "function fn() { foo; }", + options: [{ globals: [{ name: "foo" }] }], + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + ], + }, + { + code: "function fn() { foo; }", + options: [{ globals: [{ name: "foo" }] }], + languageOptions: { + globals: { foo: "readonly" }, + }, + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + ], + }, + { + code: "event", + options: [{ globals: ["foo", { name: "event" }] }], + languageOptions: { globals: globals.browser }, + errors: [ + { + messageId: "defaultMessage", + data: { name: "event" }, + type: "Identifier", + }, + ], + }, + { + code: "foo", + options: [{ globals: [{ name: "foo" }] }], + languageOptions: { + globals: { foo: "readonly" }, + }, + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + ], + }, + { + code: "foo()", + options: [{ globals: [{ name: "foo" }] }], + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + ], + }, + { + code: "foo.bar()", + options: [{ globals: [{ name: "foo" }] }], + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + ], + }, + { + code: "foo", + options: [{ globals: [{ name: "foo", message: customMessage }] }], + errors: [ + { + messageId: "customMessage", + data: { name: "foo", customMessage }, + type: "Identifier", + }, + ], + }, + { + code: "function fn() { foo; }", + options: [{ globals: [{ name: "foo", message: customMessage }] }], + errors: [ + { + messageId: "customMessage", + data: { name: "foo", customMessage }, + type: "Identifier", + }, + ], + }, + { + code: "function fn() { foo; }", + options: [{ globals: [{ name: "foo", message: customMessage }] }], + languageOptions: { + globals: { foo: "readonly" }, + }, + errors: [ + { + messageId: "customMessage", + data: { name: "foo", customMessage }, + type: "Identifier", + }, + ], + }, + { + code: "event", + options: [ + { + globals: [ + "foo", + { + name: "event", + message: "Use local event parameter.", + }, + ], + }, + ], + languageOptions: { globals: globals.browser }, + errors: [ + { + messageId: "customMessage", + data: { + name: "event", + customMessage: "Use local event parameter.", + }, + type: "Identifier", + }, + ], + }, + { + code: "foo", + options: [{ globals: [{ name: "foo", message: customMessage }] }], + languageOptions: { + globals: { foo: false }, + }, + errors: [ + { + messageId: "customMessage", + data: { name: "foo", customMessage }, + type: "Identifier", + }, + ], + }, + { + code: "foo()", + options: [{ globals: [{ name: "foo", message: customMessage }] }], + errors: [ + { + messageId: "customMessage", + data: { name: "foo", customMessage }, + type: "Identifier", + }, + ], + }, + { + code: "foo.bar()", + options: [{ globals: [{ name: "foo", message: customMessage }] }], + errors: [ + { + messageId: "customMessage", + data: { name: "foo", customMessage }, + type: "Identifier", + }, + ], + }, + { + code: "var foo = obj => hasOwnProperty(obj, 'name');", + options: [{ globals: ["hasOwnProperty"] }], + languageOptions: { ecmaVersion: 6 }, + errors: [ + { + messageId: "defaultMessage", + data: { name: "hasOwnProperty" }, + type: "Identifier", + }, + ], + }, + { + code: "window.foo()", + options: [{ globals: ["foo"], checkGlobalObject: true }], + languageOptions: { globals: globals.browser }, + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + ], + }, + { + code: "self.foo()", + options: [{ globals: ["foo"], checkGlobalObject: true }], + languageOptions: { globals: globals.browser }, + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + ], + }, + { + code: "window.window.foo()", + options: [{ globals: ["foo"], checkGlobalObject: true }], + languageOptions: { globals: globals.browser }, + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + ], + }, + { + code: "self.self.foo()", + options: [{ globals: ["foo"], checkGlobalObject: true }], + languageOptions: { globals: globals.browser }, + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + ], + }, + { + code: "globalThis.foo()", + options: [{ globals: ["foo"], checkGlobalObject: true }], + languageOptions: { ecmaVersion: 2020 }, + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + ], + }, + { + code: "globalThis.globalThis.foo()", + options: [{ globals: ["foo"], checkGlobalObject: true }], + languageOptions: { ecmaVersion: 2020 }, + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + ], + }, + { + code: "myGlobal.foo()", + options: [ + { + globals: ["foo"], + checkGlobalObject: true, + globalObjects: ["myGlobal"], + }, + ], + languageOptions: { globals: { myGlobal: "readonly" } }, + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + ], + }, + { + code: "myGlobal.myGlobal.foo()", + options: [ + { + globals: ["foo"], + checkGlobalObject: true, + globalObjects: ["myGlobal"], + }, + ], + languageOptions: { globals: { myGlobal: "readonly" } }, + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + ], + }, + { + code: 'window["foo"]', + options: [{ globals: ["foo"], checkGlobalObject: true }], + languageOptions: { globals: globals.browser }, + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Literal", + }, + ], + }, + { + code: 'self["foo"]', + options: [{ globals: ["foo"], checkGlobalObject: true }], + languageOptions: { globals: globals.browser }, + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Literal", + }, + ], + }, + { + code: 'globalThis["foo"]', + options: [{ globals: ["foo"], checkGlobalObject: true }], + languageOptions: { ecmaVersion: 2020 }, + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Literal", + }, + ], + }, + { + code: 'myGlobal["foo"]', + options: [ + { + globals: ["foo"], + checkGlobalObject: true, + globalObjects: ["myGlobal"], + }, + ], + languageOptions: { globals: { myGlobal: "readonly" } }, + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Literal", + }, + ], + }, + { + code: "window?.foo()", + options: [{ globals: ["foo"], checkGlobalObject: true }], + languageOptions: { globals: globals.browser }, + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + ], + }, + { + code: "self?.foo()", + options: [{ globals: ["foo"], checkGlobalObject: true }], + languageOptions: { globals: globals.browser }, + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + ], + }, + { + code: "window.foo(); myGlobal.foo()", + options: [ + { + globals: ["foo"], + checkGlobalObject: true, + globalObjects: ["myGlobal"], + }, + ], + languageOptions: { + globals: { ...globals.browser, myGlobal: "readonly" }, + }, + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + ], + }, + { + code: "myGlobal.foo(); myOtherGlobal.bar()", + options: [ + { + globals: ["foo", "bar"], + checkGlobalObject: true, + globalObjects: ["myGlobal", "myOtherGlobal"], + }, + ], + languageOptions: { + globals: { myGlobal: "readonly", myOtherGlobal: "readonly" }, + }, + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + { + messageId: "defaultMessage", + data: { name: "bar" }, + type: "Identifier", + }, + ], + }, + { + code: "foo(); window.foo()", + options: [{ globals: ["foo"], checkGlobalObject: true }], + languageOptions: { globals: globals.browser }, + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + ], + }, + { + code: "foo(); self.foo()", + options: [{ globals: ["foo"], checkGlobalObject: true }], + languageOptions: { globals: globals.browser }, + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + ], + }, + { + code: "foo(); myGlobal.foo()", + options: [ + { + globals: ["foo"], + checkGlobalObject: true, + globalObjects: ["myGlobal"], + }, + ], + languageOptions: { + globals: { myGlobal: "readonly" }, + }, + errors: [ + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + { + messageId: "defaultMessage", + data: { name: "foo" }, + type: "Identifier", + }, + ], + }, + { + code: "function onClick(event) { console.log(event); console.log(window.event); }", + options: [ + { + globals: ["event"], + checkGlobalObject: true, + }, + ], + languageOptions: { globals: globals.browser }, + errors: [ + { + messageId: "defaultMessage", + data: { name: "event" }, + type: "Identifier", + line: 1, + column: 66, + endLine: 1, + endColumn: 71, + }, + ], + }, + { + code: "function onClick(event) { console.log(event); console.log(self.event); }", + options: [ + { + globals: ["event"], + checkGlobalObject: true, + }, + ], + languageOptions: { globals: globals.browser }, + errors: [ + { + messageId: "defaultMessage", + data: { name: "event" }, + type: "Identifier", + line: 1, + column: 64, + endLine: 1, + endColumn: 69, + }, + ], + }, + { + code: "function onClick(event) { console.log(event); console.log(globalThis.event); }", + options: [ + { + globals: ["event"], + checkGlobalObject: true, + }, + ], + languageOptions: { ecmaVersion: 2020 }, + errors: [ + { + messageId: "defaultMessage", + data: { name: "event" }, + type: "Identifier", + line: 1, + column: 70, + endLine: 1, + endColumn: 75, + }, + ], + }, + { + code: "function onClick(event) { console.log(event); console.log(myGlobal.event); }", + options: [ + { + globals: ["event"], + checkGlobalObject: true, + globalObjects: ["myGlobal"], + }, + ], + languageOptions: { globals: { myGlobal: "readonly" } }, + errors: [ + { + messageId: "defaultMessage", + data: { name: "event" }, + type: "Identifier", + line: 1, + column: 68, + endLine: 1, + endColumn: 73, + }, + ], + }, ], }); From 0d17242b3c25c2ddf8363f4560641acd1ae82ca9 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Fri, 1 Aug 2025 08:10:54 +0000 Subject: [PATCH 044/165] docs: Update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5e0c1aba199e..52cfc1f7a99c 100644 --- a/README.md +++ b/README.md @@ -328,7 +328,7 @@ to get your logo on our READMEs and [website](https://eslint.org/sponsors).

Automattic Airbnb

Gold Sponsors

Qlty Software trunk.io Shopify

Silver Sponsors

Vite Liftoff American Express StackBlitz

Bronze Sponsors

-

Cybozu Sentry Anagram Solver Icons8 Discord GitBook Nx Mercedes-Benz Group HeroCoders LambdaTest

+

Cybozu Icons8 Discord GitBook Nx Mercedes-Benz Group HeroCoders LambdaTest

Technology Sponsors

Technology sponsors allow us to use their products and services for free as part of a contribution to the open source ecosystem and our work.

Netlify Algolia 1Password

From 247e15698e34919a0cd411842fb3e14ac7a8f1ba Mon Sep 17 00:00:00 2001 From: "Yuki Takada (Yukinosuke Takada)" <42461864+Yukinosuke-Takada@users.noreply.github.com> Date: Sun, 3 Aug 2025 04:55:13 +0900 Subject: [PATCH 045/165] docs: add missing let declarations in `no-plusplus` (#19980) --- docs/src/rules/no-plusplus.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/src/rules/no-plusplus.md b/docs/src/rules/no-plusplus.md index 456cbc3a1f68..576d468775c6 100644 --- a/docs/src/rules/no-plusplus.md +++ b/docs/src/rules/no-plusplus.md @@ -42,7 +42,7 @@ foo++; let bar = 42; bar--; -for (i = 0; i < l; i++) { +for (let i = 0; i < l; i++) { doSomething(i); } ``` @@ -62,7 +62,7 @@ foo += 1; let bar = 42; bar -= 1; -for (i = 0; i < l; i += 1) { +for (let i = 0; i < l; i += 1) { doSomething(i); } ``` @@ -84,15 +84,15 @@ Examples of **correct** code for this rule with the `{ "allowForLoopAfterthought ```js /*eslint no-plusplus: ["error", { "allowForLoopAfterthoughts": true }]*/ -for (i = 0; i < l; i++) { +for (let i = 0; i < l; i++) { doSomething(i); } -for (i = l; i >= 0; i--) { +for (let i = l; i >= 0; i--) { doSomething(i); } -for (i = 0, j = l; i < l; i++, j--) { +for (let i = 0, j = l; i < l; i++, j--) { doSomething(i, j); } ``` @@ -106,15 +106,15 @@ Examples of **incorrect** code for this rule with the `{ "allowForLoopAfterthoug ```js /*eslint no-plusplus: ["error", { "allowForLoopAfterthoughts": true }]*/ -for (i = 0; i < l; j = i++) { +for (let i = 0; i < l; j = i++) { doSomething(i, j); } -for (i = l; i--;) { +for (let i = l; i--;) { doSomething(i); } -for (i = 0; i < l;) i++; +for (let i = 0; i < l;) i++; ``` ::: From 5a4b6f74320b72f9b6ad8b30f5c463b2b71315af Mon Sep 17 00:00:00 2001 From: "Yuki Takada (Yukinosuke Takada)" <42461864+Yukinosuke-Takada@users.noreply.github.com> Date: Mon, 4 Aug 2025 21:02:47 +0900 Subject: [PATCH 046/165] docs: Update no-multi-assign.md (#19979) Update no-multi-assign.md fix: typo --- docs/src/rules/no-multi-assign.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/rules/no-multi-assign.md b/docs/src/rules/no-multi-assign.md index a9d9c158eb4a..fcd6097be778 100644 --- a/docs/src/rules/no-multi-assign.md +++ b/docs/src/rules/no-multi-assign.md @@ -33,7 +33,7 @@ const foo = bar = "baz"; let d = e = - f; + c; class Foo { a = b = 10; From dc942a47daf41228d69072c52f1be20789426862 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Tue, 5 Aug 2025 08:11:00 +0000 Subject: [PATCH 047/165] docs: Update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 52cfc1f7a99c..06c109186d00 100644 --- a/README.md +++ b/README.md @@ -328,7 +328,7 @@ to get your logo on our READMEs and [website](https://eslint.org/sponsors).

Automattic Airbnb

Gold Sponsors

Qlty Software trunk.io Shopify

Silver Sponsors

Vite Liftoff American Express StackBlitz

Bronze Sponsors

-

Cybozu Icons8 Discord GitBook Nx Mercedes-Benz Group HeroCoders LambdaTest

+

Cybozu Anagram Solver Icons8 Discord GitBook Nx Mercedes-Benz Group HeroCoders LambdaTest

Technology Sponsors

Technology sponsors allow us to use their products and services for free as part of a contribution to the open source ecosystem and our work.

Netlify Algolia 1Password

From 34f0723e2d0faf8ac8dc95ec56e6d181bd6b67f2 Mon Sep 17 00:00:00 2001 From: Tanuj Kanti <86398394+Tanujkanti4441@users.noreply.github.com> Date: Thu, 7 Aug 2025 16:49:01 +0530 Subject: [PATCH 048/165] docs: playground button for TypeScript code example (#19671) * docs: add plyground button for ts code example * send languageOptions with ts code * fix lint error --- docs/.eleventy.js | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/docs/.eleventy.js b/docs/.eleventy.js index 355365ace440..3e0162794410 100644 --- a/docs/.eleventy.js +++ b/docs/.eleventy.js @@ -219,18 +219,33 @@ module.exports = function (eleventyConfig) { const isRuleRemoved = !Object.hasOwn(env.rules_meta, env.title); - /* - * TypeScript isn't yet supported on the playground: - * https://github.com/eslint/eslint.org/issues/709 - */ - if (isRuleRemoved || isTypeScriptCode) { + const tsLanguageOptions = { + languageOptions: { + ...languageOptions, + parser: "@typescript-eslint/parser", + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + sourceType: "module", + }, + }, + }; + + const languageOptionsForPlayground = languageOptions + ? { languageOptions } + : void 0; + + if (isRuleRemoved) { return `
`; } // See https://github.com/eslint/eslint.org/blob/29e1d8a000592245e4a30c1996e794643e9b263a/src/playground/App.js#L91-L105 const state = encodeToBase64( JSON.stringify({ - options: languageOptions ? { languageOptions } : void 0, + options: isTypeScriptCode + ? tsLanguageOptions + : languageOptionsForPlayground, text: code, }), ); From 732433c4fb023f45154b825cdc8cdaf1979d4336 Mon Sep 17 00:00:00 2001 From: Francesco Trotta Date: Fri, 8 Aug 2025 15:58:55 +0200 Subject: [PATCH 049/165] fix: allow any type for `meta.docs.recommended` in custom rules (#19995) --- docs/src/extend/custom-rules.md | 2 +- package.json | 6 +++--- tests/lib/types/types.test.ts | 15 +++++++++++++++ 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/docs/src/extend/custom-rules.md b/docs/src/extend/custom-rules.md index 06db29a3a7a9..82ecaec1098b 100644 --- a/docs/src/extend/custom-rules.md +++ b/docs/src/extend/custom-rules.md @@ -50,7 +50,7 @@ The source file for a rule exports an object with the following properties. Both - `docs`: (`object`) Properties often used for documentation generation and tooling. Required for core rules and optional for custom rules. Custom rules can include additional properties here as needed. - `description`: (`string`) Provides a short description of the rule. For core rules, this is used in [rules index](../rules/). - - `recommended`: (`boolean`) For core rules, this specifies whether the rule is enabled by the `recommended` config from `@eslint/js`. + - `recommended`: (`unknown`) For core rules, this is a boolean value specifying whether the rule is enabled by the `recommended` config from `@eslint/js`. - `url`: (`string`) Specifies the URL at which the full documentation can be accessed. Code editors often use this to provide a helpful link on highlighted rule violations. - `fixable`: (`string`) Either `"code"` or `"whitespace"` if the `--fix` option on the [command line](../use/command-line-interface#--fix) automatically fixes problems reported by the rule. diff --git a/package.json b/package.json index 7570ff3e359e..ef7aeed4d66a 100644 --- a/package.json +++ b/package.json @@ -107,11 +107,11 @@ "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.0", - "@eslint/config-helpers": "^0.3.0", - "@eslint/core": "^0.15.0", + "@eslint/config-helpers": "^0.3.1", + "@eslint/core": "^0.15.2", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.32.0", - "@eslint/plugin-kit": "^0.3.4", + "@eslint/plugin-kit": "^0.3.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", diff --git a/tests/lib/types/types.test.ts b/tests/lib/types/types.test.ts index b44b695d5ec6..ed5ba53b296e 100644 --- a/tests/lib/types/types.test.ts +++ b/tests/lib/types/types.test.ts @@ -897,6 +897,21 @@ type DeprecatedRuleContextKeys = }, }); +// `meta.docs.recommended` can be any type +(): JSRuleDefinition => ({ + create() { + return {}; + }, + meta: { + docs: { + recommended: { + severity: "warn", + options: ["never"], + }, + }, + }, +}); + // #endregion // #region Linter From 06a22f154c08ea044b3172b357b226d34dfefc6a Mon Sep 17 00:00:00 2001 From: Pixel998 Date: Fri, 8 Aug 2025 22:03:13 +0300 Subject: [PATCH 050/165] test: resolve flakiness in --mcp flag test (#19993) --- tests/bin/eslint.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/bin/eslint.js b/tests/bin/eslint.js index d964f76ec98f..f5b36457fd57 100644 --- a/tests/bin/eslint.js +++ b/tests/bin/eslint.js @@ -1343,6 +1343,7 @@ describe("bin/eslint.js", () => { describe("MCP server", () => { it("should start the MCP server when the --mcp flag is used", done => { const child = runESLint(["--mcp"]); + let doneCalled = false; // should not have anything on std out child.stdout.on("data", data => { @@ -1350,8 +1351,11 @@ describe("bin/eslint.js", () => { }); child.stderr.on("data", data => { - assert.match(data.toString(), /@eslint\/mcp/u); - done(); + if (!doneCalled) { + assert.match(data.toString(), /@eslint\/mcp/u); + doneCalled = true; + done(); + } }); }); }); From ad283717ed4764a171120ca7c6cba82a78fa024c Mon Sep 17 00:00:00 2001 From: Jenkins Date: Fri, 8 Aug 2025 20:05:21 +0000 Subject: [PATCH 051/165] chore: package.json update for @eslint/js release --- packages/js/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/js/package.json b/packages/js/package.json index 0c2e8bae38c5..0653097ad99c 100644 --- a/packages/js/package.json +++ b/packages/js/package.json @@ -1,6 +1,6 @@ { "name": "@eslint/js", - "version": "9.32.0", + "version": "9.33.0", "description": "ESLint JavaScript language implementation", "funding": "https://eslint.org/donate", "main": "./src/index.js", From 425804602ecb9ee5f54d1c38a473cf20538420c5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 8 Aug 2025 22:23:18 +0200 Subject: [PATCH 052/165] chore: update dependency @eslint/js to v9.33.0 (#19998) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ef7aeed4d66a..3b1ac5866ab1 100644 --- a/package.json +++ b/package.json @@ -110,7 +110,7 @@ "@eslint/config-helpers": "^0.3.1", "@eslint/core": "^0.15.2", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.32.0", + "@eslint/js": "9.33.0", "@eslint/plugin-kit": "^0.3.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", From 9534b55372dbff3bf153384ed2aaab172f998175 Mon Sep 17 00:00:00 2001 From: Jenkins Date: Fri, 8 Aug 2025 20:32:06 +0000 Subject: [PATCH 053/165] Build: changelog update for 9.33.0 --- CHANGELOG.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b642c2f45486..a584595789b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,21 @@ +v9.33.0 - August 8, 2025 + +* [`4258046`](https://github.com/eslint/eslint/commit/425804602ecb9ee5f54d1c38a473cf20538420c5) chore: update dependency @eslint/js to v9.33.0 (#19998) (renovate[bot]) +* [`ad28371`](https://github.com/eslint/eslint/commit/ad283717ed4764a171120ca7c6cba82a78fa024c) chore: package.json update for @eslint/js release (Jenkins) +* [`06a22f1`](https://github.com/eslint/eslint/commit/06a22f154c08ea044b3172b357b226d34dfefc6a) test: resolve flakiness in --mcp flag test (#19993) (Pixel998) +* [`732433c`](https://github.com/eslint/eslint/commit/732433c4fb023f45154b825cdc8cdaf1979d4336) fix: allow any type for `meta.docs.recommended` in custom rules (#19995) (Francesco Trotta) +* [`34f0723`](https://github.com/eslint/eslint/commit/34f0723e2d0faf8ac8dc95ec56e6d181bd6b67f2) docs: playground button for TypeScript code example (#19671) (Tanuj Kanti) +* [`dc942a4`](https://github.com/eslint/eslint/commit/dc942a47daf41228d69072c52f1be20789426862) docs: Update README (GitHub Actions Bot) +* [`5a4b6f7`](https://github.com/eslint/eslint/commit/5a4b6f74320b72f9b6ad8b30f5c463b2b71315af) docs: Update no-multi-assign.md (#19979) (Yuki Takada (Yukinosuke Takada)) +* [`247e156`](https://github.com/eslint/eslint/commit/247e15698e34919a0cd411842fb3e14ac7a8f1ba) docs: add missing let declarations in `no-plusplus` (#19980) (Yuki Takada (Yukinosuke Takada)) +* [`0d17242`](https://github.com/eslint/eslint/commit/0d17242b3c25c2ddf8363f4560641acd1ae82ca9) docs: Update README (GitHub Actions Bot) +* [`e07820e`](https://github.com/eslint/eslint/commit/e07820e66fd1fceaf2620dc931154955a706cc0f) feat: add global object access detection to no-restricted-globals (#19939) (sethamus) +* [`fa20b9d`](https://github.com/eslint/eslint/commit/fa20b9db8ff90ea9f0527118114dda17c656d095) docs: Clarify when to open an issue for a PR (#19974) (Nicholas C. Zakas) +* [`54920ed`](https://github.com/eslint/eslint/commit/54920ed229693f23650dace6e567bf44413aaf98) test: switch to `Linter.Config` in `ESLintRules` type tests (#19977) (Francesco Trotta) +* [`e8a6914`](https://github.com/eslint/eslint/commit/e8a6914a249d036e12494004e586b2a2b6e104d1) fix: Fixed potential bug in check-emfile-handling.js (#19975) (諏訪原慶斗) +* [`90b050e`](https://github.com/eslint/eslint/commit/90b050ec11557cab08b6be9f05fabf97dba6a63d) feat: support explicit resource management in `one-var` (#19941) (Sweta Tanwar) +* [`27fa865`](https://github.com/eslint/eslint/commit/27fa86551bd173387e29a139293de78b0e14f0f3) build: use `ESLint` class to generate formatter examples (#19972) (Milos Djermanovic) + v9.32.0 - July 25, 2025 * [`960fd40`](https://github.com/eslint/eslint/commit/960fd40dfd204af30726b49b6bec714fe49a606e) fix: Upgrade @eslint/js (#19971) (Nicholas C. Zakas) From a90d7c4fe5ef83054e29d21d7ffb442103429d03 Mon Sep 17 00:00:00 2001 From: Jenkins Date: Fri, 8 Aug 2025 20:32:07 +0000 Subject: [PATCH 054/165] 9.33.0 --- docs/package.json | 2 +- docs/src/_data/versions.json | 2 +- .../formatters/html-formatter-example.html | 6 +- docs/src/use/formatters/index.md | 568 +++++++++++++----- package.json | 2 +- 5 files changed, 427 insertions(+), 153 deletions(-) diff --git a/docs/package.json b/docs/package.json index 60834b160a74..996e68f15b6e 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,7 +1,7 @@ { "name": "docs-eslint", "private": true, - "version": "9.32.0", + "version": "9.33.0", "description": "", "main": "index.js", "keywords": [], diff --git a/docs/src/_data/versions.json b/docs/src/_data/versions.json index 45d23bf7e151..87031d6d554c 100644 --- a/docs/src/_data/versions.json +++ b/docs/src/_data/versions.json @@ -6,7 +6,7 @@ "path": "/docs/head/" }, { - "version": "9.32.0", + "version": "9.33.0", "branch": "latest", "path": "/docs/latest/" }, diff --git a/docs/src/use/formatters/html-formatter-example.html b/docs/src/use/formatters/html-formatter-example.html index cc7d6449cb2a..1b368cefc30a 100644 --- a/docs/src/use/formatters/html-formatter-example.html +++ b/docs/src/use/formatters/html-formatter-example.html @@ -118,7 +118,7 @@

ESLint Report

- 8 problems (4 errors, 4 warnings) - Generated on Fri Jul 25 2025 14:45:46 GMT+0000 (Coordinated Universal Time) + 8 problems (4 errors, 4 warnings) - Generated on Fri Aug 08 2025 20:32:08 GMT+0000 (Coordinated Universal Time)
@@ -134,7 +134,7 @@

ESLint Report

@@ -143,7 +143,7 @@

ESLint Report

diff --git a/docs/src/use/formatters/index.md b/docs/src/use/formatters/index.md index f1f688246bb6..524eb52516d4 100644 --- a/docs/src/use/formatters/index.md +++ b/docs/src/use/formatters/index.md @@ -255,11 +255,350 @@ Example output (formatted for easier reading): "warningCount": 4, "fixableErrorCount": 1, "fixableWarningCount": 4, - "source": "function addOne(i) {\n if (i != NaN) {\n return i ++\n } else {\n return\n }\n};" + "source": "function addOne(i) {\n if (i != NaN) {\n return i ++\n } else {\n return\n }\n};", + "usedDeprecatedRules": [ + { + "ruleId": "indent", + "replacedBy": [ + "@stylistic/indent" + ], + "info": { + "message": "Formatting rules are being moved out of ESLint core.", + "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", + "deprecatedSince": "8.53.0", + "availableUntil": "10.0.0", + "replacedBy": [ + { + "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", + "url": "https://eslint.style/guide/migration", + "plugin": { + "name": "@stylistic/eslint-plugin", + "url": "https://eslint.style" + }, + "rule": { + "name": "indent", + "url": "https://eslint.style/rules/indent" + } + } + ] + } + }, + { + "ruleId": "semi", + "replacedBy": [ + "@stylistic/semi" + ], + "info": { + "message": "Formatting rules are being moved out of ESLint core.", + "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", + "deprecatedSince": "8.53.0", + "availableUntil": "10.0.0", + "replacedBy": [ + { + "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", + "url": "https://eslint.style/guide/migration", + "plugin": { + "name": "@stylistic/eslint-plugin", + "url": "https://eslint.style" + }, + "rule": { + "name": "semi", + "url": "https://eslint.style/rules/semi" + } + } + ] + } + }, + { + "ruleId": "space-unary-ops", + "replacedBy": [ + "@stylistic/space-unary-ops" + ], + "info": { + "message": "Formatting rules are being moved out of ESLint core.", + "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", + "deprecatedSince": "8.53.0", + "availableUntil": "10.0.0", + "replacedBy": [ + { + "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", + "url": "https://eslint.style/guide/migration", + "plugin": { + "name": "@stylistic/eslint-plugin", + "url": "https://eslint.style" + }, + "rule": { + "name": "space-unary-ops", + "url": "https://eslint.style/rules/space-unary-ops" + } + } + ] + } + } + ] } ], "metadata": { + "cwd": "/var/lib/jenkins/workspace/eslint Release/eslint", "rulesMeta": { + "no-unused-vars": { + "type": "problem", + "docs": { + "description": "Disallow unused variables", + "recommended": true, + "url": "https://eslint.org/docs/latest/rules/no-unused-vars" + }, + "hasSuggestions": true, + "schema": [ + { + "oneOf": [ + { + "enum": [ + "all", + "local" + ] + }, + { + "type": "object", + "properties": { + "vars": { + "enum": [ + "all", + "local" + ] + }, + "varsIgnorePattern": { + "type": "string" + }, + "args": { + "enum": [ + "all", + "after-used", + "none" + ] + }, + "ignoreRestSiblings": { + "type": "boolean" + }, + "argsIgnorePattern": { + "type": "string" + }, + "caughtErrors": { + "enum": [ + "all", + "none" + ] + }, + "caughtErrorsIgnorePattern": { + "type": "string" + }, + "destructuredArrayIgnorePattern": { + "type": "string" + }, + "ignoreClassWithStaticInitBlock": { + "type": "boolean" + }, + "ignoreUsingDeclarations": { + "type": "boolean" + }, + "reportUsedIgnorePattern": { + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + ], + "messages": { + "unusedVar": "'{{varName}}' is {{action}} but never used{{additional}}.", + "usedIgnoredVar": "'{{varName}}' is marked as ignored but is used{{additional}}.", + "removeVar": "Remove unused variable '{{varName}}'." + } + }, + "use-isnan": { + "hasSuggestions": true, + "type": "problem", + "docs": { + "description": "Require calls to `isNaN()` when checking for `NaN`", + "recommended": true, + "url": "https://eslint.org/docs/latest/rules/use-isnan" + }, + "schema": [ + { + "type": "object", + "properties": { + "enforceForSwitchCase": { + "type": "boolean" + }, + "enforceForIndexOf": { + "type": "boolean" + } + }, + "additionalProperties": false + } + ], + "defaultOptions": [ + { + "enforceForIndexOf": false, + "enforceForSwitchCase": true + } + ], + "messages": { + "comparisonWithNaN": "Use the isNaN function to compare with NaN.", + "switchNaN": "'switch(NaN)' can never match a case clause. Use Number.isNaN instead of the switch.", + "caseNaN": "'case NaN' can never match. Use Number.isNaN before the switch.", + "indexOfNaN": "Array prototype method '{{ methodName }}' cannot find NaN.", + "replaceWithIsNaN": "Replace with Number.isNaN.", + "replaceWithCastingAndIsNaN": "Replace with Number.isNaN and cast to a Number.", + "replaceWithFindIndex": "Replace with Array.prototype.{{ methodName }}." + } + }, + "space-unary-ops": { + "deprecated": { + "message": "Formatting rules are being moved out of ESLint core.", + "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", + "deprecatedSince": "8.53.0", + "availableUntil": "10.0.0", + "replacedBy": [ + { + "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", + "url": "https://eslint.style/guide/migration", + "plugin": { + "name": "@stylistic/eslint-plugin", + "url": "https://eslint.style" + }, + "rule": { + "name": "space-unary-ops", + "url": "https://eslint.style/rules/space-unary-ops" + } + } + ] + }, + "type": "layout", + "docs": { + "description": "Enforce consistent spacing before or after unary operators", + "recommended": false, + "url": "https://eslint.org/docs/latest/rules/space-unary-ops" + }, + "fixable": "whitespace", + "schema": [ + { + "type": "object", + "properties": { + "words": { + "type": "boolean", + "default": true + }, + "nonwords": { + "type": "boolean", + "default": false + }, + "overrides": { + "type": "object", + "additionalProperties": { + "type": "boolean" + } + } + }, + "additionalProperties": false + } + ], + "messages": { + "unexpectedBefore": "Unexpected space before unary operator '{{operator}}'.", + "unexpectedAfter": "Unexpected space after unary operator '{{operator}}'.", + "unexpectedAfterWord": "Unexpected space after unary word operator '{{word}}'.", + "wordOperator": "Unary word operator '{{word}}' must be followed by whitespace.", + "operator": "Unary operator '{{operator}}' must be followed by whitespace.", + "beforeUnaryExpressions": "Space is required before unary expressions '{{token}}'." + } + }, + "semi": { + "deprecated": { + "message": "Formatting rules are being moved out of ESLint core.", + "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", + "deprecatedSince": "8.53.0", + "availableUntil": "10.0.0", + "replacedBy": [ + { + "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", + "url": "https://eslint.style/guide/migration", + "plugin": { + "name": "@stylistic/eslint-plugin", + "url": "https://eslint.style" + }, + "rule": { + "name": "semi", + "url": "https://eslint.style/rules/semi" + } + } + ] + }, + "type": "layout", + "docs": { + "description": "Require or disallow semicolons instead of ASI", + "recommended": false, + "url": "https://eslint.org/docs/latest/rules/semi" + }, + "fixable": "code", + "schema": { + "anyOf": [ + { + "type": "array", + "items": [ + { + "enum": [ + "never" + ] + }, + { + "type": "object", + "properties": { + "beforeStatementContinuationChars": { + "enum": [ + "always", + "any", + "never" + ] + } + }, + "additionalProperties": false + } + ], + "minItems": 0, + "maxItems": 2 + }, + { + "type": "array", + "items": [ + { + "enum": [ + "always" + ] + }, + { + "type": "object", + "properties": { + "omitLastInOneLineBlock": { + "type": "boolean" + }, + "omitLastInOneLineClassBody": { + "type": "boolean" + } + }, + "additionalProperties": false + } + ], + "minItems": 0, + "maxItems": 2 + } + ] + }, + "messages": { + "missingSemi": "Missing semicolon.", + "extraSemi": "Extra semicolon." + } + }, "no-else-return": { "type": "suggestion", "defaultOptions": [ @@ -580,151 +919,6 @@ Example output (formatted for easier reading): "wrongIndentation": "Expected indentation of {{expected}} but found {{actual}}." } }, - "space-unary-ops": { - "deprecated": { - "message": "Formatting rules are being moved out of ESLint core.", - "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", - "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", - "replacedBy": [ - { - "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", - "url": "https://eslint.style/guide/migration", - "plugin": { - "name": "@stylistic/eslint-plugin", - "url": "https://eslint.style" - }, - "rule": { - "name": "space-unary-ops", - "url": "https://eslint.style/rules/space-unary-ops" - } - } - ] - }, - "type": "layout", - "docs": { - "description": "Enforce consistent spacing before or after unary operators", - "recommended": false, - "url": "https://eslint.org/docs/latest/rules/space-unary-ops" - }, - "fixable": "whitespace", - "schema": [ - { - "type": "object", - "properties": { - "words": { - "type": "boolean", - "default": true - }, - "nonwords": { - "type": "boolean", - "default": false - }, - "overrides": { - "type": "object", - "additionalProperties": { - "type": "boolean" - } - } - }, - "additionalProperties": false - } - ], - "messages": { - "unexpectedBefore": "Unexpected space before unary operator '{{operator}}'.", - "unexpectedAfter": "Unexpected space after unary operator '{{operator}}'.", - "unexpectedAfterWord": "Unexpected space after unary word operator '{{word}}'.", - "wordOperator": "Unary word operator '{{word}}' must be followed by whitespace.", - "operator": "Unary operator '{{operator}}' must be followed by whitespace.", - "beforeUnaryExpressions": "Space is required before unary expressions '{{token}}'." - } - }, - "semi": { - "deprecated": { - "message": "Formatting rules are being moved out of ESLint core.", - "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", - "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", - "replacedBy": [ - { - "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", - "url": "https://eslint.style/guide/migration", - "plugin": { - "name": "@stylistic/eslint-plugin", - "url": "https://eslint.style" - }, - "rule": { - "name": "semi", - "url": "https://eslint.style/rules/semi" - } - } - ] - }, - "type": "layout", - "docs": { - "description": "Require or disallow semicolons instead of ASI", - "recommended": false, - "url": "https://eslint.org/docs/latest/rules/semi" - }, - "fixable": "code", - "schema": { - "anyOf": [ - { - "type": "array", - "items": [ - { - "enum": [ - "never" - ] - }, - { - "type": "object", - "properties": { - "beforeStatementContinuationChars": { - "enum": [ - "always", - "any", - "never" - ] - } - }, - "additionalProperties": false - } - ], - "minItems": 0, - "maxItems": 2 - }, - { - "type": "array", - "items": [ - { - "enum": [ - "always" - ] - }, - { - "type": "object", - "properties": { - "omitLastInOneLineBlock": { - "type": "boolean" - }, - "omitLastInOneLineClassBody": { - "type": "boolean" - } - }, - "additionalProperties": false - } - ], - "minItems": 0, - "maxItems": 2 - } - ] - }, - "messages": { - "missingSemi": "Missing semicolon.", - "extraSemi": "Extra semicolon." - } - }, "consistent-return": { "type": "suggestion", "docs": { @@ -942,7 +1136,87 @@ Example output (formatted for easier reading): "warningCount": 4, "fixableErrorCount": 1, "fixableWarningCount": 4, - "source": "function addOne(i) {\n if (i != NaN) {\n return i ++\n } else {\n return\n }\n};" + "source": "function addOne(i) {\n if (i != NaN) {\n return i ++\n } else {\n return\n }\n};", + "usedDeprecatedRules": [ + { + "ruleId": "indent", + "replacedBy": [ + "@stylistic/indent" + ], + "info": { + "message": "Formatting rules are being moved out of ESLint core.", + "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", + "deprecatedSince": "8.53.0", + "availableUntil": "10.0.0", + "replacedBy": [ + { + "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", + "url": "https://eslint.style/guide/migration", + "plugin": { + "name": "@stylistic/eslint-plugin", + "url": "https://eslint.style" + }, + "rule": { + "name": "indent", + "url": "https://eslint.style/rules/indent" + } + } + ] + } + }, + { + "ruleId": "semi", + "replacedBy": [ + "@stylistic/semi" + ], + "info": { + "message": "Formatting rules are being moved out of ESLint core.", + "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", + "deprecatedSince": "8.53.0", + "availableUntil": "10.0.0", + "replacedBy": [ + { + "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", + "url": "https://eslint.style/guide/migration", + "plugin": { + "name": "@stylistic/eslint-plugin", + "url": "https://eslint.style" + }, + "rule": { + "name": "semi", + "url": "https://eslint.style/rules/semi" + } + } + ] + } + }, + { + "ruleId": "space-unary-ops", + "replacedBy": [ + "@stylistic/space-unary-ops" + ], + "info": { + "message": "Formatting rules are being moved out of ESLint core.", + "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", + "deprecatedSince": "8.53.0", + "availableUntil": "10.0.0", + "replacedBy": [ + { + "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", + "url": "https://eslint.style/guide/migration", + "plugin": { + "name": "@stylistic/eslint-plugin", + "url": "https://eslint.style" + }, + "rule": { + "name": "space-unary-ops", + "url": "https://eslint.style/rules/space-unary-ops" + } + } + ] + } + } + ] } ] ``` diff --git a/package.json b/package.json index 3b1ac5866ab1..d6fe1bbd2397 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "eslint", - "version": "9.32.0", + "version": "9.33.0", "author": "Nicholas C. Zakas ", "description": "An AST-based pattern checker for JavaScript.", "type": "commonjs", From c36570c6657c2a92dbb4f09a8166a4d9909a091a Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Sat, 9 Aug 2025 08:09:04 +0000 Subject: [PATCH 055/165] docs: Update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 06c109186d00..d42f329f1905 100644 --- a/README.md +++ b/README.md @@ -328,7 +328,7 @@ to get your logo on our READMEs and [website](https://eslint.org/sponsors).

Automattic Airbnb

Gold Sponsors

Qlty Software trunk.io Shopify

Silver Sponsors

Vite Liftoff American Express StackBlitz

Bronze Sponsors

-

Cybozu Anagram Solver Icons8 Discord GitBook Nx Mercedes-Benz Group HeroCoders LambdaTest

+

Cybozu Sentry FORTUNE GAMES Anagram Solver Icons8 Discord GitBook Nx Mercedes-Benz Group HeroCoders LambdaTest

Technology Sponsors

Technology sponsors allow us to use their products and services for free as part of a contribution to the open source ecosystem and our work.

Netlify Algolia 1Password

From 2b87e21321422c120c2248dae25cac7f9eec0f29 Mon Sep 17 00:00:00 2001 From: "Yuki Takada (Yukinosuke Takada)" <42461864+Yukinosuke-Takada@users.noreply.github.com> Date: Sun, 10 Aug 2025 17:13:33 +0900 Subject: [PATCH 056/165] docs: [no-else-return] clarify sample code. (#19991) * Update no-else-return.md * fix: typo, grammar * fix: remove 'default' * fix: repeated listing of same option --- docs/src/rules/no-else-return.md | 94 ++++++++++++++++++++------------ 1 file changed, 59 insertions(+), 35 deletions(-) diff --git a/docs/src/rules/no-else-return.md b/docs/src/rules/no-else-return.md index c9052d3fc7a2..49a481eeb847 100644 --- a/docs/src/rules/no-else-return.md +++ b/docs/src/rules/no-else-return.md @@ -21,15 +21,6 @@ function foo() { This rule is aimed at highlighting an unnecessary block of code following an `if` containing a `return` statement. As such, it will warn when it encounters an `else` following a chain of `if`s, all of them containing a `return` statement. -## Options - -This rule has an object option: - -* `allowElseIf: true` (default) allows `else if` blocks after a `return` -* `allowElseIf: false` disallows `else if` blocks after a `return` - -### allowElseIf: true - Examples of **incorrect** code for this rule: ::: incorrect @@ -46,26 +37,14 @@ function foo1() { } function foo2() { - if (x) { - return y; - } else if (z) { - return w; - } else { - return t; - } -} - -function foo3() { if (x) { return y; } else { const t = "foo"; } - - return t; } -function foo4() { +function foo3() { if (error) { return 'It failed'; } else { @@ -76,7 +55,7 @@ function foo4() { } // Two warnings for nested occurrences -function foo5() { +function foo4() { if (x) { if (y) { return y; @@ -109,37 +88,82 @@ function foo1() { function foo2() { if (x) { return y; - } else if (z) { - const t = "foo"; - } else { - return w; } + + const t = "foo"; } function foo3() { + if (error) { + return 'It failed'; + } + + if (loading) { + return "It's still loading"; + } +} + +function foo4() { if (x) { - if (z) { + if (y) { return y; } - } else { - return z; + + return x; } + + return z; } -function foo4() { +function foo5() { + if (x) { + const t = "foo"; + } else { + return y + } +} +``` + +::: + +## Options + +### allowElseIf + +This rule has an object option: + +* `allowElseIf: true` (default) - If true, allows `else if` blocks after a `return` + +Examples of **correct** code for the default `{"allowElseIf": true}` option: + +::: correct + +```js +/*eslint no-else-return: ["error", {allowElseIf: true}]*/ + +function foo() { if (error) { return 'It failed'; } else if (loading) { return "It's still loading"; } } + +// Using multiple `if` statements instead of `else if` is also allowed +function foo2() { + if (error) { + return 'It failed'; + } + + if (loading) { + return "It's still loading"; + } +} ``` ::: -### allowElseIf: false - -Examples of **incorrect** code for this rule: +Examples of **incorrect** code for the `{"allowElseIf": false}` option: ::: incorrect @@ -157,7 +181,7 @@ function foo() { ::: -Examples of **correct** code for this rule: +Examples of **correct** code for the `{"allowElseIf": false}` option: ::: correct From 2309327554acbf011f0d17e7b36fdd68e43adf3a Mon Sep 17 00:00:00 2001 From: ghazi-git Date: Sun, 10 Aug 2025 19:25:52 +0100 Subject: [PATCH 057/165] docs: fix typo in the "Configuring Rules" section (#20001) Updated text from "by add a rules property" to "by adding a rules property" --- docs/src/use/configure/configuration-files.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/use/configure/configuration-files.md b/docs/src/use/configure/configuration-files.md index 330189b9c82e..5bc0476b0a67 100644 --- a/docs/src/use/configure/configuration-files.md +++ b/docs/src/use/configure/configuration-files.md @@ -522,7 +522,7 @@ You can override this setting using the [`--report-unused-inline-configs`](../co ### Configuring Rules -You can configure any number of rules in a configuration object by add a `rules` property containing an object with your rule configurations. The names in this object are the names of the rules and the values are the configurations for each of those rules. Here's an example: +You can configure any number of rules in a configuration object by adding a `rules` property containing an object with your rule configurations. The names in this object are the names of the rules and the values are the configurations for each of those rules. Here's an example: ```js // eslint.config.js From 7093cb8f590ec2a1b5364d7b5687e9b5f4e06f8a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Aug 2025 16:01:32 +0200 Subject: [PATCH 058/165] ci: bump actions/checkout from 4 to 5 (#20005) Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/annotate_pr.yaml | 2 +- .github/workflows/ci.yml | 8 ++++---- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/docs-ci.yml | 2 +- .github/workflows/rebuild-docs-sites.yml | 2 +- .github/workflows/types-integration.yml | 22 +++++++++++----------- .github/workflows/update-readme.yml | 2 +- 7 files changed, 20 insertions(+), 20 deletions(-) diff --git a/.github/workflows/annotate_pr.yaml b/.github/workflows/annotate_pr.yaml index a3047eadb444..42ff705d743d 100644 --- a/.github/workflows/annotate_pr.yaml +++ b/.github/workflows/annotate_pr.yaml @@ -17,7 +17,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Trunk Check uses: trunk-io/trunk-action@v1 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7129baca809b..290e1ed6ccab 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,7 +13,7 @@ jobs: name: Verify Files runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: actions/setup-node@v4 with: node-version: "lts/*" @@ -86,7 +86,7 @@ jobs: NODE_OPTIONS: "--experimental-transform-types" runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: actions/setup-node@v4 with: node-version: ${{ matrix.node }} @@ -107,7 +107,7 @@ jobs: env: TERM: xterm-256color steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: actions/setup-node@v4 with: node-version: "20" # Should be the same as the version used on Netlify to build the ESLint Playground @@ -135,7 +135,7 @@ jobs: ] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: actions/setup-node@v4 with: node-version: "lts/*" diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index b746a6fb07de..86d597ba0e3b 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -40,7 +40,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v5 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/docs-ci.yml b/.github/workflows/docs-ci.yml index 6728bfcf1a6e..b70b4b4f65d5 100644 --- a/.github/workflows/docs-ci.yml +++ b/.github/workflows/docs-ci.yml @@ -18,7 +18,7 @@ jobs: name: Verify Docs Files runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: actions/setup-node@v4 with: node-version: "lts/*" diff --git a/.github/workflows/rebuild-docs-sites.yml b/.github/workflows/rebuild-docs-sites.yml index 0bd3be8877ae..84fb3750a806 100644 --- a/.github/workflows/rebuild-docs-sites.yml +++ b/.github/workflows/rebuild-docs-sites.yml @@ -11,7 +11,7 @@ jobs: name: "Trigger rebuild on Netlify" runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: > jq -r '.items | map(.branch) | join(",")' docs/src/_data/versions.json | xargs -I{LIST} curl -X POST -d {} "${{ secrets.NETLIFY_DOCS_BUILD_HOOK }}?trigger_branch={{LIST}}" diff --git a/.github/workflows/types-integration.yml b/.github/workflows/types-integration.yml index 09bbfb3636c9..a04224824ae4 100644 --- a/.github/workflows/types-integration.yml +++ b/.github/workflows/types-integration.yml @@ -14,12 +14,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout eslint - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: path: eslint - name: Checkout eslint-webpack-plugin - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: repository: webpack-contrib/eslint-webpack-plugin path: webpack @@ -46,12 +46,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout eslint - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: path: eslint - name: Checkout neostandard - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: repository: neostandard/neostandard path: neostandard @@ -78,12 +78,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout eslint - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: path: eslint - name: Checkout eslint-flat-config-utils - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: repository: antfu/eslint-flat-config-utils path: antfu @@ -110,12 +110,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout eslint - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: path: eslint - name: Checkout eslint/js - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: repository: eslint/js path: eslint-js @@ -148,12 +148,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout eslint - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: path: eslint - name: Checkout @eslint/json - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: repository: eslint/json path: json @@ -194,7 +194,7 @@ jobs: steps: - name: Checkout ${{ matrix.package.name }} - uses: actions/checkout@v4 + uses: actions/checkout@v5 - uses: actions/setup-node@v4 with: diff --git a/.github/workflows/update-readme.yml b/.github/workflows/update-readme.yml index f902d652919d..689c2234dc70 100644 --- a/.github/workflows/update-readme.yml +++ b/.github/workflows/update-readme.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repo - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: token: ${{ secrets.WORKFLOW_PUSH_BOT_TOKEN }} From e2dc67d8b028147de4da35c64efe1d74c9f6a883 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Wed, 13 Aug 2025 23:45:10 +0900 Subject: [PATCH 059/165] ci: centralize `stale.yml` (#19994) * ci: centralize `stale.yml` * Update stale.yml * Update stale.yml --- .github/workflows/stale.yml | 30 +++++------------------------- 1 file changed, 5 insertions(+), 25 deletions(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 80cd1aa11c0e..35eb2f7d8031 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -1,33 +1,13 @@ -# This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time. -# -# You can adjust the behavior by modifying this file. -# For more information, see: -# https://github.com/actions/stale -name: Mark stale issues and pull requests +name: stale on: schedule: - - cron: "31 22 * * *" + - cron: "31 22 * * *" # Runs every day at 10:31 PM UTC permissions: read-all jobs: stale: - runs-on: ubuntu-latest - permissions: - issues: write - pull-requests: write - - steps: - - uses: actions/stale@v9 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - days-before-issue-stale: 30 - days-before-pr-stale: 10 - days-before-close: 7 - stale-issue-message: "Oops! It looks like we lost track of this issue. What do we want to do here? This issue will auto-close in 7 days without an update." - close-issue-message: "This issue was auto-closed due to inactivity. While we wish we could keep responding to every issue, we unfortunately don't have the bandwidth and need to focus on high-value issues." - stale-pr-message: "Hi everyone, it looks like we lost track of this pull request. Please review and see what the next steps are. This pull request will auto-close in 7 days without an update." - close-pr-message: "This pull request was auto-closed due to inactivity. While we wish we could keep working on every request, we unfortunately don't have the bandwidth to continue here and need to focus on other things. You can resubmit this pull request if you would like to continue working on it." - exempt-all-assignees: true - exempt-issue-labels: accepted + uses: eslint/workflows/.github/workflows/stale.yml@main + secrets: + token: ${{ secrets.GITHUB_TOKEN }} From 43a5f9e36f1aade16f81fc49ef4b333660faadab Mon Sep 17 00:00:00 2001 From: Pixel998 Date: Thu, 14 Aug 2025 19:07:23 +0300 Subject: [PATCH 060/165] feat: add eslint-plugin-regexp to eslint-config-eslint base config (#19951) * feat: add eslint-plugin-regexp to eslint-config-eslint base config * resolve linting errors * apply fasttime's suggestions * revert regex change and suppress false positive * update eslint-plugin-regexp * remove start anchor from plugin member name regex --- docs/tools/markdown-it-rule-example.js | 2 +- lib/cli-engine/file-enumerator.js | 2 +- lib/config/flat-config-schema.js | 2 +- lib/languages/js/source-code/source-code.js | 7 +++---- lib/linter/interpolate.js | 2 +- lib/linter/linter.js | 7 +++---- lib/rules/dot-notation.js | 2 +- lib/rules/indent-legacy.js | 2 +- lib/rules/no-alert.js | 2 +- lib/rules/no-empty-function.js | 2 +- lib/rules/no-irregular-whitespace.js | 4 ++-- lib/rules/no-mixed-spaces-and-tabs.js | 1 + lib/rules/no-octal.js | 5 +---- lib/rules/no-trailing-spaces.js | 3 ++- lib/rules/no-useless-escape.js | 2 +- lib/rules/prefer-regex-literals.js | 2 +- lib/rules/utils/ast-utils.js | 2 +- lib/rules/utils/char-source.js | 2 +- lib/rules/yoda.js | 4 ++-- lib/shared/naming.js | 2 +- packages/eslint-config-eslint/base.js | 10 +++++++++- packages/eslint-config-eslint/package.json | 1 + .../linter/code-path-analysis/code-path-analyzer.js | 6 +++--- tests/lib/rules/utils/ast-utils.js | 6 +++--- tests/lib/shared/runtime-info.js | 4 ++-- tools/update-readme.js | 4 ++-- tools/update-rule-type-headers.js | 2 +- 27 files changed, 48 insertions(+), 42 deletions(-) diff --git a/docs/tools/markdown-it-rule-example.js b/docs/tools/markdown-it-rule-example.js index 94f6d1e04dbf..1e37b00411be 100644 --- a/docs/tools/markdown-it-rule-example.js +++ b/docs/tools/markdown-it-rule-example.js @@ -73,7 +73,7 @@ function markdownItRuleExample({ open, close }) { } const { type, languageOptionsJSON } = - /^\s*(?\S+)(\s+(?\S.*?))?\s*$/u.exec( + /^\s*(?\S+)(?:\s+(?\S(?:.*\S)?))?/u.exec( tagToken.info, ).groups; const languageOptions = languageOptionsJSON diff --git a/lib/cli-engine/file-enumerator.js b/lib/cli-engine/file-enumerator.js index a07886219739..91c4013c995c 100644 --- a/lib/cli-engine/file-enumerator.js +++ b/lib/cli-engine/file-enumerator.js @@ -51,7 +51,7 @@ const debug = require("debug")("eslint:file-enumerator"); //------------------------------------------------------------------------------ const minimatchOpts = { dot: true, matchBase: true }; -const dotfilesPattern = /(?:(?:^\.)|(?:[/\\]\.))[^/\\.].*/u; +const dotfilesPattern = /(?:^\.|[/\\]\.)[^/\\.].*/u; const NONE = 0; const IGNORED_SILENTLY = 1; const IGNORED = 2; diff --git a/lib/config/flat-config-schema.js b/lib/config/flat-config-schema.js index ff977a7679e5..f393a99988b7 100644 --- a/lib/config/flat-config-schema.js +++ b/lib/config/flat-config-schema.js @@ -230,7 +230,7 @@ function assertIsRuleSeverity(ruleId, value) { * @throws {TypeError} If the string isn't in the correct format. */ function assertIsPluginMemberName(value) { - if (!/[@a-z0-9-_$]+(?:\/(?:[a-z0-9-_$]+))+$/iu.test(value)) { + if (!/[\w\-@$]+(?:\/[\w\-$]+)+$/iu.test(value)) { throw new TypeError( `Expected string in the form "pluginName/objectName" but found "${value}".`, ); diff --git a/lib/languages/js/source-code/source-code.js b/lib/languages/js/source-code/source-code.js index b5ae715a2e22..783b26c2b079 100644 --- a/lib/languages/js/source-code/source-code.js +++ b/lib/languages/js/source-code/source-code.js @@ -1056,7 +1056,7 @@ class SourceCode extends TokenStore { // only certain comment types are supported as line comments return ( comment.type !== "Line" || - !!/^eslint-disable-(next-)?line$/u.test(directive.label) + !!/^eslint-disable-(?:next-)?line$/u.test(directive.label) ); }); @@ -1091,9 +1091,8 @@ class SourceCode extends TokenStore { } = commentParser.parseDirective(comment.value); // Step 2: Extract the directive value - const lineCommentSupported = /^eslint-disable-(next-)?line$/u.test( - label, - ); + const lineCommentSupported = + /^eslint-disable-(?:next-)?line$/u.test(label); if (comment.type === "Line" && !lineCommentSupported) { return; diff --git a/lib/linter/interpolate.js b/lib/linter/interpolate.js index b1275181aed3..6327f76e7f1e 100644 --- a/lib/linter/interpolate.js +++ b/lib/linter/interpolate.js @@ -14,7 +14,7 @@ * @returns {RegExp} Global regular expression matching placeholders */ function getPlaceholderMatcher() { - return /\{\{([^{}]+?)\}\}/gu; + return /\{\{([^{}]+)\}\}/gu; } /** diff --git a/lib/linter/linter.js b/lib/linter/linter.js index f46f5e32e6b2..a806aa1aa7db 100644 --- a/lib/linter/linter.js +++ b/lib/linter/linter.js @@ -438,9 +438,8 @@ function getDirectiveComments( justification: justificationPart, } = directive; - const lineCommentSupported = /^eslint-disable-(next-)?line$/u.test( - label, - ); + const lineCommentSupported = + /^eslint-disable-(?:next-)?line$/u.test(label); if (comment.type === "Line" && !lineCommentSupported) { return; @@ -739,7 +738,7 @@ function normalizeEcmaVersionForLanguageOptions(ecmaVersion) { return LATEST_ECMA_VERSION; } -const eslintEnvPattern = /\/\*\s*eslint-env\s(.+?)(?:\*\/|$)/gsu; +const eslintEnvPattern = /\/\*\s*eslint-env\s.+?(?:\*\/|$)/gsu; /** * Checks whether or not there is a comment which has "eslint-env *" in a given text. diff --git a/lib/rules/dot-notation.js b/lib/rules/dot-notation.js index 707789a16003..d6e4d05ce41e 100644 --- a/lib/rules/dot-notation.js +++ b/lib/rules/dot-notation.js @@ -15,7 +15,7 @@ const keywords = require("./utils/keywords"); // Rule Definition //------------------------------------------------------------------------------ -const validIdentifier = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/u; +const validIdentifier = /^[a-zA-Z_$][\w$]*$/u; // `null` literal must be handled separately. const literalTypesToCheck = new Set(["string", "boolean"]); diff --git a/lib/rules/indent-legacy.js b/lib/rules/indent-legacy.js index 447b89129e3d..9261fe29697a 100644 --- a/lib/rules/indent-legacy.js +++ b/lib/rules/indent-legacy.js @@ -1162,7 +1162,7 @@ module.exports = { * @returns {boolean} the result */ function isWrappedInParenthesis(node) { - const regex = /^return\s*?\(\s*?\);*?/u; + const regex = /^return\s*\(\s*\)/u; const statementWithoutArgument = sourceCode .getText(node) diff --git a/lib/rules/no-alert.js b/lib/rules/no-alert.js index c77cd1c66699..d1a3c5baadf5 100644 --- a/lib/rules/no-alert.js +++ b/lib/rules/no-alert.js @@ -24,7 +24,7 @@ const { * @returns {boolean} Whether or not the name is prohibited. */ function isProhibitedIdentifier(name) { - return /^(alert|confirm|prompt)$/u.test(name); + return /^(?:alert|confirm|prompt)$/u.test(name); } /** diff --git a/lib/rules/no-empty-function.js b/lib/rules/no-empty-function.js index 8bf6e0028d85..b83bdd1564e2 100644 --- a/lib/rules/no-empty-function.js +++ b/lib/rules/no-empty-function.js @@ -162,7 +162,7 @@ module.exports = { } } - if (/(g|s)etters|methods$/iu.test(kind)) { + if (/(?:g|s)etters|methods$/iu.test(kind)) { if ( (node.parent.decorators?.length && allow.includes("decoratedFunctions")) || diff --git a/lib/rules/no-irregular-whitespace.js b/lib/rules/no-irregular-whitespace.js index 60669c7c21f9..4aaaad1d267f 100644 --- a/lib/rules/no-irregular-whitespace.js +++ b/lib/rules/no-irregular-whitespace.js @@ -19,8 +19,8 @@ const astUtils = require("./utils/ast-utils"); const ALL_IRREGULARS = /[\f\v\u0085\ufeff\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u202f\u205f\u3000\u2028\u2029]/u; const IRREGULAR_WHITESPACE = - /[\f\v\u0085\ufeff\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u202f\u205f\u3000]+/gmu; -const IRREGULAR_LINE_TERMINATORS = /[\u2028\u2029]/gmu; + /[\f\v\u0085\ufeff\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u202f\u205f\u3000]+/gu; +const IRREGULAR_LINE_TERMINATORS = /[\u2028\u2029]/gu; const LINE_BREAK = astUtils.createGlobalLinebreakMatcher(); //------------------------------------------------------------------------------ diff --git a/lib/rules/no-mixed-spaces-and-tabs.js b/lib/rules/no-mixed-spaces-and-tabs.js index 3a365724d102..a915ac8988f4 100644 --- a/lib/rules/no-mixed-spaces-and-tabs.js +++ b/lib/rules/no-mixed-spaces-and-tabs.js @@ -99,6 +99,7 @@ module.exports = { * At least one space followed by a tab * before non-tab/-space characters begin. */ + // eslint-disable-next-line regexp/no-empty-lookarounds-assertion -- False positive regex = /^(?=(\t*))\1(?=( +))\2\t/u; } diff --git a/lib/rules/no-octal.js b/lib/rules/no-octal.js index 28dd9108bbd9..e5ea9bda0b01 100644 --- a/lib/rules/no-octal.js +++ b/lib/rules/no-octal.js @@ -30,10 +30,7 @@ module.exports = { create(context) { return { Literal(node) { - if ( - typeof node.value === "number" && - /^0[0-9]/u.test(node.raw) - ) { + if (typeof node.value === "number" && /^0\d/u.test(node.raw)) { context.report({ node, messageId: "noOctal", diff --git a/lib/rules/no-trailing-spaces.js b/lib/rules/no-trailing-spaces.js index d8e1ddc46589..f101f72fdffc 100644 --- a/lib/rules/no-trailing-spaces.js +++ b/lib/rules/no-trailing-spaces.js @@ -82,7 +82,8 @@ module.exports = { create(context) { const sourceCode = context.sourceCode; - const BLANK_CLASS = "[ \t\u00a0\u2000-\u200b\u3000]", + const BLANK_CLASS = + "[ \t\u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u3000]", SKIP_BLANK = `^${BLANK_CLASS}*$`, NONBLANK = `${BLANK_CLASS}+$`; diff --git a/lib/rules/no-useless-escape.js b/lib/rules/no-useless-escape.js index 541b3a527d29..480b5159773a 100644 --- a/lib/rules/no-useless-escape.js +++ b/lib/rules/no-useless-escape.js @@ -387,7 +387,7 @@ module.exports = { const value = isTemplateElement ? sourceCode.getText(node) : node.raw; - const pattern = /\\[^\d]/gu; + const pattern = /\\\D/gu; let match; while ((match = pattern.exec(value))) { diff --git a/lib/rules/prefer-regex-literals.js b/lib/rules/prefer-regex-literals.js index ce2e82358dac..f1414dfa91a3 100644 --- a/lib/rules/prefer-regex-literals.js +++ b/lib/rules/prefer-regex-literals.js @@ -522,7 +522,7 @@ module.exports = { } if ( - !/^[-a-zA-Z0-9\\[\](){} \t\r\n\v\f!@#$%^&*+^_=/~`.>[\dA-Fa-f]+)\}/uy; + const regExp = /\{(?[\dA-F]+)\}/iuy; regExp.lastIndex = reader.pos; const match = regExp.exec(reader.source); diff --git a/lib/rules/yoda.js b/lib/rules/yoda.js index 6b6893498fe0..1ee74712da09 100644 --- a/lib/rules/yoda.js +++ b/lib/rules/yoda.js @@ -20,7 +20,7 @@ const astUtils = require("./utils/ast-utils"); * @returns {boolean} Whether or not it is a comparison operator. */ function isComparisonOperator(operator) { - return /^(==|===|!=|!==|<|>|<=|>=)$/u.test(operator); + return /^(?:==|===|!=|!==|<|>|<=|>=)$/u.test(operator); } /** @@ -29,7 +29,7 @@ function isComparisonOperator(operator) { * @returns {boolean} Whether or not it is an equality operator. */ function isEqualityOperator(operator) { - return /^(==|===)$/u.test(operator); + return /^(?:==|===)$/u.test(operator); } /** diff --git a/lib/shared/naming.js b/lib/shared/naming.js index a9d065f82a4b..86621d138263 100644 --- a/lib/shared/naming.js +++ b/lib/shared/naming.js @@ -4,7 +4,7 @@ "use strict"; -const NAMESPACE_REGEX = /^@.*\//iu; +const NAMESPACE_REGEX = /^@.*\//u; /** * Brings package name to correct format based on prefix diff --git a/packages/eslint-config-eslint/base.js b/packages/eslint-config-eslint/base.js index bd0cbd59d3b4..ba0cb0ae2304 100644 --- a/packages/eslint-config-eslint/base.js +++ b/packages/eslint-config-eslint/base.js @@ -4,6 +4,7 @@ const js = require("@eslint/js"); const jsdoc = require("eslint-plugin-jsdoc"); const eslintCommentsPluginConfigs = require("@eslint-community/eslint-plugin-eslint-comments/configs"); const unicorn = require("eslint-plugin-unicorn"); +const regexp = require("eslint-plugin-regexp"); // extends eslint recommended config /** @@ -294,6 +295,12 @@ const eslintCommentsConfigs = [ }, ]; +// extends eslint-plugin-regexp's recommended config +/** + * @type {import("eslint").Linter.Config[]} + */ +const regexpConfigs = [regexp.configs["flat/recommended"]]; + /** * @type {import("eslint").Linter.Config[]} */ @@ -305,8 +312,9 @@ module.exports = [ reportUnusedInlineConfigs: "error", }, }, - ...jsConfigs, ...unicornConfigs, ...jsdocConfigs, ...eslintCommentsConfigs, + ...regexpConfigs, + ...jsConfigs, ]; diff --git a/packages/eslint-config-eslint/package.json b/packages/eslint-config-eslint/package.json index 79fa33d21036..06cd2d3c7e40 100644 --- a/packages/eslint-config-eslint/package.json +++ b/packages/eslint-config-eslint/package.json @@ -66,6 +66,7 @@ "@eslint/js": "^9.0.0", "eslint-plugin-jsdoc": "^48.2.3", "eslint-plugin-n": "^17.11.1", + "eslint-plugin-regexp": "^2.10.0", "eslint-plugin-unicorn": "^52.0.0" }, "devDependencies": { diff --git a/tests/lib/linter/code-path-analysis/code-path-analyzer.js b/tests/lib/linter/code-path-analysis/code-path-analyzer.js index ba8a489be651..cb21548ef310 100644 --- a/tests/lib/linter/code-path-analysis/code-path-analyzer.js +++ b/tests/lib/linter/code-path-analysis/code-path-analyzer.js @@ -21,8 +21,8 @@ const assert = require("node:assert"), // Helpers //------------------------------------------------------------------------------ -const expectedPattern = /\/\*expected\s+((?:.|[\r\n])+?)\s*\*\//gu; -const languageOptionsPattern = /\/\*languageOptions\s+((?:.|[\r\n])+?)\s*\*\//u; +const expectedPattern = /\/\*expected\s((?:.|[\r\n])+?)\*\//gu; +const languageOptionsPattern = /\/\*languageOptions\s((?:.|[\r\n])+?)\*\//u; const lineEndingPattern = /\r?\n/gu; const linter = new Linter(); @@ -39,7 +39,7 @@ function getExpectedDotArrows(source) { let m; while ((m = expectedPattern.exec(source)) !== null) { - retv.push(m[1].replace(lineEndingPattern, "\n")); + retv.push(m[1].trim().replace(lineEndingPattern, "\n")); } return retv; diff --git a/tests/lib/rules/utils/ast-utils.js b/tests/lib/rules/utils/ast-utils.js index 30a43bdf9cc4..4c73a7285468 100644 --- a/tests/lib/rules/utils/ast-utils.js +++ b/tests/lib/rules/utils/ast-utils.js @@ -2152,12 +2152,12 @@ describe("ast-utils", () => { { nodeA: { type: "Literal", - value: /(?:)/u, + value: /(?:)/u, // eslint-disable-line regexp/no-empty-group -- Test data for regex comparison regex: { pattern: "(?:)", flags: "u" }, }, nodeB: { type: "Literal", - value: /(?:)/u, + value: /(?:)/u, // eslint-disable-line regexp/no-empty-group -- Test data for regex comparison regex: { pattern: "(?:)", flags: "u" }, }, expected: true, @@ -2183,7 +2183,7 @@ describe("ast-utils", () => { }, nodeB: { type: "Literal", - value: /(?:)/, // eslint-disable-line require-unicode-regexp -- Checking non-Unicode regex + value: /(?:)/, // eslint-disable-line require-unicode-regexp, regexp/no-empty-group -- Checking non-Unicode regex regex: { pattern: "(?:)", flags: "" }, }, expected: false, diff --git a/tests/lib/shared/runtime-info.js b/tests/lib/shared/runtime-info.js index ed39eeda13c3..4a1cdf1bc90a 100644 --- a/tests/lib/shared/runtime-info.js +++ b/tests/lib/shared/runtime-info.js @@ -222,7 +222,7 @@ describe("RuntimeInfo", () => { assert.throws( RuntimeInfo.environment, - /^Unexpected token .*T.* JSON/u, + /^Unexpected token [^\n\rT\u2028\u2029]*T.* JSON/u, ); assert.strictEqual( logErrorStub.args[0][0], @@ -236,7 +236,7 @@ describe("RuntimeInfo", () => { assert.throws( RuntimeInfo.environment, - /^Unexpected token .*T.* JSON/u, + /^Unexpected token [^\n\rT\u2028\u2029]*T.* JSON/u, ); assert.strictEqual( logErrorStub.args[0][0], diff --git a/tools/update-readme.js b/tools/update-readme.js index 1308e49f1f5e..74453c6533fa 100644 --- a/tools/update-readme.js +++ b/tools/update-readme.js @@ -122,7 +122,7 @@ const HTML_TEMPLATE = stripIndents` // replace all of the section let newReadme = readme.replace( - /[\w\W]*?/u, + /[\s\S]*?/u, ejs.render(HTML_TEMPLATE, { team, formatTeamMembers, @@ -130,7 +130,7 @@ const HTML_TEMPLATE = stripIndents` ); newReadme = newReadme.replace( - /[\w\W]*?/u, + /[\s\S]*?/u, `\n\n${allSponsors}\n\n`, ); diff --git a/tools/update-rule-type-headers.js b/tools/update-rule-type-headers.js index 9328a9092727..9dbe9381e5bd 100644 --- a/tools/update-rule-type-headers.js +++ b/tools/update-rule-type-headers.js @@ -191,7 +191,7 @@ function getTextPositionsMap(sourceText, consideredRuleIds) { */ function paraphraseDescription(description) { let newDescription; - const match = /^(Disallow|Enforce|Require) /u.exec(description); + const match = /^(?:Disallow|Enforce|Require) /u.exec(description); if (match) { newDescription = `Rule to ${description[0].toLowerCase()}${description.slice(1)}`; From bf2622991f5b892610a8c3343ff16519e5fd7a79 Mon Sep 17 00:00:00 2001 From: Tobias Hernstig <30827238+thernstig@users.noreply.github.com> Date: Thu, 14 Aug 2025 20:21:39 +0200 Subject: [PATCH 061/165] docs: Fix typo in core-concepts/index.md (#20009) Update index.md Spelling error sharable -> shareable --- docs/src/use/core-concepts/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/use/core-concepts/index.md b/docs/src/use/core-concepts/index.md index d768e42d74f6..015abea6c41a 100644 --- a/docs/src/use/core-concepts/index.md +++ b/docs/src/use/core-concepts/index.md @@ -50,7 +50,7 @@ For more information, refer to [Configuration Files](../configure/configuration- Shareable configurations are ESLint configurations that are shared via npm. -Often shareable configurations are used to enforce style guides using ESLint's built-in rules. For example the sharable configuration [eslint-config-airbnb-base](https://www.npmjs.com/package/eslint-config-airbnb-base) implements the popular Airbnb JavaScript style guide. +Often shareable configurations are used to enforce style guides using ESLint's built-in rules. For example the shareable configuration [eslint-config-airbnb-base](https://www.npmjs.com/package/eslint-config-airbnb-base) implements the popular Airbnb JavaScript style guide. For more information, refer to [Using a Shareable Configuration Package](../configure/configuration-files#using-a-shareable-configuration-package). From 0bb777a82b533df595cd520d9c89d291efa14a33 Mon Sep 17 00:00:00 2001 From: Francesco Trotta Date: Fri, 15 Aug 2025 13:37:56 +0200 Subject: [PATCH 062/165] feat: multithread linting (#19794) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: multithread linting * fix build * clean up CLI code * add more tests * add tests and print debug timing info * more unit tests for lint results * don't use Retrier in worker threads * improve flaky test * pre-load config arrays * use shared environment variables * update warning count tests * improve error handling in `fromOptionModule` * add more tests for option modules * require URL objects in `fromOptionModule` * stylistic changes * map worker count 1 to 0 * add poor concurrency warning * improve documentation * Helpers → Internal Helpers * remove `exports` assignment * define "net linting ratio" * "option module" → "options module" * add comment * string `configType` argument in `translateOptions` * skip caching ignored files * update import Co-authored-by: Milos Djermanovic * replace `URL` type and check argument prototype in `fromOptionsModule` --------- Co-authored-by: Milos Djermanovic --- docs/src/integrate/nodejs-api.md | 46 + docs/src/use/command-line-interface.md | 107 +- lib/cli.js | 328 +---- lib/eslint/eslint-helpers.js | 432 ++++++- lib/eslint/eslint.js | 688 +++++----- lib/eslint/worker.js | 164 +++ lib/options.js | 32 +- lib/services/warning-service.js | 13 + lib/shared/translate-cli-options.js | 281 ++++ lib/types/index.d.ts | 5 + tests/bin/eslint.js | 130 ++ tests/fixtures/option-modules/empty.mjs | 1 + .../option-modules/test-only-enum-flag.cts | 7 + .../option-modules/test-only-enum-flag.mts | 7 + .../option-modules/test-only-flag.cjs | 3 + .../option-modules/test-only-flag.cts | 7 + .../option-modules/test-only-flag.mjs | 3 + .../option-modules/test-only-flag.mts | 7 + tests/lib/cli.js | 86 ++ tests/lib/eslint/eslint.js | 1137 +++++++++++++++-- tests/lib/services/warning-service.js | 13 + tests/lib/types/types.test.ts | 14 + 22 files changed, 2764 insertions(+), 747 deletions(-) create mode 100644 lib/eslint/worker.js create mode 100644 lib/shared/translate-cli-options.js create mode 100644 tests/fixtures/option-modules/empty.mjs create mode 100644 tests/fixtures/option-modules/test-only-enum-flag.cts create mode 100644 tests/fixtures/option-modules/test-only-enum-flag.mts create mode 100644 tests/fixtures/option-modules/test-only-flag.cjs create mode 100644 tests/fixtures/option-modules/test-only-flag.cts create mode 100644 tests/fixtures/option-modules/test-only-flag.mjs create mode 100644 tests/fixtures/option-modules/test-only-flag.mts diff --git a/docs/src/integrate/nodejs-api.md b/docs/src/integrate/nodejs-api.md index 2494ae8d9115..6c83ac557aa1 100644 --- a/docs/src/integrate/nodejs-api.md +++ b/docs/src/integrate/nodejs-api.md @@ -171,6 +171,8 @@ The `ESLint` constructor takes an `options` object. If you omit the `options` ob ##### Other Options +- `options.concurrency` (`number | "auto" | "off"`)
+ Default is `"off"`. By default, ESLint lints all files in the calling thread. If this option specifies an integer, ESLint will use up to that number of worker threads to lint files concurrently. `"auto"` chooses a setting automatically. When this option is specified all other options must be [cloneable](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm). - `options.flags` (`string[]`)
Default is `[]`. The feature flags to enable for this instance. @@ -340,6 +342,50 @@ The default configuration that ESLint uses internally. This is provided for tool This is a static property. +### ◆ ESLint.fromOptionsModule(optionsURL) + +```js +const eslint = await ESLint.fromOptionsModule(optionsURL); +``` + +This method creates an instance of the `ESLint` class with options loaded from a module, for example: + +```js +// eslint-options.js + +import config from "./my-eslint-config.js"; + +export default { + concurrency: "auto", + overrideConfig: config, + overrideConfigFile: true, + stats: true, +}; +``` + +```js +// main.js + +... +const optionsURL = new URL("./eslint-options.js", import.meta.url); +const eslint = await ESLint.fromOptionsModule(optionsURL); +... +``` + +The `concurrency` option requires all other options to be cloneable so that they can be passed to worker threads, but this restriction does not apply when options are loaded from a module, because in that case worker threads are passed the module URL instead of the options object. + +This is a static method. + +#### Parameters + +- `optionsURL` (`URL`)
+ The URL of the options module. This can be any valid URL, like a file URL or a data URL. + +#### Return Value + +- (`Promise`)
+ A new instance of the `ESLint` class. + ### ◆ ESLint.outputFixes(results) ```js diff --git a/docs/src/use/command-line-interface.md b/docs/src/use/command-line-interface.md index c31fb03bfe1c..606b2e8a839f 100644 --- a/docs/src/use/command-line-interface.md +++ b/docs/src/use/command-line-interface.md @@ -88,76 +88,74 @@ You can view all the CLI options by running `npx eslint -h`. eslint [options] file.js [file.js] [dir] Basic configuration: - --no-config-lookup Disable look up for eslint.config.js - -c, --config path::String Use this configuration instead of eslint.config.js, eslint.config.mjs, or - eslint.config.cjs - --inspect-config Open the config inspector with the current configuration - --ext [String] Specify additional file extensions to lint - --global [String] Define global variables - --parser String Specify the parser to be used - --parser-options Object Specify parser options + --no-config-lookup Disable look up for eslint.config.js + -c, --config path::String Use this configuration instead of eslint.config.js, eslint.config.mjs, or eslint.config.cjs + --inspect-config Open the config inspector with the current configuration + --ext [String] Specify additional file extensions to lint + --global [String] Define global variables + --parser String Specify the parser to be used + --parser-options Object Specify parser options Specify Rules and Plugins: - --plugin [String] Specify plugins - --rule Object Specify rules + --plugin [String] Specify plugins + --rule Object Specify rules Fix Problems: - --fix Automatically fix problems - --fix-dry-run Automatically fix problems without saving the changes to the file system - --fix-type Array Specify the types of fixes to apply (directive, problem, suggestion, layout) + --fix Automatically fix problems + --fix-dry-run Automatically fix problems without saving the changes to the file system + --fix-type Array Specify the types of fixes to apply (directive, problem, suggestion, layout) Ignore Files: - --no-ignore Disable use of ignore files and patterns - --ignore-pattern [String] Patterns of files to ignore + --no-ignore Disable use of ignore files and patterns + --ignore-pattern [String] Patterns of files to ignore Use stdin: - --stdin Lint code provided on - default: false - --stdin-filename String Specify filename to process STDIN as + --stdin Lint code provided on - default: false + --stdin-filename String Specify filename to process STDIN as Handle Warnings: - --quiet Report errors only - default: false - --max-warnings Int Number of warnings to trigger nonzero exit code - default: -1 + --quiet Report errors only - default: false + --max-warnings Int Number of warnings to trigger nonzero exit code - default: -1 Output: - -o, --output-file path::String Specify file to write report to - -f, --format String Use a specific output format - default: stylish - --color, --no-color Force enabling/disabling of color + -o, --output-file path::String Specify file to write report to + -f, --format String Use a specific output format - default: stylish + --color, --no-color Force enabling/disabling of color Inline configuration comments: - --no-inline-config Prevent comments from changing config or rules + --no-inline-config Prevent comments from changing config or rules --report-unused-disable-directives Adds reported errors for unused eslint-disable and eslint-enable directives - --report-unused-disable-directives-severity String Chooses severity level for reporting unused eslint-disable and - eslint-enable directives - either: off, warn, error, 0, 1, or 2 + --report-unused-disable-directives-severity String Chooses severity level for reporting unused eslint-disable and eslint-enable directives - either: off, warn, error, 0, 1, or 2 --report-unused-inline-configs String Adds reported errors for unused eslint inline config comments - either: off, warn, error, 0, 1, or 2 Caching: - --cache Only check changed files - default: false - --cache-file path::String Path to the cache file. Deprecated: use --cache-location - default: .eslintcache - --cache-location path::String Path to the cache file or directory - --cache-strategy String Strategy to use for detecting changed files in the cache - either: metadata or - content - default: metadata + --cache Only check changed files - default: false + --cache-file path::String Path to the cache file. Deprecated: use --cache-location - default: .eslintcache + --cache-location path::String Path to the cache file or directory + --cache-strategy String Strategy to use for detecting changed files in the cache - either: metadata or content - default: metadata Suppressing Violations: - --suppress-all Suppress all violations - default: false - --suppress-rule [String] Suppress specific rules + --suppress-all Suppress all violations - default: false + --suppress-rule [String] Suppress specific rules --suppressions-location path::String Specify the location of the suppressions file - --prune-suppressions Prune unused suppressions - default: false - --pass-on-unpruned-suppressions Ignore unused suppressions - default: false + --prune-suppressions Prune unused suppressions - default: false + --pass-on-unpruned-suppressions Ignore unused suppressions - default: false Miscellaneous: - --init Run config initialization wizard - default: false - --env-info Output execution environment information - default: false + --init Run config initialization wizard - default: false + --env-info Output execution environment information - default: false --no-error-on-unmatched-pattern Prevent errors when pattern is unmatched - --exit-on-fatal-error Exit with exit code 2 in case of fatal error - default: false - --no-warn-ignored Suppress warnings when the file list includes ignored files - --pass-on-no-patterns Exit with exit code 0 in case no file patterns are passed - --debug Output debugging information - -h, --help Show help - -v, --version Output the version number - --print-config path::String Print the configuration for the given file - --stats Add statistics to the lint report - default: false - --flag [String] Enable a feature flag - --mcp Start the ESLint MCP server + --exit-on-fatal-error Exit with exit code 2 in case of fatal error - default: false + --no-warn-ignored Suppress warnings when the file list includes ignored files + --pass-on-no-patterns Exit with exit code 0 in case no file patterns are passed + --debug Output debugging information + -h, --help Show help + -v, --version Output the version number + --print-config path::String Print the configuration for the given file + --stats Add statistics to the lint report - default: false + --flag [String] Enable a feature flag + --mcp Start the ESLint MCP server + --concurrency Int|String Number of linting threads, auto to choose automatically, off for no multithreading - default: off ``` ### Basic Configuration @@ -1100,6 +1098,23 @@ This option starts the ESLint MCP server for use with AI agents. args: ["--mcp"] }) }} +#### `--concurrency` + +This option controls the number of worker threads used to lint files. + +- **Argument Type**: Int|String. A positive integer, `auto` or `off`. +- **Multiple Arguments**: No +- **Default Value**: `off` + +The value `off` causes all files to be linted in the main thread. The value `auto` attempts to determine the best setting automatically. + +##### `--concurrency` example + +{{ npx_tabs ({ + package: "eslint", + args: ["--concurrency", "auto"] +}) }} + ## Exit Codes When linting files, ESLint exits with one of the following exit codes: diff --git a/lib/cli.js b/lib/cli.js index a6babe868ecc..4e81721a92bc 100644 --- a/lib/cli.js +++ b/lib/cli.js @@ -16,8 +16,9 @@ //------------------------------------------------------------------------------ const fs = require("node:fs"), + { mkdir, stat, writeFile } = require("node:fs/promises"), path = require("node:path"), - { promisify } = require("node:util"), + { pathToFileURL } = require("node:url"), { LegacyESLint } = require("./eslint"), { ESLint, @@ -27,282 +28,23 @@ const fs = require("node:fs"), createCLIOptions = require("./options"), log = require("./shared/logging"), RuntimeInfo = require("./shared/runtime-info"), - { normalizeSeverityToString } = require("./shared/severity"); -const { ModuleImporter } = require("@humanwhocodes/module-importer"); + translateOptions = require("./shared/translate-cli-options"); const { getCacheFile } = require("./eslint/eslint-helpers"); const { SuppressionsService } = require("./services/suppressions-service"); const debug = require("debug")("eslint:cli"); -const { - normalizePackageName, - getShorthandName, -} = require("./shared/naming.js"); //------------------------------------------------------------------------------ // Types //------------------------------------------------------------------------------ -/** @import { ESLintOptions } from "./eslint/eslint.js" */ - /** @typedef {import("./options").ParsedCLIOptions} ParsedCLIOptions */ -/** @typedef {import("./types").Linter.LintMessage} LintMessage */ /** @typedef {import("./types").ESLint.LintResult} LintResult */ -/** @typedef {import("./types").ESLint.Plugin} Plugin */ /** @typedef {import("./types").ESLint.ResultsMeta} ResultsMeta */ //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ -const mkdir = promisify(fs.mkdir); -const stat = promisify(fs.stat); -const writeFile = promisify(fs.writeFile); - -/** - * Loads plugins with the specified names. - * @param {{ "import": (name: string) => Promise }} importer An object with an `import` method called once for each plugin. - * @param {string[]} pluginNames The names of the plugins to be loaded, with or without the "eslint-plugin-" prefix. - * @returns {Promise>} A mapping of plugin short names to implementations. - */ -async function loadPlugins(importer, pluginNames) { - const plugins = {}; - - await Promise.all( - pluginNames.map(async pluginName => { - const longName = normalizePackageName(pluginName, "eslint-plugin"); - const module = await importer.import(longName); - - if (!("default" in module)) { - throw new Error( - `"${longName}" cannot be used with the \`--plugin\` option because its default module does not provide a \`default\` export`, - ); - } - - const shortName = getShorthandName(pluginName, "eslint-plugin"); - - plugins[shortName] = module.default; - }), - ); - - return plugins; -} - -/** - * Predicate function for whether or not to apply fixes in quiet mode. - * If a message is a warning, do not apply a fix. - * @param {LintMessage} message The lint result. - * @returns {boolean} True if the lint message is an error (and thus should be - * autofixed), false otherwise. - */ -function quietFixPredicate(message) { - return message.severity === 2; -} - -/** - * Predicate function for whether or not to run a rule in quiet mode. - * If a rule is set to warning, do not run it. - * @param {{ ruleId: string; severity: number; }} rule The rule id and severity. - * @returns {boolean} True if the lint rule should run, false otherwise. - */ -function quietRuleFilter(rule) { - return rule.severity === 2; -} - -/** - * Translates the CLI options into the options expected by the ESLint constructor. - * @param {ParsedCLIOptions} cliOptions The CLI options to translate. - * @param {"flat"|"eslintrc"} [configType="eslintrc"] The format of the - * config to generate. - * @returns {Promise} The options object for the ESLint constructor. - * @private - */ -async function translateOptions( - { - cache, - cacheFile, - cacheLocation, - cacheStrategy, - config, - configLookup, - env, - errorOnUnmatchedPattern, - eslintrc, - ext, - fix, - fixDryRun, - fixType, - flag, - global, - ignore, - ignorePath, - ignorePattern, - inlineConfig, - parser, - parserOptions, - plugin, - quiet, - reportUnusedDisableDirectives, - reportUnusedDisableDirectivesSeverity, - reportUnusedInlineConfigs, - resolvePluginsRelativeTo, - rule, - rulesdir, - stats, - warnIgnored, - passOnNoPatterns, - maxWarnings, - }, - configType, -) { - let overrideConfig, overrideConfigFile; - const importer = new ModuleImporter(); - - if (configType === "flat") { - overrideConfigFile = - typeof config === "string" ? config : !configLookup; - if (overrideConfigFile === false) { - overrideConfigFile = void 0; - } - - const languageOptions = {}; - - if (global) { - languageOptions.globals = global.reduce((obj, name) => { - if (name.endsWith(":true")) { - obj[name.slice(0, -5)] = "writable"; - } else { - obj[name] = "readonly"; - } - return obj; - }, {}); - } - - if (parserOptions) { - languageOptions.parserOptions = parserOptions; - } - - if (parser) { - languageOptions.parser = await importer.import(parser); - } - - overrideConfig = [ - { - ...(Object.keys(languageOptions).length > 0 - ? { languageOptions } - : {}), - rules: rule ? rule : {}, - }, - ]; - - if ( - reportUnusedDisableDirectives || - reportUnusedDisableDirectivesSeverity !== void 0 - ) { - overrideConfig[0].linterOptions = { - reportUnusedDisableDirectives: reportUnusedDisableDirectives - ? "error" - : normalizeSeverityToString( - reportUnusedDisableDirectivesSeverity, - ), - }; - } - - if (reportUnusedInlineConfigs !== void 0) { - overrideConfig[0].linterOptions = { - ...overrideConfig[0].linterOptions, - reportUnusedInlineConfigs: normalizeSeverityToString( - reportUnusedInlineConfigs, - ), - }; - } - - if (plugin) { - overrideConfig[0].plugins = await loadPlugins(importer, plugin); - } - - if (ext) { - overrideConfig.push({ - files: ext.map( - extension => - `**/*${extension.startsWith(".") ? "" : "."}${extension}`, - ), - }); - } - } else { - overrideConfigFile = config; - - overrideConfig = { - env: - env && - env.reduce((obj, name) => { - obj[name] = true; - return obj; - }, {}), - globals: - global && - global.reduce((obj, name) => { - if (name.endsWith(":true")) { - obj[name.slice(0, -5)] = "writable"; - } else { - obj[name] = "readonly"; - } - return obj; - }, {}), - ignorePatterns: ignorePattern, - parser, - parserOptions, - plugins: plugin, - rules: rule, - }; - } - - const options = { - allowInlineConfig: inlineConfig, - cache, - cacheLocation: cacheLocation || cacheFile, - cacheStrategy, - errorOnUnmatchedPattern, - fix: (fix || fixDryRun) && (quiet ? quietFixPredicate : true), - fixTypes: fixType, - ignore, - overrideConfig, - overrideConfigFile, - passOnNoPatterns, - }; - - if (configType === "flat") { - options.ignorePatterns = ignorePattern; - options.stats = stats; - options.warnIgnored = warnIgnored; - options.flags = flag; - - /* - * For performance reasons rules not marked as 'error' are filtered out in quiet mode. As maxWarnings - * requires rules set to 'warn' to be run, we only filter out 'warn' rules if maxWarnings is not specified. - */ - options.ruleFilter = - quiet && maxWarnings === -1 ? quietRuleFilter : () => true; - } else { - options.resolvePluginsRelativeTo = resolvePluginsRelativeTo; - options.rulePaths = rulesdir; - options.useEslintrc = eslintrc; - options.extensions = ext; - options.ignorePath = ignorePath; - if ( - reportUnusedDisableDirectives || - reportUnusedDisableDirectivesSeverity !== void 0 - ) { - options.reportUnusedDisableDirectives = - reportUnusedDisableDirectives - ? "error" - : normalizeSeverityToString( - reportUnusedDisableDirectivesSeverity, - ); - } - } - - return options; -} - /** * Count error messages. * @param {LintResult[]} results The lint results. @@ -322,6 +64,26 @@ function countErrors(results) { return { errorCount, fatalErrorCount, warningCount }; } +/** + * Creates an options module from the provided CLI options and encodes it as a data URL. + * @param {ParsedCLIOptions} options The CLI options. + * @returns {URL} The URL of the options module. + */ +function createOptionsModule(options) { + const translateOptionsFileURL = new URL( + "./shared/translate-cli-options.js", + pathToFileURL(__filename), + ).href; + const optionsSrc = + `import translateOptions from ${JSON.stringify(translateOptionsFileURL)};\n` + + `export default await translateOptions(${JSON.stringify(options)}, "flat");\n`; + + // Base64 encoding is typically shorter than URL encoding + return new URL( + `data:text/javascript;base64,${Buffer.from(optionsSrc).toString("base64")}`, + ); +} + /** * Check if a given file path is a directory or not. * @param {string} filePath The path to a file to check. @@ -385,6 +147,30 @@ async function printResults(engine, results, format, outputFile, resultsMeta) { return true; } +/** + * Validates the `--concurrency` flag value. + * @param {string} concurrency The `--concurrency` flag value to validate. + * @returns {void} + * @throws {Error} If the `--concurrency` flag value is invalid. + */ +function validateConcurrency(concurrency) { + if ( + concurrency === void 0 || + concurrency === "auto" || + concurrency === "off" + ) { + return; + } + + const concurrencyValue = Number(concurrency); + + if (!Number.isInteger(concurrencyValue) || concurrencyValue < 1) { + throw new Error( + `Option concurrency: '${concurrency}' is not a positive integer, 'auto' or 'off'.`, + ); + } +} + //------------------------------------------------------------------------------ // Public Interface //------------------------------------------------------------------------------ @@ -445,6 +231,7 @@ const cli = { try { options = CLIOptions.parse(args); + validateConcurrency(options.concurrency); } catch (error) { debug("Error parsing CLI options:", error.message); @@ -614,11 +401,20 @@ const cli = { } const ActiveESLint = usingFlatConfig ? ESLint : LegacyESLint; - const eslintOptions = await translateOptions( - options, - usingFlatConfig ? "flat" : "eslintrc", - ); - const engine = new ActiveESLint(eslintOptions); + + /** @type {ESLint|LegacyESLint} */ + let engine; + + if (options.concurrency && options.concurrency !== "off") { + const optionsURL = createOptionsModule(options); + engine = await ESLint.fromOptionsModule(optionsURL); + } else { + const eslintOptions = await translateOptions( + options, + usingFlatConfig ? "flat" : "eslintrc", + ); + engine = new ActiveESLint(eslintOptions); + } let results; if (useStdin) { diff --git a/lib/eslint/eslint-helpers.js b/lib/eslint/eslint-helpers.js index b3bfa49c0e71..0e89969b228b 100644 --- a/lib/eslint/eslint-helpers.js +++ b/lib/eslint/eslint-helpers.js @@ -11,11 +11,17 @@ const path = require("node:path"); const fs = require("node:fs"); +const { isMainThread, threadId } = require("node:worker_threads"); const fsp = fs.promises; const isGlob = require("is-glob"); const hash = require("../cli-engine/hash"); const minimatch = require("minimatch"); const globParent = require("glob-parent"); +const { Linter } = require("../linter"); +const { getShorthandName } = require("../shared/naming"); +const LintResultCache = require("../cli-engine/lint-result-cache"); +const { ConfigLoader, LegacyConfigLoader } = require("../config/config-loader"); +const createDebug = require("debug"); //----------------------------------------------------------------------------- // Fixup references @@ -30,11 +36,16 @@ const MINIMATCH_OPTIONS = { dot: true }; /** * @import { ESLintOptions } from "./eslint.js"; - * @import { ConfigLoader, LegacyConfigLoader } from "../config/config-loader.js"; + * @import { Config as CalculatedConfig } from "../config/config.js"; + * @import { FlatConfigArray } from "../config/flat-config-array.js"; + * @import { WarningService } from "../services/warning-service.js"; + * @import { Retrier } from "@humanwhocodes/retry"; */ +/** @typedef {import("../types").Linter.Config} Config */ /** @typedef {import("../types").Linter.LintMessage} LintMessage */ /** @typedef {import("../types").ESLint.LintResult} LintResult */ +/** @typedef {import("../types").ESLint.Plugin} Plugin */ /** * @typedef {Object} GlobSearch @@ -43,6 +54,18 @@ const MINIMATCH_OPTIONS = { dot: true }; * before doing any normalization. */ +//------------------------------------------------------------------------------ +// Internal Helpers +//------------------------------------------------------------------------------ + +const hrtimeBigint = process.hrtime.bigint; + +createDebug.formatters.t = timeDiff => + `${(timeDiff + 500_000n) / 1_000_000n} ms`; +const debug = createDebug( + `eslint:eslint-helpers${isMainThread ? "" : `:thread-${threadId}`}`, +); + //----------------------------------------------------------------------------- // Errors //----------------------------------------------------------------------------- @@ -137,6 +160,15 @@ function isEmptyArrayOrArrayOfNonEmptyString(value) { return Array.isArray(value) && value.every(isNonEmptyString); } +/** + * Check if a given value is a positive integer. + * @param {unknown} value The value to check. + * @returns {boolean} `true` if `value` is a positive integer. + */ +function isPositiveInteger(value) { + return Number.isInteger(value) && value > 0; +} + //----------------------------------------------------------------------------- // File-related Helpers //----------------------------------------------------------------------------- @@ -537,6 +569,7 @@ async function findFiles({ filePaths.map(filePath => fsp.stat(filePath).catch(() => {})), ); + const promises = []; stats.forEach((stat, index) => { const filePath = filePaths[index]; const pattern = normalizeToPosix(patterns[index]); @@ -545,6 +578,7 @@ async function findFiles({ // files are added directly to the list if (stat.isFile()) { results.push(filePath); + promises.push(configLoader.loadConfigArrayForFile(filePath)); } // directories need extensions attached @@ -590,15 +624,28 @@ async function findFiles({ } // now we are safe to do the search - const globbyResults = await globMultiSearch({ - searches, - configLoader, - errorOnUnmatchedPattern, - }); + promises.push( + globMultiSearch({ + searches, + configLoader, + errorOnUnmatchedPattern, + }), + ); + const globbyResults = (await Promise.all(promises)).at(-1); return [...new Set([...results, ...globbyResults])]; } +/** + * Return the absolute path of a file named `"__placeholder__.js"` in a given directory. + * This is used as a replacement for a missing file path. + * @param {string} cwd An absolute directory path. + * @returns {string} The absolute path of a file named `"__placeholder__.js"` in the given directory. + */ +function getPlaceholderPath(cwd) { + return path.join(cwd, "__placeholder__.js"); +} + //----------------------------------------------------------------------------- // Results-related Helpers //----------------------------------------------------------------------------- @@ -758,6 +805,7 @@ function processOptions({ cache = false, cacheLocation = ".eslintcache", cacheStrategy = "metadata", + concurrency = "off", cwd = process.cwd(), errorOnUnmatchedPattern = true, fix = false, @@ -853,6 +901,15 @@ function processOptions({ if (cacheStrategy !== "metadata" && cacheStrategy !== "content") { errors.push('\'cacheStrategy\' must be any of "metadata", "content".'); } + if ( + concurrency !== "off" && + concurrency !== "auto" && + !isPositiveInteger(concurrency) + ) { + errors.push( + '\'concurrency\' must be a positive integer, "auto", or "off".', + ); + } if (!isNonEmptyString(cwd) || !path.isAbsolute(cwd)) { errors.push("'cwd' must be an absolute path."); } @@ -928,6 +985,7 @@ function processOptions({ cache, cacheLocation, cacheStrategy, + concurrency, // when overrideConfigFile is true that means don't do config file lookup configFile: overrideConfigFile === true ? false : overrideConfigFile, @@ -947,6 +1005,15 @@ function processOptions({ }; } +/** + * Loads ESLint constructor options from an options module. + * @param {string} optionsURL The URL string of the options module to load. + * @returns {Promise} ESLint constructor options. + */ +async function loadOptionsFromModule(optionsURL) { + return (await import(optionsURL)).default; +} + //----------------------------------------------------------------------------- // Cache-related helpers //----------------------------------------------------------------------------- @@ -1022,6 +1089,349 @@ function getCacheFile(cacheFile, cwd, { prefix = ".cache_" } = {}) { return resolvedCacheFile; } +/** + * Creates a new lint result cache. + * @param {ESLintOptions} eslintOptions The processed ESLint options. + * @param {string} cacheFilePath The path to the cache file. + * @returns {?LintResultCache} A new lint result cache or `null`. + */ +function createLintResultCache({ cache, cacheStrategy }, cacheFilePath) { + return cache ? new LintResultCache(cacheFilePath, cacheStrategy) : null; +} + +//----------------------------------------------------------------------------- +// Lint helpers +//----------------------------------------------------------------------------- + +/** + * Checks whether a message's rule type should be fixed. + * @param {LintMessage} message The message to check. + * @param {CalculatedConfig} config The config for the file that generated the message. + * @param {string[]} fixTypes An array of fix types to check. + * @returns {boolean} Whether the message should be fixed. + */ +function shouldMessageBeFixed(message, config, fixTypes) { + if (!message.ruleId) { + return fixTypes.has("directive"); + } + + const rule = message.ruleId && config.getRuleDefinition(message.ruleId); + + return Boolean(rule && rule.meta && fixTypes.has(rule.meta.type)); +} + +/** + * Creates a fixer function based on the provided fix, fixTypesSet, and config. + * @param {Function|boolean} fix The original fix option. + * @param {Set} fixTypesSet A set of fix types to filter messages for fixing. + * @param {CalculatedConfig} config The config for the file that generated the message. + * @returns {Function|boolean} The fixer function or the original fix value. + */ +function getFixerForFixTypes(fix, fixTypesSet, config) { + if (!fix || !fixTypesSet) { + return fix; + } + + const originalFix = typeof fix === "function" ? fix : () => true; + + return message => + shouldMessageBeFixed(message, config, fixTypesSet) && + originalFix(message); +} + +/** + * Processes a source code using ESLint. + * @param {Object} config The config object. + * @param {string} config.text The source code to verify. + * @param {string} config.cwd The path to the current working directory. + * @param {string|undefined} config.filePath The path to the file of `text`. If this is undefined, it uses ``. + * @param {FlatConfigArray} config.configs The config. + * @param {boolean} config.fix If `true` then it does fix. + * @param {boolean} config.allowInlineConfig If `true` then it uses directive comments. + * @param {Function} config.ruleFilter A predicate function to filter which rules should be run. + * @param {boolean} config.stats If `true`, then if reports extra statistics with the lint results. + * @param {Linter} config.linter The linter instance to verify. + * @returns {LintResult} The result of linting. + * @private + */ +function verifyText({ + text, + cwd, + filePath: providedFilePath, + configs, + fix, + allowInlineConfig, + ruleFilter, + stats, + linter, +}) { + const startTime = hrtimeBigint(); + + const filePath = providedFilePath || ""; + + /* + * Verify. + * `config.extractConfig(filePath)` requires an absolute path, but `linter` + * doesn't know CWD, so it gives `linter` an absolute path always. + */ + const filePathToVerify = + filePath === "" ? getPlaceholderPath(cwd) : filePath; + const { fixed, messages, output } = linter.verifyAndFix(text, configs, { + allowInlineConfig, + filename: filePathToVerify, + fix, + ruleFilter, + stats, + + /** + * Check if the linter should adopt a given code block or not. + * @param {string} blockFilename The virtual filename of a code block. + * @returns {boolean} `true` if the linter should adopt the code block. + */ + filterCodeBlock(blockFilename) { + return configs.getConfig(blockFilename) !== void 0; + }, + }); + + // Tweak and return. + const result = { + filePath: filePath === "" ? filePath : path.resolve(filePath), + messages, + suppressedMessages: linter.getSuppressedMessages(), + ...calculateStatsPerFile(messages), + }; + + if (fixed) { + result.output = output; + } + + if ( + result.errorCount + result.warningCount > 0 && + typeof result.output === "undefined" + ) { + result.source = text; + } + + if (stats) { + result.stats = { + times: linter.getTimes(), + fixPasses: linter.getFixPassCount(), + }; + } + + const endTime = hrtimeBigint(); + debug('File "%s" linted in %t', filePath, endTime - startTime); + + return result; +} + +/** + * Lints a single file. + * @param {string} filePath File path to lint. + * @param {FlatConfigArray} configs The config array for the file. + * @param {ESLintOptions} eslintOptions The processed ESLint options. + * @param {Linter} linter The linter instance to use. + * @param {?LintResultCache} lintResultCache The result cache or `null`. + * @param {?{ duration: bigint; }} readFileCounter Used to keep track of the time spent reading files. + * @param {Retrier} [retrier] Used to retry linting on certain errors. + * @param {AbortController} [controller] Used to stop linting when an error occurs. + * @returns {Promise} The lint result. + */ +async function lintFile( + filePath, + configs, + eslintOptions, + linter, + lintResultCache, + readFileCounter, + retrier, + controller, +) { + const config = configs.getConfig(filePath); + const { + allowInlineConfig, + cwd, + fix, + fixTypes, + ruleFilter, + stats, + warnIgnored, + } = eslintOptions; + const fixTypesSet = fixTypes ? new Set(fixTypes) : null; + + /* + * If a filename was entered that cannot be matched + * to a config, then notify the user. + */ + if (!config) { + if (warnIgnored) { + const configStatus = configs.getConfigStatus(filePath); + + return createIgnoreResult(filePath, cwd, configStatus); + } + + return void 0; + } + + // Skip if there is cached result. + if (lintResultCache) { + const cachedResult = lintResultCache.getCachedLintResults( + filePath, + config, + ); + + if (cachedResult) { + const hadMessages = + cachedResult.messages && cachedResult.messages.length > 0; + + if (hadMessages && fix) { + debug(`Reprocessing cached file to allow autofix: ${filePath}`); + } else { + debug(`Skipping file since it hasn't changed: ${filePath}`); + return cachedResult; + } + } + } + + // set up fixer for fixTypes if necessary + const fixer = getFixerForFixTypes(fix, fixTypesSet, config); + + /** + * Reads the file and lints its content. + * @returns {Promise} A lint result. + */ + async function readAndVerifyFile() { + const readFileEnterTime = hrtimeBigint(); + const text = await fsp.readFile(filePath, { + encoding: "utf8", + signal: controller?.signal, + }); + const readFileExitTime = hrtimeBigint(); + const readFileDuration = readFileExitTime - readFileEnterTime; + debug('File "%s" read in %t', filePath, readFileDuration); + if (readFileCounter) { + readFileCounter.duration += readFileDuration; + } + + // fail immediately if an error occurred in another file + controller?.signal.throwIfAborted(); + + // do the linting + return verifyText({ + text, + filePath, + configs, + cwd, + fix: fixer, + allowInlineConfig, + ruleFilter, + stats, + linter, + }); + } + + // Use the retrier if provided, otherwise just call the function. + const readAndVerifyFilePromise = retrier + ? retrier.retry(readAndVerifyFile, { signal: controller?.signal }) + : readAndVerifyFile(); + + return readAndVerifyFilePromise.catch(error => { + controller?.abort(error); + throw error; + }); +} + +/** + * Retrieves flags from the environment variable ESLINT_FLAGS. + * @param {string[]} flags The flags defined via the API. + * @returns {string[]} The merged flags to use. + */ +function mergeEnvironmentFlags(flags) { + if (!process.env.ESLINT_FLAGS) { + return flags; + } + + const envFlags = process.env.ESLINT_FLAGS.trim().split(/\s*,\s*/gu); + return Array.from(new Set([...envFlags, ...flags])); +} + +/** + * Creates a new linter instance. + * @param {ESLintOptions} eslintOptions The processed ESLint options. + * @param {WarningService} warningService The warning service to use. + * @returns {Linter} The linter instance. + */ +function createLinter({ cwd, flags }, warningService) { + return new Linter({ + configType: "flat", + cwd, + flags: mergeEnvironmentFlags(flags), + warningService, + }); +} + +/** + * Creates default configs with the specified plugins. + * @param {Record | undefined} optionPlugins The plugins specified in the ESLint options. + * @returns {Config[]} The default configs. + */ +function createDefaultConfigs(optionPlugins) { + const defaultConfigs = []; + + // Add plugins + if (optionPlugins) { + const plugins = {}; + + for (const [pluginName, plugin] of Object.entries(optionPlugins)) { + plugins[getShorthandName(pluginName, "eslint-plugin")] = plugin; + } + + defaultConfigs.push({ plugins }); + } + + return defaultConfigs; +} + +/** + * Creates a config loader. + * @param {ESLintOptions} eslintOptions The processed ESLint options. + * @param {Config[]} defaultConfigs The default configs. + * @param {Linter} linter The linter instance. + * @param {WarningService} warningService The warning service to use. + * @returns {ConfigLoader} The config loader. + */ +function createConfigLoader( + { + cwd, + baseConfig, + overrideConfig, + configFile, + ignore: ignoreEnabled, + ignorePatterns, + }, + defaultConfigs, + linter, + warningService, +) { + const configLoaderOptions = { + cwd, + baseConfig, + overrideConfig, + configFile, + ignoreEnabled, + ignorePatterns, + defaultConfigs, + hasUnstableNativeNodeJsTSConfigFlag: linter.hasFlag( + "unstable_native_nodejs_ts_config", + ), + warningService, + }; + + return linter.hasFlag("v10_config_lookup_from_file") + ? new ConfigLoader(configLoaderOptions) + : new LegacyConfigLoader(configLoaderOptions); +} + //----------------------------------------------------------------------------- // Exports //----------------------------------------------------------------------------- @@ -1035,8 +1445,18 @@ module.exports = { createIgnoreResult, isErrorMessage, calculateStatsPerFile, + getPlaceholderPath, processOptions, + loadOptionsFromModule, getCacheFile, + createLintResultCache, + + getFixerForFixTypes, + verifyText, + lintFile, + createLinter, + createDefaultConfigs, + createConfigLoader, }; diff --git a/lib/eslint/eslint.js b/lib/eslint/eslint.js index 7f75fc3a844a..130a11066083 100644 --- a/lib/eslint/eslint.js +++ b/lib/eslint/eslint.js @@ -9,11 +9,13 @@ // Requirements //------------------------------------------------------------------------------ -const fs = require("node:fs/promises"); const { existsSync } = require("node:fs"); +const fs = require("node:fs/promises"); +const os = require("node:os"); const path = require("node:path"); +const { pathToFileURL } = require("node:url"); +const { SHARE_ENV, Worker } = require("node:worker_threads"); const { version } = require("../../package.json"); -const { Linter } = require("../linter"); const { defaultConfig } = require("../config/default-config"); const { @@ -25,14 +27,21 @@ const { createIgnoreResult, isErrorMessage, - calculateStatsPerFile, + getPlaceholderPath, processOptions, + loadOptionsFromModule, + + getFixerForFixTypes, + verifyText, + lintFile, + createLinter, + createLintResultCache, + createDefaultConfigs, + createConfigLoader, } = require("./eslint-helpers"); -const { pathToFileURL } = require("node:url"); -const LintResultCache = require("../cli-engine/lint-result-cache"); const { Retrier } = require("@humanwhocodes/retry"); -const { ConfigLoader, LegacyConfigLoader } = require("../config/config-loader"); +const { ConfigLoader } = require("../config/config-loader"); const { WarningService } = require("../services/warning-service"); const { Config } = require("../config/config.js"); const { @@ -53,16 +62,14 @@ const { resolve } = require("../shared/relative-module-resolver.js"); // For VSCode IntelliSense /** - * @import { ConfigArray } from "../cli-engine/cli-engine.js"; - * @import { CLIEngineLintReport } from "./legacy-eslint.js"; + * @import { Config as CalculatedConfig } from "../config/config.js"; * @import { FlatConfigArray } from "../config/flat-config-array.js"; - * @import { RuleDefinition } from "@eslint/core"; + * @import { RuleDefinition, RulesMeta } from "@eslint/core"; + * @import { WorkerLintResults } from "./worker.js"; */ -/** @typedef {ReturnType} ExtractedConfig */ /** @typedef {import("../types").Linter.Config} Config */ /** @typedef {import("../types").ESLint.DeprecatedRuleUse} DeprecatedRuleInfo */ -/** @typedef {import("../types").Linter.LintMessage} LintMessage */ /** @typedef {import("../types").ESLint.LintResult} LintResult */ /** @typedef {import("../types").ESLint.Plugin} Plugin */ /** @typedef {import("../types").ESLint.ResultsMeta} ResultsMeta */ @@ -75,6 +82,7 @@ const { resolve } = require("../shared/relative-module-resolver.js"); * @property {boolean} [cache] Enable result caching. * @property {string} [cacheLocation] The cache file to use instead of .eslintcache. * @property {"metadata" | "content"} [cacheStrategy] The strategy used to detect changed files. + * @property {number | "auto" | "off"} [concurrency] Maximum number of linting threads, "auto" to choose automatically, "off" for no multithreading. * @property {string} [cwd] The value to use for the current working directory. * @property {boolean} [errorOnUnmatchedPattern] If `false` then `ESLint#lintFiles()` doesn't throw even if no target files found. Defaults to `true`. * @property {boolean|Function} [fix] Execute in autofix mode. If a function, should return a boolean. @@ -87,11 +95,11 @@ const { resolve } = require("../shared/relative-module-resolver.js"); * @property {boolean|string} [overrideConfigFile] Searches for default config file when falsy; * doesn't do any config file lookup when `true`; considered to be a config filename * when a string. + * @property {boolean} [passOnNoPatterns=false] When set to true, missing patterns cause + * the linting operation to short circuit and not report any failures. * @property {Record} [plugins] An array of plugin implementations. * @property {boolean} [stats] True enables added statistics on lint results. * @property {boolean} [warnIgnored] Show warnings when the file list includes ignored files - * @property {boolean} [passOnNoPatterns=false] When set to true, missing patterns cause - * the linting operation to short circuit and not report any failures. */ //------------------------------------------------------------------------------ @@ -111,11 +119,12 @@ const removedFormatters = new Set([ "unix", "visualstudio", ]); +const fileRetryCodes = new Set(["ENFILE", "EMFILE"]); /** * Create rulesMeta object. - * @param {Map} rules a map of rules from which to generate the object. - * @returns {Object} metadata for all enabled rules. + * @param {Map} rules a map of rules from which to generate the object. + * @returns {Record} metadata for all enabled rules. */ function createRulesMeta(rules) { return Array.from(rules).reduce((retVal, [id, rule]) => { @@ -124,17 +133,7 @@ function createRulesMeta(rules) { }, {}); } -/** - * Return the absolute path of a file named `"__placeholder__.js"` in a given directory. - * This is used as a replacement for a missing file path. - * @param {string} cwd An absolute directory path. - * @returns {string} The absolute path of a file named `"__placeholder__.js"` in the given directory. - */ -function getPlaceholderPath(cwd) { - return path.join(cwd, "__placeholder__.js"); -} - -/** @type {WeakMap} */ +/** @type {WeakMap} */ const usedDeprecatedRulesCache = new WeakMap(); /** @@ -193,10 +192,10 @@ function getOrFindUsedDeprecatedRules(eslint, maybeFilePath) { * Processes the linting results generated by a CLIEngine linting report to * match the ESLint class's API. * @param {ESLint} eslint The ESLint instance. - * @param {CLIEngineLintReport} report The CLIEngine linting report to process. + * @param {LintResult[]} results The linting results to process. * @returns {LintResult[]} The processed linting results. */ -function processLintReport(eslint, { results }) { +function processLintReport(eslint, results) { const descriptor = { configurable: true, enumerable: true, @@ -263,146 +262,291 @@ async function locateConfigFileToUse({ configFile, cwd }) { } /** - * Processes an source code using ESLint. - * @param {Object} config The config object. - * @param {string} config.text The source code to verify. - * @param {string} config.cwd The path to the current working directory. - * @param {string|undefined} config.filePath The path to the file of `text`. If this is undefined, it uses ``. - * @param {FlatConfigArray} config.configs The config. - * @param {boolean} config.fix If `true` then it does fix. - * @param {boolean} config.allowInlineConfig If `true` then it uses directive comments. - * @param {Function} config.ruleFilter A predicate function to filter which rules should be run. - * @param {boolean} config.stats If `true`, then if reports extra statistics with the lint results. - * @param {Linter} config.linter The linter instance to verify. - * @returns {LintResult} The result of linting. - * @private + * Creates an error to be thrown when an array of results passed to `getRulesMetaForResults` was not created by the current engine. + * @returns {TypeError} An error object. */ -function verifyText({ - text, - cwd, - filePath: providedFilePath, - configs, - fix, - allowInlineConfig, - ruleFilter, - stats, - linter, -}) { - const filePath = providedFilePath || ""; - - debug(`Lint ${filePath}`); - - /* - * Verify. - * `config.extractConfig(filePath)` requires an absolute path, but `linter` - * doesn't know CWD, so it gives `linter` an absolute path always. - */ - const filePathToVerify = - filePath === "" ? getPlaceholderPath(cwd) : filePath; - const { fixed, messages, output } = linter.verifyAndFix(text, configs, { - allowInlineConfig, - filename: filePathToVerify, - fix, - ruleFilter, - stats, - - /** - * Check if the linter should adopt a given code block or not. - * @param {string} blockFilename The virtual filename of a code block. - * @returns {boolean} `true` if the linter should adopt the code block. - */ - filterCodeBlock(blockFilename) { - return configs.getConfig(blockFilename) !== void 0; - }, - }); - - // Tweak and return. - const result = { - filePath: filePath === "" ? filePath : path.resolve(filePath), - messages, - suppressedMessages: linter.getSuppressedMessages(), - ...calculateStatsPerFile(messages), - }; +function createExtraneousResultsError() { + return new TypeError( + "Results object was not created from this ESLint instance.", + ); +} - if (fixed) { - result.output = output; - } +/** + * Maximum number of files assumed to be best handled by one worker thread. + * This value is a heuristic estimation that can be adjusted if required. + */ +const AUTO_FILES_PER_WORKER = 35; - if ( - result.errorCount + result.warningCount > 0 && - typeof result.output === "undefined" - ) { - result.source = text; +/** + * Calculates the number of workers to run based on the concurrency setting and the number of files to lint. + * @param {number | "auto" | "off"} concurrency The normalized concurrency setting. + * @param {number} fileCount The number of files to be linted. + * @param {{ availableParallelism: () => number }} [os] Node.js `os` module, or a mock for testing. + * @returns {number} The effective number of worker threads to be started. A value of zero disables multithread linting. + */ +function calculateWorkerCount( + concurrency, + fileCount, + { availableParallelism } = os, +) { + let workerCount; + switch (concurrency) { + case "off": + return 0; + case "auto": { + workerCount = Math.min( + availableParallelism() >> 1, + Math.ceil(fileCount / AUTO_FILES_PER_WORKER), + ); + break; + } + default: + workerCount = Math.min(concurrency, fileCount); + break; } + return workerCount > 1 ? workerCount : 0; +} - if (stats) { - result.stats = { - times: linter.getTimes(), - fixPasses: linter.getFixPassCount(), - }; - } +// Used internally. Do not expose. +const disableCloneabilityCheck = Symbol( + "Do not check for uncloneable options.", +); - return result; -} +/** + * The smallest net linting ratio that doesn't trigger a poor concurrency warning. + * The net linting ratio is defined as the net linting duration divided by the thread's total runtime, + * where the net linting duration is the total linting time minus the time spent on I/O-intensive operations: + * **Net Linting Ratio** = (**Linting Time** – **I/O Time**) / **Thread Runtime**. + * - **Linting Time**: Total time spent linting files + * - **I/O Time**: Portion of linting time spent loading configs and reading files + * - **Thread Runtime**: End-to-end execution time of the thread + * + * This value is a heuristic estimation that can be adjusted if required. + */ +const LOW_NET_LINTING_RATIO = 0.7; /** - * Checks whether a message's rule type should be fixed. - * @param {LintMessage} message The message to check. - * @param {FlatConfigArray} config The config for the file that generated the message. - * @param {string[]} fixTypes An array of fix types to check. - * @returns {boolean} Whether the message should be fixed. + * Runs worker threads to lint files. + * @param {string[]} filePaths File paths to lint. + * @param {number} workerCount The number of worker threads to run. + * @param {ESLintOptions | string} eslintOptionsOrURL The unprocessed ESLint options or the URL of the options module. + * @param {() => void} warnOnLowNetLintingRatio A function to call if the net linting ratio is low. + * @returns {Promise} Lint results. */ -function shouldMessageBeFixed(message, config, fixTypes) { - if (!message.ruleId) { - return fixTypes.has("directive"); +async function runWorkers( + filePaths, + workerCount, + eslintOptionsOrURL, + warnOnLowNetLintingRatio, +) { + const fileCount = filePaths.length; + const results = Array(fileCount); + const workerURL = pathToFileURL(path.join(__dirname, "./worker.js")); + const filePathIndexArray = new Uint32Array( + new SharedArrayBuffer(Uint32Array.BYTES_PER_ELEMENT), + ); + const abortController = new AbortController(); + const abortSignal = abortController.signal; + const workerOptions = { + env: SHARE_ENV, + workerData: { + eslintOptionsOrURL, + filePathIndexArray, + filePaths, + }, + }; + + const hrtimeBigint = process.hrtime.bigint; + let worstNetLintingRatio = 1; + + /** + * A promise executor function that starts a worker thread on each invocation. + * @param {() => void} resolve_ Called when the worker thread terminates successfully. + * @param {(error: Error) => void} reject Called when the worker thread terminates with an error. + * @returns {void} + */ + function workerExecutor(resolve_, reject) { + const workerStartTime = hrtimeBigint(); + const worker = new Worker(workerURL, workerOptions); + worker.once( + "message", + (/** @type {WorkerLintResults} */ indexedResults) => { + const workerDuration = hrtimeBigint() - workerStartTime; + + // The net linting ratio provides an approximate measure of worker thread efficiency, defined as the net linting duration divided by the thread's total runtime. + const netLintingRatio = + Number(indexedResults.netLintingDuration) / + Number(workerDuration); + + worstNetLintingRatio = Math.min( + worstNetLintingRatio, + netLintingRatio, + ); + for (const result of indexedResults) { + const { index } = result; + delete result.index; + results[index] = result; + } + resolve_(); + }, + ); + worker.once("error", error => { + abortController.abort(error); + reject(error); + }); + abortSignal.addEventListener("abort", () => worker.terminate()); } - const rule = message.ruleId && config.getRuleDefinition(message.ruleId); + const promises = Array(workerCount); + for (let index = 0; index < workerCount; ++index) { + promises[index] = new Promise(workerExecutor); + } + await Promise.all(promises); - return Boolean(rule && rule.meta && fixTypes.has(rule.meta.type)); + if (worstNetLintingRatio < LOW_NET_LINTING_RATIO) { + warnOnLowNetLintingRatio(); + } + + return results; } /** - * Creates an error to be thrown when an array of results passed to `getRulesMetaForResults` was not created by the current engine. - * @returns {TypeError} An error object. + * Lint files in multithread mode. + * @param {ESLint} eslint ESLint instance. + * @param {string[]} filePaths File paths to lint. + * @param {number} workerCount The number of worker threads to run. + * @param {ESLintOptions | string} eslintOptionsOrURL The unprocessed ESLint options or the URL of the options module. + * @param {() => void} warnOnLowNetLintingRatio A function to call if the net linting ratio is low. + * @returns {Promise} Lint results. */ -function createExtraneousResultsError() { - return new TypeError( - "Results object was not created from this ESLint instance.", +async function lintFilesWithMultithreading( + eslint, + filePaths, + workerCount, + eslintOptionsOrURL, + warnOnLowNetLintingRatio, +) { + const { configLoader, lintResultCache } = privateMembers.get(eslint); + + const results = await runWorkers( + filePaths, + workerCount, + eslintOptionsOrURL, + warnOnLowNetLintingRatio, ); + // Persist the cache to disk. + if (lintResultCache) { + results.forEach((result, index) => { + if (result) { + const filePath = filePaths[index]; + const configs = + configLoader.getCachedConfigArrayForFile(filePath); + const config = configs.getConfig(filePath); + + if (config) { + /* + * Store the lint result in the LintResultCache. + * NOTE: The LintResultCache will remove the file source and any + * other properties that are difficult to serialize, and will + * hydrate those properties back in on future lint runs. + */ + lintResultCache.setCachedLintResults( + filePath, + config, + result, + ); + } + } + }); + } + return results; } /** - * Creates a fixer function based on the provided fix, fixTypesSet, and config. - * @param {Function|boolean} fix The original fix option. - * @param {Set} fixTypesSet A set of fix types to filter messages for fixing. - * @param {FlatConfigArray} config The config for the file that generated the message. - * @returns {Function|boolean} The fixer function or the original fix value. + * Lint files in single-thread mode. + * @param {ESLint} eslint ESLint instance. + * @param {string[]} filePaths File paths to lint. + * @returns {Promise} Lint results. */ -function getFixerForFixTypes(fix, fixTypesSet, config) { - if (!fix || !fixTypesSet) { - return fix; - } +async function lintFilesWithoutMultithreading(eslint, filePaths) { + const { + configLoader, + linter, + lintResultCache, + options: eslintOptions, + } = privateMembers.get(eslint); + + const controller = new AbortController(); + const retrier = new Retrier(error => fileRetryCodes.has(error.code), { + concurrency: 100, + }); + + /* + * Because we need to process multiple files, including reading from disk, + * it is most efficient to start by reading each file via promises so that + * they can be done in parallel. Then, we can lint the returned text. This + * ensures we are waiting the minimum amount of time in between lints. + */ + const results = await Promise.all( + filePaths.map(async filePath => { + const configs = configLoader.getCachedConfigArrayForFile(filePath); + const config = configs.getConfig(filePath); + + const result = await lintFile( + filePath, + configs, + eslintOptions, + linter, + lintResultCache, + null, + retrier, + controller, + ); - const originalFix = typeof fix === "function" ? fix : () => true; + if (config) { + /* + * Store the lint result in the LintResultCache. + * NOTE: The LintResultCache will remove the file source and any + * other properties that are difficult to serialize, and will + * hydrate those properties back in on future lint runs. + */ + lintResultCache?.setCachedLintResults(filePath, config, result); + } - return message => - shouldMessageBeFixed(message, config, fixTypesSet) && - originalFix(message); + return result; + }), + ); + return results; } /** - * Retrieves flags from the environment variable ESLINT_FLAGS. - * @param {string[]} flags The flags defined via the API. - * @returns {string[]} The merged flags to use. + * Throws an error if the given options are not cloneable. + * @param {ESLintOptions} options The options to check. + * @returns {void} + * @throws {TypeError} If the options are not cloneable. */ -function mergeEnvironmentFlags(flags) { - if (!process.env.ESLINT_FLAGS) { - return flags; +function validateOptionCloneability(options) { + try { + structuredClone(options); + return; + } catch { + // continue } - - const envFlags = process.env.ESLINT_FLAGS.trim().split(/\s*,\s*/gu); - return Array.from(new Set([...envFlags, ...flags])); + const uncloneableOptionKeys = Object.keys(options) + .filter(key => { + try { + structuredClone(options[key]); + } catch { + return true; + } + return false; + }) + .sort(); + const error = new TypeError( + `The ${uncloneableOptionKeys.length === 1 ? "option" : "options"} ${new Intl.ListFormat("en-US").format(uncloneableOptionKeys.map(key => `"${key}"`))} cannot be cloned. When concurrency is enabled, all options must be cloneable. Remove uncloneable options or use an options module.`, + ); + error.code = "ESLINT_UNCLONEABLE_OPTIONS"; + throw error; } //----------------------------------------------------------------------------- @@ -421,51 +565,51 @@ class ESLint { /** * The loader to use for finding config files. - * @type {ConfigLoader|LegacyConfigLoader} + * @type {ConfigLoader} */ #configLoader; + /** + * The unprocessed options or the URL of the options module. Only set when concurrency is enabled. + * @type {ESLintOptions | string | undefined} + */ + #optionsOrURL; + /** * Creates a new instance of the main ESLint API. * @param {ESLintOptions} options The options for this instance. */ constructor(options = {}) { - const defaultConfigs = []; const processedOptions = processOptions(options); + if ( + !options[disableCloneabilityCheck] && + processedOptions.concurrency !== "off" + ) { + validateOptionCloneability(options); + + // Save the unprocessed options in an instance field to pass to worker threads in `lintFiles()`. + this.#optionsOrURL = options; + } const warningService = new WarningService(); - const linter = new Linter({ - cwd: processedOptions.cwd, - configType: "flat", - flags: mergeEnvironmentFlags(processedOptions.flags), - warningService, - }); + const linter = createLinter(processedOptions, warningService); const cacheFilePath = getCacheFile( processedOptions.cacheLocation, processedOptions.cwd, ); - const lintResultCache = processedOptions.cache - ? new LintResultCache(cacheFilePath, processedOptions.cacheStrategy) - : null; - - const configLoaderOptions = { - cwd: processedOptions.cwd, - baseConfig: processedOptions.baseConfig, - overrideConfig: processedOptions.overrideConfig, - configFile: processedOptions.configFile, - ignoreEnabled: processedOptions.ignore, - ignorePatterns: processedOptions.ignorePatterns, + const lintResultCache = createLintResultCache( + processedOptions, + cacheFilePath, + ); + const defaultConfigs = createDefaultConfigs(options.plugins); + + this.#configLoader = createConfigLoader( + processedOptions, defaultConfigs, - hasUnstableNativeNodeJsTSConfigFlag: linter.hasFlag( - "unstable_native_nodejs_ts_config", - ), + linter, warningService, - }; - - this.#configLoader = linter.hasFlag("v10_config_lookup_from_file") - ? new ConfigLoader(configLoaderOptions) - : new LegacyConfigLoader(configLoaderOptions); + ); debug(`Using config loader ${this.#configLoader.constructor.name}`); @@ -477,26 +621,9 @@ class ESLint { defaultConfigs, configs: null, configLoader: this.#configLoader, + warningService, }); - /** - * If additional plugins are passed in, add that to the default - * configs for this instance. - */ - if (options.plugins) { - const plugins = {}; - - for (const [pluginName, plugin] of Object.entries( - options.plugins, - )) { - plugins[getShorthandName(pluginName, "eslint-plugin")] = plugin; - } - - defaultConfigs.push({ - plugins, - }); - } - // Check for the .eslintignore file, and warn if it's present. if (existsSync(path.resolve(processedOptions.cwd, ".eslintignore"))) { warningService.emitESLintIgnoreWarning(); @@ -514,7 +641,7 @@ class ESLint { /** * The default configuration that ESLint uses internally. This is provided for tooling that wants to calculate configurations using the same defaults as ESLint. * Keep in mind that the default configuration may change from version to version, so you shouldn't rely on any particular keys or values to be present. - * @type {ConfigArray} + * @type {FlatConfigArray} */ static get defaultConfig() { return defaultConfig; @@ -530,8 +657,7 @@ class ESLint { throw new Error("'results' must be an array"); } - const retryCodes = new Set(["ENFILE", "EMFILE"]); - const retrier = new Retrier(error => retryCodes.has(error.code), { + const retrier = new Retrier(error => fileRetryCodes.has(error.code), { concurrency: 100, }); @@ -581,10 +707,31 @@ class ESLint { return filtered; } + /** + * Creates a new ESLint instance using options loaded from a module. + * @param {URL} optionsURL The URL of the options module. + * @returns {ESLint} The new ESLint instance. + */ + static async fromOptionsModule(optionsURL) { + if (!(optionsURL instanceof URL)) { + throw new TypeError("Argument must be a URL object"); + } + const optionsURLString = optionsURL.href; + const loadedOptions = await loadOptionsFromModule(optionsURLString); + const options = { ...loadedOptions, [disableCloneabilityCheck]: true }; + const eslint = new ESLint(options); + + if (options.concurrency !== "off") { + // Save the options module URL in an instance field to pass to worker threads in `lintFiles()`. + eslint.#optionsOrURL = optionsURLString; + } + return eslint; + } + /** * Returns meta objects for each rule represented in the lint results. * @param {LintResult[]} results The results to fetch rules meta for. - * @returns {Object} A mapping of ruleIds to rule meta objects. + * @returns {Record} A mapping of ruleIds to rule meta objects. * @throws {TypeError} When the results object wasn't created from this ESLint instance. * @throws {TypeError} When a plugin or rule is missing. */ @@ -667,8 +814,8 @@ class ESLint { const { cacheFilePath, lintResultCache, - linter, options: eslintOptions, + warningService, } = privateMembers.get(this); /* @@ -709,19 +856,12 @@ class ESLint { debug(`Using file patterns: ${normalizedPatterns}`); const { - allowInlineConfig, cache, + concurrency, cwd, - fix, - fixTypes, - ruleFilter, - stats, globInputPaths, errorOnUnmatchedPattern, - warnIgnored, } = eslintOptions; - const startTime = Date.now(); - const fixTypesSet = fixTypes ? new Set(fixTypes) : null; // Delete cache file; should this be done here? if (!cache && cacheFilePath) { @@ -738,6 +878,7 @@ class ESLint { } } + const startTime = Date.now(); const filePaths = await findFiles({ patterns: normalizedPatterns, cwd, @@ -745,119 +886,45 @@ class ESLint { configLoader: this.#configLoader, errorOnUnmatchedPattern, }); - const controller = new AbortController(); - const retryCodes = new Set(["ENFILE", "EMFILE"]); - const retrier = new Retrier(error => retryCodes.has(error.code), { - concurrency: 100, - }); - debug( `${filePaths.length} files found in: ${Date.now() - startTime}ms`, ); - /* - * Because we need to process multiple files, including reading from disk, - * it is most efficient to start by reading each file via promises so that - * they can be done in parallel. Then, we can lint the returned text. This - * ensures we are waiting the minimum amount of time in between lints. - */ - const results = await Promise.all( - filePaths.map(async filePath => { - const configs = - await this.#configLoader.loadConfigArrayForFile(filePath); - const config = configs.getConfig(filePath); - - /* - * If a filename was entered that cannot be matched - * to a config, then notify the user. - */ - if (!config) { - if (warnIgnored) { - const configStatus = configs.getConfigStatus(filePath); + /** @type {LintResult[]} */ + let results; - return createIgnoreResult(filePath, cwd, configStatus); - } - - return void 0; - } - - // Skip if there is cached result. - if (lintResultCache) { - const cachedResult = lintResultCache.getCachedLintResults( - filePath, - config, - ); - - if (cachedResult) { - const hadMessages = - cachedResult.messages && - cachedResult.messages.length > 0; - - if (hadMessages && fix) { - debug( - `Reprocessing cached file to allow autofix: ${filePath}`, - ); - } else { - debug( - `Skipping file since it hasn't changed: ${filePath}`, - ); - return cachedResult; - } - } - } - - // set up fixer for fixTypes if necessary - const fixer = getFixerForFixTypes(fix, fixTypesSet, config); - - return retrier - .retry( - () => - fs - .readFile(filePath, { - encoding: "utf8", - signal: controller.signal, - }) - .then(text => { - // fail immediately if an error occurred in another file - controller.signal.throwIfAborted(); - - // do the linting - const result = verifyText({ - text, - filePath, - configs, - cwd, - fix: fixer, - allowInlineConfig, - ruleFilter, - stats, - linter, - }); - - /* - * Store the lint result in the LintResultCache. - * NOTE: The LintResultCache will remove the file source and any - * other properties that are difficult to serialize, and will - * hydrate those properties back in on future lint runs. - */ - if (lintResultCache) { - lintResultCache.setCachedLintResults( - filePath, - config, - result, - ); - } - - return result; - }), - { signal: controller.signal }, - ) - .catch(error => { - controller.abort(error); - throw error; - }); - }), + // The value of `module.exports.calculateWorkerCount` can be overridden in tests. + const workerCount = module.exports.calculateWorkerCount( + concurrency, + filePaths.length, ); + if (workerCount) { + debug(`Linting using ${workerCount} worker thread(s).`); + let poorConcurrencyNotice; + if (workerCount <= 2) { + poorConcurrencyNotice = "disable concurrency"; + } else { + if (concurrency === "auto") { + poorConcurrencyNotice = + "disable concurrency or use a numeric concurrency setting"; + } else { + poorConcurrencyNotice = "reduce or disable concurrency"; + } + } + results = await lintFilesWithMultithreading( + this, + filePaths, + workerCount, + this.#optionsOrURL, + () => + warningService.emitPoorConcurrencyWarning( + poorConcurrencyNotice, + ), + ); + } else { + debug(`Linting in single-thread mode.`); + results = await lintFilesWithoutMultithreading(this, filePaths); + } // Persist the cache to disk. if (lintResultCache) { @@ -866,9 +933,7 @@ class ESLint { const finalResults = results.filter(result => !!result); - return processLintReport(this, { - results: finalResults, - }); + return processLintReport(this, finalResults); } /** @@ -977,9 +1042,7 @@ class ESLint { debug(`Linting complete in: ${Date.now() - startTime}ms`); - return processLintReport(this, { - results, - }); + return processLintReport(this, results); } /** @@ -1089,7 +1152,7 @@ class ESLint { * This is the same logic used by the ESLint CLI executable to determine * configuration for each file it processes. * @param {string} filePath The path of the file to retrieve a config object for. - * @returns {Promise} A configuration object for the file + * @returns {Promise} A configuration object for the file * or `undefined` if there is no configuration data for the object. */ async calculateConfigForFile(filePath) { @@ -1161,4 +1224,5 @@ module.exports = { ESLint, shouldUseFlatConfig, locateConfigFileToUse, + calculateWorkerCount, }; diff --git a/lib/eslint/worker.js b/lib/eslint/worker.js new file mode 100644 index 000000000000..78e43c90632a --- /dev/null +++ b/lib/eslint/worker.js @@ -0,0 +1,164 @@ +/** + * @fileoverview Worker thread for multithread linting. + * @author Francesco Trotta + */ + +"use strict"; + +const hrtimeBigint = process.hrtime.bigint; + +const startTime = hrtimeBigint(); + +// eslint-disable-next-line n/no-unsupported-features/node-builtins -- enable V8's code cache if supported +require("node:module").enableCompileCache?.(); + +//------------------------------------------------------------------------------ +// Requirements +//------------------------------------------------------------------------------ + +const { parentPort, threadId, workerData } = require("node:worker_threads"); +const createDebug = require("debug"); +const { + createConfigLoader, + createDefaultConfigs, + createLinter, + createLintResultCache, + getCacheFile, + lintFile, + loadOptionsFromModule, + processOptions, +} = require("./eslint-helpers"); +const { WarningService } = require("../services/warning-service"); + +const depsLoadedTime = hrtimeBigint(); + +//------------------------------------------------------------------------------ +// Typedefs +//------------------------------------------------------------------------------ + +/** @typedef {import("../types").ESLint.LintResult} LintResult */ +/** @typedef {import("../types").ESLint.Options} ESLintOptions */ +/** @typedef {LintResult & { index?: number; }} IndexedLintResult */ +/** @typedef {IndexedLintResult[] & { netLintingDuration: bigint; }} WorkerLintResults */ +/** + * @typedef {Object} WorkerData - Data passed to the worker thread. + * @property {ESLintOptions | string} eslintOptionsOrURL - The unprocessed ESLint options or the URL of the options module. + * @property {Uint32Array} filePathIndexArray - Shared counter used to track the next file to lint. + * @property {string[]} filePaths - File paths to lint. + */ + +//------------------------------------------------------------------------------ +// Helpers +//------------------------------------------------------------------------------ + +const debug = createDebug(`eslint:worker:thread-${threadId}`); +createDebug.formatters.t = timeDiff => + `${(timeDiff + 500_000n) / 1_000_000n} ms`; + +//------------------------------------------------------------------------------ +// Main +//------------------------------------------------------------------------------ + +debug("Dependencies loaded in %t", depsLoadedTime - startTime); + +(async () => { + /** @type {WorkerData} */ + const { eslintOptionsOrURL, filePathIndexArray, filePaths } = workerData; + const eslintOptions = + typeof eslintOptionsOrURL === "object" + ? eslintOptionsOrURL + : await loadOptionsFromModule(eslintOptionsOrURL); + const processedESLintOptions = processOptions(eslintOptions); + + const warningService = new WarningService(); + + // These warnings are always emitted by the controlling thread. + warningService.emitEmptyConfigWarning = + warningService.emitInactiveFlagWarning = () => {}; + + const linter = createLinter(processedESLintOptions, warningService); + + const cacheFilePath = getCacheFile( + processedESLintOptions.cacheLocation, + processedESLintOptions.cwd, + ); + + const lintResultCache = createLintResultCache( + processedESLintOptions, + cacheFilePath, + ); + const defaultConfigs = createDefaultConfigs(eslintOptions.plugins); + + const configLoader = createConfigLoader( + processedESLintOptions, + defaultConfigs, + linter, + warningService, + ); + + /** @type {WorkerLintResults} */ + const indexedResults = []; + let loadConfigTotalDuration = 0n; + const readFileCounter = { duration: 0n }; + + const lintingStartTime = hrtimeBigint(); + debug( + "Linting started %t after dependencies loaded", + lintingStartTime - depsLoadedTime, + ); + + for (;;) { + const fileLintingStartTime = hrtimeBigint(); + + // It seems hard to produce an arithmetic overflow under realistic conditions here. + const index = Atomics.add(filePathIndexArray, 0, 1); + + const filePath = filePaths[index]; + if (!filePath) { + break; + } + + const loadConfigEnterTime = hrtimeBigint(); + const configs = await configLoader.loadConfigArrayForFile(filePath); + const loadConfigExitTime = hrtimeBigint(); + const loadConfigDuration = loadConfigExitTime - loadConfigEnterTime; + debug( + 'Config array for file "%s" loaded in %t', + filePath, + loadConfigDuration, + ); + loadConfigTotalDuration += loadConfigDuration; + + /** @type {IndexedLintResult} */ + const result = await lintFile( + filePath, + configs, + processedESLintOptions, + linter, + lintResultCache, + readFileCounter, + ); + if (result) { + result.index = index; + indexedResults.push(result); + } + + const fileLintingEndTime = hrtimeBigint(); + debug( + 'File "%s" processed in %t', + filePath, + fileLintingEndTime - fileLintingStartTime, + ); + } + + const lintingDuration = hrtimeBigint() - lintingStartTime; + + /* + * The net linting duration is the total linting time minus the time spent loading configs and reading files. + * It captures the processing time dedicated to computation-intensive tasks that are highly parallelizable and not repeated across threads. + */ + indexedResults.netLintingDuration = + lintingDuration - loadConfigTotalDuration - readFileCounter.duration; + + parentPort.postMessage(indexedResults); +})(); diff --git a/lib/options.js b/lib/options.js index cdf1a581a864..71365eb16388 100644 --- a/lib/options.js +++ b/lib/options.js @@ -23,6 +23,7 @@ const optionator = require("optionator"); * @property {string} [cacheLocation] Path to the cache file or directory * @property {"metadata" | "content"} cacheStrategy Strategy to use for detecting changed files in the cache * @property {boolean} [color] Force enabling/disabling of color + * @property {number | "auto" | "off"} [concurrency] Number of linting threads, "auto" to choose automatically, "off" for no multithreading * @property {string} [config] Use this configuration, overriding .eslintrc.* config options if present * @property {boolean} debug Output debugging information * @property {string[]} [env] Specify environments @@ -46,27 +47,27 @@ const optionator = require("optionator"); * @property {string} [outputFile] Specify file to write report to * @property {string} [parser] Specify the parser to be used * @property {Object} [parserOptions] Specify parser options + * @property {boolean} [passOnNoPatterns=false] When set to true, missing patterns cause + * the linting operation to short circuit and not report any failures. + * @property {boolean} [passOnUnprunedSuppressions] Ignore unused suppressions * @property {string[]} [plugin] Specify plugins * @property {string} [printConfig] Print the configuration for the given file + * @property {boolean} [pruneSuppressions] Prune unused suppressions + * @property {boolean} quiet Report errors only * @property {boolean | undefined} reportUnusedDisableDirectives Adds reported errors for unused eslint-disable and eslint-enable directives * @property {string | undefined} reportUnusedDisableDirectivesSeverity A severity string indicating if and how unused disable and enable directives should be tracked and reported. * @property {string} [resolvePluginsRelativeTo] A folder where plugins should be resolved from, CWD by default * @property {Object} [rule] Specify rules * @property {string[]} [rulesdir] Load additional rules from this directory. Deprecated: Use rules from plugins + * @property {boolean} [stats] Report additional statistics * @property {boolean} stdin Lint code provided on * @property {string} [stdinFilename] Specify filename to process STDIN as - * @property {boolean} quiet Report errors only + * @property {boolean} [suppressAll] Suppress all error violations + * @property {string} [suppressionsLocation] Path to the suppressions file or directory + * @property {string[]} [suppressRule] Suppress specific rules * @property {boolean} [version] Output the version number * @property {boolean} warnIgnored Show warnings when the file list includes ignored files - * @property {boolean} [passOnNoPatterns=false] When set to true, missing patterns cause - * the linting operation to short circuit and not report any failures. * @property {string[]} _ Positional filenames or patterns - * @property {boolean} [stats] Report additional statistics - * @property {boolean} [suppressAll] Suppress all error violations - * @property {string[]} [suppressRule] Suppress specific rules - * @property {string} [suppressionsLocation] Path to the suppressions file or directory - * @property {boolean} [pruneSuppressions] Prune unused suppressions - * @property {boolean} [passOnUnprunedSuppressions] Ignore unused suppressions */ //------------------------------------------------------------------------------ @@ -224,6 +225,18 @@ module.exports = function (usingFlatConfig) { }; } + let concurrencyFlag; + + if (usingFlatConfig) { + concurrencyFlag = { + option: "concurrency", + type: "Int|String", + default: "off", + description: + "Number of linting threads, auto to choose automatically, off for no multithreading", + }; + } + return optionator({ prepend: "eslint [options] file.js [file.js] [dir]", defaults: { @@ -517,6 +530,7 @@ module.exports = function (usingFlatConfig) { statsFlag, flagFlag, mcpFlag, + concurrencyFlag, ].filter(value => !!value), }); }; diff --git a/lib/services/warning-service.js b/lib/services/warning-service.js index 13007b856463..cba068d4f097 100644 --- a/lib/services/warning-service.js +++ b/lib/services/warning-service.js @@ -80,6 +80,19 @@ class WarningService { emitInactiveFlagWarning(flag, message) { this.emitWarning(message, `ESLintInactiveFlag_${flag}`); } + + /** + * Emits a warning when a suboptimal concurrency setting is detected. + * Currently, this is only used to warn when the net linting ratio is low. + * @param {string} notice A notice about how to improve performance. + * @returns {void} + */ + emitPoorConcurrencyWarning(notice) { + this.emitWarning( + `You may ${notice} to improve performance.`, + "ESLintPoorConcurrencyWarning", + ); + } } module.exports = { WarningService }; diff --git a/lib/shared/translate-cli-options.js b/lib/shared/translate-cli-options.js new file mode 100644 index 000000000000..d765f8046d56 --- /dev/null +++ b/lib/shared/translate-cli-options.js @@ -0,0 +1,281 @@ +/** + * @fileoverview Translates CLI options into ESLint constructor options. + * @author Nicholas C. Zakas + * @author Francesco Trotta + */ + +"use strict"; + +//------------------------------------------------------------------------------ +// Requirements +//------------------------------------------------------------------------------ + +const { normalizeSeverityToString } = require("./severity"); +const { getShorthandName, normalizePackageName } = require("./naming"); +const { ModuleImporter } = require("@humanwhocodes/module-importer"); + +//------------------------------------------------------------------------------ +// Types +//------------------------------------------------------------------------------ + +/** @typedef {import("../types").ESLint.Options} ESLintOptions */ +/** @typedef {import("../types").ESLint.LegacyOptions} LegacyESLintOptions */ +/** @typedef {import("../types").Linter.LintMessage} LintMessage */ +/** @typedef {import("../options").ParsedCLIOptions} ParsedCLIOptions */ +/** @typedef {import("../types").ESLint.Plugin} Plugin */ + +//------------------------------------------------------------------------------ +// Helpers +//------------------------------------------------------------------------------ + +/** + * Loads plugins with the specified names. + * @param {{ "import": (name: string) => Promise }} importer An object with an `import` method called once for each plugin. + * @param {string[]} pluginNames The names of the plugins to be loaded, with or without the "eslint-plugin-" prefix. + * @returns {Promise>} A mapping of plugin short names to implementations. + */ +async function loadPlugins(importer, pluginNames) { + const plugins = {}; + + await Promise.all( + pluginNames.map(async pluginName => { + const longName = normalizePackageName(pluginName, "eslint-plugin"); + const module = await importer.import(longName); + + if (!("default" in module)) { + throw new Error( + `"${longName}" cannot be used with the \`--plugin\` option because its default module does not provide a \`default\` export`, + ); + } + + const shortName = getShorthandName(pluginName, "eslint-plugin"); + + plugins[shortName] = module.default; + }), + ); + + return plugins; +} + +/** + * Predicate function for whether or not to apply fixes in quiet mode. + * If a message is a warning, do not apply a fix. + * @param {LintMessage} message The lint result. + * @returns {boolean} True if the lint message is an error (and thus should be + * autofixed), false otherwise. + */ +function quietFixPredicate(message) { + return message.severity === 2; +} + +/** + * Predicate function for whether or not to run a rule in quiet mode. + * If a rule is set to warning, do not run it. + * @param {{ ruleId: string; severity: number; }} rule The rule id and severity. + * @returns {boolean} True if the lint rule should run, false otherwise. + */ +function quietRuleFilter(rule) { + return rule.severity === 2; +} + +//------------------------------------------------------------------------------ +// Public Interface +//------------------------------------------------------------------------------ + +/** + * Translates the CLI options into the options expected by the ESLint constructor. + * @param {ParsedCLIOptions} cliOptions The CLI options to translate. + * @param {"flat"|"eslintrc"} [configType="eslintrc"] The format of the config to generate. + * @returns {Promise} The options object for the ESLint constructor. + */ +async function translateOptions( + { + cache, + cacheFile, + cacheLocation, + cacheStrategy, + concurrency, + config, + configLookup, + env, + errorOnUnmatchedPattern, + eslintrc, + ext, + fix, + fixDryRun, + fixType, + flag, + global, + ignore, + ignorePath, + ignorePattern, + inlineConfig, + parser, + parserOptions, + plugin, + quiet, + reportUnusedDisableDirectives, + reportUnusedDisableDirectivesSeverity, + reportUnusedInlineConfigs, + resolvePluginsRelativeTo, + rule, + rulesdir, + stats, + warnIgnored, + passOnNoPatterns, + maxWarnings, + }, + configType, +) { + let overrideConfig, overrideConfigFile; + const importer = new ModuleImporter(); + + if (configType === "flat") { + overrideConfigFile = + typeof config === "string" ? config : !configLookup; + if (overrideConfigFile === false) { + overrideConfigFile = void 0; + } + + const languageOptions = {}; + + if (global) { + languageOptions.globals = global.reduce((obj, name) => { + if (name.endsWith(":true")) { + obj[name.slice(0, -5)] = "writable"; + } else { + obj[name] = "readonly"; + } + return obj; + }, {}); + } + + if (parserOptions) { + languageOptions.parserOptions = parserOptions; + } + + if (parser) { + languageOptions.parser = await importer.import(parser); + } + + overrideConfig = [ + { + ...(Object.keys(languageOptions).length > 0 + ? { languageOptions } + : {}), + rules: rule ? rule : {}, + }, + ]; + + if ( + reportUnusedDisableDirectives || + reportUnusedDisableDirectivesSeverity !== void 0 + ) { + overrideConfig[0].linterOptions = { + reportUnusedDisableDirectives: reportUnusedDisableDirectives + ? "error" + : normalizeSeverityToString( + reportUnusedDisableDirectivesSeverity, + ), + }; + } + + if (reportUnusedInlineConfigs !== void 0) { + overrideConfig[0].linterOptions = { + ...overrideConfig[0].linterOptions, + reportUnusedInlineConfigs: normalizeSeverityToString( + reportUnusedInlineConfigs, + ), + }; + } + + if (plugin) { + overrideConfig[0].plugins = await loadPlugins(importer, plugin); + } + + if (ext) { + overrideConfig.push({ + files: ext.map( + extension => + `**/*${extension.startsWith(".") ? "" : "."}${extension}`, + ), + }); + } + } else { + overrideConfigFile = config; + + overrideConfig = { + env: + env && + env.reduce((obj, name) => { + obj[name] = true; + return obj; + }, {}), + globals: + global && + global.reduce((obj, name) => { + if (name.endsWith(":true")) { + obj[name.slice(0, -5)] = "writable"; + } else { + obj[name] = "readonly"; + } + return obj; + }, {}), + ignorePatterns: ignorePattern, + parser, + parserOptions, + plugins: plugin, + rules: rule, + }; + } + + const options = { + allowInlineConfig: inlineConfig, + cache, + cacheLocation: cacheLocation || cacheFile, + cacheStrategy, + errorOnUnmatchedPattern, + fix: (fix || fixDryRun) && (quiet ? quietFixPredicate : true), + fixTypes: fixType, + ignore, + overrideConfig, + overrideConfigFile, + passOnNoPatterns, + }; + + if (configType === "flat") { + options.concurrency = concurrency; + options.flags = flag; + options.ignorePatterns = ignorePattern; + options.stats = stats; + options.warnIgnored = warnIgnored; + + /* + * For performance reasons rules not marked as 'error' are filtered out in quiet mode. As maxWarnings + * requires rules set to 'warn' to be run, we only filter out 'warn' rules if maxWarnings is not specified. + */ + options.ruleFilter = + quiet && maxWarnings === -1 ? quietRuleFilter : () => true; + } else { + options.resolvePluginsRelativeTo = resolvePluginsRelativeTo; + options.rulePaths = rulesdir; + options.useEslintrc = eslintrc; + options.extensions = ext; + options.ignorePath = ignorePath; + if ( + reportUnusedDisableDirectives || + reportUnusedDisableDirectivesSeverity !== void 0 + ) { + options.reportUnusedDisableDirectives = + reportUnusedDisableDirectives + ? "error" + : normalizeSeverityToString( + reportUnusedDisableDirectivesSeverity, + ); + } + } + + return options; +} + +module.exports = translateOptions; diff --git a/lib/types/index.d.ts b/lib/types/index.d.ts index 8d5411019d5d..ca9ac603b903 100644 --- a/lib/types/index.d.ts +++ b/lib/types/index.d.ts @@ -1966,6 +1966,10 @@ export class ESLint { isPathIgnored(filePath: string): Promise; loadFormatter(nameOrPath?: string): Promise; + + static fromOptionsModule(optionsURL: { + readonly href: string; + }): Promise; } export namespace ESLint { @@ -2047,6 +2051,7 @@ export namespace ESLint { cacheStrategy?: CacheStrategy | undefined; // Other Options + concurrency?: number | "auto" | "off" | undefined; flags?: string[] | undefined; } diff --git a/tests/bin/eslint.js b/tests/bin/eslint.js index f5b36457fd57..e42173d013ab 100644 --- a/tests/bin/eslint.js +++ b/tests/bin/eslint.js @@ -13,6 +13,7 @@ const childProcess = require("node:child_process"); const fs = require("node:fs"); const assert = require("chai").assert; const path = require("node:path"); +const os = require("node:os"); //------------------------------------------------------------------------------ // Data @@ -1359,6 +1360,135 @@ describe("bin/eslint.js", () => { }); }); }); + + describe("Multithread mode", () => { + it("should warn exactly once for an empty config file", async () => { + const cwd = path.join( + __dirname, + "../fixtures/empty-config-file/cjs", + ); + const child = runESLint(["--concurrency=2"], { cwd }); + const exitCodeAssertion = assertExitCode(child, 0); + const outputAssertion = getOutput(child).then(output => { + // The warning message should appear exactly once in stderr + assert.strictEqual( + [ + ...output.stderr.matchAll( + "Running ESLint with an empty config", + ), + ].length, + 1, + ); + }); + + return Promise.all([exitCodeAssertion, outputAssertion]); + }); + + it("should warn exactly once for an inactive flag", async () => { + const cwd = path.join(__dirname, "../fixtures"); + const child = runESLint( + [ + "--concurrency=2", + "--flag=test_only_enabled_by_default", + "passing.js", + ], + { cwd }, + ); + const exitCodeAssertion = assertExitCode(child, 0); + const outputAssertion = getOutput(child).then(output => { + // The warning message should appear exactly once in stderr + assert.strictEqual( + [ + ...output.stderr.matchAll( + "The flag 'test_only_enabled_by_default' is inactive", + ), + ].length, + 1, + ); + }); + + return Promise.all([exitCodeAssertion, outputAssertion]); + }); + + it("should warn exactly once for a file with circular fixes", async () => { + const cwd = fs.mkdtempSync( + path.join(os.tmpdir(), "eslint-circular-fixes-"), + ); + const configSrc = ` + export default { + plugins: { + "circular-fixes": { + rules: { + foobar: { + meta: { + fixable: "code", + }, + create(context) { + return { + 'Identifier[name="foo"]'(node) { + context.report({ + node, + message: "bar this foo", + fix(fixer) { + return fixer.replaceText( + node, + "bar", + ); + }, + }); + }, + }; + }, + }, + barfoo: { + meta: { + fixable: "code", + }, + create(context) { + return { + 'Identifier[name="bar"]'(node) { + context.report({ + node, + message: "foo this bar", + fix(fixer) { + return fixer.replaceText( + node, + "foo", + ); + }, + }); + }, + }; + }, + }, + }, + }, + }, + rules: { + "circular-fixes/foobar": "error", + "circular-fixes/barfoo": "error", + }, + }; + `; + fs.writeFileSync(path.join(cwd, "file.js"), "foo"); + fs.writeFileSync(path.join(cwd, "eslint.config.mjs"), configSrc); + const child = runESLint(["--concurrency=2", "--fix", "file.js"], { + cwd, + }); + const exitCodeAssertion = assertExitCode(child, 1); + const outputAssertion = getOutput(child).then(output => { + // The warning message should appear exactly once in stderr + assert.strictEqual( + [...output.stderr.matchAll("Circular fixes detected")] + .length, + 1, + ); + }); + + return Promise.all([exitCodeAssertion, outputAssertion]); + }); + }); + afterEach(() => { // Clean up all the processes after every test. forkedProcesses.forEach(child => child.kill()); diff --git a/tests/fixtures/option-modules/empty.mjs b/tests/fixtures/option-modules/empty.mjs new file mode 100644 index 000000000000..ff8b4c56321a --- /dev/null +++ b/tests/fixtures/option-modules/empty.mjs @@ -0,0 +1 @@ +export default {}; diff --git a/tests/fixtures/option-modules/test-only-enum-flag.cts b/tests/fixtures/option-modules/test-only-enum-flag.cts new file mode 100644 index 000000000000..f3e45af86387 --- /dev/null +++ b/tests/fixtures/option-modules/test-only-enum-flag.cts @@ -0,0 +1,7 @@ +enum ESLintFlags { + TestOnly = "test_only", +} + +export = { + flags: [ESLintFlags.TestOnly], +}; diff --git a/tests/fixtures/option-modules/test-only-enum-flag.mts b/tests/fixtures/option-modules/test-only-enum-flag.mts new file mode 100644 index 000000000000..f1e59a7099b7 --- /dev/null +++ b/tests/fixtures/option-modules/test-only-enum-flag.mts @@ -0,0 +1,7 @@ +enum ESLintFlags { + TestOnly = "test_only", +} + +export default { + flags: [ESLintFlags.TestOnly], +}; diff --git a/tests/fixtures/option-modules/test-only-flag.cjs b/tests/fixtures/option-modules/test-only-flag.cjs new file mode 100644 index 000000000000..eff450b9ca35 --- /dev/null +++ b/tests/fixtures/option-modules/test-only-flag.cjs @@ -0,0 +1,3 @@ +module.exports = { + flags: ["test_only"], +}; diff --git a/tests/fixtures/option-modules/test-only-flag.cts b/tests/fixtures/option-modules/test-only-flag.cts new file mode 100644 index 000000000000..eec431131c74 --- /dev/null +++ b/tests/fixtures/option-modules/test-only-flag.cts @@ -0,0 +1,7 @@ +import type { ESLint } from "eslint"; + +const options: ESLint.Options = { + flags: ["test_only"], +}; + +module.exports = options; diff --git a/tests/fixtures/option-modules/test-only-flag.mjs b/tests/fixtures/option-modules/test-only-flag.mjs new file mode 100644 index 000000000000..84d3e8087868 --- /dev/null +++ b/tests/fixtures/option-modules/test-only-flag.mjs @@ -0,0 +1,3 @@ +export default { + flags: ["test_only"], +}; diff --git a/tests/fixtures/option-modules/test-only-flag.mts b/tests/fixtures/option-modules/test-only-flag.mts new file mode 100644 index 000000000000..a4d1677dfda2 --- /dev/null +++ b/tests/fixtures/option-modules/test-only-flag.mts @@ -0,0 +1,7 @@ +import type { ESLint } from "eslint"; + +const options: ESLint.Options = { + flags: ["test_only"], +}; + +export default options; diff --git a/tests/lib/cli.js b/tests/lib/cli.js index 55007eb44d32..be82e745544c 100644 --- a/tests/lib/cli.js +++ b/tests/lib/cli.js @@ -3227,6 +3227,92 @@ describe("cli", () => { ); }); }); + + describe("--concurrency option", () => { + ["1", "100", "0x10", "auto", "off"].forEach(value => { + it(`should accept the value ${value}`, async () => { + const exitCode = await cli.execute( + `--concurrency ${value} --pass-on-no-patterns`, + null, + true, + ); + + assert.strictEqual( + exitCode, + 0, + "exit code should be 0", + ); + }); + }); + + ["foo", "0", "-1", "1.5", "Infinity"].forEach(value => { + it(`should not accept the value ${value}`, async () => { + const exitCode = await cli.execute( + `--concurrency=${value}`, + null, + true, + ); + + assert.strictEqual( + log.info.callCount, + 0, + "log.info should not be called", + ); + assert.strictEqual( + log.error.callCount, + 1, + "log.error should be called once", + ); + + assert.strictEqual( + log.error.firstCall.firstArg.replace(/\n.*/u, ""), + `Option concurrency: '${value}' is not a positive integer, 'auto' or 'off'.`, + "has the right text to log.error", + ); + assert.strictEqual( + exitCode, + 2, + "exit code should be 2", + ); + }); + }); + + it("should not accept an empty value", async () => { + const exitCode = await cli.execute( + '--concurrency=""', + null, + true, + ); + + assert.strictEqual( + log.info.callCount, + 0, + "log.info should not be called", + ); + assert.strictEqual( + log.error.callCount, + 1, + "log.error should be called once", + ); + + assert.strictEqual( + log.error.firstCall.firstArg.replace(/\n.*/u, ""), + "No value for 'concurrency' specified.", + "has the right text to log.error", + ); + assert.strictEqual(exitCode, 2, "exit code should be 2"); + }); + + it("should encode '?' and '#' in an options module", async () => { + const exitCode = await cli.execute( + "--concurrency=2 --no-config-lookup --no-ignore --rule 'no-fallthrough: [error, { commentPattern: \"#?\" }]' tests/fixtures/passing.js", + null, + true, + ); + + assert.strictEqual(exitCode, 0, "exit code should be 0"); + }); + }); }); }); }); diff --git a/tests/lib/eslint/eslint.js b/tests/lib/eslint/eslint.js index 6598d2199c64..8a229fbf2098 100644 --- a/tests/lib/eslint/eslint.js +++ b/tests/lib/eslint/eslint.js @@ -15,12 +15,14 @@ //------------------------------------------------------------------------------ const assert = require("node:assert"); -const util = require("node:util"); const fs = require("node:fs"); const fsp = require("node:fs/promises"); const os = require("node:os"); const path = require("node:path"); const timers = require("node:timers/promises"); +const { pathToFileURL } = require("node:url"); +const util = require("node:util"); +const { setEnvironmentData } = require("node:worker_threads"); const escapeStringRegExp = require("escape-string-regexp"); const fCache = require("file-entry-cache"); const sinon = require("sinon"); @@ -174,6 +176,7 @@ describe("ESLint", () => { afterEach(() => { sinon.restore(); + setEnvironmentData("createCallCountArray", void 0); }); [[], ["v10_config_lookup_from_file"]].forEach(flags => { @@ -293,6 +296,7 @@ describe("ESLint", () => { baseConfig: "", cache: "", cacheLocation: "", + concurrency: "", cwd: "foo", errorOnUnmatchedPattern: "", fix: "", @@ -314,6 +318,7 @@ describe("ESLint", () => { "- 'baseConfig' must be an object or null.", "- 'cache' must be a boolean.", "- 'cacheLocation' must be a non-empty string.", + '- \'concurrency\' must be a positive integer, "auto", or "off".', "- 'cwd' must be an absolute path.", "- 'errorOnUnmatchedPattern' must be a boolean.", "- 'fix' must be a boolean or a function.", @@ -389,7 +394,7 @@ describe("ESLint", () => { ); }); - it("should warn if .eslintignore file is present", async () => { + it("should warn if .eslintignore file is present", () => { const cwd = getFixturePath("ignored-paths"); sinon.restore(); @@ -406,6 +411,44 @@ describe("ESLint", () => { "calls `warningService.emitESLintIgnoreWarning()` once", ); }); + + it("should throw if numeric `concurrency` and uncloneable options are used together", () => { + assert.throws( + () => + new ESLint({ + flags, + concurrency: 1, + baseConfig: { processor: patternProcessor }, + fix: () => true, + plugins: { example: examplePlugin }, + }), + { + constructor: TypeError, + code: "ESLINT_UNCLONEABLE_OPTIONS", + message: + 'The options "baseConfig", "fix", and "plugins" cannot be cloned. When concurrency is enabled, all options must be cloneable. Remove uncloneable options or use an options module.', + }, + ); + }); + + it('should throw if `concurrency` `"auto"` and uncloneable options are used together', () => { + assert.throws( + () => + new ESLint({ + flags, + concurrency: "auto", + ruleFilter({ severity }) { + return severity === 2; + }, + }), + { + constructor: TypeError, + code: "ESLINT_UNCLONEABLE_OPTIONS", + message: + 'The option "ruleFilter" cannot be cloned. When concurrency is enabled, all options must be cloneable. Remove uncloneable options or use an options module.', + }, + ); + }); }); describe("hasFlag", () => { @@ -2309,19 +2352,11 @@ describe("ESLint", () => { } } + const { readFile } = fsp; const spy = sinon.spy( - (...args) => new PromiseLike(fsp.readFile(...args)), - ); - - const { ESLint: LocalESLint } = proxyquire( - "../../../lib/eslint/eslint", - { - "node:fs/promises": { - readFile: spy, - "@noCallThru": false, // allows calling other methods of `fs/promises` - }, - }, + (...args) => new PromiseLike(readFile(...args)), ); + sinon.replace(fsp, "readFile", spy); const testDir = "tests/fixtures/simple-valid-project"; const expectedLintedFiles = [ @@ -2329,7 +2364,7 @@ describe("ESLint", () => { path.resolve(testDir, "src", "foobar.js"), ]; - eslint = new LocalESLint({ + eslint = new ESLint({ flags, cwd: originalDir, overrideConfigFile: path.resolve( @@ -4472,24 +4507,86 @@ describe("ESLint", () => { assert.deepStrictEqual(results[0].usedDeprecatedRules, []); }); - it("should warn when deprecated rules are found in a config", async () => { - eslint = new ESLint({ - flags, - cwd: originalDir, - overrideConfigFile: - "tests/fixtures/cli-engine/deprecated-rule-config/eslint.config.js", - }); - const results = await eslint.lintFiles(["lib/cli*.js"]); + [void 0, 2].forEach(concurrency => + it(`should warn when deprecated rules are found in a config${concurrency ? " with multithreading" : ""}`, async () => { + if (concurrency) { + // Silence poor concurrency warning for testing + sinon.stub( + WarningService.prototype, + "emitPoorConcurrencyWarning", + ); + } + eslint = new ESLint({ + flags, + cwd: fixtureDir, + overrideConfigFile: + "cli-engine/deprecated-rule-config/eslint.config.js", + concurrency, + }); + const results = await eslint.lintFiles(["cli/*.js"]); - assert.deepStrictEqual(results[0].usedDeprecatedRules, [ - { - ruleId: "indent-legacy", - replacedBy: ["@stylistic/indent"], - info: coreRules.get("indent-legacy").meta - .deprecated, - }, - ]); - }); + assert.strictEqual(results.length, 2); + assert.deepStrictEqual(results[0].usedDeprecatedRules, [ + { + ruleId: "indent-legacy", + replacedBy: ["@stylistic/indent"], + info: coreRules.get("indent-legacy").meta + .deprecated, + }, + ]); + assert.deepStrictEqual(results[1].usedDeprecatedRules, [ + { + ruleId: "indent-legacy", + replacedBy: ["@stylistic/indent"], + info: coreRules.get("indent-legacy").meta + .deprecated, + }, + ]); + }), + ); + + [void 0, 2].forEach(concurrency => + it(`should warn about deprecated rules when file paths are passed explicitly${concurrency ? " with multithreading" : ""}`, async () => { + if (concurrency) { + // Silence poor concurrency warning for testing + sinon.stub( + WarningService.prototype, + "emitPoorConcurrencyWarning", + ); + } + eslint = new ESLint({ + flags, + cwd: fixtureDir, + overrideConfigFile: true, + overrideConfig: { + rules: { + semi: "error", + }, + }, + concurrency, + }); + const results = await eslint.lintFiles([ + "passing.js", + "files/foo.js", + ]); + + assert.strictEqual(results.length, 2); + assert.deepStrictEqual(results[0].usedDeprecatedRules, [ + { + ruleId: "semi", + replacedBy: ["@stylistic/semi"], + info: coreRules.get("semi").meta.deprecated, + }, + ]); + assert.deepStrictEqual(results[1].usedDeprecatedRules, [ + { + ruleId: "semi", + replacedBy: ["@stylistic/semi"], + info: coreRules.get("semi").meta.deprecated, + }, + ]); + }), + ); it("should add the plugin name to the replacement if available", async () => { const deprecated = { @@ -8926,7 +9023,11 @@ describe("ESLint", () => { }, }); - await assert.rejects(eslint.lintFiles("*.js")); + await assert.rejects(eslint.lintFiles("*.js"), ({ message }) => + message.includes( + "Error while loading rule 'boom/boom': Boom!", + ), + ); // Wait until all files have been closed. // eslint-disable-next-line n/no-unsupported-features/node-builtins -- it's still an experimental feature. @@ -8936,6 +9037,67 @@ describe("ESLint", () => { assert.strictEqual(createCallCount, 1); }); + it("should stop linting files if a rule crashes with multithreading", async () => { + const concurrency = 2; + const cwd = fixtureDir; + + const createCallCountArray = new Int32Array( + new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT), + ); + setEnvironmentData( + "createCallCountArray", + createCallCountArray, + ); + + const optionsSrc = ` + import { getEnvironmentData } from "node:worker_threads"; + + export default { + flags: ${JSON.stringify(flags)}, + concurrency: ${concurrency}, + cwd: ${JSON.stringify(cwd)}, + plugins: { + boom: { + rules: { + boom: { + create() { + const createCallCountArray = getEnvironmentData("createCallCountArray"); + Atomics.add(createCallCountArray, 0, 1); + throw Error("Boom!"); + }, + }, + }, + }, + }, + baseConfig: { + rules: { + "boom/boom": "error", + }, + }, + }; + `; + const optionsURL = new URL( + `data:text/javascript,${encodeURIComponent(optionsSrc)}`, + ); + eslint = await ESLint.fromOptionsModule(optionsURL); + + await assert.rejects(eslint.lintFiles("*.js"), ({ message }) => + message.includes( + "Error while loading rule 'boom/boom': Boom!", + ), + ); + + const createCallCount = Atomics.load(createCallCountArray, 0); + assert( + createCallCount >= 1, + "expected create() to be called at least once", + ); + assert( + createCallCount <= concurrency, + `expected create() to be called at most ${concurrency} times`, + ); + }); + // https://github.com/eslint/eslint/issues/19243 it("should not exit the process unexpectedly after a rule crashes", async () => { const cwd = getFixturePath(); @@ -9595,6 +9757,69 @@ describe("ESLint", () => { assert.strictEqual(results[3].messages.length, 0); }); }); + + describe("Environment sharing in multithread mode", () => { + beforeEach(() => { + // Silence poor concurrency warning for testing + sinon.stub( + WarningService.prototype, + "emitPoorConcurrencyWarning", + ); + }); + + afterEach(() => { + delete process.env.ESLINT_TEST_ENV; + }); + + it("should propagate environment variables from the controlling thread to worker threads", async () => { + const optionsSrc = ` + import assert from "node:assert"; + import { isMainThread } from "node:worker_threads"; + + if (!isMainThread) { + if (process.env.ESLINT_TEST_ENV !== "test") { + assert.fail("Environment variable ESLINT_TEST_ENV is not set as expected in worker threads."); + } + } + + export default { + concurrency: 2, + cwd: ${JSON.stringify(fixtureDir)}, + flags: ${JSON.stringify(flags)}, + overrideConfigFile: true, + }; + `; + const url = new URL( + `data:text/javascript,${encodeURIComponent(optionsSrc)}`, + ); + eslint = await ESLint.fromOptionsModule(url); + process.env.ESLINT_TEST_ENV = "test"; + await eslint.lintFiles(["passing*.js"]); + }); + + it("should propagate environment variables from worker threads to the controlling thread", async () => { + const optionsSrc = ` + import { isMainThread } from "node:worker_threads"; + + if (!isMainThread) { + process.env.ESLINT_TEST_ENV = "test"; + } + + export default { + concurrency: 2, + cwd: ${JSON.stringify(fixtureDir)}, + flags: ${JSON.stringify(flags)}, + overrideConfigFile: true, + }; + `; + const url = new URL( + `data:text/javascript,${encodeURIComponent(optionsSrc)}`, + ); + eslint = await ESLint.fromOptionsModule(url); + await eslint.lintFiles(["passing*.js"]); + assert.strictEqual(process.env.ESLINT_TEST_ENV, "test"); + }); + }); }); describe("Fix Types", () => { @@ -10840,6 +11065,21 @@ describe("ESLint", () => { }); it("should throw an error when results were created from a different instance", async () => { + const teardown = createCustomTeardown({ + cwd: fixtureDir, + files: { + "baz/file.js": "3", + "baz/another-file.js": "4", + }, + }); + await teardown.prepare(); + + // Silence poor concurrency warning for testing + sinon.stub( + WarningService.prototype, + "emitPoorConcurrencyWarning", + ); + const engine1 = new ESLint({ flags, overrideConfigFile: true, @@ -10860,6 +11100,17 @@ describe("ESLint", () => { }, }, }); + const engine3 = new ESLint({ + flags, + overrideConfigFile: true, + cwd: path.join(fixtureDir, "baz"), + overrideConfig: { + rules: { + semi: 2, + }, + }, + concurrency: 2, + }); const results1 = await engine1.lintText("1", { filePath: "file.js", @@ -10867,6 +11118,7 @@ describe("ESLint", () => { const results2 = await engine2.lintText("2", { filePath: "file.js", }); + const results3 = await engine3.lintFiles("*.js"); engine1.getRulesMetaForResults(results1); // should not throw an error assert.throws( @@ -10879,6 +11131,18 @@ describe("ESLint", () => { "Results object was not created from this ESLint instance.", }, ); + + engine3.getRulesMetaForResults(results3); // should not throw an error + assert.throws( + () => { + engine3.getRulesMetaForResults(results2); + }, + { + constructor: TypeError, + message: + "Results object was not created from this ESLint instance.", + }, + ); }); it("should treat a result without `filePath` as if the file was located in `cwd`", async () => { @@ -10919,49 +11183,60 @@ describe("ESLint", () => { assert.deepStrictEqual(rulesMeta, {}); }); - it("should not throw an error if results contain linted files and one ignored file", async () => { - const engine = new ESLint({ - flags, - overrideConfigFile: true, - cwd: getFixturePath(), - ignorePatterns: ["passing*"], - overrideConfig: { - rules: { - "no-undef": 2, - semi: 1, + [void 0, 2].forEach(concurrency => + it(`should not throw an error if results contain linted files and one ignored file${concurrency ? " with multithreading" : ""}`, async () => { + if (concurrency) { + // Silence poor concurrency warning for testing + sinon.stub( + WarningService.prototype, + "emitPoorConcurrencyWarning", + ); + } + const engine = new ESLint({ + flags, + overrideConfigFile: true, + cwd: fixtureDir, + ignorePatterns: ["passing*"], + overrideConfig: { + rules: { + "no-undef": 2, + semi: 1, + }, }, - }, - }); + concurrency, + }); - const results = await engine.lintFiles([ - "missing-semicolon.js", - "passing.js", - "undef.js", - ]); + const results = await engine.lintFiles([ + "missing-semicolon.js", + "passing.js", + "undef.js", + ]); - assert( - results.some(({ messages }) => - messages.some( - ({ message, ruleId }) => - !ruleId && message.startsWith("File ignored"), + assert( + results.some(({ messages }) => + messages.some( + ({ message, ruleId }) => + !ruleId && + message.startsWith("File ignored"), + ), ), - ), - "At least one file should be ignored but none is.", - ); + "At least one file should be ignored but none is.", + ); - const rulesMeta = engine.getRulesMetaForResults(results); + const rulesMeta = engine.getRulesMetaForResults(results); - assert.deepStrictEqual( - rulesMeta["no-undef"], - coreRules.get("no-undef").meta, - ); - assert.deepStrictEqual( - rulesMeta.semi, - coreRules.get("semi").meta, - ); - }); + assert.deepStrictEqual( + rulesMeta["no-undef"], + coreRules.get("no-undef").meta, + ); + assert.deepStrictEqual( + rulesMeta.semi, + coreRules.get("semi").meta, + ); + }), + ); - it("should return empty object when there are no linting errors", async () => { + it("should return an empty object when there are no linting errors", async () => { const engine = new ESLint({ flags, overrideConfigFile: true, @@ -10992,6 +11267,38 @@ describe("ESLint", () => { assert.strictEqual(rulesMeta.semi, coreRules.get("semi").meta); }); + it("should return one rule meta when there is a linting error with multithreading", async () => { + // Silence poor concurrency warning for testing + sinon.stub( + WarningService.prototype, + "emitPoorConcurrencyWarning", + ); + + const engine = new ESLint({ + flags, + overrideConfigFile: true, + overrideConfig: { + rules: { + semi: 2, + }, + }, + cwd: fixtureDir, + concurrency: 2, + }); + + const results = await engine.lintFiles([ + "missing-semicolon.js", + "passing.js", + ]); + const rulesMeta = engine.getRulesMetaForResults(results); + + assert.strictEqual(Object.keys(rulesMeta).length, 1); + assert.deepStrictEqual( + rulesMeta.semi, + coreRules.get("semi").meta, + ); + }); + it("should return one rule meta when there is a suppressed linting error", async () => { const engine = new ESLint({ flags, @@ -11012,19 +11319,51 @@ describe("ESLint", () => { assert.strictEqual(rulesMeta.semi, coreRules.get("semi").meta); }); - it("should return multiple rule meta when there are multiple linting errors", async () => { + it("should return one rule meta when there is a suppressed linting error with multithreading", async () => { + // Silence poor concurrency warning for testing + sinon.stub( + WarningService.prototype, + "emitPoorConcurrencyWarning", + ); + const engine = new ESLint({ flags, overrideConfigFile: true, overrideConfig: { rules: { - semi: 2, - quotes: [2, "double"], + "no-console": "error", }, }, + concurrency: 2, + cwd: fixtureDir, }); - const results = await engine.lintText("'a'"); + const results = await engine.lintFiles([ + "disable-inline-config.js", + "passing.js", + ]); + const rulesMeta = engine.getRulesMetaForResults(results); + + assert.strictEqual(Object.keys(rulesMeta).length, 1); + assert.deepStrictEqual( + rulesMeta["no-console"], + coreRules.get("no-console").meta, + ); + }); + + it("should return multiple rule meta when there are multiple linting errors", async () => { + const engine = new ESLint({ + flags, + overrideConfigFile: true, + overrideConfig: { + rules: { + semi: 2, + quotes: [2, "double"], + }, + }, + }); + + const results = await engine.lintText("'a'"); const rulesMeta = engine.getRulesMetaForResults(results); assert.strictEqual(rulesMeta.semi, coreRules.get("semi").meta); @@ -11034,6 +11373,42 @@ describe("ESLint", () => { ); }); + it("should return multiple rule meta when there are multiple linting errors with multithreading", async () => { + // Silence poor concurrency warning for testing + sinon.stub( + WarningService.prototype, + "emitPoorConcurrencyWarning", + ); + + const engine = new ESLint({ + flags, + overrideConfigFile: true, + overrideConfig: { + rules: { + "no-console": 2, + quotes: [2, "double"], + }, + }, + cwd: fixtureDir, + concurrency: 2, + }); + + const results = await engine.lintFiles([ + "passing.js", + "single-quoted.js", + ]); + const rulesMeta = engine.getRulesMetaForResults(results); + + assert.deepStrictEqual( + rulesMeta["no-console"], + coreRules.get("no-console").meta, + ); + assert.deepStrictEqual( + rulesMeta.quotes, + coreRules.get("quotes").meta, + ); + }); + it("should return multiple rule meta when there are multiple linting errors from a plugin", async () => { const customPlugin = { rules: { @@ -11071,6 +11446,70 @@ describe("ESLint", () => { ); }); + it("should return multiple rule meta when there are multiple linting errors from a plugin with multithreading", async () => { + // Silence poor concurrency warning for testing + sinon.stub( + WarningService.prototype, + "emitPoorConcurrencyWarning", + ); + + const noVarURL = new URL( + "../../lib/rules/no-var.js", + pathToFileURL(__dirname), + ).href; + const optionsSrc = ` + import noVar from ${JSON.stringify(noVarURL)}; + + const customPlugin = { + rules: { + "no-var": noVar, + }, + }; + + export { customPlugin }; + export default { + flags: ${JSON.stringify(flags)}, + overrideConfigFile: true, + overrideConfig: { + plugins: { + "custom-plugin": customPlugin, + }, + rules: { + "custom-plugin/no-var": 2, + "no-console": 2, + "no-undef": 2, + }, + }, + cwd: ${JSON.stringify(fixtureDir)}, + concurrency: 2, + }; + `; + const optionsURL = new URL( + `data:text/javascript,${encodeURIComponent(optionsSrc)}`, + ); + const { customPlugin } = await import(optionsURL); + const engine = await ESLint.fromOptionsModule(optionsURL); + + const results = await engine.lintFiles([ + "globals-node.js", + "passing.js", + ]); + const rulesMeta = engine.getRulesMetaForResults(results); + + assert.deepStrictEqual( + rulesMeta["no-console"], + coreRules.get("no-console").meta, + ); + assert.deepStrictEqual( + rulesMeta["no-undef"], + coreRules.get("no-undef").meta, + ); + assert.deepStrictEqual( + rulesMeta["custom-plugin/no-var"], + customPlugin.rules["no-var"].meta, + ); + }); + it("should ignore messages not related to a rule", async () => { const engine = new ESLint({ flags, @@ -11111,6 +11550,39 @@ describe("ESLint", () => { } }); + it("should ignore messages not related to a rule with multithreading", async () => { + // Silence poor concurrency warning for testing + sinon.stub( + WarningService.prototype, + "emitPoorConcurrencyWarning", + ); + + const engine = new ESLint({ + flags, + overrideConfigFile: true, + ignorePatterns: ["undef.js"], + overrideConfig: { + rules: { + "no-var": "warn", + }, + linterOptions: { + reportUnusedDisableDirectives: "warn", + }, + }, + cwd: fixtureDir, + concurrency: 3, + }); + + const results = await engine.lintFiles([ + "disable-inline-config.js", + "syntax-error.js", + "undef.js", + ]); + const rulesMeta = engine.getRulesMetaForResults(results); + + assert.deepStrictEqual(rulesMeta, {}); + }); + it("should return a non-empty value if some of the messages are related to a rule", async () => { const engine = new ESLint({ flags, @@ -11133,7 +11605,46 @@ describe("ESLint", () => { }); }); - it("should return empty object if all messages are related to unknown rules", async () => { + it("should return a non-empty value if some of the messages are related to a rule with multithreading", async () => { + const teardown = createCustomTeardown({ + cwd: fixtureDir, + files: { + "file.js": "// eslint-disable-line no-var\nvar foo;", + }, + }); + await teardown.prepare(); + + // Silence poor concurrency warning for testing + sinon.stub( + WarningService.prototype, + "emitPoorConcurrencyWarning", + ); + + const engine = new ESLint({ + flags, + overrideConfigFile: true, + overrideConfig: { + rules: { "no-var": "warn" }, + linterOptions: { + reportUnusedDisableDirectives: "warn", + }, + }, + cwd: fixtureDir, + concurrency: 2, + }); + + const results = await engine.lintFiles([ + "file.js", + "passing.js", + ]); + const rulesMeta = engine.getRulesMetaForResults(results); + + assert.deepStrictEqual(rulesMeta, { + "no-var": coreRules.get("no-var").meta, + }); + }); + + it("should return an empty object if all messages are related to unknown rules", async () => { const engine = new ESLint({ flags, overrideConfigFile: true, @@ -11156,7 +11667,48 @@ describe("ESLint", () => { assert.strictEqual(Object.keys(rulesMeta).length, 0); }); - it("should return object with meta of known rules if some messages are related to unknown rules", async () => { + it("should return an empty object if all messages are related to unknown rules with multithreading", async () => { + const teardown = createCustomTeardown({ + cwd: fixtureDir, + files: { + "file.js": + "// eslint-disable-line foo, bar/baz, bar/baz/qux", + }, + }); + await teardown.prepare(); + + // Silence poor concurrency warning for testing + sinon.stub( + WarningService.prototype, + "emitPoorConcurrencyWarning", + ); + + const engine = new ESLint({ + flags, + overrideConfigFile: true, + cwd: fixtureDir, + concurrency: 2, + }); + + const results = await engine.lintFiles([ + "file.js", + "passing.js", + ]); + + assert.strictEqual(results[0].messages.length, 3); + assert.strictEqual(results[0].messages[0].ruleId, "foo"); + assert.strictEqual(results[0].messages[1].ruleId, "bar/baz"); + assert.strictEqual( + results[0].messages[2].ruleId, + "bar/baz/qux", + ); + + const rulesMeta = engine.getRulesMetaForResults(results); + + assert.strictEqual(Object.keys(rulesMeta).length, 0); + }); + + it("should return an object with meta of known rules if some messages are related to unknown rules", async () => { const engine = new ESLint({ flags, overrideConfigFile: true, @@ -11182,6 +11734,51 @@ describe("ESLint", () => { "no-var": coreRules.get("no-var").meta, }); }); + + it("should return an object with meta of known rules if some messages are related to unknown rules with multithreading", async () => { + const teardown = createCustomTeardown({ + cwd: fixtureDir, + files: { + "file.js": + "// eslint-disable-line foo, bar/baz, bar/baz/qux\nvar x;", + }, + }); + await teardown.prepare(); + + // Silence poor concurrency warning for testing + sinon.stub( + WarningService.prototype, + "emitPoorConcurrencyWarning", + ); + + const engine = new ESLint({ + flags, + overrideConfigFile: true, + overrideConfig: { rules: { "no-var": "warn" } }, + cwd: fixtureDir, + concurrency: 2, + }); + + const results = await engine.lintFiles([ + "file.js", + "passing.js", + ]); + + assert.strictEqual(results[0].messages.length, 4); + assert.strictEqual(results[0].messages[0].ruleId, "foo"); + assert.strictEqual(results[0].messages[1].ruleId, "bar/baz"); + assert.strictEqual( + results[0].messages[2].ruleId, + "bar/baz/qux", + ); + assert.strictEqual(results[0].messages[3].ruleId, "no-var"); + + const rulesMeta = engine.getRulesMetaForResults(results); + + assert.deepStrictEqual(rulesMeta, { + "no-var": coreRules.get("no-var").meta, + }); + }); }); describe("outputFixes()", () => { @@ -12954,7 +13551,12 @@ describe("ESLint", () => { }); }); - describe("cache", () => { + /** + * A helper function to test the cache functionality with different concurrency settings. + * @param {undefined | number} concurrency The concurrency option passed to ESLint. + * @returns {void} + */ + function testCacheWithConcurrency(concurrency) { let eslint; /** @@ -12977,6 +13579,20 @@ describe("ESLint", () => { beforeEach(() => { cacheFilePath = null; + if (concurrency) { + sinon + .stub( + require("../../../lib/eslint/eslint"), + "calculateWorkerCount", + ) + .callsFake(() => concurrency); + + // Silence poor concurrency warning for testing + sinon.stub( + WarningService.prototype, + "emitPoorConcurrencyWarning", + ); + } }); afterEach(() => { @@ -13024,6 +13640,7 @@ describe("ESLint", () => { ); eslint = new ESLint({ + concurrency, overrideConfigFile: true, cwd, @@ -13068,6 +13685,7 @@ describe("ESLint", () => { }); eslint = new ESLint({ + concurrency, overrideConfigFile: true, cwd, @@ -13112,6 +13730,7 @@ describe("ESLint", () => { }); eslint = new ESLint({ + concurrency, overrideConfigFile: true, cwd, @@ -13154,6 +13773,7 @@ describe("ESLint", () => { ); eslint = new ESLint({ + concurrency, overrideConfigFile: true, cache: true, cwd, @@ -13185,6 +13805,7 @@ describe("ESLint", () => { ); eslint = new ESLint({ + concurrency, overrideConfigFile: true, cwd, @@ -13214,19 +13835,27 @@ describe("ESLint", () => { ); } - assert( - spy.calledWith(file), - "ESLint should have read the file because there was no cache file", - ); + if (concurrency) { + assert( + !spy.calledWith(file), + "ESLint should not have read the file in the controlling thread", + ); + } else { + assert( + spy.calledWith(file), + "ESLint should have read the file because there was no cache file", + ); + } assert( shell.test("-f", cacheFilePath), "the cache for eslint should have been created", ); // destroy the spy - sinon.restore(); + spy?.restore(); eslint = new ESLint({ + concurrency, overrideConfigFile: true, cwd, @@ -13246,10 +13875,17 @@ describe("ESLint", () => { const [newResult] = await eslint.lintFiles([file]); - assert( - spy.calledWith(file), - "ESLint should have read the file again because it's considered changed because the config changed", - ); + if (concurrency) { + assert( + !spy.calledWith(file), + "ESLint should not have read the file in the controlling thread", + ); + } else { + assert( + spy.calledWith(file), + "ESLint should have read the file again because it's considered changed because the config changed", + ); + } assert.strictEqual( newResult.errorCount, 1, @@ -13273,6 +13909,7 @@ describe("ESLint", () => { ); eslint = new ESLint({ + concurrency, overrideConfigFile: true, cwd, @@ -13295,19 +13932,27 @@ describe("ESLint", () => { const result = await eslint.lintFiles([file]); - assert( - spy.calledWith(file), - "ESLint should have read the file because there was no cache file", - ); + if (concurrency) { + assert( + !spy.calledWith(file), + "ESLint should not have read the file in the controlling thread", + ); + } else { + assert( + spy.calledWith(file), + "ESLint should have read the file because there was no cache file", + ); + } assert( shell.test("-f", cacheFilePath), "the cache for eslint should have been created", ); // destroy the spy - sinon.restore(); + spy?.restore(); eslint = new ESLint({ + concurrency, overrideConfigFile: true, cwd, @@ -13322,7 +13967,6 @@ describe("ESLint", () => { ignore: false, }); - // create a new spy spy = sinon.spy(fs.promises, "readFile"); const cachedResult = await eslint.lintFiles([file]); @@ -13333,11 +13977,18 @@ describe("ESLint", () => { "the result should have been the same", ); - // assert the file was not processed because the cache was used - assert( - !spy.calledWith(file), - "the file should not have been reloaded", - ); + if (concurrency) { + assert( + !spy.calledWith(file), + "ESLint should not have read the file in the controlling thread", + ); + } else { + // assert the file was not processed because the cache was used + assert( + !spy.calledWith(file), + "the file should not have been reloaded", + ); + } }); it("when `cacheLocation` is specified, should create the cache file with `cache:true` and then delete it with `cache:false`", async () => { @@ -13349,6 +14000,7 @@ describe("ESLint", () => { ); const eslintOptions = { + concurrency, overrideConfigFile: true, // specifying cache true the cache will be created @@ -13387,6 +14039,37 @@ describe("ESLint", () => { ); }); + it("should not create the cache file if all files are ignored", async () => { + cacheFilePath = getFixturePath(".eslintcache"); + doDelete(cacheFilePath); + assert( + !shell.test("-f", cacheFilePath), + "the cache file already exists and wasn't successfully deleted", + ); + + const eslintOptions = { + concurrency, + overrideConfigFile: true, + + // specifying cache true the cache will be created + cache: true, + cacheLocation: cacheFilePath, + ignorePatterns: ["**/*.js"], + cwd: path.join(fixtureDir, ".."), + }; + + eslint = new ESLint(eslintOptions); + + const file = getFixturePath("cache/src", "test-file.js"); + + await eslint.lintFiles(file); + + assert( + !shell.test("-f", cacheFilePath), + "cache file should not have been created", + ); + }); + it("should not attempt to delete the cache file if it does not exist", async () => { cacheFilePath = getFixturePath(".eslintcache"); doDelete(cacheFilePath); @@ -13398,6 +14081,7 @@ describe("ESLint", () => { const spy = sinon.spy(fsp, "unlink"); const eslintOptions = { + concurrency, overrideConfigFile: true, cache: false, cacheLocation: cacheFilePath, @@ -13420,22 +14104,21 @@ describe("ESLint", () => { spy.notCalled, "Expected attempt to delete the cache was not made.", ); - - spy.restore(); }); - it("should throw an error if the cache file to be deleted exist on a read-only file system", async () => { + it("should throw an error if the cache file to be deleted exists on a read-only file system", async () => { cacheFilePath = getFixturePath(".eslintcache"); fs.writeFileSync(cacheFilePath, ""); // Simulate a read-only file system. - const unlinkStub = sinon.stub(fsp, "unlink").rejects( + sinon.stub(fsp, "unlink").rejects( Object.assign(new Error("read-only file system"), { code: "EROFS", }), ); const eslintOptions = { + concurrency, overrideConfigFile: true, cache: false, cacheLocation: cacheFilePath, @@ -13456,8 +14139,6 @@ describe("ESLint", () => { async () => await eslint.lintFiles([file]), /read-only file system/u, ); - - unlinkStub.restore(); }); it("should not throw an error if deleting fails but cache file no longer exists", async () => { @@ -13470,6 +14151,7 @@ describe("ESLint", () => { }); const eslintOptions = { + concurrency, overrideConfigFile: true, cache: false, cacheLocation: cacheFilePath, @@ -13489,8 +14171,6 @@ describe("ESLint", () => { await eslint.lintFiles([file]); assert(unlinkStub.calledWithExactly(cacheFilePath)); - - unlinkStub.restore(); }); it("should store in the cache a file that has lint messages and a file that doesn't have lint messages", async () => { @@ -13502,6 +14182,7 @@ describe("ESLint", () => { ); eslint = new ESLint({ + concurrency, cwd: path.join(fixtureDir, ".."), overrideConfigFile: true, @@ -13514,6 +14195,7 @@ describe("ESLint", () => { "no-unused-vars": 2, }, }, + ignorePatterns: ["**/test-file2.js"], }); const badFile = fs.realpathSync( getFixturePath("cache/src", "fail-file.js"), @@ -13521,8 +14203,15 @@ describe("ESLint", () => { const goodFile = fs.realpathSync( getFixturePath("cache/src", "test-file.js"), ); - const result = await eslint.lintFiles([badFile, goodFile]); - const [badFileResult, goodFileResult] = result; + const ignoredFile = fs.realpathSync( + getFixturePath("cache/src", "test-file2.js"), + ); + const result = await eslint.lintFiles([ + badFile, + goodFile, + ignoredFile, + ]); + const [badFileResult, goodFileResult, ignoredFileResult] = result; assert.notStrictEqual( badFileResult.errorCount + badFileResult.warningCount, @@ -13534,6 +14223,11 @@ describe("ESLint", () => { 0, "the good file should have passed linting without errors or warnings", ); + assert.strictEqual( + ignoredFileResult.warningCount, + 1, + "the ignored file should have a warning", + ); assert( shell.test("-f", cacheFilePath), @@ -13553,7 +14247,15 @@ describe("ESLint", () => { "object", "the entry for the bad file should have been in the cache", ); - const cachedResult = await eslint.lintFiles([badFile, goodFile]); + assert( + !cache.getKey(ignoredFile), + "unexpected entry for the ignored file found in the cache", + ); + const cachedResult = await eslint.lintFiles([ + badFile, + goodFile, + ignoredFile, + ]); assert.deepStrictEqual( result, @@ -13570,6 +14272,7 @@ describe("ESLint", () => { "the cache file already exists and wasn't successfully deleted", ); eslint = new ESLint({ + concurrency, cwd: path.join(fixtureDir, ".."), overrideConfigFile: true, @@ -13589,8 +14292,15 @@ describe("ESLint", () => { const goodFile = fs.realpathSync( getFixturePath("cache/src", "test-file.js"), ); - const toBeDeletedFile = fs.realpathSync( - getFixturePath("cache/src", "file-to-delete.js"), + const toBeDeletedFile = getFixturePath( + "cache/src", + "file-to-delete.js", + ); + + // Create or overwrite the file to be deleted to ensure it exists if the test is repeated. + await fsp.writeFile( + toBeDeletedFile, + "var abc = 3;\n\nconsole.log(abc);\n", ); await eslint.lintFiles([badFile, goodFile, toBeDeletedFile]); @@ -13642,6 +14352,7 @@ describe("ESLint", () => { ); eslint = new ESLint({ + concurrency, cwd: path.join(fixtureDir, ".."), overrideConfigFile: true, @@ -13704,6 +14415,7 @@ describe("ESLint", () => { fs.writeFileSync(cacheFilePath, "[]"); // intenationally invalid to additionally make sure it isn't used eslint = new ESLint({ + concurrency, cwd: path.join(fixtureDir, ".."), overrideConfigFile: true, cacheLocation: cacheFilePath, @@ -13739,6 +14451,7 @@ describe("ESLint", () => { fs.writeFileSync(cacheFilePath, "[]"); // intenationally invalid to additionally make sure it isn't used eslint = new ESLint({ + concurrency, cwd: path.join(fixtureDir, ".."), overrideConfigFile: true, cacheLocation: cacheFilePath, @@ -13776,6 +14489,7 @@ describe("ESLint", () => { fs.writeFileSync(cacheFilePath, ""); eslint = new ESLint({ + concurrency, cwd: path.join(fixtureDir, ".."), overrideConfigFile: true, cache: true, @@ -13813,6 +14527,7 @@ describe("ESLint", () => { fs.writeFileSync(cacheFilePath, "[]"); // intenationally invalid to additionally make sure it isn't used eslint = new ESLint({ + concurrency, cwd: path.join(fixtureDir, ".."), overrideConfigFile: true, cacheLocation: cacheFilePath, @@ -13847,6 +14562,7 @@ describe("ESLint", () => { ); eslint = new ESLint({ + concurrency, overrideConfigFile: true, // specify a custom cache file @@ -13909,6 +14625,7 @@ describe("ESLint", () => { const deprecatedRuleId = "space-in-parens"; eslint = new ESLint({ + concurrency, cwd: path.join(fixtureDir, ".."), overrideConfigFile: true, @@ -13978,6 +14695,7 @@ describe("ESLint", () => { ); eslint = new ESLint({ + concurrency, cwd: path.join(fixtureDir, ".."), overrideConfigFile: true, @@ -14046,6 +14764,7 @@ describe("ESLint", () => { ); eslint = new ESLint({ + concurrency, cwd: path.join(fixtureDir, ".."), overrideConfigFile: true, @@ -14100,6 +14819,7 @@ describe("ESLint", () => { ); eslint = new ESLint({ + concurrency, cwd: path.join(fixtureDir, ".."), overrideConfigFile: true, @@ -14153,6 +14873,7 @@ describe("ESLint", () => { ); eslint = new ESLint({ + concurrency, cwd: path.join(fixtureDir, ".."), overrideConfigFile: true, @@ -14207,6 +14928,14 @@ describe("ESLint", () => { ); }); }); + } + + describe("cache", () => { + testCacheWithConcurrency(void 0); + }); + + describe("cache with multithreading", () => { + testCacheWithConcurrency(2); }); describe("v10_config_lookup_from_file", () => { @@ -15005,4 +15734,196 @@ describe("ESLint", () => { ]); }); }); + + describe("ESLint.fromOptionsModule", () => { + /** + * Tests `ESLint.fromOptionsModule` with a given URL and checks if the returned instance has the expected flag. + * @param {URL} url The url to test. + * @returns {Promise} A promise that resolves if the test passes. + */ + async function testFromOptionsModuleWithFlag(url) { + const eslint = await ESLint.fromOptionsModule(url); + assert( + eslint instanceof ESLint, + "expected fromOptionsModule to asynchronously return an instance of ESLint", + ); + assert( + eslint.hasFlag("test_only"), + "expected eslint instance to have the test_only flag", + ); + } + + it("should return an instance of ESLint with the file URL of an ESM module", async () => { + await testFromOptionsModuleWithFlag( + pathToFileURL( + "tests/fixtures/option-modules/test-only-flag.mjs", + ), + ); + }); + + it("should return an instance of ESLint with the file URL of a CommonJS module", async () => { + await testFromOptionsModuleWithFlag( + pathToFileURL( + "tests/fixtures/option-modules/test-only-flag.cjs", + ), + ); + }); + + // eslint-disable-next-line n/no-unsupported-features/node-builtins -- `process.features.typescript` is experimental. + (typeof process.features.typescript === "string" ? it : it.skip)( + "should return an instance of ESLint with the file URL of an ESM module with erasable TypeScript syntax", + async () => { + await testFromOptionsModuleWithFlag( + pathToFileURL( + "tests/fixtures/option-modules/test-only-flag.mts", + ), + ); + }, + ); + + // eslint-disable-next-line n/no-unsupported-features/node-builtins -- `process.features.typescript` is experimental. + (typeof process.features.typescript === "string" ? it : it.skip)( + "should return an instance of ESLint with the file URL of a CommonJS module with erasable TypeScript syntax", + async () => { + await testFromOptionsModuleWithFlag( + pathToFileURL( + "tests/fixtures/option-modules/test-only-flag.cts", + ), + ); + }, + ); + + // eslint-disable-next-line n/no-unsupported-features/node-builtins -- `process.features.typescript` is experimental. + (process.features.typescript === "transform" ? it : it.skip)( + "should return an instance of ESLint with the file URL of an ESM module with unerasable TypeScript syntax", + async () => { + await testFromOptionsModuleWithFlag( + pathToFileURL( + "tests/fixtures/option-modules/test-only-enum-flag.mts", + ), + ); + }, + ); + + // eslint-disable-next-line n/no-unsupported-features/node-builtins -- `process.features.typescript` is experimental. + (process.features.typescript === "transform" ? it : it.skip)( + "should return an instance of ESLint with the file URL of a CommonJS module with unerasable TypeScript syntax", + async () => { + await testFromOptionsModuleWithFlag( + pathToFileURL( + "tests/fixtures/option-modules/test-only-enum-flag.cts", + ), + ); + }, + ); + + it("should return an instance of ESLint with a data URL", async () => { + await testFromOptionsModuleWithFlag( + new URL( + "data:text/javascript,export default { flags: ['test_only'] };", + ), + ); + }); + + it("should throw an error with a string argument", async () => { + await assert.rejects( + () => + ESLint.fromOptionsModule( + "data:text/javascript,export default { flags: ['test_only'] };", + ), + { + constructor: TypeError, + message: "Argument must be a URL object", + }, + ); + }); + + it("should throw an error with an invalid argument", async () => { + await assert.rejects(() => ESLint.fromOptionsModule(42), { + constructor: TypeError, + message: "Argument must be a URL object", + }); + }); + + it("should throw an error with a missing argument", async () => { + await assert.rejects(() => ESLint.fromOptionsModule(), { + constructor: TypeError, + message: "Argument must be a URL object", + }); + }); + + it("should throw an error with an invalid URL object", async () => { + await assert.rejects( + () => + ESLint.fromOptionsModule({ + href: "foo", + toString: () => "bar", + }), + { + constructor: TypeError, + message: "Argument must be a URL object", + }, + ); + }); + + it("should throw an error with an unsupported URL scheme", async () => { + await assert.rejects( + // eslint-disable-next-line no-script-url -- test for unsupported URL scheme + () => ESLint.fromOptionsModule(new URL("javascript:({ })")), + { code: "ERR_UNSUPPORTED_ESM_URL_SCHEME", constructor: Error }, + ); + }); + }); + + describe("caclulateWorkerCount", () => { + const { calculateWorkerCount } = require("../../../lib/eslint/eslint"); + + /** + * Defines a test for `calculateWorkerCount` with the given parameters. + * @param {number | "auto" | "off"} concurrency The normalized concurrency setting. + * @param {number} fileCount The number of files to lint. An integer greater than 0. + * @param {number} availableCores The number of available cores. + * @param {number} expectedWorkerCount The expected return value of `calculateWorkerCount`. + * @returns {Mocha.TestFunction} A Mocha test function. + */ + function testCalculateWorkerCount( + concurrency, + fileCount, + availableCores, + expectedWorkerCount, + ) { + return it(`should return ${expectedWorkerCount} when concurrency is ${concurrency} with ${fileCount} file(s) and ${availableCores} available core(s)`, () => { + const actualWorkerCount = calculateWorkerCount( + concurrency, + fileCount, + { availableParallelism: () => availableCores }, + ); + assert.strictEqual(actualWorkerCount, expectedWorkerCount); + }); + } + + // Returns numeric `concurrency` if the number of files is not less + testCalculateWorkerCount(1, 1, 1, 0); // 1 mapped to 0 + testCalculateWorkerCount(1, 10, 8, 0); // 1 mapped to 0 + testCalculateWorkerCount(3, 10, 8, 3); + testCalculateWorkerCount(42, 42, 4, 42); + + // Returns the number of files if `concurrency` is larger + testCalculateWorkerCount(42, 1, 8, 0); // 1 mapped to 0 + testCalculateWorkerCount(4, 3, 8, 3); + + // Returns 0 if concurrency is "off" + testCalculateWorkerCount("off", 1000, 8, 0); + + // Returns 0 if concurrency is "auto" and there are only a few files to lint + testCalculateWorkerCount("auto", 15, 8, 0); + + // Returns 0 if concurrency is "auto" and there are less that four available cores + testCalculateWorkerCount("auto", 42, 1, 0); + testCalculateWorkerCount("auto", 1000, 2, 0); + testCalculateWorkerCount("auto", 123, 0, 0); + + // Returns half the number of available cores if concurrency is "auto" and there are many files to lint + testCalculateWorkerCount("auto", 1000, 8, 4); + }); }); diff --git a/tests/lib/services/warning-service.js b/tests/lib/services/warning-service.js index cbc1835cfe1c..3765cb1d7a2a 100644 --- a/tests/lib/services/warning-service.js +++ b/tests/lib/services/warning-service.js @@ -98,6 +98,19 @@ describe("WarningService", () => { "Expected process.emitWarning to be called with the correct arguments", ); }); + + it("emitPoorConcurrencyWarning", () => { + const notice = "use a different concurrency setting"; + warningService.emitPoorConcurrencyWarning(notice); + + assert( + process.emitWarning.calledOnceWithExactly( + `You may ${notice} to improve performance.`, + "ESLintPoorConcurrencyWarning", + ), + "Expected process.emitWarning to be called with the correct arguments", + ); + }); }); describe("should not throw an error when `process` is not defined", () => { diff --git a/tests/lib/types/types.test.ts b/tests/lib/types/types.test.ts index ed5ba53b296e..6863b19a2442 100644 --- a/tests/lib/types/types.test.ts +++ b/tests/lib/types/types.test.ts @@ -1497,6 +1497,11 @@ linterWithEslintrcConfig.getRules(); eslint = new ESLint({ cache: true }); eslint = new ESLint({ cacheLocation: "foo" }); eslint = new ESLint({ cacheStrategy: "content" }); + + eslint = new ESLint({ concurrency: 8 }); + eslint = new ESLint({ concurrency: "auto" }); + eslint = new ESLint({ concurrency: "off" }); + eslint = new ESLint({ cwd: "foo" }); eslint = new ESLint({ errorOnUnmatchedPattern: true }); eslint = new ESLint({ fix: true }); @@ -1618,6 +1623,15 @@ linterWithEslintrcConfig.getRules(); })(); const hasFooFlag: boolean = eslint.hasFlag("foo"); + + ESLint.fromOptionsModule(new URL("file:///path/to/file.js")).then( + eslint => { + eslint; // $ExpectType ESLint + }, + ); + + // @ts-expect-error // String not allowed + ESLint.fromOptionsModule("data:text/javascript,export default [{}];"); } // #endregion From d503f1981354c7b86e423879846c61e0405af8fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Fri, 15 Aug 2025 23:03:21 +0900 Subject: [PATCH 063/165] ci: fix `stale.yml` (#20010) --- .github/workflows/stale.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 35eb2f7d8031..fe232e62bc09 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -4,7 +4,9 @@ on: schedule: - cron: "31 22 * * *" # Runs every day at 10:31 PM UTC -permissions: read-all +permissions: + issues: write + pull-requests: write jobs: stale: From 327c67256fbeaf9d5e365802c2a11f5d32a16522 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Tue, 19 Aug 2025 08:10:15 +0000 Subject: [PATCH 064/165] docs: Update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d42f329f1905..5e0c1aba199e 100644 --- a/README.md +++ b/README.md @@ -328,7 +328,7 @@ to get your logo on our READMEs and [website](https://eslint.org/sponsors).

Automattic Airbnb

Gold Sponsors

Qlty Software trunk.io Shopify

Silver Sponsors

Vite Liftoff American Express StackBlitz

Bronze Sponsors

-

Cybozu Sentry FORTUNE GAMES Anagram Solver Icons8 Discord GitBook Nx Mercedes-Benz Group HeroCoders LambdaTest

+

Cybozu Sentry Anagram Solver Icons8 Discord GitBook Nx Mercedes-Benz Group HeroCoders LambdaTest

Technology Sponsors

Technology sponsors allow us to use their products and services for free as part of a contribution to the open source ecosystem and our work.

Netlify Algolia 1Password

From 676f4acaaed6e4f6ffe0c2e21272d4702b311a7b Mon Sep 17 00:00:00 2001 From: Sweta Tanwar Date: Tue, 19 Aug 2025 13:40:54 +0530 Subject: [PATCH 065/165] fix: allow scientific notation with trailing zeros matching exponent (#20002) --- lib/rules/no-loss-of-precision.js | 29 ++++++++++++++++++++++--- tests/lib/rules/no-loss-of-precision.js | 4 ++++ 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/lib/rules/no-loss-of-precision.js b/lib/rules/no-loss-of-precision.js index 7fc02401c796..2e54fdf6e6eb 100644 --- a/lib/rules/no-loss-of-precision.js +++ b/lib/rules/no-loss-of-precision.js @@ -189,9 +189,32 @@ module.exports = { * @returns {boolean} true if they do not match */ function baseTenLosesPrecision(node) { - const normalizedRawNumber = convertNumberToScientificNotation( - getRaw(node), - ); + const rawNumber = getRaw(node); + + /* + * If trailing zeros equal the exponent, this is a valid representation + * like "9.00e2" where 00 = 2 (meaning 9.00 * 10^2 = 900) + * https://github.com/eslint/eslint/issues/19957 + */ + if (rawNumber.includes(".") && rawNumber.includes("e")) { + const parts = rawNumber.split("e"); + const coefficient = parts[0]; + const exponent = parseInt(parts[1], 10); + + // Count trailing zeros after decimal + const decimalParts = coefficient.split("."); + if (decimalParts.length === 2) { + const decimalPart = decimalParts[1]; + const trailingZeros = decimalPart.match(/0*$/u)[0].length; + + if (trailingZeros === exponent) { + return false; + } + } + } + + const normalizedRawNumber = + convertNumberToScientificNotation(rawNumber); const requestedPrecision = normalizedRawNumber .split("e")[0] .replace(".", "").length; diff --git a/tests/lib/rules/no-loss-of-precision.js b/tests/lib/rules/no-loss-of-precision.js index c058174041e2..a431d964cfcc 100644 --- a/tests/lib/rules/no-loss-of-precision.js +++ b/tests/lib/rules/no-loss-of-precision.js @@ -48,6 +48,10 @@ ruleTester.run("no-loss-of-precision", rule, { "var x = 0.000000000000000000000000000000000000000000000000000000000000000000000000000000", "var x = -0", "var x = 123.0000000000000000000000", + // https://github.com/eslint/eslint/issues/19957 + "var x = 9.00e2", + "var x = 9.000e3", + "var x = 9.0000000000e10", "var x = 019.5", "var x = 0195", "var x = 0e5", From 6c074206ae0eae4816197a57648b415832a20e1d Mon Sep 17 00:00:00 2001 From: Kirk Waiblinger <53019676+kirkwaiblinger@users.noreply.github.com> Date: Wed, 20 Aug 2025 01:56:09 -0600 Subject: [PATCH 066/165] fix: fix spurious failure in neostandard integration test (#20023) * fix: fix spurious failure in neostandard integration test * better --- .github/workflows/types-integration.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/types-integration.yml b/.github/workflows/types-integration.yml index a04224824ae4..9e47ca9ebb78 100644 --- a/.github/workflows/types-integration.yml +++ b/.github/workflows/types-integration.yml @@ -67,7 +67,7 @@ jobs: - name: Install Packages (neostandard) working-directory: neostandard run: | - npm install --no-package-lock ../eslint + npm ci && npm install --no-save ../eslint - name: Run TSC working-directory: neostandard From 9b8990397b2d2ed70771bb0e2070261a0c41782c Mon Sep 17 00:00:00 2001 From: Tanuj Kanti <86398394+Tanujkanti4441@users.noreply.github.com> Date: Thu, 21 Aug 2025 00:57:07 +0530 Subject: [PATCH 067/165] fix: default value of accessor-pairs option in rule.d.ts file (#20024) fix: default value of accessor-pairs --- lib/types/rules.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/types/rules.d.ts b/lib/types/rules.d.ts index 5b815fcaa062..937e83220bdb 100644 --- a/lib/types/rules.d.ts +++ b/lib/types/rules.d.ts @@ -117,7 +117,7 @@ export interface ESLintRules extends Linter.RulesRecord { */ enforceForClassMembers: boolean; /** - * @default true + * @default false */ enforceForTSTypes: boolean; }>, From 0b4a590333b73a21b9e0ddc98462680e09fe3232 Mon Sep 17 00:00:00 2001 From: Domenico Gemoli Date: Wed, 20 Aug 2025 21:32:05 +0200 Subject: [PATCH 068/165] docs: make rulesdir deprecation clearer (#20018) --- docs/src/use/command-line-interface.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/use/command-line-interface.md b/docs/src/use/command-line-interface.md index 606b2e8a839f..89800b893354 100644 --- a/docs/src/use/command-line-interface.md +++ b/docs/src/use/command-line-interface.md @@ -395,7 +395,7 @@ To ignore rules in `.eslintrc` configuration files and only run rules specified #### `--rulesdir` -**Deprecated**: Use rules from plugins instead. +**Deprecated**: Use [rules from custom plugins](https://eslint.org/blog/2022/08/new-config-system-part-2/#from---rulesdir-to-runtime-plugins) instead. **eslintrc Mode Only.** This option allows you to specify another directory from which to load rules files. This allows you to dynamically load new rules at run time. This is useful when you have custom rules that aren't suitable for being bundled with ESLint. From 0c9999c2a682151cf13bb3a4f8916930678c2f9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Fri, 22 Aug 2025 21:23:37 +0900 Subject: [PATCH 069/165] refactor: prefer default options in `grouped-accessor-pairs` (#20028) * wip * revert --- lib/rules/grouped-accessor-pairs.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/rules/grouped-accessor-pairs.js b/lib/rules/grouped-accessor-pairs.js index 0f20f2fa5b80..c4ac86dc481b 100644 --- a/lib/rules/grouped-accessor-pairs.js +++ b/lib/rules/grouped-accessor-pairs.js @@ -87,8 +87,6 @@ function isAccessorKind(node) { return node.kind === "get" || node.kind === "set"; } -const DEFAULT_ORDER = "anyOrder"; - //------------------------------------------------------------------------------ // Rule Definition //------------------------------------------------------------------------------ @@ -98,7 +96,12 @@ module.exports = { meta: { type: "suggestion", - defaultOptions: [DEFAULT_ORDER], + defaultOptions: [ + "anyOrder", + { + enforceForTSTypes: false, + }, + ], docs: { description: @@ -129,10 +132,8 @@ module.exports = { }, create(context) { - const order = context.options[0] ?? DEFAULT_ORDER; - const enforceForTSTypes = - context.options[1]?.enforceForTSTypes ?? false; - const sourceCode = context.sourceCode; + const [order, { enforceForTSTypes }] = context.options; + const { sourceCode } = context; /** * Reports the given accessor pair. From 4bce8a250262ec47207bc260581f979e40c86bda Mon Sep 17 00:00:00 2001 From: Jenkins Date: Fri, 22 Aug 2025 20:08:30 +0000 Subject: [PATCH 070/165] chore: package.json update for eslint-config-eslint release --- packages/eslint-config-eslint/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/eslint-config-eslint/package.json b/packages/eslint-config-eslint/package.json index 06cd2d3c7e40..459096a2b264 100644 --- a/packages/eslint-config-eslint/package.json +++ b/packages/eslint-config-eslint/package.json @@ -1,6 +1,6 @@ { "name": "eslint-config-eslint", - "version": "11.0.0", + "version": "12.0.0", "author": "Nicholas C. Zakas ", "description": "Default ESLint configuration for ESLint projects.", "funding": "https://eslint.org/donate", From b48fa20034e53bc65d1a58f3d834705e3087b00c Mon Sep 17 00:00:00 2001 From: Jenkins Date: Fri, 22 Aug 2025 20:15:11 +0000 Subject: [PATCH 071/165] chore: package.json update for @eslint/js release --- packages/js/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/js/package.json b/packages/js/package.json index 0653097ad99c..0901af00f416 100644 --- a/packages/js/package.json +++ b/packages/js/package.json @@ -1,6 +1,6 @@ { "name": "@eslint/js", - "version": "9.33.0", + "version": "9.34.0", "description": "ESLint JavaScript language implementation", "funding": "https://eslint.org/donate", "main": "./src/index.js", From f19ad9493e0ca04c2c1455fbb3402eaad993a8be Mon Sep 17 00:00:00 2001 From: Francesco Trotta Date: Fri, 22 Aug 2025 22:32:53 +0200 Subject: [PATCH 072/165] chore: upgrade to `@eslint/js@9.34.0` (#20030) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d6fe1bbd2397..d59b499727c2 100644 --- a/package.json +++ b/package.json @@ -110,7 +110,7 @@ "@eslint/config-helpers": "^0.3.1", "@eslint/core": "^0.15.2", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.33.0", + "@eslint/js": "9.34.0", "@eslint/plugin-kit": "^0.3.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", From 2e455fb433c4cae19572d75d866392f3b5a677d0 Mon Sep 17 00:00:00 2001 From: Jenkins Date: Fri, 22 Aug 2025 20:38:55 +0000 Subject: [PATCH 073/165] Build: changelog update for 9.34.0 --- CHANGELOG.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a584595789b0..be42ad7e67f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,24 @@ +v9.34.0 - August 22, 2025 + +* [`f19ad94`](https://github.com/eslint/eslint/commit/f19ad9493e0ca04c2c1455fbb3402eaad993a8be) chore: upgrade to `@eslint/js@9.34.0` (#20030) (Francesco Trotta) +* [`b48fa20`](https://github.com/eslint/eslint/commit/b48fa20034e53bc65d1a58f3d834705e3087b00c) chore: package.json update for @eslint/js release (Jenkins) +* [`4bce8a2`](https://github.com/eslint/eslint/commit/4bce8a250262ec47207bc260581f979e40c86bda) chore: package.json update for eslint-config-eslint release (Jenkins) +* [`0c9999c`](https://github.com/eslint/eslint/commit/0c9999c2a682151cf13bb3a4f8916930678c2f9b) refactor: prefer default options in `grouped-accessor-pairs` (#20028) (루밀LuMir) +* [`0b4a590`](https://github.com/eslint/eslint/commit/0b4a590333b73a21b9e0ddc98462680e09fe3232) docs: make rulesdir deprecation clearer (#20018) (Domenico Gemoli) +* [`9b89903`](https://github.com/eslint/eslint/commit/9b8990397b2d2ed70771bb0e2070261a0c41782c) fix: default value of accessor-pairs option in rule.d.ts file (#20024) (Tanuj Kanti) +* [`6c07420`](https://github.com/eslint/eslint/commit/6c074206ae0eae4816197a57648b415832a20e1d) fix: fix spurious failure in neostandard integration test (#20023) (Kirk Waiblinger) +* [`676f4ac`](https://github.com/eslint/eslint/commit/676f4acaaed6e4f6ffe0c2e21272d4702b311a7b) fix: allow scientific notation with trailing zeros matching exponent (#20002) (Sweta Tanwar) +* [`327c672`](https://github.com/eslint/eslint/commit/327c67256fbeaf9d5e365802c2a11f5d32a16522) docs: Update README (GitHub Actions Bot) +* [`d503f19`](https://github.com/eslint/eslint/commit/d503f1981354c7b86e423879846c61e0405af8fe) ci: fix `stale.yml` (#20010) (루밀LuMir) +* [`0bb777a`](https://github.com/eslint/eslint/commit/0bb777a82b533df595cd520d9c89d291efa14a33) feat: multithread linting (#19794) (Francesco Trotta) +* [`bf26229`](https://github.com/eslint/eslint/commit/bf2622991f5b892610a8c3343ff16519e5fd7a79) docs: Fix typo in core-concepts/index.md (#20009) (Tobias Hernstig) +* [`43a5f9e`](https://github.com/eslint/eslint/commit/43a5f9e36f1aade16f81fc49ef4b333660faadab) feat: add eslint-plugin-regexp to eslint-config-eslint base config (#19951) (Pixel998) +* [`e2dc67d`](https://github.com/eslint/eslint/commit/e2dc67d8b028147de4da35c64efe1d74c9f6a883) ci: centralize `stale.yml` (#19994) (루밀LuMir) +* [`7093cb8`](https://github.com/eslint/eslint/commit/7093cb8f590ec2a1b5364d7b5687e9b5f4e06f8a) ci: bump actions/checkout from 4 to 5 (#20005) (dependabot[bot]) +* [`2309327`](https://github.com/eslint/eslint/commit/2309327554acbf011f0d17e7b36fdd68e43adf3a) docs: fix typo in the "Configuring Rules" section (#20001) (ghazi-git) +* [`2b87e21`](https://github.com/eslint/eslint/commit/2b87e21321422c120c2248dae25cac7f9eec0f29) docs: [no-else-return] clarify sample code. (#19991) (Yuki Takada (Yukinosuke Takada)) +* [`c36570c`](https://github.com/eslint/eslint/commit/c36570c6657c2a92dbb4f09a8166a4d9909a091a) docs: Update README (GitHub Actions Bot) + v9.33.0 - August 8, 2025 * [`4258046`](https://github.com/eslint/eslint/commit/425804602ecb9ee5f54d1c38a473cf20538420c5) chore: update dependency @eslint/js to v9.33.0 (#19998) (renovate[bot]) From b8875f67a7bc99824f19147f4a669be7e98f3eee Mon Sep 17 00:00:00 2001 From: Jenkins Date: Fri, 22 Aug 2025 20:38:55 +0000 Subject: [PATCH 074/165] 9.34.0 --- docs/package.json | 2 +- docs/src/_data/rules_meta.json | 5 ++++- docs/src/_data/versions.json | 2 +- docs/src/use/formatters/html-formatter-example.html | 2 +- package.json | 2 +- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/docs/package.json b/docs/package.json index 996e68f15b6e..ba6df669bf6b 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,7 +1,7 @@ { "name": "docs-eslint", "private": true, - "version": "9.33.0", + "version": "9.34.0", "description": "", "main": "index.js", "keywords": [], diff --git a/docs/src/_data/rules_meta.json b/docs/src/_data/rules_meta.json index def40ec57e34..31ee60893a58 100644 --- a/docs/src/_data/rules_meta.json +++ b/docs/src/_data/rules_meta.json @@ -832,7 +832,10 @@ "grouped-accessor-pairs": { "type": "suggestion", "defaultOptions": [ - "anyOrder" + "anyOrder", + { + "enforceForTSTypes": false + } ], "docs": { "description": "Require grouped accessor pairs in object literals and classes", diff --git a/docs/src/_data/versions.json b/docs/src/_data/versions.json index 87031d6d554c..f5da31e6f7b7 100644 --- a/docs/src/_data/versions.json +++ b/docs/src/_data/versions.json @@ -6,7 +6,7 @@ "path": "/docs/head/" }, { - "version": "9.33.0", + "version": "9.34.0", "branch": "latest", "path": "/docs/latest/" }, diff --git a/docs/src/use/formatters/html-formatter-example.html b/docs/src/use/formatters/html-formatter-example.html index 1b368cefc30a..a7070460c27a 100644 --- a/docs/src/use/formatters/html-formatter-example.html +++ b/docs/src/use/formatters/html-formatter-example.html @@ -118,7 +118,7 @@

ESLint Report

- 8 problems (4 errors, 4 warnings) - Generated on Fri Aug 08 2025 20:32:08 GMT+0000 (Coordinated Universal Time) + 8 problems (4 errors, 4 warnings) - Generated on Fri Aug 22 2025 20:38:56 GMT+0000 (Coordinated Universal Time)
Error 'addOne' is defined but never used. - no-unused-vars + no-unused-vars
Error Use the isNaN function to compare with NaN. - use-isnan + use-isnan
diff --git a/package.json b/package.json index d59b499727c2..629124c106b4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "eslint", - "version": "9.33.0", + "version": "9.34.0", "author": "Nicholas C. Zakas ", "description": "An AST-based pattern checker for JavaScript.", "type": "commonjs", From ea789c7dd234c1a6be499a4644dd0f5c97615972 Mon Sep 17 00:00:00 2001 From: sethamus <32633697+sethamus@users.noreply.github.com> Date: Sat, 23 Aug 2025 15:25:24 +0300 Subject: [PATCH 075/165] fix: no-loss-of-precision false positive with uppercase exponent (#20032) --- lib/rules/no-loss-of-precision.js | 2 +- tests/lib/rules/no-loss-of-precision.js | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/rules/no-loss-of-precision.js b/lib/rules/no-loss-of-precision.js index 2e54fdf6e6eb..79565c8b8437 100644 --- a/lib/rules/no-loss-of-precision.js +++ b/lib/rules/no-loss-of-precision.js @@ -189,7 +189,7 @@ module.exports = { * @returns {boolean} true if they do not match */ function baseTenLosesPrecision(node) { - const rawNumber = getRaw(node); + const rawNumber = getRaw(node).toLowerCase(); /* * If trailing zeros equal the exponent, this is a valid representation diff --git a/tests/lib/rules/no-loss-of-precision.js b/tests/lib/rules/no-loss-of-precision.js index a431d964cfcc..e0373bec6da1 100644 --- a/tests/lib/rules/no-loss-of-precision.js +++ b/tests/lib/rules/no-loss-of-precision.js @@ -52,6 +52,9 @@ ruleTester.run("no-loss-of-precision", rule, { "var x = 9.00e2", "var x = 9.000e3", "var x = 9.0000000000e10", + "var x = 9.00E2", + "var x = 9.000E3", + "var x = 9.0000000000E10", "var x = 019.5", "var x = 0195", "var x = 0e5", From 8033b195299a1eaa4a0ed6553d9e034a457bb577 Mon Sep 17 00:00:00 2001 From: Francesco Trotta Date: Sat, 23 Aug 2025 16:30:29 +0200 Subject: [PATCH 076/165] docs: add documentation for `--no-config-lookup` (#20033) * docs: fix rule performance profiling instructions * remove comma * update CLI docs * update one more occurrence --- docs/src/extend/custom-rules.md | 4 ++-- docs/src/use/command-line-interface.md | 21 +++++++++++++++++---- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/docs/src/extend/custom-rules.md b/docs/src/extend/custom-rules.md index 82ecaec1098b..30b0bbcf0038 100644 --- a/docs/src/extend/custom-rules.md +++ b/docs/src/extend/custom-rules.md @@ -991,10 +991,10 @@ no-empty-class | 21.976 | 2.6% semi | 19.359 | 2.3% ``` -To test one rule explicitly, combine the `--no-eslintrc`, and `--rule` options: +To test one rule explicitly, combine the `--no-config-lookup` and `--rule` options: ```bash -$ TIMING=1 eslint --no-eslintrc --rule "quotes: [2, 'double']" lib +$ TIMING=1 eslint --no-config-lookup --rule "quotes: [2, 'double']" lib Rule | Time (ms) | Relative :------|----------:|--------: quotes | 18.066 | 100.0% diff --git a/docs/src/use/command-line-interface.md b/docs/src/use/command-line-interface.md index 89800b893354..71fb721c1d7e 100644 --- a/docs/src/use/command-line-interface.md +++ b/docs/src/use/command-line-interface.md @@ -160,9 +160,22 @@ Miscellaneous: ### Basic Configuration +#### `--no-config-lookup` + +**Flat Config Mode Only.** Disables use of configuration from files. + +- **Argument Type**: No argument. + +##### `--no-config-lookup` example + +{{ npx_tabs ({ + package: "eslint", + args: ["--no-config-lookup", "file.js"] +}) }} + #### `--no-eslintrc` -**eslintrc Mode Only.** Disables use of configuration from `.eslintrc.*` and `package.json` files. For flat config mode, use `--no-config-lookup` instead. +**eslintrc Mode Only.** Disables use of configuration from `.eslintrc.*` and `package.json` files. For flat config mode, use [`--no-config-lookup`](#--no-config-lookup) instead. - **Argument Type**: No argument. @@ -231,7 +244,7 @@ This option allows you to specify additional file extensions to lint. - **Multiple Arguments**: Yes - **Default Value**: By default, ESLint lints files with extensions `.js`, `.mjs`, `.cjs`, and additional extensions [specified in the configuration file](configure/configuration-files#specifying-files-with-arbitrary-extensions). -This option is primarily intended for use in combination with the `--no-config-lookup` option, since in that case there is no configuration file in which the additional extensions would be specified. +This option is primarily intended for use in combination with the [`--no-config-lookup`](#--no-config-lookup) option, since in that case there is no configuration file in which the additional extensions would be specified. ##### `--ext` example @@ -365,7 +378,7 @@ This option specifies the rules to be used. These rules are merged with any rules specified with configuration files. If the rule is defined in a plugin, you have to prefix the rule ID with the plugin name and a `/`. -To ignore rules in `.eslintrc` configuration files and only run rules specified in the command line, use the `--rule` flag in combination with the [`--no-eslintrc`](#--no-eslintrc) flag. +To ignore rules in configuration files and only run rules specified in the command line, use the `--rule` flag in combination with the [`--no-config-lookup`](#--no-config-lookup) flag. ##### `--rule` example @@ -389,7 +402,7 @@ To ignore rules in `.eslintrc` configuration files and only run rules specified {{ npx_tabs ({ package: "eslint", - args: ["--rule", "\'quotes: [error, double]\'", "--no-eslintrc"], + args: ["--rule", "\'quotes: [error, double]\'", "--no-config-lookup"], comment: "Only apply rule from the command line" }) }} From dabbe95c39671c5fa272da012ee1432aa088650f Mon Sep 17 00:00:00 2001 From: Milos Djermanovic Date: Sun, 24 Aug 2025 11:50:23 +0200 Subject: [PATCH 077/165] fix: correct types for `no-restricted-imports` rule (#20034) --- lib/types/rules.d.ts | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/lib/types/rules.d.ts b/lib/types/rules.d.ts index 937e83220bdb..e55edc28852d 100644 --- a/lib/types/rules.d.ts +++ b/lib/types/rules.d.ts @@ -60,25 +60,19 @@ type EitherGroupOrRegEx = // Base type for import name specifiers, ensuring mutual exclusivity type EitherNameSpecifiers = | { - importNames: string[]; + importNames?: string[]; + importNamePattern?: string; allowImportNames?: never; - importNamePattern?: never; allowImportNamePattern?: never; } | { - importNamePattern: string; - allowImportNames?: never; - importNames?: never; - allowImportNamePattern?: never; - } - | { - allowImportNames: string[]; + allowImportNames?: string[]; importNames?: never; importNamePattern?: never; allowImportNamePattern?: never; } | { - allowImportNamePattern: string; + allowImportNamePattern?: string; importNames?: never; allowImportNames?: never; importNamePattern?: never; @@ -3441,9 +3435,9 @@ export interface ESLintRules extends Linter.RulesRecord { paths: Array< string | ValidNoRestrictedImportPathOptions >; - patterns: Array< - string | ValidNoRestrictedImportPatternOptions - >; + patterns: + | Array + | Array; }> >, ] From 6ad8973e5d3c94b8e100b7266f55f8eb0757eb00 Mon Sep 17 00:00:00 2001 From: Francesco Trotta Date: Sun, 24 Aug 2025 13:58:38 +0200 Subject: [PATCH 078/165] docs: update `--no-ignore` and `--ignore-pattern` documentation (#20036) --- docs/src/use/command-line-interface.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/src/use/command-line-interface.md b/docs/src/use/command-line-interface.md index 71fb721c1d7e..f7aa139127f9 100644 --- a/docs/src/use/command-line-interface.md +++ b/docs/src/use/command-line-interface.md @@ -525,7 +525,7 @@ This option is helpful if you are using another program to format your code, but #### `--no-ignore` -Disables excluding of files from `.eslintignore` files, `--ignore-path` flags, `--ignore-pattern` flags, and the `ignorePatterns` property in config files. +Disables excluding of files from [`--ignore-pattern`](#--ignore-pattern) flags and the `ignores` property in configuration. In eslintrc mode, `.eslintignore` files, [`--ignore-path`](#--ignore-path) flags, and the `ignorePatterns` property in configuration are also disabled. - **Argument Type**: No argument. @@ -540,7 +540,7 @@ Disables excluding of files from `.eslintignore` files, `--ignore-path` flags, ` This option allows you to specify patterns of files to ignore. In eslintrc mode, these are in addition to `.eslintignore`. -- **Argument Type**: String. The supported syntax is the same as for [`.eslintignore` files](configure/ignore-deprecated#the-eslintignore-file), which use the same patterns as the [`.gitignore` specification](https://git-scm.com/docs/gitignore). You should quote your patterns in order to avoid shell interpretation of glob patterns. +- **Argument Type**: String. The supported syntax is the same as for [`ignores` patterns](configure/configuration-files#excluding-files-with-ignores), which use [minimatch](https://www.npmjs.com/package/minimatch) syntax. In eslintrc mode, the syntax is the same as for [`.eslintignore` files](configure/ignore-deprecated#the-eslintignore-file), which use the same patterns as the [`.gitignore` specification](https://git-scm.com/docs/gitignore). You should quote your patterns in order to avoid shell interpretation of glob patterns. - **Multiple Arguments**: Yes ##### `--ignore-pattern` example From dfd11deb24fc733faa5db751a2f615eb04e48b15 Mon Sep 17 00:00:00 2001 From: Francesco Trotta Date: Thu, 28 Aug 2025 09:43:38 +0200 Subject: [PATCH 079/165] fix: add `before` and `after` to test case types (#20049) --- lib/types/index.d.ts | 2 ++ tests/lib/types/types.test.ts | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/lib/types/index.d.ts b/lib/types/index.d.ts index ca9ac603b903..c799f22b42a4 100644 --- a/lib/types/index.d.ts +++ b/lib/types/index.d.ts @@ -2259,6 +2259,8 @@ export namespace RuleTester { only?: boolean; languageOptions?: Linter.LanguageOptions | undefined; settings?: { [name: string]: any } | undefined; + before?: () => void; + after?: () => void; } interface SuggestionOutput { diff --git a/tests/lib/types/types.test.ts b/tests/lib/types/types.test.ts index 6863b19a2442..95be58f65437 100644 --- a/tests/lib/types/types.test.ts +++ b/tests/lib/types/types.test.ts @@ -1924,6 +1924,15 @@ ruleTester.run("my-rule", rule, { { code: "foo", filename: "test.js" }, { code: "foo", languageOptions: { globals: { foo: true } } }, { code: "foo", settings: { foo: true } }, + { + code: "foo", + before() { + /* do something */ + }, + after() { + /* undo something */ + }, + }, RuleTester.only("foo"), ], @@ -1954,6 +1963,12 @@ ruleTester.run("my-rule", rule, { ], }, { code: "foo", errors: 1, only: true }, + { + code: "foo", + errors: [{ messageId: "bar" }], + before: () => {}, + after: () => {}, + }, // @ts-expect-error // `message` cannot be `undefined` { code: "foo", errors: [{ message: undefined }], only: true }, // @ts-expect-error // `messageId` cannot be `undefined` @@ -1972,6 +1987,10 @@ ruleTester.run("my-rule", rule, { }, ], }, + // @ts-expect-error // `before` should be a function + { code: "foo", errors: [{ messageId: "bar" }], before: {} }, + // @ts-expect-error // `after` should be a function + { code: "foo", errors: [{ messageId: "bar" }], after: void 0 }, ], }); From bfa46013e7ea9a522c02f72250fa07160f96a6b8 Mon Sep 17 00:00:00 2001 From: jaymarvelz Date: Thu, 28 Aug 2025 10:52:33 +0300 Subject: [PATCH 080/165] fix: ignore empty switch statements with comments in no-empty rule (#20045) * fix: ignore empty switch statements with comments in no-empty rule * simplify range --- docs/src/rules/no-empty.md | 4 ++++ lib/rules/no-empty.js | 37 +++++++++++++++++++++++++++++++++++++ tests/lib/rules/no-empty.js | 27 ++++++++++++++++++++++++--- 3 files changed, 65 insertions(+), 3 deletions(-) diff --git a/docs/src/rules/no-empty.md b/docs/src/rules/no-empty.md index 64a9bc0a136a..de6ec6e3debe 100644 --- a/docs/src/rules/no-empty.md +++ b/docs/src/rules/no-empty.md @@ -55,6 +55,10 @@ while (foo) { /* empty */ } +switch(foo) { + /* empty */ +} + try { doSomething(); } catch (ex) { diff --git a/lib/rules/no-empty.js b/lib/rules/no-empty.js index bcd23d0f8229..dd30e4197a83 100644 --- a/lib/rules/no-empty.js +++ b/lib/rules/no-empty.js @@ -104,10 +104,47 @@ module.exports = { typeof node.cases === "undefined" || node.cases.length === 0 ) { + const openingBrace = sourceCode.getTokenAfter( + node.discriminant, + astUtils.isOpeningBraceToken, + ); + + const closingBrace = sourceCode.getLastToken(node); + + if ( + sourceCode.commentsExistBetween( + openingBrace, + closingBrace, + ) + ) { + return; + } + context.report({ node, + loc: { + start: openingBrace.loc.start, + end: closingBrace.loc.end, + }, messageId: "unexpected", data: { type: "switch" }, + suggest: [ + { + messageId: "suggestComment", + data: { type: "switch" }, + fix(fixer) { + const range = [ + openingBrace.range[1], + closingBrace.range[0], + ]; + + return fixer.replaceTextRange( + range, + " /* empty */ ", + ); + }, + }, + ], }); } }, diff --git a/tests/lib/rules/no-empty.js b/tests/lib/rules/no-empty.js index f48bde2d7e04..c5efda818e14 100644 --- a/tests/lib/rules/no-empty.js +++ b/tests/lib/rules/no-empty.js @@ -30,6 +30,7 @@ ruleTester.run("no-empty", rule, { "function foo() { }", "if (foo) {/* empty */}", "while (foo) {/* empty */}", + "switch (foo) {/* empty */}", "for (;foo;) {/* empty */}", "try { foo() } catch (ex) {/* empty */}", "try { foo() } catch (ex) {// empty\n}", @@ -159,18 +160,38 @@ ruleTester.run("no-empty", rule, { messageId: "unexpected", data: { type: "switch" }, type: "SwitchStatement", - suggestions: null, + line: 1, + column: 13, + endLine: 1, + endColumn: 15, + suggestions: [ + { + messageId: "suggestComment", + data: { type: "switch" }, + output: "switch(foo) { /* empty */ }", + }, + ], }, ], }, { - code: "switch (foo) { /* empty */ }", + code: "switch /* empty */ (/* empty */ foo /* empty */) /* empty */ {} /* empty */", errors: [ { messageId: "unexpected", data: { type: "switch" }, type: "SwitchStatement", - suggestions: null, + line: 1, + column: 62, + endLine: 1, + endColumn: 64, + suggestions: [ + { + messageId: "suggestComment", + data: { type: "switch" }, + output: "switch /* empty */ (/* empty */ foo /* empty */) /* empty */ { /* empty */ } /* empty */", + }, + ], }, ], }, From 99cfd7e056e1703941c9eb8ca1ae7fdb1987ba9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josh=20Goldberg=20=E2=9C=A8?= Date: Thu, 28 Aug 2025 08:59:42 -0400 Subject: [PATCH 081/165] docs: add missing "the" in rule deprecation docs (#20050) --- docs/src/use/rule-deprecation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/use/rule-deprecation.md b/docs/src/use/rule-deprecation.md index e7e150b79f61..27d7db6680fc 100644 --- a/docs/src/use/rule-deprecation.md +++ b/docs/src/use/rule-deprecation.md @@ -10,7 +10,7 @@ The ESLint team is committed to making upgrading as easy and painless as possibl - The rule has been replaced by another core rule. - A plugin exists with a functionally equivalent rule. - Rules will be deprecated as needed, and marked as such in all documentation. -- After a rule has been deprecated, the team will no longer do any work on it. This includes bug fixes, enhancements, and updates to the rule's documentation. Issues and pull requests related to deprecated rule will not be accepted and will be closed. +- After a rule has been deprecated, the team will no longer do any work on it. This includes bug fixes, enhancements, and updates to the rule's documentation. Issues and pull requests related to the deprecated rule will not be accepted and will be closed. You can continue to use deprecated rules indefinitely if they are working for you. However, keep in mind that deprecated rules will effectively be unmaintained and may be removed at some point. From 1b3881d7e859bec9589e39888656c33c914a8302 Mon Sep 17 00:00:00 2001 From: pxwanglu Date: Sat, 30 Aug 2025 18:13:50 +0800 Subject: [PATCH 082/165] chore: remove redundant word (#20058) Signed-off-by: pxwanglu --- docs/src/_includes/components/button.macro.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/_includes/components/button.macro.html b/docs/src/_includes/components/button.macro.html index 1881d957a26a..cc7a2de50537 100644 --- a/docs/src/_includes/components/button.macro.html +++ b/docs/src/_includes/components/button.macro.html @@ -7,7 +7,7 @@ {%- if params.text -%} {{ params.text }} {%- else -%} - This is a button button + This is a button {%- endif -%} {%- else -%} From d5ef9397150cc178e1f9891c3ff49ac4871ec786 Mon Sep 17 00:00:00 2001 From: sethamus <32633697+sethamus@users.noreply.github.com> Date: Sun, 31 Aug 2025 17:35:37 +0300 Subject: [PATCH 083/165] refactor: remove deprecated `context.parserOptions` usage across rules (#20060) --- lib/rules/no-eval.js | 4 +++- lib/rules/strict.js | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/rules/no-eval.js b/lib/rules/no-eval.js index 9b771284181f..5d75097abce2 100644 --- a/lib/rules/no-eval.js +++ b/lib/rules/no-eval.js @@ -226,7 +226,9 @@ module.exports = { Program(node) { const scope = sourceCode.getScope(node), - features = context.parserOptions.ecmaFeatures || {}, + features = + context.languageOptions.parserOptions.ecmaFeatures || + {}, strict = scope.isStrict || node.sourceType === "module" || diff --git a/lib/rules/strict.js b/lib/rules/strict.js index a427139a67e4..381ad6f5d8a8 100644 --- a/lib/rules/strict.js +++ b/lib/rules/strict.js @@ -101,7 +101,8 @@ module.exports = { }, create(context) { - const ecmaFeatures = context.parserOptions.ecmaFeatures || {}, + const ecmaFeatures = + context.languageOptions.parserOptions.ecmaFeatures || {}, scopes = [], classScopes = []; let [mode] = context.options; From 5082fc206de6946d9d4c20e57301f78839b3b9f2 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Mon, 1 Sep 2025 08:10:38 +0000 Subject: [PATCH 084/165] docs: Update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5e0c1aba199e..52cfc1f7a99c 100644 --- a/README.md +++ b/README.md @@ -328,7 +328,7 @@ to get your logo on our READMEs and [website](https://eslint.org/sponsors).

Automattic Airbnb

Gold Sponsors

Qlty Software trunk.io Shopify

Silver Sponsors

Vite Liftoff American Express StackBlitz

Bronze Sponsors

-

Cybozu Sentry Anagram Solver Icons8 Discord GitBook Nx Mercedes-Benz Group HeroCoders LambdaTest

+

Cybozu Icons8 Discord GitBook Nx Mercedes-Benz Group HeroCoders LambdaTest

Technology Sponsors

Technology sponsors allow us to use their products and services for free as part of a contribution to the open source ecosystem and our work.

Netlify Algolia 1Password

From e51ffff737ca245b3a1d115cb11e1c99737249a3 Mon Sep 17 00:00:00 2001 From: Amnish Singh Arora <78865303+Amnish04@users.noreply.github.com> Date: Tue, 2 Sep 2025 02:16:25 -0400 Subject: [PATCH 085/165] feat: add `preserve-caught-error` rule (#19913) * Write documentation for `preserve-caught-error` rule * Remove unsupported headings from docs * Setup initial unit test cases * Implement `preserve-caught-error` rule * Update messageIds in tests * Fix incorrect message id in one of the tests * Handle multiple throw statements and mandate looking at the caught error * Allow passing an option for custom error types * Remove unnecessary comments * Add another invalid case to docs * Remove MDN link from `further_reading` in docs * Add "Options" section to docs * Fix incorrect formatting * Do not use bare urls in docs * Add `proposal-error-cause` to `further_reading` * Add further reading links metadata * Improve error message for when further links metadata is missing * Add type definition for `preserve-caught-error` * Auto-generate tsdoc comment * Mark `preserve-caught-error` as recommended * Add `preserve-caught-error` to recommended config * Update rule tsdoc * Only use file path in further reading links error message * Only enable the rule in `eslint-plugin-eslint` for now * Fix edge cases and add tests * Fix formatting * Pretty format test cases with consistent indents between `code` and `output` * Get rid of manual throw statement search * Add back lost comment * Remove `customErrorTypes` option for now * Fix issues caught by `preserve-caught-error` * Require function calls with throws to use the caught error * Fix `createExtraneousResultsError` to accept a `cause` error * Add error creating functions case to docs * Handle autofix case where there is no message argument * Fix formatting * Handle `AggregateError` arg positioning exception * Fix `AggregateError` suggestion * Fix AggregateError test case * Revert "Require function calls with throws to use the caught error" This reverts commit afbda4fb3dac015c761ca0affa1515ff46510708. * Add rule configuration comments to examples * Do not report/analyze complex error options * Preserve existing options when adding cause using fixer * Add test cases to avoid false positives, and existing options preservation * Fix formatting * Remove error factory case from docs * Update docs based on reviews * Don't report cases where throw is not related to caught error * Add `disallowUncaughtErrors` option and autofix for discarded errors * Fix rule type * Rename `disallowUncaughtErrors` to `requireCatchParameter` * Update the docs and use triple-colon fences * Improve examples in docs * Fix custom error false positives and unrelated-error fixer * Update TODO comment to limitation * Start reporting partially lost caught error * Report cases where caught error is shadowed by local declarations * Do not provide a suggestion on partially lost error * Do not provide suggestion when caught error is not referenced * Highlight throw statements individually when catch param is missing * Ignore cases with `SpreadElement` constructor arguments * Make sure existing comments are preserved with suggested fixes * Cleanup and follow up fixes * Handle value and method shorthand edge cases * Fix comment typo --- docs/.eleventy.js | 4 +- docs/src/_data/further_reading_links.json | 37 +- docs/src/rules/preserve-caught-error.md | 174 ++++++ lib/eslint/eslint.js | 10 +- lib/linter/esquery.js | 3 + lib/rule-tester/rule-tester.js | 3 + lib/rules/index.js | 1 + lib/rules/preserve-caught-error.js | 509 +++++++++++++++ lib/services/suppressions-service.js | 3 + lib/types/rules.d.ts | 13 + packages/eslint-config-eslint/base.js | 1 + tests/lib/eslint/eslint.js | 7 +- tests/lib/rules/preserve-caught-error.js | 726 ++++++++++++++++++++++ 13 files changed, 1484 insertions(+), 7 deletions(-) create mode 100644 docs/src/rules/preserve-caught-error.md create mode 100644 lib/rules/preserve-caught-error.js create mode 100644 tests/lib/rules/preserve-caught-error.js diff --git a/docs/.eleventy.js b/docs/.eleventy.js index 3e0162794410..069869a47fc3 100644 --- a/docs/.eleventy.js +++ b/docs/.eleventy.js @@ -307,7 +307,9 @@ module.exports = function (eleventyConfig) { const urlData = this.ctx.further_reading_links[url]; if (!urlData) { - throw new Error(`Data missing for ${url}`); + throw new Error( + `Data missing for "${url}". Did you forget to add the URL information to "/docs/src/_data/further_reading_links.json"?`, + ); } const { domain, title, logo } = urlData; diff --git a/docs/src/_data/further_reading_links.json b/docs/src/_data/further_reading_links.json index 8d4260b2935b..c9bb798c2ded 100644 --- a/docs/src/_data/further_reading_links.json +++ b/docs/src/_data/further_reading_links.json @@ -796,5 +796,40 @@ "logo": "https://tc39.es/ecma262/2020/img/favicon.ico", "title": "ECMAScript® 2020 Language Specification", "description": null + }, + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause": { + "domain": "developer.mozilla.org", + "url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause", + "logo": "https://developer.mozilla.org/favicon-192x192.png", + "title": "MDN Web Docs", + "description": "MDN docs for the cause data property of an Error instance." + }, + "https://nodejs.org/api/errors.html#errorcause": { + "domain": "nodejs.org", + "url": "https://nodejs.org/api/errors.html#errorcause", + "logo": "https://nodejs.org/favicon.ico", + "title": "Errors | Node.js v24.3.0 Documentation", + "description": "Official Node.js documentation for the Error `cause` property." + }, + "https://github.com/tc39/proposal-error-cause/blob/main/README.md": { + "domain": "github.com", + "url": "https://github.com/tc39/proposal-error-cause/blob/main/README.md", + "logo": "https://github.githubassets.com/favicons/favicon.png", + "title": "proposal-error-cause/README.md at main · tc39/proposal-error-cause", + "description": "Proposal for Error Cause to the Ecma International Technical Committee." + }, + "https://dev.to/amnish04/never-lose-valuable-error-context-in-javascript-3aco": { + "domain": "dev.to", + "url": "https://dev.to/amnish04/never-lose-valuable-error-context-in-javascript-3aco", + "logo": "https://media2.dev.to/dynamic/image/quality=100/https://dev-to-uploads.s3.amazonaws.com/uploads/logos/resized_logo_UQww2soKuUsjaOGNB38o.png", + "title": "Never lose valuable error context in JavaScript - DEV Community", + "description": "My blog post discussing the importance of Error `cause` property and the ESLint rule to enforce proper usage of it." + }, + "https://github.com/microsoft/TypeScript/blob/main/src/lib/es2022.error.d.ts": { + "domain": "github.com", + "url": "https://github.com/microsoft/TypeScript/blob/main/src/lib/es2022.error.d.ts", + "logo": "https://github.githubassets.com/favicons/favicon.png", + "title": "Error types that support `cause`", + "description": "Interface declarations for all the Error types in JavaScript that support passing a `cause` property." } -} \ No newline at end of file +} diff --git a/docs/src/rules/preserve-caught-error.md b/docs/src/rules/preserve-caught-error.md new file mode 100644 index 000000000000..669c2448a776 --- /dev/null +++ b/docs/src/rules/preserve-caught-error.md @@ -0,0 +1,174 @@ +--- +title: preserve-caught-error +rule_type: suggestion +further_reading: +- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause +- https://nodejs.org/api/errors.html#errorcause +- https://github.com/tc39/proposal-error-cause/blob/main/README.md +- https://dev.to/amnish04/never-lose-valuable-error-context-in-javascript-3aco +- https://github.com/microsoft/TypeScript/blob/main/src/lib/es2022.error.d.ts +--- + +JavaScript developers often re-throw errors in `catch` blocks to add context but forget to preserve the original error, resulting in lost debugging information. + +Using the `cause` option when throwing new errors helps retain the original error and maintain complete error chains, which improves debuggability and traceability. + +```js +try { + await fetch("https://xyz.com/resource"); +} catch(error) { + // Throw a more specific error without losing original context + throw new Error("Failed to fetch resource", { + cause: error + }); +} +``` + +## Rule Details + +This rule enforces the use of the `cause` property when throwing a new error inside a `catch` block. + +Checks for all built-in `error types` that support passing a `cause`. + +Examples of **incorrect** code for this rule: + +::: incorrect + +```js +/* eslint preserve-caught-error: "error" */ + +// Not using the `cause` option +try { + // ... +} catch (error) { + throw new Error("Something went wrong: " + error.message); +} + +// Throwing a new Error with unrelated cause +try { + doSomething(); +} catch (err) { + const unrelated = new Error("other"); + throw new Error("Something failed", { cause: unrelated }); +} + +// Caught error is being lost partially due to destructuring +try { + doSomething(); +} catch ({ message, ...rest }) { + throw new Error(message); +} + +// Cause error is being shadowed by a closer scoped redeclaration. +try { + doSomething(); +} catch (error) { + if (whatever) { + const error = anotherError; // This declaration is the problem. + throw new Error("Something went wrong", { cause: error }); + } +} +``` + +::: + +Examples of **correct** code for this rule: + +::: correct + +```js +/* eslint preserve-caught-error: "error" */ + +try { + // ... +} catch (error) { + throw new Error("Something went wrong", { cause: error }); +} + +// When the thrown error is not directly related to the caught error. +try { +} catch (error) { + foo = { + bar() { + // This throw is not directly related to the caught error. + throw new Error("Something went wrong"); + } + }; +} + +// No throw inside catch +try { + doSomething(); +} catch (e) { + console.error(e); +} + +// Ignoring the caught error at the parameter level +// This is valid by default, but this behavior can be changed +// by using the `requireCatchParameter` option discussed below. +try { + doSomething(); +} catch { + throw new TypeError("Something went wrong"); +} +``` + +::: + +## Options + +This rule takes a single option — an object with the following optional property: + +- `requireCatchParameter`: Requires the catch blocks to always have the caught error parameter when set to `true`. By default, this is `false`. + +### requireCatchParameter + +Enabling this option mandates for all the catch blocks to have a caught error parameter. This makes sure that the caught error is not discarded at the parameter level. + +```js +"preserve-caught-error": ["error", { + "requireCatchParameter": true +}] +``` + +Example of **incorrect** code for the `{ "requireCatchParameter": true }` option: + +::: incorrect + +```js +/* eslint preserve-caught-error: ["error", { "requireCatchParameter": true }] */ + +try { + doSomething(); +} catch { // Can't discard the error ❌ + throw new Error("Something went wrong"); +} +``` + +::: + +Example of **correct** code for the `{ "requireCatchParameter": true }` option: + +::: correct + +```js +/* eslint preserve-caught-error: ["error", { "requireCatchParameter": true }] */ + +try { + doSomething(); +} catch(error) { // Error is being referenced ✅ + // Handling and re-throw logic +} +``` + +::: + +## When Not To Use It + +You might not want to enable this rule if: + +- You follow a custom error-handling approach where the original error is intentionally omitted from re-thrown errors (e.g., to avoid exposing internal details or to log the original error separately). + +- You use a third-party or internal error-handling library that preserves error context using non-standard properties (e.g., [verror](https://www.npmjs.com/package/verror)) instead of the cause option. + +- (In rare cases) you are targeting legacy environments where the cause option in `Error` constructors is not supported. diff --git a/lib/eslint/eslint.js b/lib/eslint/eslint.js index 130a11066083..3d4031e647fb 100644 --- a/lib/eslint/eslint.js +++ b/lib/eslint/eslint.js @@ -263,11 +263,15 @@ async function locateConfigFileToUse({ configFile, cwd }) { /** * Creates an error to be thrown when an array of results passed to `getRulesMetaForResults` was not created by the current engine. + * @param {Error|undefined} cause The original error that led to this symptom error being thrown. Might not always be available. * @returns {TypeError} An error object. */ -function createExtraneousResultsError() { +function createExtraneousResultsError(cause) { return new TypeError( "Results object was not created from this ESLint instance.", + { + cause, + }, ); } @@ -773,8 +777,8 @@ class ESLint { try { configs = configLoader.getCachedConfigArrayForFile(filePath); - } catch { - throw createExtraneousResultsError(); + } catch (err) { + throw createExtraneousResultsError(err); } const config = configs.getConfig(filePath); diff --git a/lib/linter/esquery.js b/lib/linter/esquery.js index 08361508c316..9f9b76f1e8b9 100644 --- a/lib/linter/esquery.js +++ b/lib/linter/esquery.js @@ -271,6 +271,9 @@ function tryParseSelector(selector) { ) { throw new SyntaxError( `Syntax error in selector "${selector}" at position ${err.location.start.offset}: ${err.message}`, + { + cause: err, + }, ); } throw err; diff --git a/lib/rule-tester/rule-tester.js b/lib/rule-tester/rule-tester.js index dbd8c274f0fc..0085cd6bc5f2 100644 --- a/lib/rule-tester/rule-tester.js +++ b/lib/rule-tester/rule-tester.js @@ -851,6 +851,9 @@ class RuleTester { } catch (err) { throw new Error( `Schema for rule ${ruleName} is invalid: ${err.message}`, + { + cause: err, + }, ); } } diff --git a/lib/rules/index.js b/lib/rules/index.js index 0034ac0520b1..a750e0872782 100644 --- a/lib/rules/index.js +++ b/lib/rules/index.js @@ -293,6 +293,7 @@ module.exports = new LazyLoadingRuleMap( "prefer-rest-params": () => require("./prefer-rest-params"), "prefer-spread": () => require("./prefer-spread"), "prefer-template": () => require("./prefer-template"), + "preserve-caught-error": () => require("./preserve-caught-error"), "quote-props": () => require("./quote-props"), quotes: () => require("./quotes"), radix: () => require("./radix"), diff --git a/lib/rules/preserve-caught-error.js b/lib/rules/preserve-caught-error.js new file mode 100644 index 000000000000..a1f51cc5852d --- /dev/null +++ b/lib/rules/preserve-caught-error.js @@ -0,0 +1,509 @@ +/** + * @fileoverview Rule to preserve caught errors when re-throwing exceptions + * @author Amnish Singh Arora + */ +"use strict"; + +//------------------------------------------------------------------------------ +// Requirements +//------------------------------------------------------------------------------ + +const astUtils = require("./utils/ast-utils"); + +//---------------------------------------------------------------------- +// Helpers +//---------------------------------------------------------------------- + +/* + * This is an indicator of an error cause node, that is too complicated to be detected and fixed. + * Eg, when error options is an `Identifier` or a `SpreadElement`. + */ +const UNKNOWN_CAUSE = Symbol("unknown_cause"); + +const BUILT_IN_ERROR_TYPES = new Set([ + "Error", + "EvalError", + "RangeError", + "ReferenceError", + "SyntaxError", + "TypeError", + "URIError", + "AggregateError", +]); + +/** + * Finds and returns the ASTNode that is used as the `cause` of the Error being thrown + * @param {ASTNode} throwStatement `ThrowStatement` to be checked. + * @returns {ASTNode | UNKNOWN_CAUSE | null} The `cause` of `Error` being thrown, `null` if not set. + */ +function getErrorCause(throwStatement) { + const throwExpression = throwStatement.argument; + /* + * Determine which argument index holds the options object + * `AggregateError` is a special case as it accepts the `options` object as third argument. + */ + const optionsIndex = + throwExpression.callee.name === "AggregateError" ? 2 : 1; + + /* + * Make sure there is no `SpreadElement` at or before the `optionsIndex` + * as this messes up the effective order of arguments and makes it complicated + * to track where the actual error options need to be at + */ + const spreadExpressionIndex = throwExpression.arguments.findIndex( + arg => arg.type === "SpreadElement", + ); + if (spreadExpressionIndex >= 0 && spreadExpressionIndex <= optionsIndex) { + return UNKNOWN_CAUSE; + } + + const errorOptions = throwExpression.arguments[optionsIndex]; + + if (errorOptions) { + if (errorOptions.type === "ObjectExpression") { + if ( + errorOptions.properties.some( + prop => prop.type === "SpreadElement", + ) + ) { + /* + * If there is a spread element as part of error options, it is too complicated + * to verify if the cause is used properly and auto-fix. + */ + return UNKNOWN_CAUSE; + } + + const causeProperty = errorOptions.properties.find( + prop => + prop.type === "Property" && + prop.key.type === "Identifier" && + prop.key.name === "cause" && + !prop.computed, // It is hard to accurately identify the value of computed props + ); + + return causeProperty ? causeProperty.value : null; + } + + // Error options exist, but too complicated to be analyzed/fixed + return UNKNOWN_CAUSE; + } + + return null; +} + +/** + * Finds and returns the `CatchClause` node, that the `node` is part of. + * @param {ASTNode} node The AST node to be evaluated. + * @returns {ASTNode | null } The closest parent `CatchClause` node, `null` if the `node` is not in a catch block. + */ +function findParentCatch(node) { + let currentNode = node; + + while (currentNode && currentNode.type !== "CatchClause") { + if ( + [ + "FunctionDeclaration", + "FunctionExpression", + "ArrowFunctionExpression", + "StaticBlock", + ].includes(currentNode.type) + ) { + /* + * Make sure the ThrowStatement is not made inside a function definition or a static block inside a high level catch. + * In such cases, the caught error is not directly related to the Throw. + * + * For example, + * try { + * } catch (error) { + * foo = { + * bar() { + * throw new Error(); + * } + * }; + * } + */ + return null; + } + currentNode = currentNode.parent; + } + + return currentNode; +} + +//------------------------------------------------------------------------------ +// Rule Definition +//------------------------------------------------------------------------------ + +/** @type {import('../types').Rule.RuleModule} */ +module.exports = { + meta: { + type: "suggestion", + docs: { + description: + "Disallow losing originally caught error when re-throwing custom errors", + recommended: false, + url: "https://eslint.org/docs/latest/rules/preserve-caught-error", // URL to the documentation page for this rule + }, + /* + * TODO: We should allow passing `customErrorTypes` option once something like `typescript-eslint`'s + * `TypeOrValueSpecifier` is implemented in core Eslint. + * See: + * 1. https://typescript-eslint.io/packages/type-utils/type-or-value-specifier/ + * 2. https://github.com/eslint/eslint/pull/19913#discussion_r2192608593 + * 3. https://github.com/eslint/eslint/discussions/16540 + */ + schema: [ + { + type: "object", + properties: { + requireCatchParameter: { + type: "boolean", + default: false, + description: + "Requires the catch blocks to always have the caught error parameter so it is not discarded.", + }, + }, + additionalProperties: false, + }, + ], + messages: { + missingCause: + "There is no `cause` attached to the symptom error being thrown.", + incorrectCause: + "The symptom error is being thrown with an incorrect `cause`.", + includeCause: + "Include the original caught error as the `cause` of the symptom error.", + missingCatchErrorParam: + "The caught error is not accessible because the catch clause lacks the error parameter. Start referencing the caught error using the catch parameter.", + partiallyLostError: + "Re-throws cannot preserve the caught error as a part of it is being lost due to destructuring.", + caughtErrorShadowed: + "The caught error is being attached as `cause`, but is shadowed by a closer scoped redeclaration.", + }, + hasSuggestions: true, + }, + + create(context) { + const sourceCode = context.sourceCode; + const options = context.options[0] || {}; + + //---------------------------------------------------------------------- + // Helpers + //---------------------------------------------------------------------- + + /** + * Checks if a `ThrowStatement` is constructing and throwing a new `Error` object. + * + * Covers all the error types on `globalThis` that support `cause` property: + * https://github.com/microsoft/TypeScript/blob/main/src/lib/es2022.error.d.ts + * @param {ASTNode} throwStatement The `ThrowStatement` that needs to be checked. + * @returns {boolean} `true` if a new "Error" is being thrown, else `false`. + */ + function isThrowingNewError(throwStatement) { + return ( + (throwStatement.argument.type === "NewExpression" || + throwStatement.argument.type === "CallExpression") && + throwStatement.argument.callee.type === "Identifier" && + BUILT_IN_ERROR_TYPES.has(throwStatement.argument.callee.name) && + /* + * Make sure the thrown Error is instance is one of the built-in global error types. + * Custom imports could shadow this, which would lead to false positives. + * e.g. import { Error } from "./my-custom-error.js"; + * throw Error("Failed to perform error prone operations"); + */ + sourceCode.isGlobalReference(throwStatement.argument.callee) + ); + } + + /** + * Inserts `cause: ` into an inline options object expression. + * @param {RuleFixer} fixer The fixer object. + * @param {ASTNode} optionsNode The options object node. + * @param {string} caughtErrorName The name of the caught error (e.g., "err"). + * @returns {Fix} The fix object. + */ + function insertCauseIntoOptions(fixer, optionsNode, caughtErrorName) { + const properties = optionsNode.properties; + + if (properties.length === 0) { + // Insert inside empty braces: `{}` → `{ cause: err }` + return fixer.insertTextAfter( + sourceCode.getFirstToken(optionsNode), + `cause: ${caughtErrorName}`, + ); + } + + const lastProp = properties.at(-1); + return fixer.insertTextAfter( + lastProp, + `, cause: ${caughtErrorName}`, + ); + } + + //---------------------------------------------------------------------- + // Public + //---------------------------------------------------------------------- + return { + ThrowStatement(node) { + // Check if the throw is inside a catch block + const parentCatch = findParentCatch(node); + const throwStatement = node; + + // Check if a new error is being thrown in a catch block + if (parentCatch && isThrowingNewError(throwStatement)) { + if ( + parentCatch.param && + parentCatch.param.type !== "Identifier" + ) { + /* + * When a part of the caught error is being lost at the parameter level, commonly due to destructuring. + * e.g. catch({ message, ...rest }) + */ + context.report({ + messageId: "partiallyLostError", + node: parentCatch, + }); + return; + } + + const caughtError = + parentCatch.param?.type === "Identifier" + ? parentCatch.param + : null; + + // Check if there are throw statements and caught error is being ignored + if (!caughtError) { + if (options.requireCatchParameter) { + context.report({ + node: throwStatement, + messageId: "missingCatchErrorParam", + }); + return; + } + return; + } + + // Check if there is a cause attached to the new error + const thrownErrorCause = getErrorCause(throwStatement); + + if (thrownErrorCause === UNKNOWN_CAUSE) { + // Error options exist, but too complicated to be analyzed/fixed + return; + } + + if (thrownErrorCause === null) { + // If there is no `cause` attached to the error being thrown. + context.report({ + messageId: "missingCause", + node: throwStatement, + suggest: [ + { + messageId: "includeCause", + fix(fixer) { + const throwExpression = + throwStatement.argument; + const args = throwExpression.arguments; + const errorType = + throwExpression.callee.name; + + // AggregateError: errors, message, options + if (errorType === "AggregateError") { + const errorsArg = args[0]; + const messageArg = args[1]; + const optionsArg = args[2]; + + if (!errorsArg) { + // Case: `throw new AggregateError()` → insert all arguments + const lastToken = + sourceCode.getLastToken( + throwExpression, + ); + const lastCalleeToken = + sourceCode.getLastToken( + throwExpression.callee, + ); + const parenToken = + sourceCode.getFirstTokenBetween( + lastCalleeToken, + lastToken, + astUtils.isOpeningParenToken, + ); + + if (parenToken) { + return fixer.insertTextAfter( + parenToken, + `[], "", { cause: ${caughtError.name} }`, + ); + } + return fixer.insertTextAfter( + throwExpression.callee, + `([], "", { cause: ${caughtError.name} })`, + ); + } + + if (!messageArg) { + // Case: `throw new AggregateError([])` → insert message and options + return fixer.insertTextAfter( + errorsArg, + `, "", { cause: ${caughtError.name} }`, + ); + } + + if (!optionsArg) { + // Case: `throw new AggregateError([], "")` → insert error options only + return fixer.insertTextAfter( + messageArg, + `, { cause: ${caughtError.name} }`, + ); + } + + if ( + optionsArg.type === + "ObjectExpression" + ) { + return insertCauseIntoOptions( + fixer, + optionsArg, + caughtError.name, + ); + } + + // Complex dynamic options — skip + return null; + } + + // Normal Error types + const messageArg = args[0]; + const optionsArg = args[1]; + + if (!messageArg) { + // Case: `throw new Error()` → insert both message and options + const lastToken = + sourceCode.getLastToken( + throwExpression, + ); + const lastCalleeToken = + sourceCode.getLastToken( + throwExpression.callee, + ); + const parenToken = + sourceCode.getFirstTokenBetween( + lastCalleeToken, + lastToken, + astUtils.isOpeningParenToken, + ); + + if (parenToken) { + return fixer.insertTextAfter( + parenToken, + `"", { cause: ${caughtError.name} }`, + ); + } + return fixer.insertTextAfter( + throwExpression.callee, + `("", { cause: ${caughtError.name} })`, + ); + } + if (!optionsArg) { + // Case: `throw new Error("Some message")` → insert only options + return fixer.insertTextAfter( + messageArg, + `, { cause: ${caughtError.name} }`, + ); + } + + if ( + optionsArg.type === + "ObjectExpression" + ) { + return insertCauseIntoOptions( + fixer, + optionsArg, + caughtError.name, + ); + } + + return null; // Identifier or spread — do not fix + }, + }, + ], + }); + + // We don't need to check further + return; + } + + // If there is an attached cause, verify that is matches the caught error + if ( + !( + thrownErrorCause.type === "Identifier" && + thrownErrorCause.name === caughtError.name + ) + ) { + context.report({ + messageId: "incorrectCause", + node: thrownErrorCause, + suggest: [ + { + messageId: "includeCause", + fix(fixer) { + /* + * In case `cause` is attached using object property shorthand or as a method. + * e.g. throw Error("fail", { cause }); + * throw Error("fail", { cause() { // do something } }); + */ + if ( + thrownErrorCause.parent.method || + thrownErrorCause.parent.shorthand + ) { + return fixer.replaceText( + thrownErrorCause.parent, + `cause: ${caughtError.name}`, + ); + } + + return fixer.replaceText( + thrownErrorCause, + caughtError.name, + ); + }, + }, + ], + }); + return; + } + + /* + * If the attached cause matches the identifier name of the caught error, + * make sure it is not being shadowed by a closer scoped redeclaration. + * + * e.g. try { + * doSomething(); + * } catch (error) { + * if (whatever) { + * const error = anotherError; + * throw new Error("Something went wrong"); + * } + * } + */ + let scope = sourceCode.getScope(throwStatement); + do { + const variable = scope.set.get(caughtError.name); + if (variable) { + break; + } + scope = scope.upper; + } while (scope); + + if (scope?.block !== parentCatch) { + // Caught error is being shadowed + context.report({ + messageId: "caughtErrorShadowed", + node: throwStatement, + }); + } + } + }, + }; + }, +}; diff --git a/lib/services/suppressions-service.js b/lib/services/suppressions-service.js index 0aeb2bed8d8e..c02e59f3eda3 100644 --- a/lib/services/suppressions-service.js +++ b/lib/services/suppressions-service.js @@ -221,6 +221,9 @@ class SuppressionsService { } throw new Error( `Failed to parse suppressions file at ${this.filePath}`, + { + cause: err, + }, ); } } diff --git a/lib/types/rules.d.ts b/lib/types/rules.d.ts index e55edc28852d..ffe475f46bc1 100644 --- a/lib/types/rules.d.ts +++ b/lib/types/rules.d.ts @@ -4803,6 +4803,19 @@ export interface ESLintRules extends Linter.RulesRecord { */ "prefer-template": Linter.RuleEntry<[]>; + /** + * Rule to disallow losing originally caught error when re-throwing custom errors. + * + * @see https://eslint.org/docs/latest/rules/preserve-caught-error + */ + "preserve-caught-error": Linter.RuleEntry< + [ + Partial<{ + requireCatchParameter: boolean; + }>, + ] + >; + /** * Rule to require quotes around object literal property names. * diff --git a/packages/eslint-config-eslint/base.js b/packages/eslint-config-eslint/base.js index ba0cb0ae2304..2d392aa0593e 100644 --- a/packages/eslint-config-eslint/base.js +++ b/packages/eslint-config-eslint/base.js @@ -133,6 +133,7 @@ const jsConfigs = [ "prefer-rest-params": "error", "prefer-spread": "error", "prefer-template": "error", + "preserve-caught-error": "error", radix: "error", "require-unicode-regexp": "error", strict: ["error", "global"], diff --git a/tests/lib/eslint/eslint.js b/tests/lib/eslint/eslint.js index 8a229fbf2098..8ce0d37b3844 100644 --- a/tests/lib/eslint/eslint.js +++ b/tests/lib/eslint/eslint.js @@ -4080,9 +4080,12 @@ describe("ESLint", () => { if (otherDriveLetter) { try { await exec(`subst /D ${otherDriveLetter}:`); - } catch ({ message }) { + } catch (err) { throw new Error( - `Unable to unassign virtual drive letter ${otherDriveLetter}: - ${message}`, + `Unable to unassign virtual drive letter ${otherDriveLetter}`, + { + cause: err, + }, ); } } diff --git a/tests/lib/rules/preserve-caught-error.js b/tests/lib/rules/preserve-caught-error.js new file mode 100644 index 000000000000..d454f7c89ce4 --- /dev/null +++ b/tests/lib/rules/preserve-caught-error.js @@ -0,0 +1,726 @@ +/** + * @fileoverview Rule to preserve caught errors when re-throwing exceptions + * @author Amnish Singh Arora + */ +"use strict"; + +//------------------------------------------------------------------------------ +// Requirements +//------------------------------------------------------------------------------ + +const rule = require("../../../lib/rules/preserve-caught-error"), + RuleTester = require("../../../lib/rule-tester/rule-tester"); + +//------------------------------------------------------------------------------ +// Tests +//------------------------------------------------------------------------------ + +const ruleTester = new RuleTester(); +ruleTester.run("preserve-caught-error", rule, { + valid: [ + `try { + throw new Error("Original error"); + } catch (error) { + throw new Error("Failed to perform error prone operations", { cause: error }); + }`, + /* No throw inside catch */ + `try { + doSomething(); + } catch (e) { + console.error(e); + }`, + `try { + doSomething(); + } catch (err) { + throw new Error("Failed", { cause: err, extra: 42 }); + }`, + `try { + doSomething(); + } catch (error) { + switch (error.code) { + case "A": + throw new Error("Type A", { cause: error }); + case "B": + throw new Error("Type B", { cause: error }); + default: + throw new Error("Other", { cause: error }); + } + }`, + /* When the error options are too complicated to be properly analyzed/fixed */ + `try { + // ... + } catch (err) { + const opts = { cause: err } + throw new Error("msg", { ...opts }); + } + `, + /* When the thrown error is part of a function defined in catch block, the caught error is not directly related to that throw */ + `try { + } catch (error) { + foo = { + bar() { + throw new Error(); + } + }; + }`, + /* 19. When there is a `SpreadStatement` argument passed to the Error constructor, we can't provide an accurate suggestion. */ + `try { + doSomething(); + } catch (error) { + const args = []; + throw new Error(...args); + }`, + /* Do not report instances where thrown error is an instance of a custom error type that shadows built-in class. */ + `import { Error } from "./my-custom-error.js"; + try { + doSomething(); + } catch (error) { + throw Error("Failed to perform error prone operations"); + }`, + /* It's valid to discard the caught error at parameter level of catch block `requireCatchParameter` is set to `false` (default behavior) */ + { + code: `try { + doSomething(); + } catch { + throw new Error("Something went wrong"); + }`, + options: [{ requireCatchParameter: false }], + }, + ], + invalid: [ + /* 1. Throws a new Error without cause, even though an error was caught */ + { + code: `try { + doSomething(); + } catch (err) { + throw new Error("Something failed"); + }`, + errors: [ + { + messageId: "missingCause", + suggestions: [ + { + messageId: "includeCause", + output: `try { + doSomething(); + } catch (err) { + throw new Error("Something failed", { cause: err }); + }`, + }, + ], + }, + ], + }, + /* 2. Throwing a new Error with unrelated cause */ + { + code: `try { + doSomething(); + } catch (err) { + const unrelated = new Error("other"); + throw new Error("Something failed", { cause: unrelated }); + }`, + errors: [ + { + messageId: "incorrectCause", + suggestions: [ + { + messageId: "includeCause", + output: `try { + doSomething(); + } catch (err) { + const unrelated = new Error("other"); + throw new Error("Something failed", { cause: err }); + }`, + }, + ], + }, + ], + }, + /* 3. Throws a new Error, cause property is present but value is a different identifier */ + /* Note: This should actually be a valid case since e === err, but still reporting as it's hard to track. */ + { + code: `try { + doSomething(); + } catch (err) { + const e = err; + throw new Error("Failed", { cause: e }); + }`, + errors: [ + { + messageId: "incorrectCause", + suggestions: [ + { + messageId: "includeCause", + output: `try { + doSomething(); + } catch (err) { + const e = err; + throw new Error("Failed", { cause: err }); + }`, + }, + ], + }, + ], + }, + /* 4. Throws a new Error, but not using the full caught error as the cause of the symptom error */ + { + code: `try { + doSomething(); + } catch (error) { + throw new Error("Failed", { cause: error.message }); + }`, + errors: [ + { + messageId: "incorrectCause", + suggestions: [ + { + messageId: "includeCause", + output: `try { + doSomething(); + } catch (error) { + throw new Error("Failed", { cause: error }); + }`, + }, + ], + }, + ], + }, + /* 5. Throw in a heavily nested catch block */ + { + code: `try { + doSomething(); + } catch (error) { + if (shouldThrow) { + while (true) { + if (Math.random() > 0.5) { + throw new Error("Failed without cause"); + } + } + } + }`, + errors: [ + { + messageId: "missingCause", + suggestions: [ + { + messageId: "includeCause", + output: `try { + doSomething(); + } catch (error) { + if (shouldThrow) { + while (true) { + if (Math.random() > 0.5) { + throw new Error("Failed without cause", { cause: error }); + } + } + } + }`, + }, + ], + }, + ], + }, + /* 6. Throw deep inside a switch statement */ + { + code: `try { + doSomething(); + } catch (error) { + switch (error.code) { + case "A": + throw new Error("Type A"); + case "B": + throw new Error("Type B", { cause: error }); + default: + throw new Error("Other", { cause: error }); + } + }`, + errors: [ + { + messageId: "missingCause", + suggestions: [ + { + messageId: "includeCause", + output: `try { + doSomething(); + } catch (error) { + switch (error.code) { + case "A": + throw new Error("Type A", { cause: error }); + case "B": + throw new Error("Type B", { cause: error }); + default: + throw new Error("Other", { cause: error }); + } + }`, + }, + ], + }, + ], + }, + /* 7. Throw statement with a template literal error message */ + { + code: `try { + doSomething(); + } catch (error) { + throw new Error(\`The certificate key "\${chalk.yellow(keyFile)}" is invalid.\n\${err.message}\`); + }`, + errors: [ + { + messageId: "missingCause", + suggestions: [ + { + messageId: "includeCause", + output: `try { + doSomething(); + } catch (error) { + throw new Error(\`The certificate key "\${chalk.yellow(keyFile)}" is invalid.\n\${err.message}\`, { cause: error }); + }`, + }, + ], + }, + ], + }, + /* 8. Throw statement with a variable error message */ + { + code: `try { + doSomething(); + } catch (error) { + const errorMessage = "Operation failed"; + throw new Error(errorMessage); + }`, + errors: [ + { + messageId: "missingCause", + suggestions: [ + { + messageId: "includeCause", + output: `try { + doSomething(); + } catch (error) { + const errorMessage = "Operation failed"; + throw new Error(errorMessage, { cause: error }); + }`, + }, + ], + }, + ], + }, + /* 9. Existing error options should be preserved. */ + { + code: `try { + doSomething(); + } catch (error) { + const errorMessage = "Operation failed"; + throw new Error(errorMessage, { existingOption: true, complexOption: { moreOptions: {} } }); + }`, + errors: [ + { + messageId: "missingCause", + suggestions: [ + { + messageId: "includeCause", + output: `try { + doSomething(); + } catch (error) { + const errorMessage = "Operation failed"; + throw new Error(errorMessage, { existingOption: true, complexOption: { moreOptions: {} }, cause: error }); + }`, + }, + ], + }, + ], + }, + /* 10. Multiple Throw statements within a single catch block */ + { + code: `try { + doSomething(); + } catch (err) { + if (err.code === "A") { + throw new Error("Type A"); + } + throw new TypeError("Fallback error"); + }`, + // This should have multiple errors + errors: [ + { + messageId: "missingCause", + suggestions: [ + { + messageId: "includeCause", + output: `try { + doSomething(); + } catch (err) { + if (err.code === "A") { + throw new Error("Type A", { cause: err }); + } + throw new TypeError("Fallback error"); + }`, + }, + ], + }, + { + messageId: "missingCause", + suggestions: [ + { + messageId: "includeCause", + output: `try { + doSomething(); + } catch (err) { + if (err.code === "A") { + throw new Error("Type A"); + } + throw new TypeError("Fallback error", { cause: err }); + }`, + }, + ], + }, + ], + }, + /* 11. When an Error is created without `new` keyword */ + { + code: `try { + doSomething(); + } catch (err) { + throw Error("Something failed"); + }`, + errors: [ + { + messageId: "missingCause", + suggestions: [ + { + messageId: "includeCause", + output: `try { + doSomething(); + } catch (err) { + throw Error("Something failed", { cause: err }); + }`, + }, + ], + }, + ], + }, + /* 12. Miscellaneous constructs */ + { + code: `try { + } catch (err) { + my_label: + throw new Error("Failed without cause"); + }`, + errors: [ + { + messageId: "missingCause", + suggestions: [ + { + messageId: "includeCause", + output: `try { + } catch (err) { + my_label: + throw new Error("Failed without cause", { cause: err }); + }`, + }, + ], + }, + ], + }, + { + code: `try { + } catch (err) { + { + throw new Error("Something went wrong"); + } + }`, + errors: [ + { + messageId: "missingCause", + suggestions: [ + { + messageId: "includeCause", + output: `try { + } catch (err) { + { + throw new Error("Something went wrong", { cause: err }); + } + }`, + }, + ], + }, + ], + }, + /* 13. When the throw Error constructor has no message argument. */ + { + code: `try { + } catch (err) { + { + throw new Error(); + } + }`, + errors: [ + { + messageId: "missingCause", + suggestions: [ + { + messageId: "includeCause", + output: `try { + } catch (err) { + { + throw new Error("", { cause: err }); + } + }`, + }, + ], + }, + ], + }, + /* 14. AggregateError accepts options as the third argument. */ + { + code: `try { + } catch (err) { + { + throw new AggregateError([], "Lorem ipsum"); + } + }`, + errors: [ + { + messageId: "missingCause", + suggestions: [ + { + messageId: "includeCause", + output: `try { + } catch (err) { + { + throw new AggregateError([], "Lorem ipsum", { cause: err }); + } + }`, + }, + ], + }, + ], + }, + /* 15. `AggregateError` with no arguments. */ + { + code: `try { + } catch (err) { + { + throw new AggregateError(); + } + }`, + errors: [ + { + messageId: "missingCause", + suggestions: [ + { + messageId: "includeCause", + output: `try { + } catch (err) { + { + throw new AggregateError([], "", { cause: err }); + } + }`, + }, + ], + }, + ], + }, + /* 16. `AggregateError` with just `errors` argument. */ + { + code: `try { + } catch (err) { + { + throw new AggregateError([]); + } + }`, + errors: [ + { + messageId: "missingCause", + suggestions: [ + { + messageId: "includeCause", + output: `try { + } catch (err) { + { + throw new AggregateError([], "", { cause: err }); + } + }`, + }, + ], + }, + ], + }, + /* 17. Disallow discarding caught errors when `requireCatchParameter` is set to `true` */ + { + code: `try { + doSomething(); + } catch { + throw new Error("Something went wrong"); + }`, + options: [{ requireCatchParameter: true }], + errors: [ + { + messageId: "missingCatchErrorParam", + }, + ], + }, + /* 18. Throwing a new Error with unrelated cause, and complex fix is needed. */ + { + code: `try { + doSomething(); + } catch (err) { + throw new Error("Something failed", { cause }); + }`, + errors: [ + { + messageId: "incorrectCause", + suggestions: [ + { + messageId: "includeCause", + output: `try { + doSomething(); + } catch (err) { + throw new Error("Something failed", { cause: err }); + }`, + }, + ], + }, + ], + }, + /* 19. When the caught error is being partially lost. */ + { + code: `try { + doSomething(); + } catch ({ message }) { + throw new Error(message); + }`, + errors: [ + { + messageId: "partiallyLostError", + }, + ], + }, + { + code: `try { + doSomethingElse(); + } catch ({ ...error }) { + throw new Error(error.message); + }`, + errors: [ + { + messageId: "partiallyLostError", + }, + ], + }, + /* 20. When the caught error is shadowed by a closer scoped redeclaration. */ + { + code: `try { + doSomething(); + } catch (error) { + if (whatever) { + const error = anotherError; + throw new Error("Something went wrong", { cause: error }); + } + }`, + errors: [ + { + messageId: "caughtErrorShadowed", + }, + ], + }, + /* 21. Make sure comments are preserved when fixing missing cause. */ + { + code: `try { + doSomething(); + } catch (error) { + throw new Error( + "Something went wrong" // some comments + ); + }`, + errors: [ + { + messageId: "missingCause", + suggestions: [ + { + messageId: "includeCause", + output: `try { + doSomething(); + } catch (error) { + throw new Error( + "Something went wrong", { cause: error } // some comments + ); + }`, + }, + ], + }, + ], + }, + /* 22. Adding `cause` to an empty existing options object. */ + { + code: `try { + doSomething(); + } catch (err) { + throw new Error("Something failed", {}); + }`, + errors: [ + { + messageId: "missingCause", + suggestions: [ + { + messageId: "includeCause", + output: `try { + doSomething(); + } catch (err) { + throw new Error("Something failed", {cause: err}); + }`, + }, + ], + }, + ], + }, + /* 23. There is no easy way to check for `cause` existence when property is computed. */ + { + code: `try { + doSomething(); + } catch (error) { + const cause = "desc"; + throw new Error("Something failed", { [cause]: "Some error" }); + }`, + errors: [ + { + messageId: "missingCause", + suggestions: [ + { + messageId: "includeCause", + output: `try { + doSomething(); + } catch (error) { + const cause = "desc"; + throw new Error("Something failed", { [cause]: "Some error", cause: error }); + }`, + }, + ], + }, + ], + }, + /* 24. When an incorrect cause is attached as a shorthand method. */ + { + code: `try { + doSomething(); + } catch (error) { + throw new Error("Something failed", { cause() { /* do something */ } }); + }`, + errors: [ + { + messageId: "incorrectCause", + suggestions: [ + { + messageId: "includeCause", + output: `try { + doSomething(); + } catch (error) { + throw new Error("Something failed", { cause: error }); + }`, + }, + ], + }, + ], + }, + ], +}); From a355a0e5b2e6a47cda099b31dc7d112cfb5c4315 Mon Sep 17 00:00:00 2001 From: OTonGitHub Date: Tue, 2 Sep 2025 21:05:37 +0500 Subject: [PATCH 086/165] docs: invert comparison logic for example in `no-var` doc page (#20064) --- docs/src/rules/no-var.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/rules/no-var.md b/docs/src/rules/no-var.md index 5b9d1d6f9df4..7b3e8a7a3f7a 100644 --- a/docs/src/rules/no-var.md +++ b/docs/src/rules/no-var.md @@ -11,7 +11,7 @@ such as: ```js var count = people.length; -var enoughFood = count > sandwiches.length; +var enoughFood = sandwiches.length >= count; if (enoughFood) { var count = sandwiches.length; // accidentally overriding the count variable From 84ffb9680b15e45bfd8c8a5db4731576ddd16fc4 Mon Sep 17 00:00:00 2001 From: Francesco Trotta Date: Wed, 3 Sep 2025 13:56:33 +0200 Subject: [PATCH 087/165] chore: update `@eslint-community/eslint-utils` (#20069) --- lib/rules/array-callback-return.js | 1 - package.json | 2 +- packages/js/src/configs/eslint-all.js | 1 + 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/rules/array-callback-return.js b/lib/rules/array-callback-return.js index 7a2e4b648d8b..e7e31308f19f 100644 --- a/lib/rules/array-callback-return.js +++ b/lib/rules/array-callback-return.js @@ -233,7 +233,6 @@ module.exports = { url: "https://eslint.org/docs/latest/rules/array-callback-return", }, - // eslint-disable-next-line eslint-plugin/require-meta-has-suggestions -- false positive hasSuggestions: true, schema: [ diff --git a/package.json b/package.json index 629124c106b4..1b463c5defbc 100644 --- a/package.json +++ b/package.json @@ -104,7 +104,7 @@ "homepage": "https://eslint.org", "bugs": "https://github.com/eslint/eslint/issues/", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.0", "@eslint/config-helpers": "^0.3.1", diff --git a/packages/js/src/configs/eslint-all.js b/packages/js/src/configs/eslint-all.js index aee729eb039b..344c2d11f43f 100644 --- a/packages/js/src/configs/eslint-all.js +++ b/packages/js/src/configs/eslint-all.js @@ -197,6 +197,7 @@ module.exports = Object.freeze({ "prefer-rest-params": "error", "prefer-spread": "error", "prefer-template": "error", + "preserve-caught-error": "error", "radix": "error", "require-atomic-updates": "error", "require-await": "error", From 102f44442ac9bf1fcd4ba6ab9fae43ce09199df6 Mon Sep 17 00:00:00 2001 From: jaymarvelz Date: Wed, 3 Sep 2025 15:24:51 +0300 Subject: [PATCH 088/165] feat: implement suggestions for no-empty-static-block (#20056) --- lib/rules/no-empty-static-block.js | 26 ++++++- tests/lib/rules/no-empty-static-block.js | 98 ++++++++++++++++++++++-- 2 files changed, 118 insertions(+), 6 deletions(-) diff --git a/lib/rules/no-empty-static-block.js b/lib/rules/no-empty-static-block.js index 5741ee3b1874..488b5ed72656 100644 --- a/lib/rules/no-empty-static-block.js +++ b/lib/rules/no-empty-static-block.js @@ -11,6 +11,7 @@ /** @type {import('../types').Rule.RuleModule} */ module.exports = { meta: { + hasSuggestions: true, type: "suggestion", docs: { @@ -23,6 +24,7 @@ module.exports = { messages: { unexpected: "Unexpected empty static block.", + suggestComment: "Add comment inside empty static block.", }, }, @@ -32,14 +34,36 @@ module.exports = { return { StaticBlock(node) { if (node.body.length === 0) { + const openingBrace = sourceCode.getFirstToken(node, { + skip: 1, + }); const closingBrace = sourceCode.getLastToken(node); if ( sourceCode.getCommentsBefore(closingBrace).length === 0 ) { context.report({ - node, + loc: { + start: openingBrace.loc.start, + end: closingBrace.loc.end, + }, messageId: "unexpected", + suggest: [ + { + messageId: "suggestComment", + fix(fixer) { + const range = [ + openingBrace.range[1], + closingBrace.range[0], + ]; + + return fixer.replaceTextRange( + range, + " /* empty */ ", + ); + }, + }, + ], }); } } diff --git a/tests/lib/rules/no-empty-static-block.js b/tests/lib/rules/no-empty-static-block.js index e9631a46964a..4b5d15b0eb56 100644 --- a/tests/lib/rules/no-empty-static-block.js +++ b/tests/lib/rules/no-empty-static-block.js @@ -29,23 +29,111 @@ ruleTester.run("no-empty-static-block", rule, { invalid: [ { code: "class Foo { static {} }", - errors: [{ messageId: "unexpected" }], + errors: [ + { + messageId: "unexpected", + line: 1, + column: 20, + endLine: 1, + endColumn: 22, + suggestions: [ + { + messageId: "suggestComment", + output: "class Foo { static { /* empty */ } }", + }, + ], + }, + ], }, { code: "class Foo { static { } }", - errors: [{ messageId: "unexpected" }], + errors: [ + { + messageId: "unexpected", + line: 1, + column: 20, + endLine: 1, + endColumn: 23, + suggestions: [ + { + messageId: "suggestComment", + output: "class Foo { static { /* empty */ } }", + }, + ], + }, + ], }, { code: "class Foo { static { \n\n } }", - errors: [{ messageId: "unexpected" }], + errors: [ + { + messageId: "unexpected", + line: 1, + column: 20, + endLine: 3, + endColumn: 3, + suggestions: [ + { + messageId: "suggestComment", + output: "class Foo { static { /* empty */ } }", + }, + ], + }, + ], }, { code: "class Foo { static { bar(); } static {} }", - errors: [{ messageId: "unexpected" }], + errors: [ + { + messageId: "unexpected", + line: 1, + column: 38, + endLine: 1, + endColumn: 40, + suggestions: [ + { + messageId: "suggestComment", + output: "class Foo { static { bar(); } static { /* empty */ } }", + }, + ], + }, + ], }, { code: "class Foo { static // comment\n {} }", - errors: [{ messageId: "unexpected" }], + errors: [ + { + messageId: "unexpected", + line: 2, + column: 2, + endLine: 2, + endColumn: 4, + suggestions: [ + { + messageId: "suggestComment", + output: "class Foo { static // comment\n { /* empty */ } }", + }, + ], + }, + ], + }, + { + code: "class Foo { static /* empty */ {} /* empty */ }", + errors: [ + { + messageId: "unexpected", + line: 1, + column: 32, + endLine: 1, + endColumn: 34, + suggestions: [ + { + messageId: "suggestComment", + output: "class Foo { static /* empty */ { /* empty */ } /* empty */ }", + }, + ], + }, + ], }, ], }); From 42761fa7c872fb9e14c144b692af6967b3662082 Mon Sep 17 00:00:00 2001 From: jaymarvelz Date: Wed, 3 Sep 2025 15:51:26 +0300 Subject: [PATCH 089/165] feat: implement suggestions for no-empty-function (#20057) --- lib/rules/no-empty-function.js | 19 ++++++++ tests/lib/rules/no-empty-function.js | 70 ++++++++++++++++++++++++---- 2 files changed, 81 insertions(+), 8 deletions(-) diff --git a/lib/rules/no-empty-function.js b/lib/rules/no-empty-function.js index b83bdd1564e2..57bd77890f73 100644 --- a/lib/rules/no-empty-function.js +++ b/lib/rules/no-empty-function.js @@ -105,6 +105,7 @@ module.exports = { meta: { dialects: ["javascript", "typescript"], language: "javascript", + hasSuggestions: true, type: "suggestion", defaultOptions: [{ allow: [] }], @@ -131,6 +132,7 @@ module.exports = { messages: { unexpected: "Unexpected empty {{name}}.", + suggestComment: "Add comment inside empty {{name}}.", }, }, @@ -204,6 +206,23 @@ module.exports = { loc: node.body.loc, messageId: "unexpected", data: { name }, + suggest: [ + { + messageId: "suggestComment", + data: { name }, + fix(fixer) { + const range = [ + node.body.range[0] + 1, + node.body.range[1] - 1, + ]; + + return fixer.replaceTextRange( + range, + " /* empty */ ", + ); + }, + }, + ], }); } } diff --git a/tests/lib/rules/no-empty-function.js b/tests/lib/rules/no-empty-function.js index 82f0c27e5677..0207b9e292e1 100644 --- a/tests/lib/rules/no-empty-function.js +++ b/tests/lib/rules/no-empty-function.js @@ -37,7 +37,7 @@ const ALLOW_OPTIONS = Object.freeze([ * Folds test items to `{valid: [], invalid: []}`. * One item would be converted to 4 valid patterns and 8 invalid patterns. * @param {{valid: Object[], invalid: Object[]}} patterns The result. - * @param {{code: string, message: string, allow: string|string[]}} item A test item. + * @param {{code: string, messageId: string, allow: string|string[]}} item A test item. * @returns {{valid: Object[], invalid: Object[]}} The result. */ function toValidInvalid(patterns, item) { @@ -69,15 +69,22 @@ function toValidInvalid(patterns, item) { })), ); - const error = item.message || { - messageId: item.messageId, - data: item.data, - }; - // Invalid Patterns. patterns.invalid.push({ code: item.code, - errors: [error], + errors: [ + { + messageId: item.messageId, + data: item.data, + suggestions: [ + { + messageId: "suggestComment", + data: item.data, + output: item.code.replace("{}", "{ /* empty */ }"), + }, + ], + }, + ], languageOptions: { ecmaVersion }, }); ALLOW_OPTIONS.filter(allow => !allowOptions.includes(allow)).forEach( @@ -85,7 +92,19 @@ function toValidInvalid(patterns, item) { // non related "allow" option has no effect. patterns.invalid.push({ code: `${item.code} // allow: ${allow}`, - errors: [error], + errors: [ + { + messageId: item.messageId, + data: item.data, + suggestions: [ + { + messageId: "suggestComment", + data: item.data, + output: `${item.code.replace("{}", "{ /* empty */ }")} // allow: ${allow}`, + }, + ], + }, + ], options: [{ allow: [allow] }], languageOptions: { ecmaVersion }, }); @@ -333,6 +352,13 @@ ruleTester.run( column: 16, endLine: 1, endColumn: 18, + suggestions: [ + { + messageId: "suggestComment", + data: { name: "function 'foo'" }, + output: "function foo() { /* empty */ }", + }, + ], }, ], }, @@ -346,6 +372,13 @@ ruleTester.run( column: 23, endLine: 2, endColumn: 2, + suggestions: [ + { + messageId: "suggestComment", + data: { name: "function" }, + output: "var foo = function () { /* empty */ }", + }, + ], }, ], }, @@ -360,6 +393,13 @@ ruleTester.run( column: 17, endLine: 3, endColumn: 4, + suggestions: [ + { + messageId: "suggestComment", + data: { name: "arrow function" }, + output: "var foo = () => { /* empty */ }", + }, + ], }, ], }, @@ -374,6 +414,13 @@ ruleTester.run( column: 8, endLine: 3, endColumn: 3, + suggestions: [ + { + messageId: "suggestComment", + data: { name: "method 'foo'" }, + output: "var obj = {\n\tfoo() { /* empty */ }\n}", + }, + ], }, ], }, @@ -388,6 +435,13 @@ ruleTester.run( column: 17, endLine: 1, endColumn: 20, + suggestions: [ + { + messageId: "suggestComment", + data: { name: "method 'foo'" }, + output: "class A { foo() { /* empty */ } }", + }, + ], }, ], }, From 10e7ae23e30ea0834d9fdeb3a2a1db8103c36cd2 Mon Sep 17 00:00:00 2001 From: soda-sorcery Date: Wed, 3 Sep 2025 08:54:31 -0600 Subject: [PATCH 090/165] fix: update uncloneable options error message (#20059) * refactor: updated uncloneable-options error message to give more clarity * updated tests to match error message change * fix: language clean-up for clarity --- lib/eslint/eslint.js | 2 +- tests/lib/eslint/eslint.js | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/eslint/eslint.js b/lib/eslint/eslint.js index 3d4031e647fb..67aebfac01aa 100644 --- a/lib/eslint/eslint.js +++ b/lib/eslint/eslint.js @@ -547,7 +547,7 @@ function validateOptionCloneability(options) { }) .sort(); const error = new TypeError( - `The ${uncloneableOptionKeys.length === 1 ? "option" : "options"} ${new Intl.ListFormat("en-US").format(uncloneableOptionKeys.map(key => `"${key}"`))} cannot be cloned. When concurrency is enabled, all options must be cloneable. Remove uncloneable options or use an options module.`, + `The ${uncloneableOptionKeys.length === 1 ? "option" : "options"} ${new Intl.ListFormat("en-US").format(uncloneableOptionKeys.map(key => `"${key}"`))} cannot be cloned. When concurrency is enabled, all options must be cloneable values (JSON values). Remove uncloneable options or use an options module.`, ); error.code = "ESLINT_UNCLONEABLE_OPTIONS"; throw error; diff --git a/tests/lib/eslint/eslint.js b/tests/lib/eslint/eslint.js index 8ce0d37b3844..e1617f625718 100644 --- a/tests/lib/eslint/eslint.js +++ b/tests/lib/eslint/eslint.js @@ -426,7 +426,7 @@ describe("ESLint", () => { constructor: TypeError, code: "ESLINT_UNCLONEABLE_OPTIONS", message: - 'The options "baseConfig", "fix", and "plugins" cannot be cloned. When concurrency is enabled, all options must be cloneable. Remove uncloneable options or use an options module.', + 'The options "baseConfig", "fix", and "plugins" cannot be cloned. When concurrency is enabled, all options must be cloneable values (JSON values). Remove uncloneable options or use an options module.', }, ); }); @@ -445,7 +445,7 @@ describe("ESLint", () => { constructor: TypeError, code: "ESLINT_UNCLONEABLE_OPTIONS", message: - 'The option "ruleFilter" cannot be cloned. When concurrency is enabled, all options must be cloneable. Remove uncloneable options or use an options module.', + 'The option "ruleFilter" cannot be cloned. When concurrency is enabled, all options must be cloneable values (JSON values). Remove uncloneable options or use an options module.', }, ); }); @@ -9778,13 +9778,13 @@ describe("ESLint", () => { const optionsSrc = ` import assert from "node:assert"; import { isMainThread } from "node:worker_threads"; - + if (!isMainThread) { if (process.env.ESLINT_TEST_ENV !== "test") { assert.fail("Environment variable ESLINT_TEST_ENV is not set as expected in worker threads."); } } - + export default { concurrency: 2, cwd: ${JSON.stringify(fixtureDir)}, @@ -9803,11 +9803,11 @@ describe("ESLint", () => { it("should propagate environment variables from worker threads to the controlling thread", async () => { const optionsSrc = ` import { isMainThread } from "node:worker_threads"; - + if (!isMainThread) { process.env.ESLINT_TEST_ENV = "test"; } - + export default { concurrency: 2, cwd: ${JSON.stringify(fixtureDir)}, From 70557649e3111c55d8cddf678b6c4079aa6f0ccc Mon Sep 17 00:00:00 2001 From: Milos Djermanovic Date: Wed, 3 Sep 2025 16:57:40 +0200 Subject: [PATCH 091/165] test: remove `tests/lib/eslint/eslint.config.js` (#20065) --- .../configurations/cwd}/eslint.config.js | 2 -- tests/lib/eslint/eslint.js | 10 +++++----- 2 files changed, 5 insertions(+), 7 deletions(-) rename tests/{lib/eslint => fixtures/configurations/cwd}/eslint.config.js (66%) diff --git a/tests/lib/eslint/eslint.config.js b/tests/fixtures/configurations/cwd/eslint.config.js similarity index 66% rename from tests/lib/eslint/eslint.config.js rename to tests/fixtures/configurations/cwd/eslint.config.js index f8bdd00b5f8e..207260767c4a 100644 --- a/tests/lib/eslint/eslint.config.js +++ b/tests/fixtures/configurations/cwd/eslint.config.js @@ -1,5 +1,3 @@ -/* eslint strict: off -- config used for testing only */ - module.exports = { rules: { quotes: 2, diff --git a/tests/lib/eslint/eslint.js b/tests/lib/eslint/eslint.js index e1617f625718..752812fcc6a8 100644 --- a/tests/lib/eslint/eslint.js +++ b/tests/lib/eslint/eslint.js @@ -201,14 +201,14 @@ describe("ESLint", () => { }); it("the default value of 'options.cwd' should be the current working directory.", async () => { - process.chdir(__dirname); + process.chdir(fixtureDir); try { const engine = new ESLint({ flags }); - const results = await engine.lintFiles("eslint.js"); + const results = await engine.lintFiles("passing.js"); assert.strictEqual( path.dirname(results[0].filePath), - __dirname, + fixtureDir, ); } finally { process.chdir(originalDir); @@ -629,7 +629,7 @@ describe("ESLint", () => { it("should report the total and per file errors when using local cwd eslint.config.js", async () => { eslint = new ESLint({ flags, - cwd: __dirname, + cwd: getFixturePath("configurations", "cwd"), }); const results = await eslint.lintText("var foo = 'bar';"); @@ -13490,7 +13490,7 @@ describe("ESLint", () => { const originalCwd = process.cwd(); beforeEach(() => { - process.chdir(__dirname); + process.chdir(fixtureDir); }); afterEach(() => { From d265515642f65246bcd45c17979f67c2afb12f95 Mon Sep 17 00:00:00 2001 From: jjangga0214 Date: Fri, 5 Sep 2025 23:14:37 +0900 Subject: [PATCH 092/165] =?UTF-8?q?docs:=20improve=20phrasing=20-=20"if"?= =?UTF-8?q?=20=E2=86=92=20"even=20if"=20from=20getting-started=20section?= =?UTF-8?q?=20(#20074)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit docs(getting-started): improve phrasing - "if" → "even if" --- docs/src/use/getting-started.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/use/getting-started.md b/docs/src/use/getting-started.md index 3a98292092fc..4718d2ca5f52 100644 --- a/docs/src/use/getting-started.md +++ b/docs/src/use/getting-started.md @@ -95,7 +95,7 @@ The three error levels allow you fine-grained control over how ESLint applies ru ## Global Install -It is also possible to install ESLint globally, rather than locally, using `npm install eslint --global`. However, this is not recommended, and any plugins or shareable configs that you use must still be installed locally if you install ESLint globally. +It is also possible to install ESLint globally, rather than locally, using `npm install eslint --global`. However, this is not recommended, and any plugins or shareable configs that you use must still be installed locally even if you install ESLint globally. ## Manual Set Up From af2a0870fdc646091d027516601888923e5bc202 Mon Sep 17 00:00:00 2001 From: Jenkins Date: Fri, 5 Sep 2025 14:18:25 +0000 Subject: [PATCH 093/165] chore: package.json update for @eslint/js release --- packages/js/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/js/package.json b/packages/js/package.json index 0901af00f416..c0e541411073 100644 --- a/packages/js/package.json +++ b/packages/js/package.json @@ -1,6 +1,6 @@ { "name": "@eslint/js", - "version": "9.34.0", + "version": "9.35.0", "description": "ESLint JavaScript language implementation", "funding": "https://eslint.org/donate", "main": "./src/index.js", From da87f2fe792cab5b69b62bf5c15e69ab4f433087 Mon Sep 17 00:00:00 2001 From: Milos Djermanovic Date: Fri, 5 Sep 2025 16:30:04 +0200 Subject: [PATCH 094/165] chore: upgrade @eslint/js@9.35.0 (#20077) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1b463c5defbc..971170b12fb6 100644 --- a/package.json +++ b/package.json @@ -110,7 +110,7 @@ "@eslint/config-helpers": "^0.3.1", "@eslint/core": "^0.15.2", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.34.0", + "@eslint/js": "9.35.0", "@eslint/plugin-kit": "^0.3.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", From b80f0254f357ad6b1d8d9b4ded0892b8826ba8f4 Mon Sep 17 00:00:00 2001 From: Jenkins Date: Fri, 5 Sep 2025 14:41:12 +0000 Subject: [PATCH 095/165] Build: changelog update for 9.35.0 --- CHANGELOG.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index be42ad7e67f9..3c70b5feadc2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,26 @@ +v9.35.0 - September 5, 2025 + +* [`da87f2f`](https://github.com/eslint/eslint/commit/da87f2fe792cab5b69b62bf5c15e69ab4f433087) chore: upgrade @eslint/js@9.35.0 (#20077) (Milos Djermanovic) +* [`af2a087`](https://github.com/eslint/eslint/commit/af2a0870fdc646091d027516601888923e5bc202) chore: package.json update for @eslint/js release (Jenkins) +* [`d265515`](https://github.com/eslint/eslint/commit/d265515642f65246bcd45c17979f67c2afb12f95) docs: improve phrasing - "if" → "even if" from getting-started section (#20074) (jjangga0214) +* [`7055764`](https://github.com/eslint/eslint/commit/70557649e3111c55d8cddf678b6c4079aa6f0ccc) test: remove `tests/lib/eslint/eslint.config.js` (#20065) (Milos Djermanovic) +* [`10e7ae2`](https://github.com/eslint/eslint/commit/10e7ae23e30ea0834d9fdeb3a2a1db8103c36cd2) fix: update uncloneable options error message (#20059) (soda-sorcery) +* [`42761fa`](https://github.com/eslint/eslint/commit/42761fa7c872fb9e14c144b692af6967b3662082) feat: implement suggestions for no-empty-function (#20057) (jaymarvelz) +* [`102f444`](https://github.com/eslint/eslint/commit/102f44442ac9bf1fcd4ba6ab9fae43ce09199df6) feat: implement suggestions for no-empty-static-block (#20056) (jaymarvelz) +* [`84ffb96`](https://github.com/eslint/eslint/commit/84ffb9680b15e45bfd8c8a5db4731576ddd16fc4) chore: update `@eslint-community/eslint-utils` (#20069) (Francesco Trotta) +* [`a355a0e`](https://github.com/eslint/eslint/commit/a355a0e5b2e6a47cda099b31dc7d112cfb5c4315) docs: invert comparison logic for example in `no-var` doc page (#20064) (OTonGitHub) +* [`e51ffff`](https://github.com/eslint/eslint/commit/e51ffff737ca245b3a1d115cb11e1c99737249a3) feat: add `preserve-caught-error` rule (#19913) (Amnish Singh Arora) +* [`5082fc2`](https://github.com/eslint/eslint/commit/5082fc206de6946d9d4c20e57301f78839b3b9f2) docs: Update README (GitHub Actions Bot) +* [`d5ef939`](https://github.com/eslint/eslint/commit/d5ef9397150cc178e1f9891c3ff49ac4871ec786) refactor: remove deprecated `context.parserOptions` usage across rules (#20060) (sethamus) +* [`1b3881d`](https://github.com/eslint/eslint/commit/1b3881d7e859bec9589e39888656c33c914a8302) chore: remove redundant word (#20058) (pxwanglu) +* [`99cfd7e`](https://github.com/eslint/eslint/commit/99cfd7e056e1703941c9eb8ca1ae7fdb1987ba9d) docs: add missing "the" in rule deprecation docs (#20050) (Josh Goldberg ✨) +* [`bfa4601`](https://github.com/eslint/eslint/commit/bfa46013e7ea9a522c02f72250fa07160f96a6b8) fix: ignore empty switch statements with comments in no-empty rule (#20045) (jaymarvelz) +* [`dfd11de`](https://github.com/eslint/eslint/commit/dfd11deb24fc733faa5db751a2f615eb04e48b15) fix: add `before` and `after` to test case types (#20049) (Francesco Trotta) +* [`6ad8973`](https://github.com/eslint/eslint/commit/6ad8973e5d3c94b8e100b7266f55f8eb0757eb00) docs: update `--no-ignore` and `--ignore-pattern` documentation (#20036) (Francesco Trotta) +* [`dabbe95`](https://github.com/eslint/eslint/commit/dabbe95c39671c5fa272da012ee1432aa088650f) fix: correct types for `no-restricted-imports` rule (#20034) (Milos Djermanovic) +* [`8033b19`](https://github.com/eslint/eslint/commit/8033b195299a1eaa4a0ed6553d9e034a457bb577) docs: add documentation for `--no-config-lookup` (#20033) (Francesco Trotta) +* [`ea789c7`](https://github.com/eslint/eslint/commit/ea789c7dd234c1a6be499a4644dd0f5c97615972) fix: no-loss-of-precision false positive with uppercase exponent (#20032) (sethamus) + v9.34.0 - August 22, 2025 * [`f19ad94`](https://github.com/eslint/eslint/commit/f19ad9493e0ca04c2c1455fbb3402eaad993a8be) chore: upgrade to `@eslint/js@9.34.0` (#20030) (Francesco Trotta) From 8401101d1e3e3e4e1edc2a9e59cafc9956bf2610 Mon Sep 17 00:00:00 2001 From: Jenkins Date: Fri, 5 Sep 2025 14:41:13 +0000 Subject: [PATCH 096/165] 9.35.0 --- docs/package.json | 2 +- docs/src/_data/rule_versions.json | 3 ++- docs/src/_data/rules.json | 12 ++++++++++-- docs/src/_data/rules_meta.json | 11 +++++++++++ docs/src/_data/versions.json | 2 +- docs/src/use/formatters/html-formatter-example.html | 2 +- lib/types/rules.d.ts | 1 + package.json | 2 +- 8 files changed, 28 insertions(+), 7 deletions(-) diff --git a/docs/package.json b/docs/package.json index ba6df669bf6b..97d733be4551 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,7 +1,7 @@ { "name": "docs-eslint", "private": true, - "version": "9.34.0", + "version": "9.35.0", "description": "", "main": "index.js", "keywords": [], diff --git a/docs/src/_data/rule_versions.json b/docs/src/_data/rule_versions.json index c497cace7193..eba39526b61d 100644 --- a/docs/src/_data/rule_versions.json +++ b/docs/src/_data/rule_versions.json @@ -310,7 +310,8 @@ "no-new-native-nonconstructor": "8.27.0", "no-object-constructor": "8.50.0", "no-useless-assignment": "9.0.0-alpha.1", - "no-unassigned-vars": "9.27.0" + "no-unassigned-vars": "9.27.0", + "preserve-caught-error": "9.35.0" }, "removed": { "generator-star": "1.0.0-rc-1", diff --git a/docs/src/_data/rules.json b/docs/src/_data/rules.json index b88c8da9ca7f..3c4f34708071 100644 --- a/docs/src/_data/rules.json +++ b/docs/src/_data/rules.json @@ -833,7 +833,7 @@ "recommended": false, "fixable": false, "frozen": false, - "hasSuggestions": false + "hasSuggestions": true }, { "name": "no-empty-static-block", @@ -841,7 +841,7 @@ "recommended": true, "fixable": false, "frozen": false, - "hasSuggestions": false + "hasSuggestions": true }, { "name": "no-eq-null", @@ -1491,6 +1491,14 @@ "frozen": true, "hasSuggestions": false }, + { + "name": "preserve-caught-error", + "description": "Disallow losing originally caught error when re-throwing custom errors", + "recommended": false, + "fixable": false, + "frozen": false, + "hasSuggestions": true + }, { "name": "radix", "description": "Enforce the consistent use of the radix argument when using `parseInt()`", diff --git a/docs/src/_data/rules_meta.json b/docs/src/_data/rules_meta.json index 31ee60893a58..d98550785584 100644 --- a/docs/src/_data/rules_meta.json +++ b/docs/src/_data/rules_meta.json @@ -1985,6 +1985,7 @@ "typescript" ], "language": "javascript", + "hasSuggestions": true, "type": "suggestion", "defaultOptions": [ { @@ -2011,6 +2012,7 @@ } }, "no-empty-static-block": { + "hasSuggestions": true, "type": "suggestion", "docs": { "description": "Disallow empty static blocks", @@ -4149,6 +4151,15 @@ }, "fixable": "code" }, + "preserve-caught-error": { + "type": "suggestion", + "docs": { + "description": "Disallow losing originally caught error when re-throwing custom errors", + "recommended": false, + "url": "https://eslint.org/docs/latest/rules/preserve-caught-error" + }, + "hasSuggestions": true + }, "quote-props": { "deprecated": { "message": "Formatting rules are being moved out of ESLint core.", diff --git a/docs/src/_data/versions.json b/docs/src/_data/versions.json index f5da31e6f7b7..555d4e46d2a2 100644 --- a/docs/src/_data/versions.json +++ b/docs/src/_data/versions.json @@ -6,7 +6,7 @@ "path": "/docs/head/" }, { - "version": "9.34.0", + "version": "9.35.0", "branch": "latest", "path": "/docs/latest/" }, diff --git a/docs/src/use/formatters/html-formatter-example.html b/docs/src/use/formatters/html-formatter-example.html index a7070460c27a..81b94c5d807d 100644 --- a/docs/src/use/formatters/html-formatter-example.html +++ b/docs/src/use/formatters/html-formatter-example.html @@ -118,7 +118,7 @@

ESLint Report

- 8 problems (4 errors, 4 warnings) - Generated on Fri Aug 22 2025 20:38:56 GMT+0000 (Coordinated Universal Time) + 8 problems (4 errors, 4 warnings) - Generated on Fri Sep 05 2025 14:41:14 GMT+0000 (Coordinated Universal Time)
diff --git a/lib/types/rules.d.ts b/lib/types/rules.d.ts index ffe475f46bc1..fc9d826deafd 100644 --- a/lib/types/rules.d.ts +++ b/lib/types/rules.d.ts @@ -4806,6 +4806,7 @@ export interface ESLintRules extends Linter.RulesRecord { /** * Rule to disallow losing originally caught error when re-throwing custom errors. * + * @since 9.35.0 * @see https://eslint.org/docs/latest/rules/preserve-caught-error */ "preserve-caught-error": Linter.RuleEntry< diff --git a/package.json b/package.json index 971170b12fb6..100f683f81b5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "eslint", - "version": "9.34.0", + "version": "9.35.0", "author": "Nicholas C. Zakas ", "description": "An AST-based pattern checker for JavaScript.", "type": "commonjs", From 81764b298065a328038cd067bc8fedef97e57500 Mon Sep 17 00:00:00 2001 From: Milos Djermanovic Date: Fri, 5 Sep 2025 17:34:55 +0200 Subject: [PATCH 097/165] chore: update `eslint` peer dependency in `eslint-config-eslint` (#20079) --- packages/eslint-config-eslint/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/eslint-config-eslint/package.json b/packages/eslint-config-eslint/package.json index 459096a2b264..f96cd07456d4 100644 --- a/packages/eslint-config-eslint/package.json +++ b/packages/eslint-config-eslint/package.json @@ -75,7 +75,7 @@ "typescript": "^5.7.2" }, "peerDependencies": { - "eslint": "^9.10.0" + "eslint": "^9.35.0" }, "peerDependenciesMeta": { "eslint": { From f9f7cb578dced3c14f635e17c75aa6744d291f4d Mon Sep 17 00:00:00 2001 From: Jenkins Date: Fri, 5 Sep 2025 15:42:06 +0000 Subject: [PATCH 098/165] chore: package.json update for eslint-config-eslint release --- packages/eslint-config-eslint/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/eslint-config-eslint/package.json b/packages/eslint-config-eslint/package.json index f96cd07456d4..31b792eb06f6 100644 --- a/packages/eslint-config-eslint/package.json +++ b/packages/eslint-config-eslint/package.json @@ -1,6 +1,6 @@ { "name": "eslint-config-eslint", - "version": "12.0.0", + "version": "13.0.0", "author": "Nicholas C. Zakas ", "description": "Default ESLint configuration for ESLint projects.", "funding": "https://eslint.org/donate", From 5cb0ce48ef6cfbbe6d09131c33a53f9d66fe9bd4 Mon Sep 17 00:00:00 2001 From: Pixel998 Date: Sat, 6 Sep 2025 18:33:03 +0300 Subject: [PATCH 099/165] refactor: use `meta.defaultOptions` in `preserve-caught-error` (#20080) --- lib/rules/preserve-caught-error.js | 12 +++++++++--- lib/types/rules.d.ts | 3 +++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/rules/preserve-caught-error.js b/lib/rules/preserve-caught-error.js index a1f51cc5852d..80a57ab0861e 100644 --- a/lib/rules/preserve-caught-error.js +++ b/lib/rules/preserve-caught-error.js @@ -138,6 +138,13 @@ function findParentCatch(node) { module.exports = { meta: { type: "suggestion", + + defaultOptions: [ + { + requireCatchParameter: false, + }, + ], + docs: { description: "Disallow losing originally caught error when re-throwing custom errors", @@ -158,7 +165,6 @@ module.exports = { properties: { requireCatchParameter: { type: "boolean", - default: false, description: "Requires the catch blocks to always have the caught error parameter so it is not discarded.", }, @@ -185,7 +191,7 @@ module.exports = { create(context) { const sourceCode = context.sourceCode; - const options = context.options[0] || {}; + const [{ requireCatchParameter }] = context.options; //---------------------------------------------------------------------- // Helpers @@ -273,7 +279,7 @@ module.exports = { // Check if there are throw statements and caught error is being ignored if (!caughtError) { - if (options.requireCatchParameter) { + if (requireCatchParameter) { context.report({ node: throwStatement, messageId: "missingCatchErrorParam", diff --git a/lib/types/rules.d.ts b/lib/types/rules.d.ts index fc9d826deafd..951998baa3e4 100644 --- a/lib/types/rules.d.ts +++ b/lib/types/rules.d.ts @@ -4812,6 +4812,9 @@ export interface ESLintRules extends Linter.RulesRecord { "preserve-caught-error": Linter.RuleEntry< [ Partial<{ + /** + * @default false + */ requireCatchParameter: boolean; }>, ] From e10cf2ab42fe5b481d980dc652f7504414747733 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Sep 2025 08:31:26 +0200 Subject: [PATCH 100/165] ci: bump actions/setup-node from 4 to 5 (#20089) Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 5. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 8 ++++---- .github/workflows/docs-ci.yml | 2 +- .github/workflows/types-integration.yml | 12 ++++++------ .github/workflows/update-readme.yml | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 290e1ed6ccab..f179e4b5fdb0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v5 with: node-version: "lts/*" - name: Install Packages @@ -87,7 +87,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v5 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v5 with: node-version: ${{ matrix.node }} - name: Install Packages @@ -108,7 +108,7 @@ jobs: TERM: xterm-256color steps: - uses: actions/checkout@v5 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v5 with: node-version: "20" # Should be the same as the version used on Netlify to build the ESLint Playground - name: Install Packages @@ -136,7 +136,7 @@ jobs: steps: - uses: actions/checkout@v5 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v5 with: node-version: "lts/*" - name: Install Packages diff --git a/.github/workflows/docs-ci.yml b/.github/workflows/docs-ci.yml index b70b4b4f65d5..f6eaf8da72f1 100644 --- a/.github/workflows/docs-ci.yml +++ b/.github/workflows/docs-ci.yml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v5 with: node-version: "lts/*" diff --git a/.github/workflows/types-integration.yml b/.github/workflows/types-integration.yml index 9e47ca9ebb78..82322212eb29 100644 --- a/.github/workflows/types-integration.yml +++ b/.github/workflows/types-integration.yml @@ -24,7 +24,7 @@ jobs: repository: webpack-contrib/eslint-webpack-plugin path: webpack - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v5 with: node-version: "lts/*" @@ -56,7 +56,7 @@ jobs: repository: neostandard/neostandard path: neostandard - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v5 with: node-version: "lts/*" @@ -88,7 +88,7 @@ jobs: repository: antfu/eslint-flat-config-utils path: antfu - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v5 with: node-version: "lts/*" @@ -120,7 +120,7 @@ jobs: repository: eslint/js path: eslint-js - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v5 with: node-version: "lts/*" @@ -158,7 +158,7 @@ jobs: repository: eslint/json path: json - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v5 with: node-version: "lts/*" @@ -196,7 +196,7 @@ jobs: - name: Checkout ${{ matrix.package.name }} uses: actions/checkout@v5 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v5 with: node-version: "lts/*" diff --git a/.github/workflows/update-readme.yml b/.github/workflows/update-readme.yml index 689c2234dc70..d2ff62c3715d 100644 --- a/.github/workflows/update-readme.yml +++ b/.github/workflows/update-readme.yml @@ -14,7 +14,7 @@ jobs: token: ${{ secrets.WORKFLOW_PUSH_BOT_TOKEN }} - name: Set up Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v5 - name: Install npm packages run: npm install From 91f97c50468fbdc089c91e99c2ea0fe821911df2 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Tue, 9 Sep 2025 08:10:08 +0000 Subject: [PATCH 101/165] docs: Update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 52cfc1f7a99c..0016ec32080c 100644 --- a/README.md +++ b/README.md @@ -328,7 +328,7 @@ to get your logo on our READMEs and [website](https://eslint.org/sponsors).

Automattic Airbnb

Gold Sponsors

Qlty Software trunk.io Shopify

Silver Sponsors

Vite Liftoff American Express StackBlitz

Bronze Sponsors

-

Cybozu Icons8 Discord GitBook Nx Mercedes-Benz Group HeroCoders LambdaTest

+

Syntax Cybozu Sentry Icons8 Discord GitBook Nx Mercedes-Benz Group HeroCoders LambdaTest

Technology Sponsors

Technology sponsors allow us to use their products and services for free as part of a contribution to the open source ecosystem and our work.

Netlify Algolia 1Password

From 7bb498d720dcd054cc042ca4b60b138d8485f07c Mon Sep 17 00:00:00 2001 From: Pixel998 Date: Tue, 9 Sep 2025 13:19:24 +0300 Subject: [PATCH 102/165] test: remove deprecated `type` property from core rule tests (#20093) --- tests/lib/rules/accessor-pairs.js | 241 --- tests/lib/rules/array-bracket-newline.js | 134 -- tests/lib/rules/array-bracket-spacing.js | 60 - tests/lib/rules/array-callback-return.js | 19 - tests/lib/rules/arrow-body-style.js | 36 - tests/lib/rules/arrow-parens.js | 27 - tests/lib/rules/arrow-spacing.js | 43 - tests/lib/rules/block-scoped-var.js | 25 - tests/lib/rules/block-spacing.js | 99 - tests/lib/rules/brace-style.js | 626 ++++-- tests/lib/rules/callback-return.js | 31 - tests/lib/rules/camelcase.js | 90 - tests/lib/rules/class-methods-use-this.js | 21 - tests/lib/rules/comma-dangle.js | 475 +++-- tests/lib/rules/comma-spacing.js | 41 - tests/lib/rules/comma-style.js | 32 - tests/lib/rules/computed-property-spacing.js | 139 -- tests/lib/rules/consistent-return.js | 21 - tests/lib/rules/consistent-this.js | 13 - tests/lib/rules/constructor-super.js | 219 ++- tests/lib/rules/curly.js | 122 -- tests/lib/rules/default-case-last.js | 1 - tests/lib/rules/default-case.js | 6 - tests/lib/rules/default-param-last.js | 1 - tests/lib/rules/dot-location.js | 26 - tests/lib/rules/eol-last.js | 12 - tests/lib/rules/eqeqeq.js | 45 - tests/lib/rules/func-call-spacing.js | 296 ++- tests/lib/rules/func-names.js | 46 - tests/lib/rules/func-style.js | 47 - tests/lib/rules/function-paren-newline.js | 14 +- tests/lib/rules/generator-star-spacing.js | 10 +- tests/lib/rules/global-require.js | 4 +- tests/lib/rules/grouped-accessor-pairs.js | 71 - tests/lib/rules/guard-for-in.js | 4 +- tests/lib/rules/handle-callback-err.js | 2 - tests/lib/rules/id-blacklist.js | 95 +- tests/lib/rules/id-denylist.js | 101 +- tests/lib/rules/id-length.js | 28 +- tests/lib/rules/id-match.js | 46 +- tests/lib/rules/indent-legacy.js | 369 ++-- tests/lib/rules/indent.js | 1727 ++++++++--------- tests/lib/rules/init-declarations.js | 22 - tests/lib/rules/jsx-quotes.js | 4 - tests/lib/rules/key-spacing.js | 129 -- tests/lib/rules/line-comment-position.js | 9 - tests/lib/rules/lines-around-comment.js | 530 ++++- .../lib/rules/logical-assignment-operators.js | 191 +- tests/lib/rules/max-classes-per-file.js | 48 +- tests/lib/rules/max-depth.js | 9 - tests/lib/rules/max-len.js | 55 - tests/lib/rules/max-nested-callbacks.js | 7 - tests/lib/rules/max-params.js | 7 - tests/lib/rules/new-cap.js | 41 +- tests/lib/rules/new-parens.js | 8 +- tests/lib/rules/newline-after-var.js | 2 - tests/lib/rules/no-alert.js | 20 - tests/lib/rules/no-array-constructor.js | 40 - tests/lib/rules/no-await-in-loop.js | 12 +- tests/lib/rules/no-bitwise.js | 14 - tests/lib/rules/no-buffer-constructor.js | 2 - tests/lib/rules/no-caller.js | 2 - tests/lib/rules/no-case-declarations.js | 15 - tests/lib/rules/no-catch-shadow.js | 4 - tests/lib/rules/no-class-assign.js | 32 +- tests/lib/rules/no-compare-neg-zero.js | 12 - tests/lib/rules/no-cond-assign.js | 55 +- tests/lib/rules/no-console.js | 34 - tests/lib/rules/no-const-assign.js | 58 +- tests/lib/rules/no-constant-condition.js | 838 ++++++-- tests/lib/rules/no-constructor-return.js | 6 +- tests/lib/rules/no-continue.js | 4 - tests/lib/rules/no-control-regex.js | 20 - tests/lib/rules/no-debugger.js | 6 +- tests/lib/rules/no-delete-var.js | 6 +- tests/lib/rules/no-div-regex.js | 6 +- tests/lib/rules/no-dupe-class-members.js | 29 - tests/lib/rules/no-dupe-else-if.js | 157 +- tests/lib/rules/no-dupe-keys.js | 21 - tests/lib/rules/no-duplicate-case.js | 19 - tests/lib/rules/no-duplicate-imports.js | 48 - tests/lib/rules/no-else-return.js | 476 ++++- tests/lib/rules/no-empty-character-class.js | 102 +- tests/lib/rules/no-empty-pattern.js | 19 - tests/lib/rules/no-empty.js | 14 - tests/lib/rules/no-eq-null.js | 18 +- tests/lib/rules/no-eval.js | 33 - tests/lib/rules/no-ex-assign.js | 30 +- tests/lib/rules/no-extend-native.js | 15 - tests/lib/rules/no-extra-bind.js | 14 +- tests/lib/rules/no-extra-boolean-cast.js | 1435 +++++++++----- tests/lib/rules/no-extra-label.js | 1 - tests/lib/rules/no-extra-parens.js | 65 +- tests/lib/rules/no-extra-semi.js | 193 +- tests/lib/rules/no-fallthrough.js | 13 - tests/lib/rules/no-floating-decimal.js | 8 +- tests/lib/rules/no-func-assign.js | 8 - tests/lib/rules/no-global-assign.js | 11 - tests/lib/rules/no-implicit-coercion.js | 41 - tests/lib/rules/no-implicit-globals.js | 129 -- tests/lib/rules/no-implied-eval.js | 70 +- tests/lib/rules/no-inline-comments.js | 2 - tests/lib/rules/no-inner-declarations.js | 31 - tests/lib/rules/no-invalid-regexp.js | 40 - tests/lib/rules/no-invalid-this.js | 80 +- tests/lib/rules/no-irregular-whitespace.js | 75 - tests/lib/rules/no-iterator.js | 5 - tests/lib/rules/no-label-var.js | 3 - tests/lib/rules/no-labels.js | 39 - tests/lib/rules/no-lone-blocks.js | 30 - tests/lib/rules/no-lonely-if.js | 6 +- tests/lib/rules/no-loop-func.js | 42 - tests/lib/rules/no-mixed-requires.js | 10 - tests/lib/rules/no-mixed-spaces-and-tabs.js | 19 - tests/lib/rules/no-multi-assign.js | 50 +- tests/lib/rules/no-multi-spaces.js | 64 - tests/lib/rules/no-multi-str.js | 5 - tests/lib/rules/no-multiple-empty-lines.js | 5 - tests/lib/rules/no-native-reassign.js | 11 - tests/lib/rules/no-negated-condition.js | 6 - tests/lib/rules/no-negated-in-lhs.js | 6 +- tests/lib/rules/no-nested-ternary.js | 2 - tests/lib/rules/no-new-func.js | 10 - tests/lib/rules/no-new-object.js | 13 +- tests/lib/rules/no-new-require.js | 2 - tests/lib/rules/no-new-wrappers.js | 4 - tests/lib/rules/no-new.js | 1 - tests/lib/rules/no-nonoctal-decimal-escape.js | 1 - tests/lib/rules/no-obj-calls.js | 54 - tests/lib/rules/no-object-constructor.js | 6 - tests/lib/rules/no-octal-escape.js | 60 - tests/lib/rules/no-octal.js | 11 - tests/lib/rules/no-path-concat.js | 4 - tests/lib/rules/no-plusplus.js | 12 - tests/lib/rules/no-process-env.js | 3 - tests/lib/rules/no-process-exit.js | 3 - tests/lib/rules/no-promise-executor-return.js | 58 - tests/lib/rules/no-proto.js | 16 +- tests/lib/rules/no-prototype-builtins.js | 7 - tests/lib/rules/no-redeclare.js | 127 +- tests/lib/rules/no-regex-spaces.js | 29 - tests/lib/rules/no-restricted-exports.js | 102 - tests/lib/rules/no-restricted-globals.js | 95 - tests/lib/rules/no-restricted-imports.js | 129 -- tests/lib/rules/no-restricted-modules.js | 18 - tests/lib/rules/no-restricted-properties.js | 36 - tests/lib/rules/no-restricted-syntax.js | 25 - tests/lib/rules/no-return-assign.js | 52 +- tests/lib/rules/no-return-await.js | 1 - tests/lib/rules/no-script-url.js | 20 +- tests/lib/rules/no-self-compare.js | 60 +- tests/lib/rules/no-sequences.js | 2 - tests/lib/rules/no-setter-return.js | 15 +- tests/lib/rules/no-shadow-restricted-names.js | 71 - tests/lib/rules/no-shadow.js | 105 - tests/lib/rules/no-spaced-func.js | 64 +- tests/lib/rules/no-sparse-arrays.js | 8 - tests/lib/rules/no-sync.js | 7 - tests/lib/rules/no-ternary.js | 3 - tests/lib/rules/no-this-before-super.js | 23 - tests/lib/rules/no-throw-literal.js | 17 - tests/lib/rules/no-trailing-spaces.js | 41 - tests/lib/rules/no-undef-init.js | 21 - tests/lib/rules/no-undef.js | 19 +- tests/lib/rules/no-undefined.js | 6 +- tests/lib/rules/no-underscore-dangle.js | 25 - tests/lib/rules/no-unneeded-ternary.js | 31 - tests/lib/rules/no-unreachable-loop.js | 32 +- tests/lib/rules/no-unreachable.js | 92 +- tests/lib/rules/no-unsafe-finally.js | 16 - .../lib/rules/no-unsafe-optional-chaining.js | 14 +- tests/lib/rules/no-unused-expressions.js | 146 +- tests/lib/rules/no-unused-vars.js | 25 +- tests/lib/rules/no-use-before-define.js | 82 - tests/lib/rules/no-useless-backreference.js | 94 - tests/lib/rules/no-useless-call.js | 22 - tests/lib/rules/no-useless-catch.js | 5 - tests/lib/rules/no-useless-computed-key.js | 65 - tests/lib/rules/no-useless-constructor.js | 6 +- tests/lib/rules/no-useless-escape.js | 97 - tests/lib/rules/no-useless-return.js | 13 +- tests/lib/rules/no-var.js | 26 +- tests/lib/rules/no-with.js | 6 +- tests/lib/rules/object-curly-spacing.js | 82 - tests/lib/rules/object-property-newline.js | 43 - tests/lib/rules/object-shorthand.js | 10 +- .../lib/rules/one-var-declaration-per-line.js | 1 - tests/lib/rules/one-var.js | 170 -- tests/lib/rules/operator-assignment.js | 69 - tests/lib/rules/operator-linebreak.js | 55 - tests/lib/rules/prefer-arrow-callback.js | 1 - tests/lib/rules/prefer-const.js | 101 - tests/lib/rules/prefer-destructuring.js | 48 - .../rules/prefer-exponentiation-operator.js | 13 - tests/lib/rules/prefer-named-capture-group.js | 32 - tests/lib/rules/prefer-object-spread.js | 58 - .../lib/rules/prefer-promise-reject-errors.js | 6 +- tests/lib/rules/prefer-reflect.js | 20 - tests/lib/rules/prefer-regex-literals.js | 46 - tests/lib/rules/prefer-rest-params.js | 24 +- tests/lib/rules/prefer-spread.js | 6 +- tests/lib/rules/prefer-template.js | 1 - tests/lib/rules/quote-props.js | 69 +- tests/lib/rules/quotes.js | 61 - tests/lib/rules/radix.js | 25 - tests/lib/rules/require-atomic-updates.js | 6 - tests/lib/rules/require-yield.js | 24 +- tests/lib/rules/rest-spread-spacing.js | 51 - tests/lib/rules/semi-spacing.js | 43 - tests/lib/rules/semi.js | 72 - tests/lib/rules/sort-imports.js | 27 - tests/lib/rules/sort-vars.js | 1 - .../lib/rules/space-before-function-paren.js | 48 +- tests/lib/rules/space-infix-ops.js | 43 - tests/lib/rules/space-unary-ops.js | 34 - tests/lib/rules/spaced-comment.js | 34 - tests/lib/rules/strict.js | 317 ++- tests/lib/rules/symbol-description.js | 2 - tests/lib/rules/unicode-bom.js | 8 +- tests/lib/rules/use-isnan.js | 222 ++- tests/lib/rules/valid-typeof.js | 106 +- tests/lib/rules/vars-on-top.js | 4 +- tests/lib/rules/wrap-iife.js | 3 - tests/lib/rules/wrap-regex.js | 18 +- tests/lib/rules/yield-star-spacing.js | 10 +- tests/lib/rules/yoda.js | 85 - 226 files changed, 6678 insertions(+), 8792 deletions(-) diff --git a/tests/lib/rules/accessor-pairs.js b/tests/lib/rules/accessor-pairs.js index 605f7eebdc14..d11174c9e649 100644 --- a/tests/lib/rules/accessor-pairs.js +++ b/tests/lib/rules/accessor-pairs.js @@ -895,7 +895,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for setter 'a'.", - type: "Property", }, ], }, @@ -905,7 +904,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for setter 'a'.", - type: "Property", }, ], }, @@ -917,7 +915,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for setter 'a'.", - type: "Property", }, ], }, @@ -927,7 +924,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for setter 'a'.", - type: "Property", }, ], }, @@ -937,7 +933,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter 'a'.", - type: "Property", }, ], }, @@ -947,7 +942,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter 'a'.", - type: "Property", }, ], }, @@ -957,7 +951,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter 'a'.", - type: "Property", }, ], }, @@ -969,7 +962,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter 'abc'.", - type: "Property", }, ], }, @@ -979,7 +971,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter 'abc'.", - type: "Property", }, ], }, @@ -989,7 +980,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter '123'.", - type: "Property", }, ], }, @@ -999,7 +989,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter '100'.", - type: "Property", }, ], }, @@ -1010,7 +999,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter 'abc'.", - type: "Property", }, ], }, @@ -1021,7 +1009,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter 'abc'.", - type: "Property", }, ], }, @@ -1032,7 +1019,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter '123'.", - type: "Property", }, ], }, @@ -1043,7 +1029,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter.", - type: "Property", }, ], }, @@ -1054,7 +1039,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter.", - type: "Property", }, ], }, @@ -1065,7 +1049,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter.", - type: "Property", }, ], }, @@ -1077,7 +1060,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for setter 'abc'.", - type: "Property", }, ], }, @@ -1087,7 +1069,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for setter 'abc'.", - type: "Property", }, ], }, @@ -1097,7 +1078,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for setter '123'.", - type: "Property", }, ], }, @@ -1107,7 +1087,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for setter '100'.", - type: "Property", }, ], }, @@ -1118,7 +1097,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for setter 'abc'.", - type: "Property", }, ], }, @@ -1129,7 +1107,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for setter 'abc'.", - type: "Property", }, ], }, @@ -1140,7 +1117,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for setter '123'.", - type: "Property", }, ], }, @@ -1151,7 +1127,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for setter.", - type: "Property", }, ], }, @@ -1162,7 +1137,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for setter.", - type: "Property", }, ], }, @@ -1173,7 +1147,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for setter.", - type: "Property", }, ], }, @@ -1185,12 +1158,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter 'a'.", - type: "Property", column: 11, }, { message: "Getter is not present for setter 'b'.", - type: "Property", column: 23, }, ], @@ -1201,12 +1172,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for setter 'a'.", - type: "Property", column: 11, }, { message: "Setter is not present for getter 'b'.", - type: "Property", column: 26, }, ], @@ -1217,12 +1186,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter '1'.", - type: "Property", column: 11, }, { message: "Getter is not present for setter 'b'.", - type: "Property", column: 23, }, ], @@ -1233,12 +1200,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter 'a'.", - type: "Property", column: 11, }, { message: "Getter is not present for setter '1'.", - type: "Property", column: 23, }, ], @@ -1249,12 +1214,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter 'a'.", - type: "Property", column: 11, }, { message: "Getter is not present for setter 'a '.", - type: "Property", column: 23, }, ], @@ -1265,12 +1228,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter ' a'.", - type: "Property", column: 11, }, { message: "Getter is not present for setter 'a'.", - type: "Property", column: 26, }, ], @@ -1281,12 +1242,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter ''.", - type: "Property", column: 11, }, { message: "Getter is not present for setter ' '.", - type: "Property", column: 24, }, ], @@ -1297,12 +1256,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter ''.", - type: "Property", column: 11, }, { message: "Getter is not present for setter 'null'.", - type: "Property", column: 24, }, ], @@ -1314,12 +1271,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter 'a'.", - type: "Property", column: 11, }, { message: "Getter is not present for setter 'b'.", - type: "Property", column: 27, }, ], @@ -1331,12 +1286,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter.", - type: "Property", column: 11, }, { message: "Getter is not present for setter.", - type: "Property", column: 25, }, ], @@ -1348,12 +1301,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter.", - type: "Property", column: 11, }, { message: "Getter is not present for setter 'a'.", - type: "Property", column: 25, }, ], @@ -1365,12 +1316,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter 'a'.", - type: "Property", column: 11, }, { message: "Getter is not present for setter.", - type: "Property", column: 23, }, ], @@ -1382,12 +1331,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter.", - type: "Property", column: 11, }, { message: "Getter is not present for setter.", - type: "Property", column: 29, }, ], @@ -1399,12 +1346,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter.", - type: "Property", column: 11, }, { message: "Getter is not present for setter.", - type: "Property", column: 31, }, ], @@ -1417,12 +1362,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter 'a'.", - type: "Property", column: 11, }, { message: "Setter is not present for getter 'b'.", - type: "Property", column: 23, }, ], @@ -1433,12 +1376,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for setter 'a'.", - type: "Property", column: 11, }, { message: "Getter is not present for setter 'b'.", - type: "Property", column: 26, }, ], @@ -1449,22 +1390,18 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter 'a'.", - type: "Property", column: 11, }, { message: "Getter is not present for setter 'b'.", - type: "Property", column: 23, }, { message: "Getter is not present for setter 'c'.", - type: "Property", column: 38, }, { message: "Setter is not present for getter 'd'.", - type: "Property", column: 53, }, ], @@ -1477,12 +1414,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter 'a'.", - type: "Property", column: 12, }, { message: "Getter is not present for setter 'a'.", - type: "Property", column: 33, }, ], @@ -1493,12 +1428,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for setter 'a'.", - type: "Property", column: 12, }, { message: "Setter is not present for getter 'a'.", - type: "Property", column: 36, }, ], @@ -1511,7 +1444,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter 'a'.", - type: "Property", column: 11, }, ], @@ -1522,7 +1454,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter 'a'.", - type: "Property", column: 23, }, ], @@ -1533,7 +1464,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter 'a'.", - type: "Property", column: 38, }, ], @@ -1544,7 +1474,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for setter 'a'.", - type: "Property", column: 11, }, ], @@ -1555,7 +1484,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for setter 'a'.", - type: "Property", column: 23, }, ], @@ -1566,7 +1494,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for setter 'a'.", - type: "Property", column: 38, }, ], @@ -1577,12 +1504,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for setter 'i1'.", - type: "Property", column: 24, }, { message: "Setter is not present for getter 'i2'.", - type: "Property", column: 69, }, ], @@ -1596,12 +1521,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter 'a'.", - type: "Property", column: 11, }, { message: "Setter is not present for getter 'a'.", - type: "Property", column: 23, }, ], @@ -1613,12 +1536,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for setter 'a'.", - type: "Property", column: 11, }, { message: "Getter is not present for setter 'a'.", - type: "Property", column: 26, }, ], @@ -1632,7 +1553,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter 'b'.", - type: "Property", column: 14, }, ], @@ -1644,12 +1564,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter 'b'.", - type: "Property", column: 14, }, { message: "Getter is not present for setter 'd'.", - type: "Property", column: 29, }, ], @@ -1661,7 +1579,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter 'a'.", - type: "Property", column: 11, }, ], @@ -1673,7 +1590,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter 'a'.", - type: "Property", column: 14, }, ], @@ -1685,7 +1601,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for setter 'a'.", - type: "Property", column: 11, }, ], @@ -1697,7 +1612,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for setter 'a'.", - type: "Property", column: 14, }, ], @@ -1709,7 +1623,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter 'a'.", - type: "Property", column: 11, }, ], @@ -1721,7 +1634,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter 'a'.", - type: "Property", column: 11, }, ], @@ -1733,7 +1645,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for setter 'a'.", - type: "Property", column: 11, }, ], @@ -1746,7 +1657,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter 'b'.", - type: "Property", line: 1, column: 11, endLine: 1, @@ -1761,7 +1671,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for setter.", - type: "Property", line: 2, column: 3, endLine: 3, @@ -1779,7 +1688,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present in property descriptor.", - type: "ObjectExpression", }, ], }, @@ -1788,7 +1696,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present in property descriptor.", - type: "ObjectExpression", }, ], }, @@ -1797,7 +1704,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present in property descriptor.", - type: "ObjectExpression", }, ], }, @@ -1806,7 +1712,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present in property descriptor.", - type: "ObjectExpression", }, ], }, @@ -1816,7 +1721,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present in property descriptor.", - type: "ObjectExpression", }, ], }, @@ -1826,7 +1730,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present in property descriptor.", - type: "ObjectExpression", }, ], }, @@ -1836,7 +1739,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present in property descriptor.", - type: "ObjectExpression", }, ], }, @@ -1846,7 +1748,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present in property descriptor.", - type: "ObjectExpression", }, ], }, @@ -1856,7 +1757,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present in property descriptor.", - type: "ObjectExpression", }, ], }, @@ -1866,7 +1766,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present in property descriptor.", - type: "ObjectExpression", }, ], }, @@ -1876,7 +1775,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present in property descriptor.", - type: "ObjectExpression", }, ], }, @@ -1886,7 +1784,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present in property descriptor.", - type: "ObjectExpression", }, ], }, @@ -1902,7 +1799,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for class setter 'a'.", - type: "MethodDefinition", }, ], }, @@ -1913,7 +1809,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for class setter 'b'.", - type: "MethodDefinition", }, ], }, @@ -1924,7 +1819,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter 'a'.", - type: "MethodDefinition", }, ], }, @@ -1935,7 +1829,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for class setter 'a'.", - type: "MethodDefinition", }, ], }, @@ -1947,7 +1840,6 @@ ruleTester.run("accessor-pairs", rule, { { message: "Setter is not present for class static getter 'a'.", - type: "MethodDefinition", }, ], }, @@ -1959,7 +1851,6 @@ ruleTester.run("accessor-pairs", rule, { { message: "Getter is not present for class static setter 'a'.", - type: "MethodDefinition", }, ], }, @@ -1970,7 +1861,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter 'a'.", - type: "MethodDefinition", }, ], }, @@ -1981,11 +1871,9 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter 'a'.", - type: "MethodDefinition", }, { message: "Getter is not present for class setter 'b'.", - type: "MethodDefinition", }, ], }, @@ -1996,7 +1884,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for class setter 'a'.", - type: "MethodDefinition", }, ], }, @@ -2008,7 +1895,6 @@ ruleTester.run("accessor-pairs", rule, { { message: "Getter is not present for class static setter 'a'.", - type: "MethodDefinition", }, ], }, @@ -2019,7 +1905,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for class setter 'a'.", - type: "MethodDefinition", }, ], }, @@ -2031,7 +1916,6 @@ ruleTester.run("accessor-pairs", rule, { { message: "Getter is not present for class static setter 'a'.", - type: "MethodDefinition", }, ], }, @@ -2041,7 +1925,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for class setter '#a'.", - type: "MethodDefinition", }, ], }, @@ -2052,7 +1935,6 @@ ruleTester.run("accessor-pairs", rule, { { message: "Getter is not present for class private setter #a.", - type: "MethodDefinition", }, ], }, @@ -2063,7 +1945,6 @@ ruleTester.run("accessor-pairs", rule, { { message: "Getter is not present for class static setter '#a'.", - type: "MethodDefinition", }, ], }, @@ -2074,7 +1955,6 @@ ruleTester.run("accessor-pairs", rule, { { message: "Getter is not present for class static private setter #a.", - type: "MethodDefinition", }, ], }, @@ -2093,7 +1973,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for class setter 'a'.", - type: "MethodDefinition", }, ], }, @@ -2111,7 +1990,6 @@ ruleTester.run("accessor-pairs", rule, { { message: "Getter is not present for class static setter 'a'.", - type: "MethodDefinition", }, ], }, @@ -2128,7 +2006,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter 'a'.", - type: "MethodDefinition", }, ], }, @@ -2146,7 +2023,6 @@ ruleTester.run("accessor-pairs", rule, { { message: "Setter is not present for class static getter 'a'.", - type: "MethodDefinition", }, ], }, @@ -2157,7 +2033,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter 'a'.", - type: "MethodDefinition", }, ], }, @@ -2174,7 +2049,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter '#a'.", - type: "MethodDefinition", }, ], }, @@ -2192,7 +2066,6 @@ ruleTester.run("accessor-pairs", rule, { { message: "Setter is not present for class private getter #a.", - type: "MethodDefinition", }, ], }, @@ -2210,7 +2083,6 @@ ruleTester.run("accessor-pairs", rule, { { message: "Setter is not present for class static getter '#a'.", - type: "MethodDefinition", }, ], }, @@ -2228,7 +2100,6 @@ ruleTester.run("accessor-pairs", rule, { { message: "Setter is not present for class static private getter #a.", - type: "MethodDefinition", }, ], }, @@ -2247,7 +2118,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter 'abc'.", - type: "MethodDefinition", }, ], }, @@ -2265,7 +2135,6 @@ ruleTester.run("accessor-pairs", rule, { { message: "Getter is not present for class static setter 'abc'.", - type: "MethodDefinition", }, ], }, @@ -2282,7 +2151,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter '123'.", - type: "MethodDefinition", }, ], }, @@ -2300,7 +2168,6 @@ ruleTester.run("accessor-pairs", rule, { { message: "Setter is not present for class static getter '100'.", - type: "MethodDefinition", }, ], }, @@ -2317,7 +2184,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter 'abc'.", - type: "MethodDefinition", }, ], }, @@ -2334,7 +2200,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for class setter 'abc'.", - type: "MethodDefinition", }, ], }, @@ -2352,7 +2217,6 @@ ruleTester.run("accessor-pairs", rule, { { message: "Setter is not present for class static getter '123'.", - type: "MethodDefinition", }, ], }, @@ -2369,7 +2233,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter.", - type: "MethodDefinition", }, ], }, @@ -2386,7 +2249,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class static getter.", - type: "MethodDefinition", }, ], }, @@ -2403,7 +2265,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for class setter.", - type: "MethodDefinition", }, ], }, @@ -2421,7 +2282,6 @@ ruleTester.run("accessor-pairs", rule, { { message: "Setter is not present for class getter 'constructor'.", - type: "MethodDefinition", }, ], }, @@ -2440,12 +2300,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter 'a'.", - type: "MethodDefinition", column: 11, }, { message: "Getter is not present for class setter 'b'.", - type: "MethodDefinition", column: 22, }, ], @@ -2463,12 +2321,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for class setter 'a'.", - type: "MethodDefinition", column: 13, }, { message: "Setter is not present for class getter 'b'.", - type: "MethodDefinition", column: 27, }, ], @@ -2487,13 +2343,11 @@ ruleTester.run("accessor-pairs", rule, { { message: "Setter is not present for class static getter 'a'.", - type: "MethodDefinition", column: 13, }, { message: "Getter is not present for class static setter 'b'.", - type: "MethodDefinition", column: 31, }, ], @@ -2511,7 +2365,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter 'a'.", - type: "MethodDefinition", column: 11, }, ], @@ -2529,7 +2382,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for class setter 'b'.", - type: "MethodDefinition", column: 22, }, ], @@ -2547,12 +2399,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter 'a '.", - type: "MethodDefinition", column: 11, }, { message: "Getter is not present for class setter 'a'.", - type: "MethodDefinition", column: 25, }, ], @@ -2570,12 +2420,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter 'a'.", - type: "MethodDefinition", column: 11, }, { message: "Getter is not present for class setter '1'.", - type: "MethodDefinition", column: 24, }, ], @@ -2593,12 +2441,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter '1'.", - type: "MethodDefinition", column: 11, }, { message: "Getter is not present for class setter '2'.", - type: "MethodDefinition", column: 22, }, ], @@ -2616,12 +2462,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter ''.", - type: "MethodDefinition", column: 11, }, { message: "Getter is not present for class setter 'null'.", - type: "MethodDefinition", column: 23, }, ], @@ -2639,12 +2483,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter 'a'.", - type: "MethodDefinition", column: 11, }, { message: "Getter is not present for class setter.", - type: "MethodDefinition", column: 22, }, ], @@ -2662,12 +2504,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter.", - type: "MethodDefinition", column: 11, }, { message: "Getter is not present for class setter.", - type: "MethodDefinition", column: 24, }, ], @@ -2685,12 +2525,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter.", - type: "MethodDefinition", column: 11, }, { message: "Getter is not present for class setter.", - type: "MethodDefinition", column: 24, }, ], @@ -2708,12 +2546,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter.", - type: "MethodDefinition", column: 11, }, { message: "Getter is not present for class setter.", - type: "MethodDefinition", column: 28, }, ], @@ -2732,12 +2568,10 @@ ruleTester.run("accessor-pairs", rule, { { message: "Setter is not present for class private getter #a.", - type: "MethodDefinition", column: 11, }, { message: "Getter is not present for class setter '#a'.", - type: "MethodDefinition", column: 23, }, ], @@ -2755,13 +2589,11 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter '#a'.", - type: "MethodDefinition", column: 11, }, { message: "Getter is not present for class private setter #a.", - type: "MethodDefinition", column: 25, }, ], @@ -2781,13 +2613,11 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter 'a'.", - type: "MethodDefinition", column: 11, }, { message: "Getter is not present for class static setter 'a'.", - type: "MethodDefinition", column: 22, }, ], @@ -2806,12 +2636,10 @@ ruleTester.run("accessor-pairs", rule, { { message: "Setter is not present for class static getter 'a'.", - type: "MethodDefinition", column: 13, }, { message: "Getter is not present for class setter 'a'.", - type: "MethodDefinition", column: 31, }, ], @@ -2829,12 +2657,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for class setter.", - type: "MethodDefinition", column: 11, }, { message: "Setter is not present for class static getter.", - type: "MethodDefinition", column: 27, }, ], @@ -2852,12 +2678,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for class static setter.", - type: "MethodDefinition", column: 11, }, { message: "Setter is not present for class getter.", - type: "MethodDefinition", column: 34, }, ], @@ -2877,12 +2701,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter 'a'.", - type: "MethodDefinition", column: 11, }, { message: "Setter is not present for class getter 'b'.", - type: "MethodDefinition", column: 22, }, ], @@ -2900,12 +2722,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter 'a'.", - type: "MethodDefinition", column: 13, }, { message: "Setter is not present for class getter.", - type: "MethodDefinition", column: 24, }, ], @@ -2923,12 +2743,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter.", - type: "MethodDefinition", column: 11, }, { message: "Setter is not present for class getter.", - type: "MethodDefinition", column: 24, }, ], @@ -2946,12 +2764,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for class setter 'a'.", - type: "MethodDefinition", column: 13, }, { message: "Getter is not present for class setter 'b'.", - type: "MethodDefinition", column: 27, }, ], @@ -2970,13 +2786,11 @@ ruleTester.run("accessor-pairs", rule, { { message: "Setter is not present for class static getter 'a'.", - type: "MethodDefinition", column: 11, }, { message: "Setter is not present for class static getter 'b'.", - type: "MethodDefinition", column: 29, }, ], @@ -2995,13 +2809,11 @@ ruleTester.run("accessor-pairs", rule, { { message: "Getter is not present for class static setter 'a'.", - type: "MethodDefinition", column: 13, }, { message: "Getter is not present for class static setter 'b'.", - type: "MethodDefinition", column: 34, }, ], @@ -3020,23 +2832,19 @@ ruleTester.run("accessor-pairs", rule, { { message: "Setter is not present for class static getter 'a'.", - type: "MethodDefinition", column: 11, }, { message: "Getter is not present for class setter 'b'.", - type: "MethodDefinition", column: 29, }, { message: "Getter is not present for class static setter 'c'.", - type: "MethodDefinition", column: 43, }, { message: "Setter is not present for class getter 'd'.", - type: "MethodDefinition", column: 64, }, ], @@ -3056,12 +2864,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter 'a'.", - type: "MethodDefinition", column: 11, }, { message: "Getter is not present for class setter 'a'.", - type: "MethodDefinition", column: 34, }, ], @@ -3079,12 +2885,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for class setter 'a'.", - type: "MethodDefinition", column: 13, }, { message: "Setter is not present for class getter 'a'.", - type: "MethodDefinition", column: 38, }, ], @@ -3102,12 +2906,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter 'a'.", - type: "MethodDefinition", column: 13, }, { message: "Getter is not present for setter 'a'.", - type: "Property", column: 29, }, ], @@ -3125,12 +2927,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for getter 'a'.", - type: "Property", column: 7, }, { message: "Getter is not present for class setter 'a'.", - type: "MethodDefinition", column: 29, }, ], @@ -3150,7 +2950,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter 'a'.", - type: "MethodDefinition", column: 11, }, ], @@ -3168,7 +2967,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter 'a'.", - type: "MethodDefinition", column: 24, }, ], @@ -3186,7 +2984,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for class setter 'a'.", - type: "MethodDefinition", column: 36, }, ], @@ -3204,7 +3001,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for class setter 'a'.", - type: "MethodDefinition", column: 31, }, ], @@ -3223,7 +3019,6 @@ ruleTester.run("accessor-pairs", rule, { { message: "Getter is not present for class static setter 'a'.", - type: "MethodDefinition", column: 11, }, ], @@ -3242,7 +3037,6 @@ ruleTester.run("accessor-pairs", rule, { { message: "Setter is not present for class static getter 'a'.", - type: "MethodDefinition", column: 22, }, ], @@ -3261,7 +3055,6 @@ ruleTester.run("accessor-pairs", rule, { { message: "Setter is not present for class static getter 'a'.", - type: "MethodDefinition", column: 32, }, ], @@ -3280,23 +3073,19 @@ ruleTester.run("accessor-pairs", rule, { { message: "Getter is not present for class static setter 'i1'.", - type: "MethodDefinition", column: 24, }, { message: "Setter is not present for class getter.", - type: "MethodDefinition", column: 66, }, { message: "Setter is not present for class static getter 'i3'.", - type: "MethodDefinition", column: 79, }, { message: "Getter is not present for class setter 'i4'.", - type: "MethodDefinition", column: 131, }, ], @@ -3316,12 +3105,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter 'a'.", - type: "MethodDefinition", column: 11, }, { message: "Setter is not present for class getter 'a'.", - type: "MethodDefinition", column: 22, }, ], @@ -3339,12 +3126,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for class setter 'a'.", - type: "MethodDefinition", column: 13, }, { message: "Getter is not present for class setter 'a'.", - type: "MethodDefinition", column: 27, }, ], @@ -3363,13 +3148,11 @@ ruleTester.run("accessor-pairs", rule, { { message: "Setter is not present for class static getter 'a'.", - type: "MethodDefinition", column: 13, }, { message: "Setter is not present for class static getter 'a'.", - type: "MethodDefinition", column: 31, }, ], @@ -3387,12 +3170,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for class setter 'a'.", - type: "MethodDefinition", column: 11, }, { message: "Getter is not present for class setter 'a'.", - type: "MethodDefinition", column: 25, }, ], @@ -3412,7 +3193,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter 'b'.", - type: "MethodDefinition", column: 18, }, ], @@ -3430,12 +3210,10 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter 'b'.", - type: "MethodDefinition", column: 20, }, { message: "Getter is not present for class setter 'd'.", - type: "MethodDefinition", column: 38, }, ], @@ -3453,7 +3231,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter 'b'.", - type: "MethodDefinition", column: 25, }, ], @@ -3471,7 +3248,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter 'a'.", - type: "MethodDefinition", column: 18, }, ], @@ -3489,7 +3265,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for class setter 'a'.", - type: "MethodDefinition", column: 27, }, ], @@ -3508,7 +3283,6 @@ ruleTester.run("accessor-pairs", rule, { { message: "Setter is not present for class static getter 'b'.", - type: "MethodDefinition", column: 18, }, ], @@ -3527,7 +3301,6 @@ ruleTester.run("accessor-pairs", rule, { { message: "Getter is not present for class static setter 'b'.", - type: "MethodDefinition", column: 27, }, ], @@ -3546,7 +3319,6 @@ ruleTester.run("accessor-pairs", rule, { { message: "Setter is not present for class static getter 'a'.", - type: "MethodDefinition", column: 18, }, ], @@ -3565,7 +3337,6 @@ ruleTester.run("accessor-pairs", rule, { { message: "Getter is not present for class static setter 'a'.", - type: "MethodDefinition", column: 11, }, ], @@ -3585,7 +3356,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for class getter 'a'.", - type: "MethodDefinition", line: 1, column: 11, endLine: 1, @@ -3606,7 +3376,6 @@ ruleTester.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for class setter.", - type: "MethodDefinition", line: 2, column: 3, endLine: 3, @@ -3628,7 +3397,6 @@ ruleTester.run("accessor-pairs", rule, { { message: "Setter is not present for class static getter 'b'.", - type: "MethodDefinition", line: 1, column: 11, endLine: 1, @@ -3702,7 +3470,6 @@ ruleTesterTypeScript.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for setter 'prop'.", - type: "Property", }, ], }, @@ -3712,7 +3479,6 @@ ruleTesterTypeScript.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for type setter 'prop'.", - type: "TSMethodSignature", }, ], }, @@ -3722,7 +3488,6 @@ ruleTesterTypeScript.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for type setter 'prop'.", - type: "TSMethodSignature", }, ], }, @@ -3732,7 +3497,6 @@ ruleTesterTypeScript.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for type setter 'prop'.", - type: "TSMethodSignature", }, ], }, @@ -3742,7 +3506,6 @@ ruleTesterTypeScript.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for type setter 'null'.", - type: "TSMethodSignature", }, ], }, @@ -3752,7 +3515,6 @@ ruleTesterTypeScript.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for type setter 'prop'.", - type: "TSMethodSignature", }, ], }, @@ -3762,7 +3524,6 @@ ruleTesterTypeScript.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for type setter 'prop'.", - type: "TSMethodSignature", }, ], }, @@ -3772,7 +3533,6 @@ ruleTesterTypeScript.run("accessor-pairs", rule, { errors: [ { message: "Getter is not present for type setter 'prop'.", - type: "TSMethodSignature", }, ], }, @@ -3782,7 +3542,6 @@ ruleTesterTypeScript.run("accessor-pairs", rule, { errors: [ { message: "Setter is not present for type getter 'prop'.", - type: "TSMethodSignature", }, ], }, diff --git a/tests/lib/rules/array-bracket-newline.js b/tests/lib/rules/array-bracket-newline.js index 29735810f7b0..aa0ef0cb2095 100644 --- a/tests/lib/rules/array-bracket-newline.js +++ b/tests/lib/rules/array-bracket-newline.js @@ -445,7 +445,6 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, endLine: 1, @@ -453,7 +452,6 @@ ruleTester.run("array-bracket-newline", rule, { }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 3, column: 13, endLine: 3, @@ -542,7 +540,6 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, endLine: 1, @@ -550,7 +547,6 @@ ruleTester.run("array-bracket-newline", rule, { }, { messageId: "missingClosingLinebreak", - type: "ArrayExpression", line: 1, column: 12, endLine: 1, @@ -565,13 +561,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "missingClosingLinebreak", - type: "ArrayExpression", line: 1, column: 13, }, @@ -584,7 +578,6 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingClosingLinebreak", - type: "ArrayExpression", line: 2, column: 2, endLine: 2, @@ -599,7 +592,6 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingClosingLinebreak", - type: "ArrayExpression", line: 2, column: 2, }, @@ -612,7 +604,6 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, endLine: 1, @@ -620,7 +611,6 @@ ruleTester.run("array-bracket-newline", rule, { }, { messageId: "missingClosingLinebreak", - type: "ArrayExpression", line: 1, column: 16, endLine: 1, @@ -635,7 +625,6 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, @@ -648,13 +637,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "missingClosingLinebreak", - type: "ArrayExpression", line: 1, column: 34, }, @@ -667,13 +654,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "missingClosingLinebreak", - type: "ArrayExpression", line: 2, column: 2, }, @@ -686,13 +671,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "missingClosingLinebreak", - type: "ArrayExpression", line: 3, column: 2, }, @@ -722,13 +705,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 2, column: 1, }, @@ -741,7 +722,6 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, endLine: 1, @@ -749,7 +729,6 @@ ruleTester.run("array-bracket-newline", rule, { }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 3, column: 1, endLine: 3, @@ -764,13 +743,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 3, column: 1, }, @@ -783,13 +760,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 3, column: 18, }, @@ -802,13 +777,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 3, column: 1, }, @@ -821,13 +794,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 4, column: 1, }, @@ -840,13 +811,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 5, column: 1, }, @@ -890,7 +859,6 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingClosingLinebreak", - type: "ArrayExpression", line: 2, column: 2, endLine: 2, @@ -905,7 +873,6 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 2, column: 1, endLine: 2, @@ -920,7 +887,6 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingClosingLinebreak", - type: "ArrayExpression", line: 2, column: 2, endLine: 2, @@ -937,13 +903,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 2, column: 1, }, @@ -956,13 +920,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 3, column: 1, }, @@ -975,13 +937,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 3, column: 1, }, @@ -994,13 +954,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 3, column: 1, }, @@ -1013,13 +971,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "missingClosingLinebreak", - type: "ArrayExpression", line: 2, column: 2, }, @@ -1032,13 +988,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "missingClosingLinebreak", - type: "ArrayExpression", line: 3, column: 2, }, @@ -1081,13 +1035,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 2, column: 1, }, @@ -1100,13 +1052,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 3, column: 1, }, @@ -1119,13 +1069,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "missingClosingLinebreak", - type: "ArrayExpression", line: 1, column: 16, }, @@ -1138,13 +1086,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "missingClosingLinebreak", - type: "ArrayExpression", line: 2, column: 2, }, @@ -1157,13 +1103,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 5, column: 1, }, @@ -1178,13 +1122,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "missingClosingLinebreak", - type: "ArrayExpression", line: 1, column: 12, }, @@ -1197,13 +1139,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "missingClosingLinebreak", - type: "ArrayExpression", line: 1, column: 13, }, @@ -1216,13 +1156,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "missingClosingLinebreak", - type: "ArrayExpression", line: 1, column: 16, }, @@ -1235,13 +1173,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "missingClosingLinebreak", - type: "ArrayExpression", line: 2, column: 2, }, @@ -1254,13 +1190,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "missingClosingLinebreak", - type: "ArrayExpression", line: 3, column: 2, }, @@ -1275,13 +1209,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 2, column: 1, }, @@ -1294,13 +1226,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 3, column: 1, }, @@ -1313,13 +1243,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 3, column: 1, }, @@ -1332,13 +1260,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 4, column: 1, }, @@ -1351,13 +1277,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 5, column: 1, }, @@ -1372,13 +1296,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 2, column: 1, }, @@ -1391,13 +1313,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 3, column: 1, }, @@ -1410,13 +1330,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 3, column: 1, }, @@ -1429,13 +1347,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "missingClosingLinebreak", - type: "ArrayExpression", line: 2, column: 2, }, @@ -1448,13 +1364,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "missingClosingLinebreak", - type: "ArrayExpression", line: 3, column: 2, }, @@ -1469,13 +1383,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 2, column: 1, }, @@ -1488,13 +1400,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 3, column: 1, }, @@ -1507,13 +1417,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "missingClosingLinebreak", - type: "ArrayExpression", line: 1, column: 16, }, @@ -1526,13 +1434,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "missingClosingLinebreak", - type: "ArrayExpression", line: 2, column: 2, }, @@ -1545,13 +1451,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "missingClosingLinebreak", - type: "ArrayExpression", line: 3, column: 2, }, @@ -1569,7 +1473,6 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingClosingLinebreak", - type: "ArrayExpression", line: 2, column: 5, }, @@ -1582,13 +1485,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "missingClosingLinebreak", - type: "ArrayExpression", line: 1, column: 17, }, @@ -1601,7 +1502,6 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, @@ -1616,13 +1516,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 2, column: 1, }, @@ -1635,13 +1533,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 3, column: 1, }, @@ -1654,13 +1550,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 3, column: 1, }, @@ -1673,13 +1567,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 4, column: 1, }, @@ -1692,13 +1584,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayExpression", line: 1, column: 11, }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayExpression", line: 5, column: 1, }, @@ -1717,13 +1607,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayPattern", line: 1, column: 5, }, { messageId: "missingClosingLinebreak", - type: "ArrayPattern", line: 1, column: 6, }, @@ -1737,13 +1625,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayPattern", line: 1, column: 5, }, { messageId: "missingClosingLinebreak", - type: "ArrayPattern", line: 1, column: 7, }, @@ -1757,7 +1643,6 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingClosingLinebreak", - type: "ArrayPattern", line: 2, column: 2, }, @@ -1771,7 +1656,6 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingClosingLinebreak", - type: "ArrayPattern", line: 2, column: 2, }, @@ -1785,13 +1669,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayPattern", line: 1, column: 5, }, { messageId: "missingClosingLinebreak", - type: "ArrayPattern", line: 1, column: 10, }, @@ -1805,7 +1687,6 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayPattern", line: 1, column: 5, }, @@ -1819,13 +1700,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayPattern", line: 1, column: 5, }, { messageId: "missingClosingLinebreak", - type: "ArrayPattern", line: 1, column: 28, }, @@ -1839,13 +1718,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayPattern", line: 1, column: 5, }, { messageId: "missingClosingLinebreak", - type: "ArrayPattern", line: 2, column: 2, }, @@ -1861,7 +1738,6 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingClosingLinebreak", - type: "ArrayPattern", line: 2, column: 2, endLine: 2, @@ -1877,7 +1753,6 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedClosingLinebreak", - type: "ArrayPattern", line: 2, column: 1, endLine: 2, @@ -1893,7 +1768,6 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingClosingLinebreak", - type: "ArrayPattern", line: 2, column: 2, endLine: 2, @@ -1911,13 +1785,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayPattern", line: 1, column: 5, }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayPattern", line: 2, column: 1, }, @@ -1931,13 +1803,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "unexpectedOpeningLinebreak", - type: "ArrayPattern", line: 1, column: 5, }, { messageId: "unexpectedClosingLinebreak", - type: "ArrayPattern", line: 3, column: 1, }, @@ -1951,13 +1821,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayPattern", line: 1, column: 5, }, { messageId: "missingClosingLinebreak", - type: "ArrayPattern", line: 1, column: 10, }, @@ -1971,13 +1839,11 @@ ruleTester.run("array-bracket-newline", rule, { errors: [ { messageId: "missingOpeningLinebreak", - type: "ArrayPattern", line: 1, column: 5, }, { messageId: "missingClosingLinebreak", - type: "ArrayPattern", line: 2, column: 2, }, diff --git a/tests/lib/rules/array-bracket-spacing.js b/tests/lib/rules/array-bracket-spacing.js index 8e086391cdbf..7099d248d1ec 100644 --- a/tests/lib/rules/array-bracket-spacing.js +++ b/tests/lib/rules/array-bracket-spacing.js @@ -456,7 +456,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayExpression", line: 1, column: 12, endLine: 1, @@ -476,7 +475,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayExpression", line: 1, column: 12, endLine: 1, @@ -487,7 +485,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "]", }, - type: "ArrayExpression", line: 1, column: 36, endLine: 1, @@ -505,7 +502,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayExpression", line: 1, column: 11, endLine: 1, @@ -516,7 +512,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "]", }, - type: "ArrayExpression", line: 1, column: 34, endLine: 1, @@ -534,7 +529,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayExpression", line: 1, column: 12, endLine: 1, @@ -545,7 +539,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "]", }, - type: "ArrayExpression", line: 1, column: 49, endLine: 1, @@ -565,7 +558,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayExpression", line: 1, column: 12, endLine: 1, @@ -576,7 +568,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "]", }, - type: "ArrayExpression", line: 1, column: 18, endLine: 1, @@ -594,7 +585,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "]", }, - type: "ArrayExpression", line: 1, column: 17, endLine: 1, @@ -612,7 +602,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayExpression", line: 1, column: 11, endLine: 1, @@ -623,7 +612,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "]", }, - type: "ArrayExpression", line: 1, column: 17, endLine: 1, @@ -643,7 +631,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayExpression", line: 1, column: 12, endLine: 1, @@ -661,7 +648,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "]", }, - type: "ArrayExpression", line: 1, column: 30, endLine: 1, @@ -679,7 +665,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "]", }, - type: "ArrayExpression", line: 1, column: 33, endLine: 1, @@ -697,7 +682,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayExpression", line: 1, column: 12, endLine: 1, @@ -715,7 +699,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayExpression", line: 1, column: 12, endLine: 1, @@ -726,7 +709,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "]", }, - type: "ArrayExpression", line: 1, column: 34, endLine: 1, @@ -747,7 +729,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayPattern", line: 1, column: 5, endLine: 1, @@ -758,7 +739,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "]", }, - type: "ArrayPattern", line: 1, column: 9, endLine: 1, @@ -777,7 +757,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayPattern", line: 1, column: 5, endLine: 1, @@ -796,7 +775,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayPattern", line: 1, column: 5, endLine: 1, @@ -807,7 +785,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "]", }, - type: "ArrayPattern", line: 1, column: 12, endLine: 1, @@ -826,7 +803,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "]", }, - type: "ArrayPattern", line: 1, column: 13, endLine: 1, @@ -845,7 +821,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayPattern", line: 1, column: 5, endLine: 1, @@ -856,7 +831,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "]", }, - type: "ArrayPattern", line: 1, column: 14, endLine: 1, @@ -875,7 +849,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayPattern", line: 1, column: 5, endLine: 1, @@ -894,7 +867,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayPattern", line: 1, column: 6, endLine: 1, @@ -913,7 +885,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayPattern", line: 1, column: 2, endLine: 1, @@ -932,7 +903,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "]", }, - type: "ArrayPattern", line: 1, column: 14, endLine: 1, @@ -952,7 +922,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayExpression", line: 1, column: 11, endLine: 1, @@ -963,7 +932,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "]", }, - type: "ArrayExpression", line: 1, column: 29, endLine: 1, @@ -981,7 +949,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayExpression", line: 1, column: 12, endLine: 1, @@ -1001,7 +968,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayExpression", line: 1, column: 12, endLine: 1, @@ -1021,7 +987,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayExpression", line: 1, column: 11, endLine: 1, @@ -1032,7 +997,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "]", }, - type: "ArrayExpression", line: 1, column: 22, endLine: 1, @@ -1050,7 +1014,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayExpression", line: 1, column: 11, endLine: 1, @@ -1068,7 +1031,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "]", }, - type: "ArrayExpression", line: 1, column: 23, endLine: 1, @@ -1088,7 +1050,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayExpression", line: 1, column: 12, endLine: 1, @@ -1099,7 +1060,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "]", }, - type: "ArrayExpression", line: 1, column: 23, endLine: 1, @@ -1117,7 +1077,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "]", }, - type: "ArrayExpression", line: 1, column: 22, endLine: 1, @@ -1135,7 +1094,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayExpression", line: 1, column: 12, endLine: 1, @@ -1153,7 +1111,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayExpression", line: 1, column: 12, endLine: 1, @@ -1164,7 +1121,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayExpression", line: 1, column: 14, endLine: 1, @@ -1182,7 +1138,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "]", }, - type: "ArrayExpression", line: 1, column: 14, endLine: 1, @@ -1193,7 +1148,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "]", }, - type: "ArrayExpression", line: 1, column: 25, endLine: 1, @@ -1217,7 +1171,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayPattern", line: 1, column: 3, endLine: 1, @@ -1228,7 +1181,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "]", }, - type: "ArrayPattern", line: 1, column: 8, endLine: 1, @@ -1250,7 +1202,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayPattern", line: 1, column: 2, endLine: 1, @@ -1261,7 +1212,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "]", }, - type: "ArrayPattern", line: 1, column: 7, endLine: 1, @@ -1281,7 +1231,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayExpression", line: 1, column: 12, endLine: 1, @@ -1292,7 +1241,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "]", }, - type: "ArrayExpression", line: 1, column: 18, endLine: 1, @@ -1313,7 +1261,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayPattern", line: 1, column: 14, endLine: 1, @@ -1324,7 +1271,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "]", }, - type: "ArrayPattern", line: 1, column: 21, endLine: 1, @@ -1342,7 +1288,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayExpression", line: 1, column: 12, endLine: 1, @@ -1353,7 +1298,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "]", }, - type: "ArrayExpression", line: 2, column: 5, endLine: 2, @@ -1371,7 +1315,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayExpression", line: 1, column: 12, endLine: 1, @@ -1382,7 +1325,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "[", }, - type: "ArrayExpression", line: 1, column: 18, endLine: 1, @@ -1393,7 +1335,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "]", }, - type: "ArrayExpression", line: 1, column: 23, endLine: 1, @@ -1404,7 +1345,6 @@ ruleTester.run("array-bracket-spacing", rule, { data: { tokenValue: "]", }, - type: "ArrayExpression", line: 1, column: 26, endLine: 1, diff --git a/tests/lib/rules/array-callback-return.js b/tests/lib/rules/array-callback-return.js index 5a4a12e55fae..e6b2c696144e 100644 --- a/tests/lib/rules/array-callback-return.js +++ b/tests/lib/rules/array-callback-return.js @@ -1687,7 +1687,6 @@ ruleTester.run("array-callback-return", rule, { name: "arrow function", arrayMethodName: "Array.prototype.filter", }, - type: "ArrowFunctionExpression", line: 1, column: 16, endLine: 1, @@ -1705,7 +1704,6 @@ ruleTester.run("array-callback-return", rule, { name: "arrow function", arrayMethodName: "Array.prototype.filter", }, - type: "ArrowFunctionExpression", line: 2, column: 4, endLine: 2, @@ -1723,7 +1721,6 @@ ruleTester.run("array-callback-return", rule, { name: "arrow function", arrayMethodName: "Array.prototype.filter", }, - type: "ArrowFunctionExpression", line: 1, column: 26, endLine: 1, @@ -1741,7 +1738,6 @@ ruleTester.run("array-callback-return", rule, { name: "arrow function", arrayMethodName: "Array.prototype.filter", }, - type: "ReturnStatement", line: 1, column: 21, endLine: 1, @@ -1759,7 +1755,6 @@ ruleTester.run("array-callback-return", rule, { name: "arrow function", arrayMethodName: "Array.from", }, - type: "ArrowFunctionExpression", line: 1, column: 21, endLine: 1, @@ -1778,7 +1773,6 @@ ruleTester.run("array-callback-return", rule, { name: "arrow function", arrayMethodName: "Array.prototype.forEach", }, - type: "ArrowFunctionExpression", line: 1, column: 17, endLine: 1, @@ -1803,7 +1797,6 @@ ruleTester.run("array-callback-return", rule, { name: "arrow function", arrayMethodName: "Array.prototype.forEach", }, - type: "ArrowFunctionExpression", line: 1, column: 41, endLine: 1, @@ -1828,7 +1821,6 @@ ruleTester.run("array-callback-return", rule, { name: "arrow function", arrayMethodName: "Array.prototype.forEach", }, - type: "ArrowFunctionExpression", line: 2, column: 13, endLine: 2, @@ -1853,7 +1845,6 @@ ruleTester.run("array-callback-return", rule, { name: "arrow function", arrayMethodName: "Array.prototype.forEach", }, - type: "ReturnStatement", line: 1, column: 52, endLine: 1, @@ -1870,7 +1861,6 @@ ruleTester.run("array-callback-return", rule, { name: "function", arrayMethodName: "Array.prototype.filter", }, - type: "FunctionExpression", line: 1, column: 12, endLine: 1, @@ -1887,7 +1877,6 @@ ruleTester.run("array-callback-return", rule, { name: "function", arrayMethodName: "Array.prototype.filter", }, - type: "FunctionExpression", line: 1, column: 12, endLine: 1, @@ -1904,7 +1893,6 @@ ruleTester.run("array-callback-return", rule, { name: "function", arrayMethodName: "Array.prototype.filter", }, - type: "FunctionExpression", line: 1, column: 12, endLine: 2, @@ -1921,7 +1909,6 @@ ruleTester.run("array-callback-return", rule, { name: "function 'bar'", arrayMethodName: "Array.prototype.filter", }, - type: "FunctionExpression", line: 1, column: 12, endLine: 1, @@ -1938,7 +1925,6 @@ ruleTester.run("array-callback-return", rule, { name: "function 'bar'", arrayMethodName: "Array.prototype.filter", }, - type: "FunctionExpression", line: 1, column: 12, endLine: 1, @@ -1955,7 +1941,6 @@ ruleTester.run("array-callback-return", rule, { name: "function 'bar'", arrayMethodName: "Array.prototype.filter", }, - type: "FunctionExpression", line: 1, column: 12, endLine: 2, @@ -1972,7 +1957,6 @@ ruleTester.run("array-callback-return", rule, { name: "function 'bar'", arrayMethodName: "Array.from", }, - type: "FunctionExpression", line: 1, column: 17, endLine: 1, @@ -1986,7 +1970,6 @@ ruleTester.run("array-callback-return", rule, { { messageId: "expectedInside", data: { name: "function", arrayMethodName: "Array.from" }, - type: "FunctionExpression", line: 1, column: 23, endLine: 1, @@ -2003,7 +1986,6 @@ ruleTester.run("array-callback-return", rule, { name: "function 'bar'", arrayMethodName: "Array.prototype.filter", }, - type: "ReturnStatement", line: 1, column: 29, endLine: 1, @@ -2021,7 +2003,6 @@ ruleTester.run("array-callback-return", rule, { name: "function", arrayMethodName: "Array.prototype.forEach", }, - type: "ReturnStatement", line: 2, column: 10, endLine: 2, diff --git a/tests/lib/rules/arrow-body-style.js b/tests/lib/rules/arrow-body-style.js index e03185cb1937..6bc317e538d8 100644 --- a/tests/lib/rules/arrow-body-style.js +++ b/tests/lib/rules/arrow-body-style.js @@ -323,7 +323,6 @@ ruleTester.run("arrow-body-style", rule, { column: 17, endLine: 1, endColumn: 18, - type: "ArrowFunctionExpression", messageId: "expectedBlock", }, ], @@ -336,7 +335,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 1, column: 17, - type: "ArrowFunctionExpression", messageId: "expectedBlock", }, ], @@ -349,7 +347,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 1, column: 18, - type: "ArrowFunctionExpression", messageId: "expectedBlock", }, ], @@ -362,7 +359,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 1, column: 20, - type: "ArrowFunctionExpression", messageId: "expectedBlock", }, ], @@ -375,7 +371,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 1, column: 9, - type: "ArrowFunctionExpression", messageId: "expectedBlock", }, ], @@ -388,7 +383,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 1, column: 10, - type: "ArrowFunctionExpression", messageId: "expectedBlock", }, ], @@ -401,7 +395,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 1, column: 17, - type: "ArrowFunctionExpression", messageId: "unexpectedSingleBlock", }, ], @@ -414,7 +407,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 1, column: 17, - type: "ArrowFunctionExpression", messageId: "unexpectedSingleBlock", }, ], @@ -427,7 +419,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 1, column: 17, - type: "ArrowFunctionExpression", messageId: "unexpectedSingleBlock", }, ], @@ -440,7 +431,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 1, column: 17, - type: "ArrowFunctionExpression", messageId: "unexpectedEmptyBlock", }, ], @@ -453,7 +443,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 1, column: 17, - type: "ArrowFunctionExpression", messageId: "unexpectedSingleBlock", }, ], @@ -466,7 +455,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 1, column: 17, - type: "ArrowFunctionExpression", messageId: "unexpectedObjectBlock", }, ], @@ -479,7 +467,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 1, column: 17, - type: "ArrowFunctionExpression", messageId: "unexpectedSingleBlock", }, ], @@ -491,7 +478,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 1, column: 17, - type: "ArrowFunctionExpression", messageId: "unexpectedSingleBlock", }, ], @@ -504,7 +490,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 1, column: 17, - type: "ArrowFunctionExpression", messageId: "unexpectedSingleBlock", }, ], @@ -517,7 +502,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 1, column: 17, - type: "ArrowFunctionExpression", messageId: "unexpectedSingleBlock", }, ], @@ -530,7 +514,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 1, column: 17, - type: "ArrowFunctionExpression", messageId: "unexpectedSingleBlock", }, ], @@ -543,7 +526,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 1, column: 17, - type: "ArrowFunctionExpression", messageId: "unexpectedSingleBlock", }, ], @@ -556,7 +538,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 1, column: 17, - type: "ArrowFunctionExpression", messageId: "unexpectedObjectBlock", }, ], @@ -569,7 +550,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 1, column: 27, - type: "ArrowFunctionExpression", messageId: "unexpectedOtherBlock", }, ], @@ -582,7 +562,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 1, column: 17, - type: "ArrowFunctionExpression", messageId: "unexpectedOtherBlock", }, ], @@ -595,7 +574,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 1, column: 17, - type: "ArrowFunctionExpression", messageId: "unexpectedSingleBlock", }, ], @@ -608,7 +586,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 1, column: 17, - type: "ArrowFunctionExpression", messageId: "unexpectedSingleBlock", }, ], @@ -621,7 +598,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 1, column: 18, - type: "ArrowFunctionExpression", messageId: "expectedBlock", }, ], @@ -634,7 +610,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 1, column: 18, - type: "ArrowFunctionExpression", messageId: "expectedBlock", }, ], @@ -647,7 +622,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 1, column: 24, - type: "ArrowFunctionExpression", messageId: "expectedBlock", }, ], @@ -661,7 +635,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 1, column: 17, - type: "ArrowFunctionExpression", messageId: "unexpectedSingleBlock", }, ], @@ -675,7 +648,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 1, column: 17, - type: "ArrowFunctionExpression", messageId: "unexpectedSingleBlock", }, ], @@ -689,7 +661,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 1, column: 17, - type: "ArrowFunctionExpression", messageId: "unexpectedSingleBlock", }, ], @@ -702,7 +673,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 1, column: 50, - type: "ArrowFunctionExpression", messageId: "unexpectedSingleBlock", }, ], @@ -715,7 +685,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 1, column: 60, - type: "ArrowFunctionExpression", messageId: "expectedBlock", }, ], @@ -729,7 +698,6 @@ ruleTester.run("arrow-body-style", rule, { column: 17, endLine: 3, endColumn: 2, - type: "ArrowFunctionExpression", messageId: "unexpectedSingleBlock", }, ], @@ -743,7 +711,6 @@ ruleTester.run("arrow-body-style", rule, { column: 17, endLine: 2, endColumn: 13, - type: "ArrowFunctionExpression", messageId: "unexpectedSingleBlock", }, ], @@ -757,7 +724,6 @@ ruleTester.run("arrow-body-style", rule, { column: 17, endLine: 2, endColumn: 2, - type: "ArrowFunctionExpression", messageId: "unexpectedSingleBlock", }, ], @@ -777,7 +743,6 @@ ruleTester.run("arrow-body-style", rule, { { line: 2, column: 31, - type: "ArrowFunctionExpression", messageId: "unexpectedSingleBlock", }, ], @@ -803,7 +768,6 @@ ruleTester.run("arrow-body-style", rule, { column: 31, endLine: 7, endColumn: 16, - type: "ArrowFunctionExpression", messageId: "unexpectedObjectBlock", }, ], diff --git a/tests/lib/rules/arrow-parens.js b/tests/lib/rules/arrow-parens.js index 8111ac27a6f7..689969b66e8b 100644 --- a/tests/lib/rules/arrow-parens.js +++ b/tests/lib/rules/arrow-parens.js @@ -310,8 +310,6 @@ const valid = [ }, ]; -const type = "ArrowFunctionExpression"; - const invalid = [ // "always" (by default) { @@ -323,7 +321,6 @@ const invalid = [ column: 1, endColumn: 2, messageId: "expectedParens", - type, }, ], }, @@ -336,7 +333,6 @@ const invalid = [ column: 1, endColumn: 2, messageId: "expectedParens", - type, }, ], }, @@ -349,7 +345,6 @@ const invalid = [ column: 1, endColumn: 2, messageId: "expectedParens", - type, }, ], }, @@ -362,7 +357,6 @@ const invalid = [ column: 8, endColumn: 11, messageId: "expectedParens", - type, }, ], }, @@ -375,7 +369,6 @@ const invalid = [ column: 8, endColumn: 11, messageId: "expectedParens", - type, }, ], }, @@ -388,7 +381,6 @@ const invalid = [ column: 3, endColumn: 6, messageId: "expectedParens", - type, }, ], }, @@ -402,7 +394,6 @@ const invalid = [ column: 9, endColumn: 12, messageId: "expectedParens", - type, }, ], }, @@ -418,7 +409,6 @@ const invalid = [ column: 2, endColumn: 3, messageId: "unexpectedParens", - type, }, ], }, @@ -432,7 +422,6 @@ const invalid = [ column: 4, endColumn: 5, messageId: "unexpectedParens", - type, }, ], }, @@ -446,7 +435,6 @@ const invalid = [ column: 1, endColumn: 2, messageId: "unexpectedParens", - type, }, ], }, @@ -461,7 +449,6 @@ const invalid = [ column: 2, endColumn: 3, messageId: "unexpectedParens", - type, }, ], }, @@ -476,7 +463,6 @@ const invalid = [ column: 8, endColumn: 9, messageId: "unexpectedParens", - type, }, ], }, @@ -491,7 +477,6 @@ const invalid = [ column: 7, endColumn: 8, messageId: "unexpectedParens", - type, }, ], }, @@ -505,7 +490,6 @@ const invalid = [ column: 9, endColumn: 10, messageId: "unexpectedParens", - type, }, ], }, @@ -519,7 +503,6 @@ const invalid = [ column: 23, endColumn: 24, messageId: "unexpectedParens", - type, }, ], }, @@ -535,7 +518,6 @@ const invalid = [ column: 1, endColumn: 2, messageId: "expectedParensBlock", - type, }, ], }, @@ -549,7 +531,6 @@ const invalid = [ column: 2, endColumn: 3, messageId: "unexpectedParensInline", - type, }, ], }, @@ -564,7 +545,6 @@ const invalid = [ column: 7, endColumn: 8, messageId: "expectedParensBlock", - type, }, ], }, @@ -579,7 +559,6 @@ const invalid = [ column: 8, endColumn: 9, messageId: "unexpectedParensInline", - type, }, ], }, @@ -594,7 +573,6 @@ const invalid = [ column: 7, endColumn: 8, messageId: "unexpectedParensInline", - type, }, ], }, @@ -606,7 +584,6 @@ const invalid = [ { line: 1, column: 33, - type, messageId: "unexpectedParens", endLine: 1, endColumn: 34, @@ -621,7 +598,6 @@ const invalid = [ { line: 2, column: 2, - type, messageId: "unexpectedParens", endLine: 2, endColumn: 3, @@ -635,7 +611,6 @@ const invalid = [ { line: 1, column: 16, - type: "ArrowFunctionExpression", messageId: "expectedParens", endLine: 1, endColumn: 17, @@ -649,7 +624,6 @@ const invalid = [ { line: 1, column: 11, - type: "ArrowFunctionExpression", messageId: "expectedParens", endLine: 1, endColumn: 12, @@ -671,7 +645,6 @@ bar();`, { line: 1, column: 13, - type: "ArrowFunctionExpression", messageId: "expectedParens", endLine: 1, endColumn: 14, diff --git a/tests/lib/rules/arrow-spacing.js b/tests/lib/rules/arrow-spacing.js index 886be7ffd638..24cfbbf3ba46 100644 --- a/tests/lib/rules/arrow-spacing.js +++ b/tests/lib/rules/arrow-spacing.js @@ -93,13 +93,11 @@ const invalid = [ { column: 1, line: 1, - type: "Identifier", messageId: "expectedBefore", }, { column: 4, line: 1, - type: "Identifier", messageId: "expectedAfter", }, ], @@ -112,13 +110,11 @@ const invalid = [ { column: 2, line: 1, - type: "Punctuator", messageId: "expectedBefore", }, { column: 5, line: 1, - type: "Punctuator", messageId: "expectedAfter", }, ], @@ -131,13 +127,11 @@ const invalid = [ { column: 3, line: 1, - type: "Punctuator", messageId: "expectedBefore", }, { column: 6, line: 1, - type: "Punctuator", messageId: "expectedAfter", }, ], @@ -150,13 +144,11 @@ const invalid = [ { column: 1, line: 1, - type: "Identifier", messageId: "expectedBefore", }, { column: 5, line: 1, - type: "Identifier", messageId: "unexpectedAfter", }, ], @@ -169,13 +161,11 @@ const invalid = [ { column: 2, line: 1, - type: "Punctuator", messageId: "expectedBefore", }, { column: 6, line: 1, - type: "Punctuator", messageId: "unexpectedAfter", }, ], @@ -188,13 +178,11 @@ const invalid = [ { column: 3, line: 1, - type: "Punctuator", messageId: "expectedBefore", }, { column: 7, line: 1, - type: "Punctuator", messageId: "unexpectedAfter", }, ], @@ -207,13 +195,11 @@ const invalid = [ { column: 1, line: 1, - type: "Identifier", messageId: "expectedBefore", }, { column: 6, line: 1, - type: "Identifier", messageId: "unexpectedAfter", }, ], @@ -226,13 +212,11 @@ const invalid = [ { column: 2, line: 1, - type: "Punctuator", messageId: "expectedBefore", }, { column: 7, line: 1, - type: "Punctuator", messageId: "unexpectedAfter", }, ], @@ -245,13 +229,11 @@ const invalid = [ { column: 3, line: 1, - type: "Punctuator", messageId: "expectedBefore", }, { column: 8, line: 1, - type: "Punctuator", messageId: "unexpectedAfter", }, ], @@ -264,13 +246,11 @@ const invalid = [ { column: 1, line: 1, - type: "Identifier", messageId: "unexpectedBefore", }, { column: 5, line: 1, - type: "Identifier", messageId: "expectedAfter", }, ], @@ -283,13 +263,11 @@ const invalid = [ { column: 2, line: 1, - type: "Punctuator", messageId: "unexpectedBefore", }, { column: 6, line: 1, - type: "Punctuator", messageId: "expectedAfter", }, ], @@ -302,13 +280,11 @@ const invalid = [ { column: 3, line: 1, - type: "Punctuator", messageId: "unexpectedBefore", }, { column: 7, line: 1, - type: "Punctuator", messageId: "expectedAfter", }, ], @@ -321,13 +297,11 @@ const invalid = [ { column: 1, line: 1, - type: "Identifier", messageId: "unexpectedBefore", }, { column: 6, line: 1, - type: "Identifier", messageId: "expectedAfter", }, ], @@ -340,13 +314,11 @@ const invalid = [ { column: 2, line: 1, - type: "Punctuator", messageId: "unexpectedBefore", }, { column: 7, line: 1, - type: "Punctuator", messageId: "expectedAfter", }, ], @@ -359,13 +331,11 @@ const invalid = [ { column: 3, line: 1, - type: "Punctuator", messageId: "unexpectedBefore", }, { column: 8, line: 1, - type: "Punctuator", messageId: "expectedAfter", }, ], @@ -378,13 +348,11 @@ const invalid = [ { column: 1, line: 1, - type: "Identifier", messageId: "unexpectedBefore", }, { column: 6, line: 1, - type: "Identifier", messageId: "unexpectedAfter", }, ], @@ -397,13 +365,11 @@ const invalid = [ { column: 2, line: 1, - type: "Punctuator", messageId: "unexpectedBefore", }, { column: 7, line: 1, - type: "Punctuator", messageId: "unexpectedAfter", }, ], @@ -416,13 +382,11 @@ const invalid = [ { column: 3, line: 1, - type: "Punctuator", messageId: "unexpectedBefore", }, { column: 8, line: 1, - type: "Punctuator", messageId: "unexpectedAfter", }, ], @@ -435,13 +399,11 @@ const invalid = [ { column: 1, line: 1, - type: "Identifier", messageId: "unexpectedBefore", }, { column: 8, line: 1, - type: "Identifier", messageId: "unexpectedAfter", }, ], @@ -454,13 +416,11 @@ const invalid = [ { column: 2, line: 1, - type: "Punctuator", messageId: "unexpectedBefore", }, { column: 9, line: 1, - type: "Punctuator", messageId: "unexpectedAfter", }, ], @@ -473,13 +433,11 @@ const invalid = [ { column: 3, line: 1, - type: "Punctuator", messageId: "unexpectedBefore", }, { column: 10, line: 1, - type: "Punctuator", messageId: "unexpectedAfter", }, ], @@ -492,7 +450,6 @@ const invalid = [ { column: 1, line: 2, - type: "Punctuator", messageId: "unexpectedAfter", }, ], diff --git a/tests/lib/rules/block-scoped-var.js b/tests/lib/rules/block-scoped-var.js index d76554408d79..fb58a2eecc4d 100644 --- a/tests/lib/rules/block-scoped-var.js +++ b/tests/lib/rules/block-scoped-var.js @@ -243,7 +243,6 @@ ruleTester.run("block-scoped-var", rule, { }, line: 1, column: 15, - type: "Identifier", }, ], }, @@ -259,7 +258,6 @@ ruleTester.run("block-scoped-var", rule, { }, line: 1, column: 26, - type: "Identifier", }, ], }, @@ -275,7 +273,6 @@ ruleTester.run("block-scoped-var", rule, { }, line: 1, column: 42, - type: "Identifier", }, ], }, @@ -291,7 +288,6 @@ ruleTester.run("block-scoped-var", rule, { }, line: 1, column: 55, - type: "Identifier", }, ], }, @@ -307,7 +303,6 @@ ruleTester.run("block-scoped-var", rule, { }, line: 1, column: 48, - type: "Identifier", }, ], }, @@ -324,7 +319,6 @@ ruleTester.run("block-scoped-var", rule, { }, line: 1, column: 48, - type: "Identifier", }, ], }, @@ -340,7 +334,6 @@ ruleTester.run("block-scoped-var", rule, { }, line: 1, column: 76, - type: "Identifier", }, ], }, @@ -356,7 +349,6 @@ ruleTester.run("block-scoped-var", rule, { }, line: 1, column: 22, - type: "Identifier", }, ], }, @@ -372,7 +364,6 @@ ruleTester.run("block-scoped-var", rule, { }, line: 1, column: 22, - type: "Identifier", }, ], }, @@ -389,7 +380,6 @@ ruleTester.run("block-scoped-var", rule, { }, line: 1, column: 22, - type: "Identifier", }, ], }, @@ -406,7 +396,6 @@ ruleTester.run("block-scoped-var", rule, { }, line: 1, column: 16, - type: "Identifier", }, ], }, @@ -422,7 +411,6 @@ ruleTester.run("block-scoped-var", rule, { }, line: 1, column: 22, - type: "Identifier", }, ], }, @@ -438,7 +426,6 @@ ruleTester.run("block-scoped-var", rule, { }, line: 1, column: 17, - type: "Identifier", }, { messageId: "outOfScope", @@ -449,7 +436,6 @@ ruleTester.run("block-scoped-var", rule, { }, line: 1, column: 37, - type: "Identifier", }, ], }, @@ -465,7 +451,6 @@ ruleTester.run("block-scoped-var", rule, { }, line: 1, column: 10, - type: "Identifier", }, { messageId: "outOfScope", @@ -476,7 +461,6 @@ ruleTester.run("block-scoped-var", rule, { }, line: 1, column: 30, - type: "Identifier", }, ], }, @@ -493,7 +477,6 @@ ruleTester.run("block-scoped-var", rule, { }, line: 1, column: 42, - type: "Identifier", }, ], }, @@ -509,7 +492,6 @@ ruleTester.run("block-scoped-var", rule, { }, line: 2, column: 10, - type: "Identifier", }, ], }, @@ -526,7 +508,6 @@ ruleTester.run("block-scoped-var", rule, { }, line: 2, column: 18, - type: "Identifier", }, ], }, @@ -542,7 +523,6 @@ ruleTester.run("block-scoped-var", rule, { }, line: 1, column: 16, - type: "Identifier", }, { messageId: "outOfScope", @@ -553,7 +533,6 @@ ruleTester.run("block-scoped-var", rule, { }, line: 1, column: 16, - type: "Identifier", }, { messageId: "outOfScope", @@ -564,7 +543,6 @@ ruleTester.run("block-scoped-var", rule, { }, line: 1, column: 45, - type: "Identifier", }, { messageId: "outOfScope", @@ -575,7 +553,6 @@ ruleTester.run("block-scoped-var", rule, { }, line: 1, column: 45, - type: "Identifier", }, { messageId: "outOfScope", @@ -586,7 +563,6 @@ ruleTester.run("block-scoped-var", rule, { }, line: 1, column: 65, - type: "Identifier", }, { messageId: "outOfScope", @@ -597,7 +573,6 @@ ruleTester.run("block-scoped-var", rule, { }, line: 1, column: 65, - type: "Identifier", }, ], }, diff --git a/tests/lib/rules/block-spacing.js b/tests/lib/rules/block-spacing.js index db87cbc9c78f..4a2709c3e081 100644 --- a/tests/lib/rules/block-spacing.js +++ b/tests/lib/rules/block-spacing.js @@ -128,14 +128,12 @@ ruleTester.run("block-spacing", rule, { options: ["always"], errors: [ { - type: "BlockStatement", line: 1, column: 1, messageId: "missing", data: { location: "after", token: "{" }, }, { - type: "BlockStatement", line: 1, column: 8, messageId: "missing", @@ -148,14 +146,12 @@ ruleTester.run("block-spacing", rule, { output: "{ foo(); }", errors: [ { - type: "BlockStatement", line: 1, column: 1, messageId: "missing", data: { location: "after", token: "{" }, }, { - type: "BlockStatement", line: 1, column: 8, messageId: "missing", @@ -168,7 +164,6 @@ ruleTester.run("block-spacing", rule, { output: "{ foo(); }", errors: [ { - type: "BlockStatement", line: 1, column: 9, messageId: "missing", @@ -181,7 +176,6 @@ ruleTester.run("block-spacing", rule, { output: "{ foo(); }", errors: [ { - type: "BlockStatement", line: 1, column: 1, messageId: "missing", @@ -194,7 +188,6 @@ ruleTester.run("block-spacing", rule, { output: "{\nfoo(); }", errors: [ { - type: "BlockStatement", line: 2, column: 7, messageId: "missing", @@ -207,7 +200,6 @@ ruleTester.run("block-spacing", rule, { output: "{ foo();\n}", errors: [ { - type: "BlockStatement", line: 1, column: 1, messageId: "missing", @@ -220,14 +212,12 @@ ruleTester.run("block-spacing", rule, { output: "if (a) { foo(); }", errors: [ { - type: "BlockStatement", line: 1, column: 8, messageId: "missing", data: { location: "after", token: "{" }, }, { - type: "BlockStatement", line: 1, column: 15, messageId: "missing", @@ -240,14 +230,12 @@ ruleTester.run("block-spacing", rule, { output: "if (a) {} else { foo(); }", errors: [ { - type: "BlockStatement", line: 1, column: 16, messageId: "missing", data: { location: "after", token: "{" }, }, { - type: "BlockStatement", line: 1, column: 23, messageId: "missing", @@ -260,14 +248,12 @@ ruleTester.run("block-spacing", rule, { output: "switch (a) { case 0: foo(); }", errors: [ { - type: "SwitchStatement", line: 1, column: 12, messageId: "missing", data: { location: "after", token: "{" }, }, { - type: "SwitchStatement", line: 1, column: 27, messageId: "missing", @@ -280,14 +266,12 @@ ruleTester.run("block-spacing", rule, { output: "while (a) { foo(); }", errors: [ { - type: "BlockStatement", line: 1, column: 11, messageId: "missing", data: { location: "after", token: "{" }, }, { - type: "BlockStatement", line: 1, column: 18, messageId: "missing", @@ -300,14 +284,12 @@ ruleTester.run("block-spacing", rule, { output: "do { foo(); } while (a);", errors: [ { - type: "BlockStatement", line: 1, column: 4, messageId: "missing", data: { location: "after", token: "{" }, }, { - type: "BlockStatement", line: 1, column: 11, messageId: "missing", @@ -320,14 +302,12 @@ ruleTester.run("block-spacing", rule, { output: "for (;;) { foo(); }", errors: [ { - type: "BlockStatement", line: 1, column: 10, messageId: "missing", data: { location: "after", token: "{" }, }, { - type: "BlockStatement", line: 1, column: 17, messageId: "missing", @@ -340,14 +320,12 @@ ruleTester.run("block-spacing", rule, { output: "for (var a in b) { foo(); }", errors: [ { - type: "BlockStatement", line: 1, column: 18, messageId: "missing", data: { location: "after", token: "{" }, }, { - type: "BlockStatement", line: 1, column: 25, messageId: "missing", @@ -361,14 +339,12 @@ ruleTester.run("block-spacing", rule, { languageOptions: { ecmaVersion: 6 }, errors: [ { - type: "BlockStatement", line: 1, column: 18, messageId: "missing", data: { location: "after", token: "{" }, }, { - type: "BlockStatement", line: 1, column: 25, messageId: "missing", @@ -381,7 +357,6 @@ ruleTester.run("block-spacing", rule, { output: "try { foo(); } catch (e) { foo(); } finally { foo(); }", errors: [ { - type: "BlockStatement", messageId: "missing", data: { location: "after", token: "{" }, line: 1, @@ -390,7 +365,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 6, }, { - type: "BlockStatement", messageId: "missing", data: { location: "before", token: "}" }, line: 1, @@ -399,7 +373,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 13, }, { - type: "BlockStatement", messageId: "missing", data: { location: "after", token: "{" }, line: 1, @@ -408,7 +381,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 25, }, { - type: "BlockStatement", messageId: "missing", data: { location: "before", token: "}" }, line: 1, @@ -417,7 +389,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 32, }, { - type: "BlockStatement", messageId: "missing", data: { location: "after", token: "{" }, line: 1, @@ -426,7 +397,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 42, }, { - type: "BlockStatement", messageId: "missing", data: { location: "before", token: "}" }, line: 1, @@ -441,14 +411,12 @@ ruleTester.run("block-spacing", rule, { output: "function foo() { bar(); }", errors: [ { - type: "BlockStatement", line: 1, column: 16, messageId: "missing", data: { location: "after", token: "{" }, }, { - type: "BlockStatement", line: 1, column: 23, messageId: "missing", @@ -461,14 +429,12 @@ ruleTester.run("block-spacing", rule, { output: "(function() { bar(); });", errors: [ { - type: "BlockStatement", line: 1, column: 13, messageId: "missing", data: { location: "after", token: "{" }, }, { - type: "BlockStatement", line: 1, column: 20, messageId: "missing", @@ -482,14 +448,12 @@ ruleTester.run("block-spacing", rule, { languageOptions: { ecmaVersion: 6 }, errors: [ { - type: "BlockStatement", line: 1, column: 8, messageId: "missing", data: { location: "after", token: "{" }, }, { - type: "BlockStatement", line: 1, column: 15, messageId: "missing", @@ -503,14 +467,12 @@ ruleTester.run("block-spacing", rule, { languageOptions: { ecmaVersion: 6 }, errors: [ { - type: "BlockStatement", line: 1, column: 8, messageId: "missing", data: { location: "after", token: "{" }, }, { - type: "BlockStatement", line: 1, column: 43, messageId: "missing", @@ -524,7 +486,6 @@ ruleTester.run("block-spacing", rule, { languageOptions: { ecmaVersion: 6 }, errors: [ { - type: "BlockStatement", messageId: "missing", data: { location: "after", @@ -545,7 +506,6 @@ ruleTester.run("block-spacing", rule, { languageOptions: { ecmaVersion: 2022 }, errors: [ { - type: "StaticBlock", messageId: "missing", data: { location: "after", @@ -564,7 +524,6 @@ ruleTester.run("block-spacing", rule, { languageOptions: { ecmaVersion: 2022 }, errors: [ { - type: "StaticBlock", messageId: "missing", data: { location: "before", @@ -583,7 +542,6 @@ ruleTester.run("block-spacing", rule, { languageOptions: { ecmaVersion: 2022 }, errors: [ { - type: "StaticBlock", messageId: "missing", data: { location: "after", @@ -595,7 +553,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 19, }, { - type: "StaticBlock", messageId: "missing", data: { location: "before", @@ -614,7 +571,6 @@ ruleTester.run("block-spacing", rule, { languageOptions: { ecmaVersion: 2022 }, errors: [ { - type: "StaticBlock", messageId: "missing", data: { location: "after", @@ -626,7 +582,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 19, }, { - type: "StaticBlock", messageId: "missing", data: { location: "before", @@ -645,7 +600,6 @@ ruleTester.run("block-spacing", rule, { languageOptions: { ecmaVersion: 2022 }, errors: [ { - type: "StaticBlock", messageId: "missing", data: { location: "after", @@ -657,7 +611,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 19, }, { - type: "StaticBlock", messageId: "missing", data: { location: "before", @@ -676,7 +629,6 @@ ruleTester.run("block-spacing", rule, { languageOptions: { ecmaVersion: 2022 }, errors: [ { - type: "StaticBlock", messageId: "missing", data: { location: "after", @@ -688,7 +640,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 10, }, { - type: "StaticBlock", messageId: "missing", data: { location: "before", @@ -710,7 +661,6 @@ ruleTester.run("block-spacing", rule, { options: ["never"], errors: [ { - type: "BlockStatement", messageId: "extra", data: { location: "after", token: "{" }, line: 1, @@ -719,7 +669,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 3, }, { - type: "BlockStatement", messageId: "extra", data: { location: "before", token: "}" }, line: 1, @@ -735,7 +684,6 @@ ruleTester.run("block-spacing", rule, { options: ["never"], errors: [ { - type: "BlockStatement", messageId: "extra", data: { location: "after", @@ -754,7 +702,6 @@ ruleTester.run("block-spacing", rule, { options: ["never"], errors: [ { - type: "BlockStatement", messageId: "extra", data: { location: "before", @@ -773,7 +720,6 @@ ruleTester.run("block-spacing", rule, { options: ["never"], errors: [ { - type: "BlockStatement", messageId: "extra", data: { location: "before", @@ -792,7 +738,6 @@ ruleTester.run("block-spacing", rule, { options: ["never"], errors: [ { - type: "BlockStatement", messageId: "extra", data: { location: "after", @@ -811,7 +756,6 @@ ruleTester.run("block-spacing", rule, { options: ["never"], errors: [ { - type: "BlockStatement", messageId: "extra", data: { location: "after", token: "{" }, line: 1, @@ -820,7 +764,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 10, }, { - type: "BlockStatement", messageId: "extra", data: { location: "before", token: "}" }, line: 1, @@ -836,7 +779,6 @@ ruleTester.run("block-spacing", rule, { options: ["never"], errors: [ { - type: "BlockStatement", messageId: "extra", data: { location: "after", token: "{" }, line: 1, @@ -845,7 +787,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 18, }, { - type: "BlockStatement", messageId: "extra", data: { location: "before", token: "}" }, line: 1, @@ -861,7 +802,6 @@ ruleTester.run("block-spacing", rule, { options: ["never"], errors: [ { - type: "SwitchStatement", messageId: "extra", data: { location: "after", token: "{" }, line: 1, @@ -870,7 +810,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 14, }, { - type: "SwitchStatement", messageId: "extra", data: { location: "before", token: "}" }, line: 1, @@ -886,7 +825,6 @@ ruleTester.run("block-spacing", rule, { options: ["never"], errors: [ { - type: "BlockStatement", messageId: "extra", data: { location: "after", token: "{" }, line: 1, @@ -895,7 +833,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 13, }, { - type: "BlockStatement", messageId: "extra", data: { location: "before", token: "}" }, line: 1, @@ -911,7 +848,6 @@ ruleTester.run("block-spacing", rule, { options: ["never"], errors: [ { - type: "BlockStatement", messageId: "extra", data: { location: "after", token: "{" }, line: 1, @@ -920,7 +856,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 6, }, { - type: "BlockStatement", messageId: "extra", data: { location: "before", token: "}" }, line: 1, @@ -936,7 +871,6 @@ ruleTester.run("block-spacing", rule, { options: ["never"], errors: [ { - type: "BlockStatement", messageId: "extra", data: { location: "after", token: "{" }, line: 1, @@ -945,7 +879,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 12, }, { - type: "BlockStatement", messageId: "extra", data: { location: "before", token: "}" }, line: 1, @@ -961,7 +894,6 @@ ruleTester.run("block-spacing", rule, { options: ["never"], errors: [ { - type: "BlockStatement", messageId: "extra", data: { location: "after", token: "{" }, line: 1, @@ -970,7 +902,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 20, }, { - type: "BlockStatement", messageId: "extra", data: { location: "before", token: "}" }, line: 1, @@ -987,7 +918,6 @@ ruleTester.run("block-spacing", rule, { languageOptions: { ecmaVersion: 6 }, errors: [ { - type: "BlockStatement", messageId: "extra", data: { location: "after", token: "{" }, line: 1, @@ -996,7 +926,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 20, }, { - type: "BlockStatement", messageId: "extra", data: { location: "before", token: "}" }, line: 1, @@ -1012,7 +941,6 @@ ruleTester.run("block-spacing", rule, { options: ["never"], errors: [ { - type: "BlockStatement", messageId: "extra", data: { location: "after", token: "{" }, line: 1, @@ -1021,7 +949,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 7, }, { - type: "BlockStatement", messageId: "extra", data: { location: "before", token: "}" }, line: 1, @@ -1030,7 +957,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 14, }, { - type: "BlockStatement", messageId: "extra", data: { location: "after", token: "{" }, line: 1, @@ -1039,7 +965,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 28, }, { - type: "BlockStatement", line: 1, column: 34, messageId: "extra", @@ -1048,7 +973,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 35, }, { - type: "BlockStatement", messageId: "extra", data: { location: "after", token: "{" }, line: 1, @@ -1057,7 +981,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 47, }, { - type: "BlockStatement", messageId: "extra", data: { location: "before", token: "}" }, line: 1, @@ -1073,7 +996,6 @@ ruleTester.run("block-spacing", rule, { options: ["never"], errors: [ { - type: "BlockStatement", messageId: "extra", data: { location: "after", token: "{" }, line: 1, @@ -1082,7 +1004,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 18, }, { - type: "BlockStatement", messageId: "extra", data: { location: "before", token: "}" }, line: 1, @@ -1098,7 +1019,6 @@ ruleTester.run("block-spacing", rule, { options: ["never"], errors: [ { - type: "BlockStatement", messageId: "extra", data: { location: "after", token: "{" }, line: 1, @@ -1107,7 +1027,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 15, }, { - type: "BlockStatement", messageId: "extra", data: { location: "before", token: "}" }, line: 1, @@ -1124,7 +1043,6 @@ ruleTester.run("block-spacing", rule, { languageOptions: { ecmaVersion: 6 }, errors: [ { - type: "BlockStatement", messageId: "extra", data: { location: "after", token: "{" }, line: 1, @@ -1133,7 +1051,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 10, }, { - type: "BlockStatement", messageId: "extra", data: { location: "before", token: "}" }, line: 1, @@ -1149,7 +1066,6 @@ ruleTester.run("block-spacing", rule, { options: ["never"], errors: [ { - type: "BlockStatement", messageId: "extra", data: { location: "after", token: "{" }, line: 1, @@ -1158,7 +1074,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 10, }, { - type: "BlockStatement", messageId: "extra", data: { location: "before", token: "}" }, line: 1, @@ -1175,7 +1090,6 @@ ruleTester.run("block-spacing", rule, { languageOptions: { ecmaVersion: 6 }, errors: [ { - type: "BlockStatement", messageId: "extra", data: { location: "after", token: "{" }, line: 1, @@ -1192,7 +1106,6 @@ ruleTester.run("block-spacing", rule, { languageOptions: { ecmaVersion: 6 }, errors: [ { - type: "BlockStatement", messageId: "extra", data: { location: "before", token: "}" }, line: 1, @@ -1209,7 +1122,6 @@ ruleTester.run("block-spacing", rule, { languageOptions: { ecmaVersion: 6 }, errors: [ { - type: "BlockStatement", messageId: "extra", data: { location: "after", token: "{" }, line: 1, @@ -1218,7 +1130,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 12, }, { - type: "BlockStatement", messageId: "extra", data: { location: "before", token: "}" }, line: 1, @@ -1237,7 +1148,6 @@ ruleTester.run("block-spacing", rule, { languageOptions: { ecmaVersion: 2022 }, errors: [ { - type: "StaticBlock", messageId: "extra", data: { location: "after", @@ -1257,7 +1167,6 @@ ruleTester.run("block-spacing", rule, { languageOptions: { ecmaVersion: 2022 }, errors: [ { - type: "StaticBlock", messageId: "extra", data: { location: "before", @@ -1277,7 +1186,6 @@ ruleTester.run("block-spacing", rule, { languageOptions: { ecmaVersion: 2022 }, errors: [ { - type: "StaticBlock", messageId: "extra", data: { location: "after", @@ -1289,7 +1197,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 20, }, { - type: "StaticBlock", messageId: "extra", data: { location: "before", @@ -1309,7 +1216,6 @@ ruleTester.run("block-spacing", rule, { languageOptions: { ecmaVersion: 2022 }, errors: [ { - type: "StaticBlock", messageId: "extra", data: { location: "after", @@ -1321,7 +1227,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 20, }, { - type: "StaticBlock", messageId: "extra", data: { location: "before", @@ -1341,7 +1246,6 @@ ruleTester.run("block-spacing", rule, { languageOptions: { ecmaVersion: 2022 }, errors: [ { - type: "StaticBlock", messageId: "extra", data: { location: "after", @@ -1353,7 +1257,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 20, }, { - type: "StaticBlock", messageId: "extra", data: { location: "before", @@ -1373,7 +1276,6 @@ ruleTester.run("block-spacing", rule, { languageOptions: { ecmaVersion: 2022 }, errors: [ { - type: "StaticBlock", messageId: "extra", data: { location: "after", @@ -1385,7 +1287,6 @@ ruleTester.run("block-spacing", rule, { endColumn: 5, }, { - type: "StaticBlock", messageId: "extra", data: { location: "before", diff --git a/tests/lib/rules/brace-style.js b/tests/lib/rules/brace-style.js index 8e5e39c4ac0f..f1b50c662261 100644 --- a/tests/lib/rules/brace-style.js +++ b/tests/lib/rules/brace-style.js @@ -403,174 +403,285 @@ ruleTester.run("brace-style", rule, { { code: "if (f) {\nbar;\n}\nelse\nbaz;", output: "if (f) {\nbar;\n} else\nbaz;", - errors: [{ messageId: "nextLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "nextLineClose", + }, + ], }, { code: "var foo = () => { return; }", output: "var foo = () => {\n return; \n}", languageOptions: { ecmaVersion: 6 }, errors: [ - { messageId: "blockSameLine", type: "Punctuator" }, - { messageId: "singleLineClose", type: "Punctuator" }, + { + messageId: "blockSameLine", + }, + { + messageId: "singleLineClose", + }, ], }, { code: "function foo() { return; }", output: "function foo() {\n return; \n}", errors: [ - { messageId: "blockSameLine", type: "Punctuator" }, - { messageId: "singleLineClose", type: "Punctuator" }, + { + messageId: "blockSameLine", + }, + { + messageId: "singleLineClose", + }, ], }, { code: "function foo() \n { \n return; }", output: "function foo() { \n return; \n}", errors: [ - { messageId: "nextLineOpen", type: "Punctuator" }, - { messageId: "singleLineClose", type: "Punctuator" }, + { + messageId: "nextLineOpen", + }, + { + messageId: "singleLineClose", + }, ], }, { code: "!function foo() \n { \n return; }", output: "!function foo() { \n return; \n}", errors: [ - { messageId: "nextLineOpen", type: "Punctuator" }, - { messageId: "singleLineClose", type: "Punctuator" }, + { + messageId: "nextLineOpen", + }, + { + messageId: "singleLineClose", + }, ], }, { code: "if (foo) \n { \n bar(); }", output: "if (foo) { \n bar(); \n}", errors: [ - { messageId: "nextLineOpen", type: "Punctuator" }, - { messageId: "singleLineClose", type: "Punctuator" }, + { + messageId: "nextLineOpen", + }, + { + messageId: "singleLineClose", + }, ], }, { code: "if (a) { \nb();\n } else \n { c(); }", output: "if (a) { \nb();\n } else {\n c(); \n}", errors: [ - { messageId: "nextLineOpen", type: "Punctuator" }, - { messageId: "blockSameLine", type: "Punctuator" }, - { messageId: "singleLineClose", type: "Punctuator" }, + { + messageId: "nextLineOpen", + }, + { + messageId: "blockSameLine", + }, + { + messageId: "singleLineClose", + }, ], }, { code: "while (foo) \n { \n bar(); }", output: "while (foo) { \n bar(); \n}", errors: [ - { messageId: "nextLineOpen", type: "Punctuator" }, - { messageId: "singleLineClose", type: "Punctuator" }, + { + messageId: "nextLineOpen", + }, + { + messageId: "singleLineClose", + }, ], }, { code: "for (;;) \n { \n bar(); }", output: "for (;;) { \n bar(); \n}", errors: [ - { messageId: "nextLineOpen", type: "Punctuator" }, - { messageId: "singleLineClose", type: "Punctuator" }, + { + messageId: "nextLineOpen", + }, + { + messageId: "singleLineClose", + }, ], }, { code: "with (foo) \n { \n bar(); }", output: "with (foo) { \n bar(); \n}", errors: [ - { messageId: "nextLineOpen", type: "Punctuator" }, - { messageId: "singleLineClose", type: "Punctuator" }, + { + messageId: "nextLineOpen", + }, + { + messageId: "singleLineClose", + }, ], }, { code: 'switch (foo) \n { \n case "bar": break; }', output: 'switch (foo) { \n case "bar": break; \n}', errors: [ - { messageId: "nextLineOpen", type: "Punctuator" }, - { messageId: "singleLineClose", type: "Punctuator" }, + { + messageId: "nextLineOpen", + }, + { + messageId: "singleLineClose", + }, ], }, { code: "switch (foo) \n { }", output: "switch (foo) { }", - errors: [{ messageId: "nextLineOpen", type: "Punctuator" }], + errors: [ + { + messageId: "nextLineOpen", + }, + ], }, { code: "try \n { \n bar(); \n } catch (e) {}", output: "try { \n bar(); \n } catch (e) {}", - errors: [{ messageId: "nextLineOpen", type: "Punctuator" }], + errors: [ + { + messageId: "nextLineOpen", + }, + ], }, { code: "try { \n bar(); \n } catch (e) \n {}", output: "try { \n bar(); \n } catch (e) {}", - errors: [{ messageId: "nextLineOpen", type: "Punctuator" }], + errors: [ + { + messageId: "nextLineOpen", + }, + ], }, { code: "do \n { \n bar(); \n} while (true)", output: "do { \n bar(); \n} while (true)", - errors: [{ messageId: "nextLineOpen", type: "Punctuator" }], + errors: [ + { + messageId: "nextLineOpen", + }, + ], }, { code: "for (foo in bar) \n { \n baz(); \n }", output: "for (foo in bar) { \n baz(); \n }", - errors: [{ messageId: "nextLineOpen", type: "Punctuator" }], + errors: [ + { + messageId: "nextLineOpen", + }, + ], }, { code: "for (foo of bar) \n { \n baz(); \n }", output: "for (foo of bar) { \n baz(); \n }", languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "nextLineOpen", type: "Punctuator" }], + errors: [ + { + messageId: "nextLineOpen", + }, + ], }, { code: "try { \n bar(); \n }\ncatch (e) {\n}", output: "try { \n bar(); \n } catch (e) {\n}", - errors: [{ messageId: "nextLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "nextLineClose", + }, + ], }, { code: "try { \n bar(); \n } catch (e) {\n}\n finally {\n}", output: "try { \n bar(); \n } catch (e) {\n} finally {\n}", - errors: [{ messageId: "nextLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "nextLineClose", + }, + ], }, { code: "if (a) { \nb();\n } \n else { \nc();\n }", output: "if (a) { \nb();\n } else { \nc();\n }", - errors: [{ messageId: "nextLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "nextLineClose", + }, + ], }, { code: "try { \n bar(); \n }\ncatch (e) {\n} finally {\n}", output: "try { \n bar(); \n }\ncatch (e) {\n}\n finally {\n}", options: ["stroustrup"], - errors: [{ messageId: "sameLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "sameLineClose", + }, + ], }, { code: "try { \n bar(); \n } catch (e) {\n}\n finally {\n}", output: "try { \n bar(); \n }\n catch (e) {\n}\n finally {\n}", options: ["stroustrup"], - errors: [{ messageId: "sameLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "sameLineClose", + }, + ], }, { code: "if (a) { \nb();\n } else { \nc();\n }", output: "if (a) { \nb();\n }\n else { \nc();\n }", options: ["stroustrup"], - errors: [{ messageId: "sameLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "sameLineClose", + }, + ], }, { code: "if (foo) {\nbaz();\n} else if (bar) {\nbaz();\n}\nelse {\nqux();\n}", output: "if (foo) {\nbaz();\n}\n else if (bar) {\nbaz();\n}\nelse {\nqux();\n}", options: ["stroustrup"], - errors: [{ messageId: "sameLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "sameLineClose", + }, + ], }, { code: "if (foo) {\npoop();\n} \nelse if (bar) {\nbaz();\n} else if (thing) {\nboom();\n}\nelse {\nqux();\n}", output: "if (foo) {\npoop();\n} \nelse if (bar) {\nbaz();\n}\n else if (thing) {\nboom();\n}\nelse {\nqux();\n}", options: ["stroustrup"], - errors: [{ messageId: "sameLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "sameLineClose", + }, + ], }, { code: "try { \n bar(); \n }\n catch (e) {\n}\n finally {\n}", output: "try \n{ \n bar(); \n }\n catch (e) \n{\n}\n finally \n{\n}", options: ["allman"], errors: [ - { messageId: "sameLineOpen", type: "Punctuator", line: 1 }, - { messageId: "sameLineOpen", type: "Punctuator", line: 4 }, - { messageId: "sameLineOpen", type: "Punctuator", line: 6 }, + { + messageId: "sameLineOpen", + line: 1, + }, + { + messageId: "sameLineOpen", + line: 4, + }, + { + messageId: "sameLineOpen", + line: 6, + }, ], }, { @@ -578,9 +689,18 @@ ruleTester.run("brace-style", rule, { output: "switch(x) \n{\n case 1: \nbar(); \n}\n ", options: ["allman"], errors: [ - { messageId: "sameLineOpen", type: "Punctuator", line: 1 }, - { messageId: "blockSameLine", type: "Punctuator", line: 1 }, - { messageId: "singleLineClose", type: "Punctuator", line: 2 }, + { + messageId: "sameLineOpen", + line: 1, + }, + { + messageId: "blockSameLine", + line: 1, + }, + { + messageId: "singleLineClose", + line: 2, + }, ], }, { @@ -588,9 +708,15 @@ ruleTester.run("brace-style", rule, { output: "if (a) \n{ \nb();\n }\n else \n{ \nc();\n }", options: ["allman"], errors: [ - { messageId: "sameLineOpen", type: "Punctuator" }, - { messageId: "sameLineClose", type: "Punctuator" }, - { messageId: "sameLineOpen", type: "Punctuator" }, + { + messageId: "sameLineOpen", + }, + { + messageId: "sameLineClose", + }, + { + messageId: "sameLineOpen", + }, ], }, { @@ -598,10 +724,18 @@ ruleTester.run("brace-style", rule, { output: "if (foo) \n{\nbaz();\n}\n else if (bar) \n{\nbaz();\n}\nelse \n{\nqux();\n}", options: ["allman"], errors: [ - { messageId: "sameLineOpen", type: "Punctuator" }, - { messageId: "sameLineClose", type: "Punctuator" }, - { messageId: "sameLineOpen", type: "Punctuator" }, - { messageId: "sameLineOpen", type: "Punctuator" }, + { + messageId: "sameLineOpen", + }, + { + messageId: "sameLineClose", + }, + { + messageId: "sameLineOpen", + }, + { + messageId: "sameLineOpen", + }, ], }, { @@ -609,24 +743,42 @@ ruleTester.run("brace-style", rule, { output: "if (foo)\n{\n poop();\n} \nelse if (bar) \n{\nbaz();\n}\n else if (thing) \n{\nboom();\n}\nelse \n{\nqux();\n}", options: ["allman"], errors: [ - { messageId: "blockSameLine", type: "Punctuator" }, - { messageId: "sameLineOpen", type: "Punctuator" }, - { messageId: "sameLineClose", type: "Punctuator" }, - { messageId: "sameLineOpen", type: "Punctuator" }, - { messageId: "sameLineOpen", type: "Punctuator" }, + { + messageId: "blockSameLine", + }, + { + messageId: "sameLineOpen", + }, + { + messageId: "sameLineClose", + }, + { + messageId: "sameLineOpen", + }, + { + messageId: "sameLineOpen", + }, ], }, { code: "if (foo)\n{\n bar(); }", output: "if (foo)\n{\n bar(); \n}", options: ["allman"], - errors: [{ messageId: "singleLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "singleLineClose", + }, + ], }, { code: "try\n{\n somethingRisky();\n} catch (e)\n{\n handleError()\n}", output: "try\n{\n somethingRisky();\n}\n catch (e)\n{\n handleError()\n}", options: ["allman"], - errors: [{ messageId: "sameLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "sameLineClose", + }, + ], }, // allowSingleLine: true @@ -634,153 +786,255 @@ ruleTester.run("brace-style", rule, { code: "function foo() { return; \n}", output: "function foo() {\n return; \n}", options: ["1tbs", { allowSingleLine: true }], - errors: [{ messageId: "blockSameLine", type: "Punctuator" }], + errors: [ + { + messageId: "blockSameLine", + }, + ], }, { code: "function foo() { a(); b(); return; \n}", output: "function foo() {\n a(); b(); return; \n}", options: ["1tbs", { allowSingleLine: true }], - errors: [{ messageId: "blockSameLine", type: "Punctuator" }], + errors: [ + { + messageId: "blockSameLine", + }, + ], }, { code: "function foo() { \n return; }", output: "function foo() { \n return; \n}", options: ["1tbs", { allowSingleLine: true }], - errors: [{ messageId: "singleLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "singleLineClose", + }, + ], }, { code: "function foo() {\na();\nb();\nreturn; }", output: "function foo() {\na();\nb();\nreturn; \n}", options: ["1tbs", { allowSingleLine: true }], - errors: [{ messageId: "singleLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "singleLineClose", + }, + ], }, { code: "!function foo() { \n return; }", output: "!function foo() { \n return; \n}", options: ["1tbs", { allowSingleLine: true }], - errors: [{ messageId: "singleLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "singleLineClose", + }, + ], }, { code: "if (a) { b();\n } else { c(); }", output: "if (a) {\n b();\n } else { c(); }", options: ["1tbs", { allowSingleLine: true }], - errors: [{ messageId: "blockSameLine", type: "Punctuator" }], + errors: [ + { + messageId: "blockSameLine", + }, + ], }, { code: "if (a) { b(); }\nelse { c(); }", output: "if (a) { b(); } else { c(); }", options: ["1tbs", { allowSingleLine: true }], - errors: [{ messageId: "nextLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "nextLineClose", + }, + ], }, { code: "while (foo) { \n bar(); }", output: "while (foo) { \n bar(); \n}", options: ["1tbs", { allowSingleLine: true }], - errors: [{ messageId: "singleLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "singleLineClose", + }, + ], }, { code: "for (;;) { bar(); \n }", output: "for (;;) {\n bar(); \n }", options: ["1tbs", { allowSingleLine: true }], - errors: [{ messageId: "blockSameLine", type: "Punctuator" }], + errors: [ + { + messageId: "blockSameLine", + }, + ], }, { code: "with (foo) { bar(); \n }", output: "with (foo) {\n bar(); \n }", options: ["1tbs", { allowSingleLine: true }], - errors: [{ messageId: "blockSameLine", type: "Punctuator" }], + errors: [ + { + messageId: "blockSameLine", + }, + ], }, { code: 'switch (foo) \n { \n case "bar": break; }', output: 'switch (foo) { \n case "bar": break; \n}', options: ["1tbs", { allowSingleLine: true }], errors: [ - { messageId: "nextLineOpen", type: "Punctuator" }, - { messageId: "singleLineClose", type: "Punctuator" }, + { + messageId: "nextLineOpen", + }, + { + messageId: "singleLineClose", + }, ], }, { code: "switch (foo) \n { }", output: "switch (foo) { }", options: ["1tbs", { allowSingleLine: true }], - errors: [{ messageId: "nextLineOpen", type: "Punctuator" }], + errors: [ + { + messageId: "nextLineOpen", + }, + ], }, { code: "try { bar(); }\ncatch (e) { baz(); }", output: "try { bar(); } catch (e) { baz(); }", options: ["1tbs", { allowSingleLine: true }], - errors: [{ messageId: "nextLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "nextLineClose", + }, + ], }, { code: "try \n { \n bar(); \n } catch (e) {}", output: "try { \n bar(); \n } catch (e) {}", options: ["1tbs", { allowSingleLine: true }], - errors: [{ messageId: "nextLineOpen", type: "Punctuator" }], + errors: [ + { + messageId: "nextLineOpen", + }, + ], }, { code: "try { \n bar(); \n } catch (e) \n {}", output: "try { \n bar(); \n } catch (e) {}", options: ["1tbs", { allowSingleLine: true }], - errors: [{ messageId: "nextLineOpen", type: "Punctuator" }], + errors: [ + { + messageId: "nextLineOpen", + }, + ], }, { code: "do \n { \n bar(); \n} while (true)", output: "do { \n bar(); \n} while (true)", options: ["1tbs", { allowSingleLine: true }], - errors: [{ messageId: "nextLineOpen", type: "Punctuator" }], + errors: [ + { + messageId: "nextLineOpen", + }, + ], }, { code: "for (foo in bar) \n { \n baz(); \n }", output: "for (foo in bar) { \n baz(); \n }", options: ["1tbs", { allowSingleLine: true }], - errors: [{ messageId: "nextLineOpen", type: "Punctuator" }], + errors: [ + { + messageId: "nextLineOpen", + }, + ], }, { code: "try { \n bar(); \n }\ncatch (e) {\n}", output: "try { \n bar(); \n } catch (e) {\n}", options: ["1tbs", { allowSingleLine: true }], - errors: [{ messageId: "nextLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "nextLineClose", + }, + ], }, { code: "try { \n bar(); \n } catch (e) {\n}\n finally {\n}", output: "try { \n bar(); \n } catch (e) {\n} finally {\n}", options: ["1tbs", { allowSingleLine: true }], - errors: [{ messageId: "nextLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "nextLineClose", + }, + ], }, { code: "if (a) { \nb();\n } \n else { \nc();\n }", output: "if (a) { \nb();\n } else { \nc();\n }", options: ["1tbs", { allowSingleLine: true }], - errors: [{ messageId: "nextLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "nextLineClose", + }, + ], }, { code: "try { \n bar(); \n }\ncatch (e) {\n} finally {\n}", output: "try { \n bar(); \n }\ncatch (e) {\n}\n finally {\n}", options: ["stroustrup", { allowSingleLine: true }], - errors: [{ messageId: "sameLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "sameLineClose", + }, + ], }, { code: "try { \n bar(); \n } catch (e) {\n}\n finally {\n}", output: "try { \n bar(); \n }\n catch (e) {\n}\n finally {\n}", options: ["stroustrup", { allowSingleLine: true }], - errors: [{ messageId: "sameLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "sameLineClose", + }, + ], }, { code: "if (a) { \nb();\n } else { \nc();\n }", output: "if (a) { \nb();\n }\n else { \nc();\n }", options: ["stroustrup", { allowSingleLine: true }], - errors: [{ messageId: "sameLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "sameLineClose", + }, + ], }, { code: "if (foo)\n{ poop();\n} \nelse if (bar) {\nbaz();\n} else if (thing) {\nboom();\n}\nelse {\nqux();\n}", output: "if (foo)\n{\n poop();\n} \nelse if (bar) \n{\nbaz();\n}\n else if (thing) \n{\nboom();\n}\nelse \n{\nqux();\n}", options: ["allman", { allowSingleLine: true }], errors: [ - { messageId: "blockSameLine", type: "Punctuator" }, - { messageId: "sameLineOpen", type: "Punctuator" }, - { messageId: "sameLineClose", type: "Punctuator" }, - { messageId: "sameLineOpen", type: "Punctuator" }, - { messageId: "sameLineOpen", type: "Punctuator" }, + { + messageId: "blockSameLine", + }, + { + messageId: "sameLineOpen", + }, + { + messageId: "sameLineClose", + }, + { + messageId: "sameLineOpen", + }, + { + messageId: "sameLineOpen", + }, ], }, @@ -788,28 +1042,44 @@ ruleTester.run("brace-style", rule, { { code: "if (foo) // comment \n{\nbar();\n}", output: null, - errors: [{ messageId: "nextLineOpen", type: "Punctuator" }], + errors: [ + { + messageId: "nextLineOpen", + }, + ], }, // https://github.com/eslint/eslint/issues/7493 { code: "if (foo) {\n bar\n.baz }", output: "if (foo) {\n bar\n.baz \n}", - errors: [{ messageId: "singleLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "singleLineClose", + }, + ], }, { code: "if (foo)\n{\n bar\n.baz }", output: "if (foo)\n{\n bar\n.baz \n}", options: ["allman"], - errors: [{ messageId: "singleLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "singleLineClose", + }, + ], }, { code: "if (foo) { bar\n.baz }", output: "if (foo) {\n bar\n.baz \n}", options: ["1tbs", { allowSingleLine: true }], errors: [ - { messageId: "blockSameLine", type: "Punctuator" }, - { messageId: "singleLineClose", type: "Punctuator" }, + { + messageId: "blockSameLine", + }, + { + messageId: "singleLineClose", + }, ], }, { @@ -817,54 +1087,92 @@ ruleTester.run("brace-style", rule, { output: "if (foo) \n{\n bar\n.baz \n}", options: ["allman", { allowSingleLine: true }], errors: [ - { messageId: "sameLineOpen", type: "Punctuator" }, - { messageId: "blockSameLine", type: "Punctuator" }, - { messageId: "singleLineClose", type: "Punctuator" }, + { + messageId: "sameLineOpen", + }, + { + messageId: "blockSameLine", + }, + { + messageId: "singleLineClose", + }, ], }, { code: "switch (x) {\n case 1: foo() }", output: "switch (x) {\n case 1: foo() \n}", options: ["1tbs", { allowSingleLine: true }], - errors: [{ messageId: "singleLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "singleLineClose", + }, + ], }, { code: "class Foo\n{\n}", output: "class Foo {\n}", - errors: [{ messageId: "nextLineOpen", type: "Punctuator" }], + errors: [ + { + messageId: "nextLineOpen", + }, + ], }, { code: "(class\n{\n})", output: "(class {\n})", - errors: [{ messageId: "nextLineOpen", type: "Punctuator" }], + errors: [ + { + messageId: "nextLineOpen", + }, + ], }, { code: "class Foo{\n}", output: "class Foo\n{\n}", options: ["allman"], - errors: [{ messageId: "sameLineOpen", type: "Punctuator" }], + errors: [ + { + messageId: "sameLineOpen", + }, + ], }, { code: "(class {\n})", output: "(class \n{\n})", options: ["allman"], - errors: [{ messageId: "sameLineOpen", type: "Punctuator" }], + errors: [ + { + messageId: "sameLineOpen", + }, + ], }, { code: "class Foo {\nbar() {\n}}", output: "class Foo {\nbar() {\n}\n}", - errors: [{ messageId: "singleLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "singleLineClose", + }, + ], }, { code: "(class Foo {\nbar() {\n}})", output: "(class Foo {\nbar() {\n}\n})", - errors: [{ messageId: "singleLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "singleLineClose", + }, + ], }, { code: "class\nFoo{}", output: "class\nFoo\n{}", options: ["allman"], - errors: [{ messageId: "sameLineOpen", type: "Punctuator" }], + errors: [ + { + messageId: "sameLineOpen", + }, + ], }, // https://github.com/eslint/eslint/issues/7621 @@ -886,8 +1194,12 @@ ruleTester.run("brace-style", rule, { } `, errors: [ - { messageId: "nextLineOpen", type: "Punctuator" }, - { messageId: "nextLineClose", type: "Punctuator" }, + { + messageId: "nextLineOpen", + }, + { + messageId: "nextLineClose", + }, ], }, @@ -916,7 +1228,11 @@ ruleTester.run("brace-style", rule, { `, options: ["1tbs"], languageOptions: { ecmaVersion: 2022 }, - errors: [{ messageId: "nextLineOpen", type: "Punctuator" }], + errors: [ + { + messageId: "nextLineOpen", + }, + ], }, { code: unIndent` @@ -934,7 +1250,11 @@ ruleTester.run("brace-style", rule, { `, options: ["1tbs"], languageOptions: { ecmaVersion: 2022 }, - errors: [{ messageId: "blockSameLine", type: "Punctuator" }], + errors: [ + { + messageId: "blockSameLine", + }, + ], }, { code: unIndent` @@ -952,7 +1272,11 @@ ruleTester.run("brace-style", rule, { `, options: ["1tbs"], languageOptions: { ecmaVersion: 2022 }, - errors: [{ messageId: "singleLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "singleLineClose", + }, + ], }, { code: unIndent` @@ -971,9 +1295,15 @@ ruleTester.run("brace-style", rule, { options: ["1tbs"], languageOptions: { ecmaVersion: 2022 }, errors: [ - { messageId: "nextLineOpen", type: "Punctuator" }, - { messageId: "blockSameLine", type: "Punctuator" }, - { messageId: "singleLineClose", type: "Punctuator" }, + { + messageId: "nextLineOpen", + }, + { + messageId: "blockSameLine", + }, + { + messageId: "singleLineClose", + }, ], }, { @@ -990,7 +1320,11 @@ ruleTester.run("brace-style", rule, { `, options: ["1tbs"], languageOptions: { ecmaVersion: 2022 }, - errors: [{ messageId: "nextLineOpen", type: "Punctuator" }], + errors: [ + { + messageId: "nextLineOpen", + }, + ], }, { code: unIndent` @@ -1010,7 +1344,11 @@ ruleTester.run("brace-style", rule, { `, options: ["stroustrup"], languageOptions: { ecmaVersion: 2022 }, - errors: [{ messageId: "nextLineOpen", type: "Punctuator" }], + errors: [ + { + messageId: "nextLineOpen", + }, + ], }, { code: unIndent` @@ -1028,7 +1366,11 @@ ruleTester.run("brace-style", rule, { `, options: ["stroustrup"], languageOptions: { ecmaVersion: 2022 }, - errors: [{ messageId: "blockSameLine", type: "Punctuator" }], + errors: [ + { + messageId: "blockSameLine", + }, + ], }, { code: unIndent` @@ -1046,7 +1388,11 @@ ruleTester.run("brace-style", rule, { `, options: ["stroustrup"], languageOptions: { ecmaVersion: 2022 }, - errors: [{ messageId: "singleLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "singleLineClose", + }, + ], }, { code: unIndent` @@ -1065,9 +1411,15 @@ ruleTester.run("brace-style", rule, { options: ["stroustrup"], languageOptions: { ecmaVersion: 2022 }, errors: [ - { messageId: "nextLineOpen", type: "Punctuator" }, - { messageId: "blockSameLine", type: "Punctuator" }, - { messageId: "singleLineClose", type: "Punctuator" }, + { + messageId: "nextLineOpen", + }, + { + messageId: "blockSameLine", + }, + { + messageId: "singleLineClose", + }, ], }, { @@ -1084,7 +1436,11 @@ ruleTester.run("brace-style", rule, { `, options: ["stroustrup"], languageOptions: { ecmaVersion: 2022 }, - errors: [{ messageId: "nextLineOpen", type: "Punctuator" }], + errors: [ + { + messageId: "nextLineOpen", + }, + ], }, { code: unIndent` @@ -1106,7 +1462,11 @@ ruleTester.run("brace-style", rule, { `, options: ["allman"], languageOptions: { ecmaVersion: 2022 }, - errors: [{ messageId: "sameLineOpen", type: "Punctuator" }], + errors: [ + { + messageId: "sameLineOpen", + }, + ], }, { code: unIndent` @@ -1128,7 +1488,11 @@ ruleTester.run("brace-style", rule, { `, options: ["allman"], languageOptions: { ecmaVersion: 2022 }, - errors: [{ messageId: "blockSameLine", type: "Punctuator" }], + errors: [ + { + messageId: "blockSameLine", + }, + ], }, { code: unIndent` @@ -1150,7 +1514,11 @@ ruleTester.run("brace-style", rule, { `, options: ["allman"], languageOptions: { ecmaVersion: 2022 }, - errors: [{ messageId: "singleLineClose", type: "Punctuator" }], + errors: [ + { + messageId: "singleLineClose", + }, + ], }, { code: unIndent` @@ -1171,9 +1539,15 @@ ruleTester.run("brace-style", rule, { options: ["allman"], languageOptions: { ecmaVersion: 2022 }, errors: [ - { messageId: "sameLineOpen", type: "Punctuator" }, - { messageId: "blockSameLine", type: "Punctuator" }, - { messageId: "singleLineClose", type: "Punctuator" }, + { + messageId: "sameLineOpen", + }, + { + messageId: "blockSameLine", + }, + { + messageId: "singleLineClose", + }, ], }, { @@ -1192,7 +1566,11 @@ ruleTester.run("brace-style", rule, { `, options: ["allman"], languageOptions: { ecmaVersion: 2022 }, - errors: [{ messageId: "sameLineOpen", type: "Punctuator" }], + errors: [ + { + messageId: "sameLineOpen", + }, + ], }, ], }); diff --git a/tests/lib/rules/callback-return.js b/tests/lib/rules/callback-return.js index fc18a2a0b8ca..86de79f34b1e 100644 --- a/tests/lib/rules/callback-return.js +++ b/tests/lib/rules/callback-return.js @@ -159,7 +159,6 @@ ruleTester.run("callback-return", rule, { messageId: "missingReturn", line: 1, column: 30, - type: "CallExpression", }, ], }, @@ -170,7 +169,6 @@ ruleTester.run("callback-return", rule, { messageId: "missingReturn", line: 1, column: 63, - type: "CallExpression", }, ], }, @@ -181,7 +179,6 @@ ruleTester.run("callback-return", rule, { messageId: "missingReturn", line: 1, column: 61, - type: "CallExpression", }, ], }, @@ -192,7 +189,6 @@ ruleTester.run("callback-return", rule, { messageId: "missingReturn", line: 1, column: 35, - type: "CallExpression", }, ], }, @@ -204,7 +200,6 @@ ruleTester.run("callback-return", rule, { messageId: "missingReturn", line: 1, column: 31, - type: "CallExpression", }, ], }, @@ -216,7 +211,6 @@ ruleTester.run("callback-return", rule, { messageId: "missingReturn", line: 1, column: 31, - type: "CallExpression", }, ], }, @@ -227,7 +221,6 @@ ruleTester.run("callback-return", rule, { messageId: "missingReturn", line: 3, column: 2, - type: "CallExpression", }, ], }, @@ -239,7 +232,6 @@ ruleTester.run("callback-return", rule, { messageId: "missingReturn", line: 1, column: 43, - type: "CallExpression", }, ], }, @@ -250,7 +242,6 @@ ruleTester.run("callback-return", rule, { messageId: "missingReturn", line: 1, column: 19, - type: "CallExpression", }, ], }, @@ -261,7 +252,6 @@ ruleTester.run("callback-return", rule, { messageId: "missingReturn", line: 1, column: 19, - type: "CallExpression", }, ], }, @@ -272,7 +262,6 @@ ruleTester.run("callback-return", rule, { messageId: "missingReturn", line: 1, column: 30, - type: "CallExpression", }, ], }, @@ -284,7 +273,6 @@ ruleTester.run("callback-return", rule, { messageId: "missingReturn", line: 1, column: 20, - type: "CallExpression", }, ], }, @@ -295,7 +283,6 @@ ruleTester.run("callback-return", rule, { messageId: "missingReturn", line: 1, column: 30, - type: "CallExpression", }, ], }, @@ -306,7 +293,6 @@ ruleTester.run("callback-return", rule, { messageId: "missingReturn", line: 3, column: 1, - type: "CallExpression", }, ], }, @@ -318,7 +304,6 @@ ruleTester.run("callback-return", rule, { messageId: "missingReturn", line: 1, column: 32, - type: "CallExpression", }, ], }, @@ -331,13 +316,11 @@ ruleTester.run("callback-return", rule, { messageId: "missingReturn", line: 1, column: 30, - type: "CallExpression", }, { messageId: "missingReturn", line: 1, column: 50, - type: "CallExpression", }, ], }, @@ -348,7 +331,6 @@ ruleTester.run("callback-return", rule, { messageId: "missingReturn", line: 1, column: 52, - type: "CallExpression", }, ], }, @@ -360,7 +342,6 @@ ruleTester.run("callback-return", rule, { messageId: "missingReturn", line: 1, column: 18, - type: "CallExpression", }, ], }, @@ -371,7 +352,6 @@ ruleTester.run("callback-return", rule, { messageId: "missingReturn", line: 1, column: 42, - type: "CallExpression", }, ], }, @@ -383,7 +363,6 @@ ruleTester.run("callback-return", rule, { messageId: "missingReturn", line: 1, column: 42, - type: "CallExpression", }, ], }, @@ -397,7 +376,6 @@ ruleTester.run("callback-return", rule, { messageId: "missingReturn", line: 1, column: 33, - type: "CallExpression", }, ], }, @@ -409,7 +387,6 @@ ruleTester.run("callback-return", rule, { messageId: "missingReturn", line: 1, column: 47, - type: "CallExpression", }, ], }, @@ -421,7 +398,6 @@ ruleTester.run("callback-return", rule, { messageId: "missingReturn", line: 1, column: 51, - type: "CallExpression", }, ], }, @@ -433,7 +409,6 @@ ruleTester.run("callback-return", rule, { messageId: "missingReturn", line: 1, column: 30, - type: "CallExpression", }, ], }, @@ -445,7 +420,6 @@ ruleTester.run("callback-return", rule, { messageId: "missingReturn", line: 1, column: 30, - type: "CallExpression", }, ], }, @@ -457,7 +431,6 @@ ruleTester.run("callback-return", rule, { messageId: "missingReturn", line: 1, column: 30, - type: "CallExpression", }, ], }, @@ -469,7 +442,6 @@ ruleTester.run("callback-return", rule, { messageId: "missingReturn", line: 1, column: 41, - type: "CallExpression", }, ], }, @@ -481,7 +453,6 @@ ruleTester.run("callback-return", rule, { messageId: "missingReturn", line: 2, column: 1, - type: "CallExpression", }, ], }, @@ -493,7 +464,6 @@ ruleTester.run("callback-return", rule, { messageId: "missingReturn", line: 1, column: 30, - type: "CallExpression", }, ], }, @@ -505,7 +475,6 @@ ruleTester.run("callback-return", rule, { messageId: "missingReturn", line: 1, column: 30, - type: "CallExpression", }, ], }, diff --git a/tests/lib/rules/camelcase.js b/tests/lib/rules/camelcase.js index ba0edbceb66b..8b7d8230e0f6 100644 --- a/tests/lib/rules/camelcase.js +++ b/tests/lib/rules/camelcase.js @@ -584,7 +584,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "first_name" }, - type: "Identifier", }, ], }, @@ -594,7 +593,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "__private_first_name" }, - type: "Identifier", }, ], }, @@ -604,7 +602,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "foo_bar" }, - type: "Identifier", }, ], }, @@ -614,7 +611,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "foo_bar" }, - type: "Identifier", }, ], }, @@ -624,7 +620,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "bar_baz" }, - type: "Identifier", }, ], }, @@ -634,7 +629,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "foo_bar" }, - type: "Identifier", }, ], }, @@ -644,7 +638,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "foo_bar" }, - type: "Identifier", }, ], }, @@ -654,7 +647,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "bar_baz" }, - type: "Identifier", }, ], }, @@ -664,7 +656,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "bar_baz" }, - type: "Identifier", }, ], }, @@ -675,7 +666,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "bar_baz" }, - type: "Identifier", }, ], }, @@ -685,7 +675,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "boom_pow" }, - type: "Identifier", }, ], }, @@ -696,7 +685,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "bar_baz" }, - type: "Identifier", }, ], }, @@ -707,7 +695,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "a_b" }, - type: "Identifier", }, ], }, @@ -718,7 +705,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "category_alias" }, - type: "Identifier", }, ], }, @@ -730,7 +716,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "category_alias" }, - type: "Identifier", }, ], }, @@ -742,7 +727,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "category_id" }, - type: "Identifier", }, ], }, @@ -753,7 +737,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "category_id" }, - type: "Identifier", }, ], }, @@ -765,7 +748,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "other_props" }, - type: "Identifier", }, ], }, @@ -776,7 +758,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "category_id" }, - type: "Identifier", }, ], }, @@ -787,7 +768,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "category_id" }, - type: "Identifier", }, ], }, @@ -798,7 +778,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "category_id" }, - type: "Identifier", }, ], }, @@ -809,7 +788,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "no_camelcased" }, - type: "Identifier", }, ], }, @@ -820,7 +798,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "no_camelcased" }, - type: "Identifier", }, ], }, @@ -831,7 +808,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "no_camelcased" }, - type: "Identifier", }, ], }, @@ -842,7 +818,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "no_camel_cased" }, - type: "Identifier", }, ], }, @@ -853,7 +828,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "no_camel_cased" }, - type: "Identifier", }, ], }, @@ -864,7 +838,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "snake_cased" }, - type: "Identifier", }, ], }, @@ -876,7 +849,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "another_snake_cased" }, - type: "Identifier", }, ], }, @@ -887,7 +859,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "no_camelcased" }, - type: "Identifier", }, ], }, @@ -898,7 +869,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "another_no_camelcased" }, - type: "Identifier", }, ], }, @@ -909,7 +879,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "no_camelcased" }, - type: "Identifier", }, ], }, @@ -920,7 +889,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "no_camelcased" }, - type: "Identifier", }, ], }, @@ -932,7 +900,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "snake_cased" }, - type: "Identifier", }, ], }, @@ -944,7 +911,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "snake_cased" }, - type: "Identifier", }, ], }, @@ -956,7 +922,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "snake_cased" }, - type: "Identifier", }, ], }, @@ -968,7 +933,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "snake_cased" }, - type: "Identifier", }, ], }, @@ -980,7 +944,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "snake_cased" }, - type: "Identifier", }, ], }, @@ -992,7 +955,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "a_global_variable" }, - type: "Identifier", }, ], }, @@ -1004,7 +966,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "a_global_variable" }, - type: "Identifier", }, ], }, @@ -1015,7 +976,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "snake_cased" }, - type: "Identifier", }, ], }, @@ -1027,7 +987,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "snake_cased" }, - type: "Identifier", }, ], }, @@ -1039,7 +998,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "a_global_variable" }, - type: "Identifier", }, ], }, @@ -1051,7 +1009,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "a_global_variable" }, - type: "Identifier", }, ], }, @@ -1063,7 +1020,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "a_global_variable" }, - type: "Identifier", column: 13, }, ], @@ -1082,7 +1038,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "a_global_variable" }, - type: "Identifier", }, ], }, @@ -1100,7 +1055,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "a_global_variable" }, - type: "Identifier", }, ], }, @@ -1117,7 +1071,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "a_global_variable" }, - type: "Identifier", }, ], }, @@ -1135,13 +1088,11 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "a_global_variable" }, - type: "Identifier", column: 16, }, { messageId: "notCamelCase", data: { name: "a_global_variable" }, - type: "Identifier", column: 35, }, ], @@ -1160,13 +1111,11 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "a_global_variable" }, - type: "Identifier", column: 14, }, { messageId: "notCamelCase", data: { name: "a_global_variable" }, - type: "Identifier", column: 41, }, ], @@ -1179,7 +1128,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "a_global_variable" }, - type: "Identifier", }, ], }, @@ -1191,7 +1139,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "a_global_variable" }, - type: "Identifier", }, ], }, @@ -1209,13 +1156,11 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "a_global_variable" }, - type: "Identifier", column: 7, }, { messageId: "notCamelCase", data: { name: "a_global_variable" }, - type: "Identifier", column: 38, }, ], @@ -1234,13 +1179,11 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "a_global_variable" }, - type: "Identifier", column: 7, }, { messageId: "notCamelCase", data: { name: "a_global_variable" }, - type: "Identifier", column: 30, }, ], @@ -1259,7 +1202,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "a_global_variable" }, - type: "Identifier", }, ], }, @@ -1270,7 +1212,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "undefined_variable" }, - type: "Identifier", }, ], }, @@ -1281,7 +1222,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "implicit_global" }, - type: "Identifier", }, ], }, @@ -1292,7 +1232,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "snake_cased" }, - type: "Identifier", }, ], }, @@ -1303,7 +1242,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "no_camelcased" }, - type: "Identifier", }, ], }, @@ -1314,7 +1252,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "no_camelcased" }, - type: "Identifier", }, ], }, @@ -1325,12 +1262,10 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "no_camelcased" }, - type: "Identifier", }, { messageId: "notCamelCase", data: { name: "camelcased_value" }, - type: "Identifier", }, ], }, @@ -1341,7 +1276,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "no_camelcased" }, - type: "Identifier", }, ], }, @@ -1352,7 +1286,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "my_default" }, - type: "Identifier", }, ], }, @@ -1363,7 +1296,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "no_camelcased" }, - type: "Identifier", }, ], }, @@ -1374,7 +1306,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "bar_baz" }, - type: "Identifier", }, ], }, @@ -1385,7 +1316,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "no_camelcased" }, - type: "Identifier", }, ], }, @@ -1396,7 +1326,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "no_camelcased" }, - type: "Identifier", }, ], }, @@ -1407,7 +1336,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "not_ignored_foo" }, - type: "Identifier", }, ], }, @@ -1418,7 +1346,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "not_ignored_foo" }, - type: "Identifier", }, ], }, @@ -1430,7 +1357,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "computed_bar" }, - type: "Identifier", }, ], }, @@ -1441,7 +1367,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "fo_o" }, - type: "Identifier", }, ], }, @@ -1453,7 +1378,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "fo_o" }, - type: "Identifier", }, ], }, @@ -1464,7 +1388,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "b_ar" }, - type: "Identifier", }, ], }, @@ -1475,7 +1398,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "fo_o" }, - type: "Identifier", }, ], }, @@ -1486,7 +1408,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "b_ar" }, - type: "Identifier", }, ], }, @@ -1497,7 +1418,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "fo_o" }, - type: "Identifier", }, ], }, @@ -1509,7 +1429,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "fo_o" }, - type: "Identifier", }, ], }, @@ -1521,7 +1440,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "fo_o" }, - type: "Identifier", }, ], }, @@ -1532,7 +1450,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "fo_o" }, - type: "Identifier", }, ], }, @@ -1543,7 +1460,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "fo_o" }, - type: "Identifier", }, ], }, @@ -1554,7 +1470,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "ba_r" }, - type: "Identifier", }, ], }, @@ -1565,7 +1480,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "fo_o" }, - type: "Identifier", }, ], }, @@ -1576,7 +1490,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "ba_r" }, - type: "Identifier", }, ], }, @@ -1587,7 +1500,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "fo_o" }, - type: "Identifier", }, ], }, @@ -1729,7 +1641,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "my_type" }, - type: "Identifier", }, ], }, @@ -1746,7 +1657,6 @@ ruleTester.run("camelcase", rule, { { messageId: "notCamelCase", data: { name: "my_json" }, - type: "Identifier", }, ], }, diff --git a/tests/lib/rules/class-methods-use-this.js b/tests/lib/rules/class-methods-use-this.js index 3574e1bfc637..669c550378a4 100644 --- a/tests/lib/rules/class-methods-use-this.js +++ b/tests/lib/rules/class-methods-use-this.js @@ -122,7 +122,6 @@ ruleTester.run("class-methods-use-this", rule, { languageOptions: { ecmaVersion: 6 }, errors: [ { - type: "FunctionExpression", line: 1, column: 11, messageId: "missingThis", @@ -135,7 +134,6 @@ ruleTester.run("class-methods-use-this", rule, { languageOptions: { ecmaVersion: 6 }, errors: [ { - type: "FunctionExpression", line: 1, column: 11, messageId: "missingThis", @@ -148,7 +146,6 @@ ruleTester.run("class-methods-use-this", rule, { languageOptions: { ecmaVersion: 6 }, errors: [ { - type: "FunctionExpression", line: 1, column: 11, messageId: "missingThis", @@ -161,7 +158,6 @@ ruleTester.run("class-methods-use-this", rule, { languageOptions: { ecmaVersion: 6 }, errors: [ { - type: "FunctionExpression", line: 1, column: 11, messageId: "missingThis", @@ -174,7 +170,6 @@ ruleTester.run("class-methods-use-this", rule, { languageOptions: { ecmaVersion: 6 }, errors: [ { - type: "FunctionExpression", line: 1, column: 11, messageId: "missingThis", @@ -187,7 +182,6 @@ ruleTester.run("class-methods-use-this", rule, { languageOptions: { ecmaVersion: 6 }, errors: [ { - type: "FunctionExpression", line: 1, column: 11, messageId: "missingThis", @@ -200,7 +194,6 @@ ruleTester.run("class-methods-use-this", rule, { languageOptions: { ecmaVersion: 6 }, errors: [ { - type: "FunctionExpression", line: 1, column: 11, messageId: "missingThis", @@ -214,7 +207,6 @@ ruleTester.run("class-methods-use-this", rule, { languageOptions: { ecmaVersion: 6 }, errors: [ { - type: "FunctionExpression", line: 1, column: 11, messageId: "missingThis", @@ -228,7 +220,6 @@ ruleTester.run("class-methods-use-this", rule, { languageOptions: { ecmaVersion: 6 }, errors: [ { - type: "FunctionExpression", line: 1, column: 20, messageId: "missingThis", @@ -242,7 +233,6 @@ ruleTester.run("class-methods-use-this", rule, { languageOptions: { ecmaVersion: 6 }, errors: [ { - type: "FunctionExpression", line: 1, column: 11, messageId: "missingThis", @@ -256,14 +246,12 @@ ruleTester.run("class-methods-use-this", rule, { languageOptions: { ecmaVersion: 2022 }, errors: [ { - type: "FunctionExpression", line: 1, column: 22, messageId: "missingThis", data: { name: "method 'foo'" }, }, { - type: "FunctionExpression", line: 1, column: 31, messageId: "missingThis", @@ -278,55 +266,46 @@ ruleTester.run("class-methods-use-this", rule, { { messageId: "missingThis", data: { name: "method 'foo'" }, - type: "FunctionExpression", column: 11, }, { messageId: "missingThis", data: { name: "method 'bar'" }, - type: "FunctionExpression", column: 19, }, { messageId: "missingThis", data: { name: "method '123'" }, - type: "FunctionExpression", column: 29, }, { messageId: "missingThis", data: { name: "method 'baz'" }, - type: "FunctionExpression", column: 37, }, { messageId: "missingThis", data: { name: "method" }, - type: "FunctionExpression", column: 49, }, { messageId: "missingThis", data: { name: "method" }, - type: "FunctionExpression", column: 57, }, { messageId: "missingThis", data: { name: "getter 'quux'" }, - type: "FunctionExpression", column: 68, }, { messageId: "missingThis", data: { name: "setter" }, - type: "FunctionExpression", column: 81, }, { messageId: "missingThis", data: { name: "generator method 'quuux'" }, - type: "FunctionExpression", column: 93, }, ], diff --git a/tests/lib/rules/comma-dangle.js b/tests/lib/rules/comma-dangle.js index b2282f040ff3..91baca3ca544 100644 --- a/tests/lib/rules/comma-dangle.js +++ b/tests/lib/rules/comma-dangle.js @@ -639,7 +639,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "unexpected", - type: "Property", line: 1, column: 23, endColumn: 24, @@ -652,7 +651,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "unexpected", - type: "Property", line: 2, column: 11, endColumn: 12, @@ -665,7 +663,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "unexpected", - type: "Property", line: 1, column: 30, }, @@ -677,7 +674,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "unexpected", - type: "Property", line: 3, column: 12, }, @@ -689,7 +685,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "unexpected", - type: "Literal", line: 1, column: 18, }, @@ -701,7 +696,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "unexpected", - type: "Literal", line: 1, column: 18, }, @@ -713,7 +707,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "unexpected", - type: "Property", line: 3, column: 1, }, @@ -727,7 +720,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "unexpected", - type: "Property", line: 1, column: 23, }, @@ -740,7 +732,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "unexpected", - type: "Property", line: 1, column: 23, }, @@ -753,7 +744,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "unexpected", - type: "Property", line: 2, column: 11, }, @@ -766,7 +756,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "unexpected", - type: "Property", line: 1, column: 30, }, @@ -779,7 +768,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "unexpected", - type: "Property", line: 1, column: 30, }, @@ -793,7 +781,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "missing", - type: "Property", line: 1, column: 23, endLine: 1, @@ -808,7 +795,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "missing", - type: "Property", line: 2, column: 11, endLine: 3, @@ -823,7 +809,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "missing", - type: "Property", line: 2, column: 11, endLine: 3, @@ -838,7 +823,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "missing", - type: "Property", line: 1, column: 30, endLine: 1, @@ -853,7 +837,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "missing", - type: "Property", line: 3, column: 12, endLine: 4, @@ -868,7 +851,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "missing", - type: "Literal", line: 1, column: 18, }, @@ -881,7 +863,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "missing", - type: "Literal", line: 1, column: 17, endColumn: 18, @@ -895,7 +876,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "missing", - type: "Literal", line: 1, column: 18, }, @@ -908,7 +888,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "missing", - type: "Property", line: 3, column: 6, }, @@ -922,7 +901,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "missing", - type: "Property", line: 2, column: 11, }, @@ -947,7 +925,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "missing", - type: "Identifier", line: 5, column: 4, }, @@ -972,7 +949,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "missing", - type: "Property", line: 5, column: 4, }, @@ -998,7 +974,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "missing", - type: "ConditionalExpression", line: 5, column: 4, }, @@ -1011,7 +986,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "unexpected", - type: "Property", line: 1, column: 23, }, @@ -1024,7 +998,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "missing", - type: "Property", line: 3, column: 12, }, @@ -1037,7 +1010,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "unexpected", - type: "Property", line: 1, column: 30, }, @@ -1050,7 +1022,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "missing", - type: "Literal", line: 2, column: 6, }, @@ -1063,7 +1034,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "unexpected", - type: "Literal", line: 1, column: 17, }, @@ -1076,7 +1046,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "unexpected", - type: "Literal", line: 1, column: 17, }, @@ -1089,7 +1058,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "unexpected", - type: "Property", line: 3, column: 2, }, @@ -1102,7 +1070,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "unexpected", - type: "Property", line: 2, column: 11, }, @@ -1115,7 +1082,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "unexpected", - type: "Property", line: 2, column: 11, }, @@ -1128,7 +1094,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "unexpected", - type: "ObjectExpression", line: 6, column: 2, }, @@ -1142,7 +1107,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "unexpected", - type: "Property", line: 1, column: 11, }, @@ -1156,7 +1120,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "unexpected", - type: "Property", line: 1, column: 11, }, @@ -1170,7 +1133,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "unexpected", - type: "Identifier", line: 1, column: 11, }, @@ -1184,7 +1146,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "unexpected", - type: "Identifier", line: 1, column: 11, }, @@ -1197,7 +1158,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "unexpected", - type: "Literal", line: 1, column: 5, }, @@ -1210,7 +1170,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "unexpected", - type: "Literal", line: 1, column: 5, }, @@ -1223,7 +1182,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "unexpected", - type: "Property", line: 1, column: 19, }, @@ -1236,7 +1194,6 @@ ruleTester.run("comma-dangle", rule, { errors: [ { messageId: "unexpected", - type: "Property", line: 1, column: 19, }, @@ -1249,91 +1206,143 @@ ruleTester.run("comma-dangle", rule, { output: "import {foo,} from 'foo';", options: ["always"], languageOptions: { ecmaVersion: 6, sourceType: "module" }, - errors: [{ messageId: "missing", type: "ImportSpecifier" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "import foo, {abc} from 'foo';", output: "import foo, {abc,} from 'foo';", options: ["always"], languageOptions: { ecmaVersion: 6, sourceType: "module" }, - errors: [{ messageId: "missing", type: "ImportSpecifier" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "export {foo} from 'foo';", output: "export {foo,} from 'foo';", options: ["always"], languageOptions: { ecmaVersion: 6, sourceType: "module" }, - errors: [{ messageId: "missing", type: "ExportSpecifier" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "import {foo,} from 'foo';", output: "import {foo} from 'foo';", options: ["never"], languageOptions: { ecmaVersion: 6, sourceType: "module" }, - errors: [{ messageId: "unexpected", type: "ImportSpecifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "import {foo,} from 'foo';", output: "import {foo} from 'foo';", options: ["only-multiline"], languageOptions: { ecmaVersion: 6, sourceType: "module" }, - errors: [{ messageId: "unexpected", type: "ImportSpecifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "import foo, {abc,} from 'foo';", output: "import foo, {abc} from 'foo';", options: ["never"], languageOptions: { ecmaVersion: 6, sourceType: "module" }, - errors: [{ messageId: "unexpected", type: "ImportSpecifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "import foo, {abc,} from 'foo';", output: "import foo, {abc} from 'foo';", options: ["only-multiline"], languageOptions: { ecmaVersion: 6, sourceType: "module" }, - errors: [{ messageId: "unexpected", type: "ImportSpecifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "export {foo,} from 'foo';", output: "export {foo} from 'foo';", options: ["never"], languageOptions: { ecmaVersion: 6, sourceType: "module" }, - errors: [{ messageId: "unexpected", type: "ExportSpecifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "export {foo,} from 'foo';", output: "export {foo} from 'foo';", options: ["only-multiline"], languageOptions: { ecmaVersion: 6, sourceType: "module" }, - errors: [{ messageId: "unexpected", type: "ExportSpecifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "import {foo,} from 'foo';", output: "import {foo} from 'foo';", options: ["always-multiline"], languageOptions: { ecmaVersion: 6, sourceType: "module" }, - errors: [{ messageId: "unexpected", type: "ImportSpecifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "export {foo,} from 'foo';", output: "export {foo} from 'foo';", options: ["always-multiline"], languageOptions: { ecmaVersion: 6, sourceType: "module" }, - errors: [{ messageId: "unexpected", type: "ExportSpecifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "import {\n foo\n} from 'foo';", output: "import {\n foo,\n} from 'foo';", options: ["always-multiline"], languageOptions: { ecmaVersion: 6, sourceType: "module" }, - errors: [{ messageId: "missing", type: "ImportSpecifier" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "export {\n foo\n} from 'foo';", output: "export {\n foo,\n} from 'foo';", options: ["always-multiline"], languageOptions: { ecmaVersion: 6, sourceType: "module" }, - errors: [{ messageId: "missing", type: "ExportSpecifier" }], + errors: [ + { + messageId: "missing", + }, + ], }, // https://github.com/eslint/eslint/issues/6233 @@ -1341,19 +1350,31 @@ ruleTester.run("comma-dangle", rule, { code: "var foo = {a: (1)}", output: "var foo = {a: (1),}", options: ["always"], - errors: [{ messageId: "missing", type: "Property" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "var foo = [(1)]", output: "var foo = [(1),]", options: ["always"], - errors: [{ messageId: "missing", type: "Literal" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "var foo = [\n1,\n(2)\n]", output: "var foo = [\n1,\n(2),\n]", options: ["always-multiline"], - errors: [{ messageId: "missing", type: "Literal" }], + errors: [ + { + messageId: "missing", + }, + ], }, // trailing commas in functions @@ -1362,56 +1383,88 @@ ruleTester.run("comma-dangle", rule, { output: "function foo(a) {}", options: [{ functions: "never" }], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "(function foo(a,) {})", output: "(function foo(a) {})", options: [{ functions: "never" }], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "(a,) => a", output: "(a) => a", options: [{ functions: "never" }], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "(a,) => (a)", output: "(a) => (a)", options: [{ functions: "never" }], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "({foo(a,) {}})", output: "({foo(a) {}})", options: [{ functions: "never" }], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "class A {foo(a,) {}}", output: "class A {foo(a) {}}", options: [{ functions: "never" }], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "foo(a,)", output: "foo(a)", options: [{ functions: "never" }], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "foo(...a,)", output: "foo(...a)", options: [{ functions: "never" }], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "SpreadElement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { @@ -1419,56 +1472,88 @@ ruleTester.run("comma-dangle", rule, { output: "function foo(a,) {}", options: [{ functions: "always" }], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "missing", type: "Identifier" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "(function foo(a) {})", output: "(function foo(a,) {})", options: [{ functions: "always" }], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "missing", type: "Identifier" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "(a) => a", output: "(a,) => a", options: [{ functions: "always" }], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "missing", type: "Identifier" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "(a) => (a)", output: "(a,) => (a)", options: [{ functions: "always" }], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "missing", type: "Identifier" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "({foo(a) {}})", output: "({foo(a,) {}})", options: [{ functions: "always" }], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "missing", type: "Identifier" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "class A {foo(a) {}}", output: "class A {foo(a,) {}}", options: [{ functions: "always" }], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "missing", type: "Identifier" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "foo(a)", output: "foo(a,)", options: [{ functions: "always" }], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "missing", type: "Identifier" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "foo(...a)", output: "foo(...a,)", options: [{ functions: "always" }], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "missing", type: "SpreadElement" }], + errors: [ + { + messageId: "missing", + }, + ], }, { @@ -1476,49 +1561,77 @@ ruleTester.run("comma-dangle", rule, { output: "function foo(a) {}", options: [{ functions: "always-multiline" }], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "(function foo(a,) {})", output: "(function foo(a) {})", options: [{ functions: "always-multiline" }], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "foo(a,)", output: "foo(a)", options: [{ functions: "always-multiline" }], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "foo(...a,)", output: "foo(...a)", options: [{ functions: "always-multiline" }], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "SpreadElement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo(\na,\nb\n) {}", output: "function foo(\na,\nb,\n) {}", options: [{ functions: "always-multiline" }], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "missing", type: "Identifier" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "foo(\na,\nb\n)", output: "foo(\na,\nb,\n)", options: [{ functions: "always-multiline" }], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "missing", type: "Identifier" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "foo(\n...a,\n...b\n)", output: "foo(\n...a,\n...b,\n)", options: [{ functions: "always-multiline" }], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "missing", type: "SpreadElement" }], + errors: [ + { + messageId: "missing", + }, + ], }, { @@ -1526,84 +1639,132 @@ ruleTester.run("comma-dangle", rule, { output: "function foo(a) {}", options: [{ functions: "only-multiline" }], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "(function foo(a,) {})", output: "(function foo(a) {})", options: [{ functions: "only-multiline" }], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "foo(a,)", output: "foo(a)", options: [{ functions: "only-multiline" }], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "foo(...a,)", output: "foo(...a)", options: [{ functions: "only-multiline" }], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "SpreadElement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo(a,) {}", output: "function foo(a) {}", options: ["never"], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "(function foo(a,) {})", output: "(function foo(a) {})", options: ["never"], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "(a,) => a", output: "(a) => a", options: ["never"], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "(a,) => (a)", output: "(a) => (a)", options: ["never"], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "({foo(a,) {}})", output: "({foo(a) {}})", options: ["never"], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "class A {foo(a,) {}}", output: "class A {foo(a) {}}", options: ["never"], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "foo(a,)", output: "foo(a)", options: ["never"], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "foo(...a,)", output: "foo(...a)", options: ["never"], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "SpreadElement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { @@ -1611,28 +1772,44 @@ ruleTester.run("comma-dangle", rule, { output: "function foo(a,) {}", options: ["always"], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "missing", type: "Identifier" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "(function foo(a) {})", output: "(function foo(a,) {})", options: ["always"], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "missing", type: "Identifier" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "(a) => a", output: "(a,) => a", options: ["always"], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "missing", type: "Identifier" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "(a) => (a)", output: "(a,) => (a)", options: ["always"], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "missing", type: "Identifier" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "({foo(a) {}})", @@ -1640,8 +1817,12 @@ ruleTester.run("comma-dangle", rule, { options: ["always"], languageOptions: { ecmaVersion: 8 }, errors: [ - { messageId: "missing", type: "Identifier" }, - { messageId: "missing", type: "Property" }, + { + messageId: "missing", + }, + { + messageId: "missing", + }, ], }, { @@ -1649,21 +1830,33 @@ ruleTester.run("comma-dangle", rule, { output: "class A {foo(a,) {}}", options: ["always"], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "missing", type: "Identifier" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "foo(a)", output: "foo(a,)", options: ["always"], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "missing", type: "Identifier" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "foo(...a)", output: "foo(...a,)", options: ["always"], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "missing", type: "SpreadElement" }], + errors: [ + { + messageId: "missing", + }, + ], }, { @@ -1671,49 +1864,77 @@ ruleTester.run("comma-dangle", rule, { output: "function foo(a) {}", options: ["always-multiline"], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "(function foo(a,) {})", output: "(function foo(a) {})", options: ["always-multiline"], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "foo(a,)", output: "foo(a)", options: ["always-multiline"], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "foo(...a,)", output: "foo(...a)", options: ["always-multiline"], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "SpreadElement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo(\na,\nb\n) {}", output: "function foo(\na,\nb,\n) {}", options: ["always-multiline"], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "missing", type: "Identifier" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "foo(\na,\nb\n)", output: "foo(\na,\nb,\n)", options: ["always-multiline"], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "missing", type: "Identifier" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "foo(\n...a,\n...b\n)", output: "foo(\n...a,\n...b,\n)", options: ["always-multiline"], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "missing", type: "SpreadElement" }], + errors: [ + { + messageId: "missing", + }, + ], }, { @@ -1721,35 +1942,55 @@ ruleTester.run("comma-dangle", rule, { output: "function foo(a) {}", options: ["only-multiline"], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "(function foo(a,) {})", output: "(function foo(a) {})", options: ["only-multiline"], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "foo(a,)", output: "foo(a)", options: ["only-multiline"], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "foo(...a,)", output: "foo(...a)", options: ["only-multiline"], languageOptions: { ecmaVersion: 8 }, - errors: [{ messageId: "unexpected", type: "SpreadElement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo(a) {}", output: "function foo(a,) {}", options: ["always"], languageOptions: { ecmaVersion: 9 }, - errors: [{ messageId: "missing", type: "Identifier" }], + errors: [ + { + messageId: "missing", + }, + ], }, // separated options @@ -1995,7 +2236,6 @@ let d = 0;export {d,}; errors: [ { messageId: "missing", - type: "Identifier", line: 3, column: 3, }, @@ -2011,7 +2251,6 @@ let d = 0;export {d,}; errors: [ { messageId: "missing", - type: "Identifier", line: 3, column: 3, }, @@ -2027,7 +2266,6 @@ let d = 0;export {d,}; errors: [ { messageId: "missing", - type: "Identifier", line: 3, column: 3, }, @@ -2043,7 +2281,6 @@ let d = 0;export {d,}; errors: [ { messageId: "missing", - type: "Identifier", line: 3, column: 3, }, diff --git a/tests/lib/rules/comma-spacing.js b/tests/lib/rules/comma-spacing.js index 88bec7402d9f..27b46f6df94c 100644 --- a/tests/lib/rules/comma-spacing.js +++ b/tests/lib/rules/comma-spacing.js @@ -362,12 +362,10 @@ ruleTester.run("comma-spacing", rule, { { messageId: "missing", data: { loc: "before" }, - type: "Punctuator", }, { messageId: "missing", data: { loc: "after" }, - type: "Punctuator", }, ], }, @@ -379,12 +377,10 @@ ruleTester.run("comma-spacing", rule, { { messageId: "missing", data: { loc: "before" }, - type: "Punctuator", }, { messageId: "missing", data: { loc: "after" }, - type: "Punctuator", }, ], }, @@ -394,12 +390,10 @@ ruleTester.run("comma-spacing", rule, { errors: [ { message: "There should be no space before ','.", - type: "Punctuator", }, { messageId: "missing", data: { loc: "after" }, - type: "Punctuator", }, ], }, @@ -409,7 +403,6 @@ ruleTester.run("comma-spacing", rule, { errors: [ { message: "There should be no space before ','.", - type: "Punctuator", }, ], }, @@ -419,7 +412,6 @@ ruleTester.run("comma-spacing", rule, { errors: [ { message: "There should be no space before ','.", - type: "Punctuator", }, ], }, @@ -429,12 +421,10 @@ ruleTester.run("comma-spacing", rule, { errors: [ { message: "There should be no space before ','.", - type: "Punctuator", }, { messageId: "missing", data: { loc: "after" }, - type: "Punctuator", }, ], }, @@ -444,7 +434,6 @@ ruleTester.run("comma-spacing", rule, { errors: [ { message: "There should be no space before ','.", - type: "Punctuator", }, ], }, @@ -456,11 +445,9 @@ ruleTester.run("comma-spacing", rule, { { messageId: "missing", data: { loc: "before" }, - type: "Punctuator", }, { message: "There should be no space after ','.", - type: "Punctuator", }, ], }, @@ -471,7 +458,6 @@ ruleTester.run("comma-spacing", rule, { errors: [ { message: "There should be no space after ','.", - type: "Punctuator", }, ], }, @@ -483,7 +469,6 @@ ruleTester.run("comma-spacing", rule, { { messageId: "missing", data: { loc: "before" }, - type: "Punctuator", }, ], }, @@ -495,11 +480,9 @@ ruleTester.run("comma-spacing", rule, { { messageId: "missing", data: { loc: "before" }, - type: "Punctuator", }, { message: "There should be no space after ','.", - type: "Punctuator", }, ], }, @@ -511,7 +494,6 @@ ruleTester.run("comma-spacing", rule, { { messageId: "missing", data: { loc: "after" }, - type: "Punctuator", }, ], }, @@ -522,7 +504,6 @@ ruleTester.run("comma-spacing", rule, { errors: [ { message: "There should be no space before ','.", - type: "Punctuator", }, ], }, @@ -534,7 +515,6 @@ ruleTester.run("comma-spacing", rule, { { messageId: "missing", data: { loc: "after" }, - type: "Punctuator", }, ], }, @@ -546,12 +526,10 @@ ruleTester.run("comma-spacing", rule, { { messageId: "missing", data: { loc: "before" }, - type: "Punctuator", }, { messageId: "missing", data: { loc: "after" }, - type: "Punctuator", }, ], }, @@ -563,12 +541,10 @@ ruleTester.run("comma-spacing", rule, { { messageId: "missing", data: { loc: "before" }, - type: "Punctuator", }, { messageId: "missing", data: { loc: "after" }, - type: "Punctuator", }, ], }, @@ -579,11 +555,9 @@ ruleTester.run("comma-spacing", rule, { errors: [ { message: "There should be no space before ','.", - type: "Punctuator", }, { message: "There should be no space after ','.", - type: "Punctuator", }, ], }, @@ -594,12 +568,10 @@ ruleTester.run("comma-spacing", rule, { errors: [ { message: "There should be no space before ','.", - type: "Punctuator", }, { messageId: "missing", data: { loc: "after" }, - type: "Punctuator", }, ], }, @@ -611,12 +583,10 @@ ruleTester.run("comma-spacing", rule, { { messageId: "missing", data: { loc: "before" }, - type: "Punctuator", }, { messageId: "missing", data: { loc: "after" }, - type: "Punctuator", }, ], }, @@ -629,12 +599,10 @@ ruleTester.run("comma-spacing", rule, { { messageId: "missing", data: { loc: "before" }, - type: "Punctuator", }, { messageId: "missing", data: { loc: "after" }, - type: "Punctuator", }, ], }, @@ -647,12 +615,10 @@ ruleTester.run("comma-spacing", rule, { { messageId: "missing", data: { loc: "before" }, - type: "Punctuator", }, { messageId: "missing", data: { loc: "after" }, - type: "Punctuator", }, ], }, @@ -664,12 +630,10 @@ ruleTester.run("comma-spacing", rule, { errors: [ { message: "There should be no space before ','.", - type: "Punctuator", }, { messageId: "missing", data: { loc: "after" }, - type: "Punctuator", }, ], }, @@ -683,12 +647,10 @@ ruleTester.run("comma-spacing", rule, { errors: [ { message: "There should be no space before ','.", - type: "Punctuator", }, { messageId: "missing", data: { loc: "after" }, - type: "Punctuator", }, ], }, @@ -698,7 +660,6 @@ ruleTester.run("comma-spacing", rule, { errors: [ { message: "There should be no space before ','.", - type: "Punctuator", }, ], }, @@ -709,7 +670,6 @@ ruleTester.run("comma-spacing", rule, { { messageId: "missing", data: { loc: "after" }, - type: "Punctuator", }, ], }, @@ -720,7 +680,6 @@ ruleTester.run("comma-spacing", rule, { { messageId: "missing", data: { loc: "after" }, - type: "Punctuator", }, ], }, diff --git a/tests/lib/rules/comma-style.js b/tests/lib/rules/comma-style.js index 032392d33c5b..d6de4f265ce2 100644 --- a/tests/lib/rules/comma-style.js +++ b/tests/lib/rules/comma-style.js @@ -346,7 +346,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "expectedCommaLast", - type: "Property", }, ], }, @@ -356,7 +355,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "expectedCommaLast", - type: "Property", }, ], }, @@ -366,7 +364,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "unexpectedLineBeforeAndAfterComma", - type: "VariableDeclarator", }, ], }, @@ -376,7 +373,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "unexpectedLineBeforeAndAfterComma", - type: "VariableDeclarator", }, ], }, @@ -386,7 +382,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "unexpectedLineBeforeAndAfterComma", - type: "VariableDeclarator", }, ], }, @@ -409,7 +404,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "expectedCommaLast", - type: "VariableDeclarator", column: 1, endColumn: 2, }, @@ -421,7 +415,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "expectedCommaLast", - type: "Literal", }, ], }, @@ -431,7 +424,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "expectedCommaLast", - type: "Punctuator", }, ], }, @@ -441,7 +433,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "expectedCommaLast", - type: "Literal", }, ], }, @@ -451,7 +442,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "expectedCommaLast", - type: "Literal", }, ], }, @@ -472,7 +462,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "expectedCommaLast", - type: "Identifier", }, ], }, @@ -490,7 +479,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "expectedCommaLast", - type: "Literal", }, ], }, @@ -508,7 +496,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "expectedCommaLast", - type: "Identifier", }, ], }, @@ -530,7 +517,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "expectedCommaLast", - type: "Identifier", }, ], }, @@ -551,7 +537,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "expectedCommaLast", - type: "Identifier", }, ], }, @@ -572,7 +557,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "expectedCommaLast", - type: "Identifier", }, ], }, @@ -593,7 +577,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "expectedCommaLast", - type: "Identifier", }, ], }, @@ -615,7 +598,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "expectedCommaLast", - type: "ImportSpecifier", }, ], }, @@ -636,7 +618,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "expectedCommaLast", - type: "Property", }, ], }, @@ -647,7 +628,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "expectedCommaFirst", - type: "VariableDeclarator", column: 12, endColumn: 13, }, @@ -660,7 +640,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "expectedCommaFirst", - type: "Literal", }, ], }, @@ -671,7 +650,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "expectedCommaFirst", - type: "Literal", }, ], }, @@ -682,7 +660,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "expectedCommaFirst", - type: "Property", }, ], }, @@ -693,7 +670,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "expectedCommaFirst", - type: "Literal", }, ], }, @@ -704,7 +680,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "expectedCommaFirst", - type: "Property", }, ], }, @@ -715,7 +690,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "expectedCommaFirst", - type: "VariableDeclarator", }, ], }, @@ -726,7 +700,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "expectedCommaFirst", - type: "VariableDeclarator", }, ], }, @@ -737,7 +710,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "expectedCommaFirst", - type: "Property", }, ], }, @@ -748,7 +720,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "expectedCommaFirst", - type: "ObjectExpression", }, ], }, @@ -759,7 +730,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "expectedCommaFirst", - type: "Literal", }, ], }, @@ -770,7 +740,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "expectedCommaFirst", - type: "Property", }, ], }, @@ -793,7 +762,6 @@ ruleTester.run("comma-style", rule, { errors: [ { messageId: "unexpectedLineBeforeAndAfterComma", - type: "Identifier", column: 1, endColumn: 2, }, diff --git a/tests/lib/rules/computed-property-spacing.js b/tests/lib/rules/computed-property-spacing.js index cee13f18e497..b0321873746e 100644 --- a/tests/lib/rules/computed-property-spacing.js +++ b/tests/lib/rules/computed-property-spacing.js @@ -313,7 +313,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "MemberExpression", line: 1, column: 17, endLine: 1, @@ -329,7 +328,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "MemberExpression", line: 1, column: 14, endLine: 1, @@ -345,7 +343,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MemberExpression", line: 1, column: 15, endLine: 1, @@ -361,7 +358,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MemberExpression", line: 1, column: 16, endLine: 1, @@ -377,7 +373,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MemberExpression", line: 1, column: 5, endLine: 1, @@ -386,7 +381,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MemberExpression", line: 1, column: 9, endLine: 1, @@ -402,7 +396,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MemberExpression", line: 1, column: 8, endLine: 1, @@ -418,7 +411,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MemberExpression", line: 1, column: 5, endLine: 1, @@ -434,7 +426,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "MemberExpression", line: 1, column: 14, endLine: 1, @@ -443,7 +434,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "MemberExpression", line: 1, column: 16, endLine: 1, @@ -461,7 +451,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MemberExpression", line: 1, column: 5, endLine: 1, @@ -477,7 +466,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MemberExpression", line: 1, column: 5, endLine: 1, @@ -486,7 +474,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MemberExpression", line: 1, column: 10, endLine: 1, @@ -502,7 +489,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MemberExpression", line: 1, column: 5, endLine: 1, @@ -511,7 +497,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MemberExpression", line: 1, column: 11, endLine: 1, @@ -527,7 +512,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MemberExpression", line: 1, column: 5, endLine: 1, @@ -536,7 +520,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MemberExpression", line: 2, column: 6, endLine: 2, @@ -552,7 +535,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MemberExpression", line: 2, column: 5, endLine: 2, @@ -571,7 +553,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "Property", line: 1, column: 10, endLine: 1, @@ -580,7 +561,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "Property", line: 1, column: 12, endLine: 1, @@ -597,7 +577,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "Property", line: 1, column: 10, endLine: 1, @@ -614,7 +593,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "Property", line: 1, column: 13, endLine: 1, @@ -633,7 +611,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "Property", line: 1, column: 11, endLine: 1, @@ -642,7 +619,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "Property", line: 1, column: 13, endLine: 1, @@ -659,7 +635,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "Property", line: 1, column: 12, endLine: 1, @@ -676,7 +651,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "Property", line: 1, column: 11, endLine: 1, @@ -693,7 +667,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "Property", line: 1, column: 11, endLine: 1, @@ -711,7 +684,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 12, endLine: 1, @@ -720,7 +692,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 14, endLine: 1, @@ -737,7 +708,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 12, endLine: 1, @@ -746,7 +716,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 14, endLine: 1, @@ -755,7 +724,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 26, endLine: 1, @@ -764,7 +732,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 28, endLine: 1, @@ -773,7 +740,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 40, endLine: 1, @@ -782,7 +748,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 42, endLine: 1, @@ -791,7 +756,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 60, endLine: 1, @@ -800,7 +764,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 62, endLine: 1, @@ -809,7 +772,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 81, endLine: 1, @@ -818,7 +780,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 83, endLine: 1, @@ -827,7 +788,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 102, endLine: 1, @@ -836,7 +796,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 104, endLine: 1, @@ -853,7 +812,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 14, endLine: 1, @@ -862,7 +820,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 16, endLine: 1, @@ -871,7 +828,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 28, endLine: 1, @@ -880,7 +836,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 30, endLine: 1, @@ -889,7 +844,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 42, endLine: 1, @@ -898,7 +852,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 44, endLine: 1, @@ -907,7 +860,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 62, endLine: 1, @@ -916,7 +868,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 64, endLine: 1, @@ -925,7 +876,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 83, endLine: 1, @@ -934,7 +884,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 85, endLine: 1, @@ -943,7 +892,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 104, endLine: 1, @@ -952,7 +900,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 106, endLine: 1, @@ -969,7 +916,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 13, endLine: 1, @@ -978,7 +924,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 15, endLine: 1, @@ -995,7 +940,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 13, endLine: 1, @@ -1004,7 +948,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 15, endLine: 1, @@ -1013,7 +956,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 25, endLine: 1, @@ -1022,7 +964,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 27, endLine: 1, @@ -1031,7 +972,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 37, endLine: 1, @@ -1040,7 +980,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 39, endLine: 1, @@ -1049,7 +988,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 55, endLine: 1, @@ -1058,7 +996,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 57, endLine: 1, @@ -1067,7 +1004,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 74, endLine: 1, @@ -1076,7 +1012,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 76, endLine: 1, @@ -1085,7 +1020,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 93, endLine: 1, @@ -1094,7 +1028,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 95, endLine: 1, @@ -1111,7 +1044,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 11, endLine: 1, @@ -1120,7 +1052,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 13, endLine: 1, @@ -1129,7 +1060,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 23, endLine: 1, @@ -1138,7 +1068,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 25, endLine: 1, @@ -1147,7 +1076,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 35, endLine: 1, @@ -1156,7 +1084,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 37, endLine: 1, @@ -1165,7 +1092,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 53, endLine: 1, @@ -1174,7 +1100,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 55, endLine: 1, @@ -1183,7 +1108,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 72, endLine: 1, @@ -1192,7 +1116,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 74, endLine: 1, @@ -1201,7 +1124,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 91, endLine: 1, @@ -1210,7 +1132,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 93, endLine: 1, @@ -1229,7 +1150,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 12, endLine: 1, @@ -1246,7 +1166,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 36, endLine: 1, @@ -1263,7 +1182,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 17, endLine: 1, @@ -1272,7 +1190,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 29, endLine: 1, @@ -1281,7 +1198,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 82, endLine: 1, @@ -1290,7 +1206,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 103, endLine: 1, @@ -1307,7 +1222,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 14, endLine: 1, @@ -1316,7 +1230,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 16, endLine: 1, @@ -1325,7 +1238,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 28, endLine: 1, @@ -1334,7 +1246,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 30, endLine: 1, @@ -1343,7 +1254,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 42, endLine: 1, @@ -1352,7 +1262,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 44, endLine: 1, @@ -1361,7 +1270,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 62, endLine: 1, @@ -1370,7 +1278,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 64, endLine: 1, @@ -1379,7 +1286,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 83, endLine: 1, @@ -1388,7 +1294,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 85, endLine: 1, @@ -1397,7 +1302,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 104, endLine: 1, @@ -1406,7 +1310,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 106, endLine: 1, @@ -1481,7 +1384,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 14, endLine: 1, @@ -1498,7 +1400,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 36, endLine: 1, @@ -1515,7 +1416,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 15, endLine: 1, @@ -1524,7 +1424,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 31, endLine: 1, @@ -1533,7 +1432,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 84, endLine: 1, @@ -1542,7 +1440,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 101, endLine: 1, @@ -1559,7 +1456,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 13, endLine: 1, @@ -1568,7 +1464,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 15, endLine: 1, @@ -1577,7 +1472,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 25, endLine: 1, @@ -1586,7 +1480,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 27, endLine: 1, @@ -1595,7 +1488,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 37, endLine: 1, @@ -1604,7 +1496,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 39, endLine: 1, @@ -1613,7 +1504,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 55, endLine: 1, @@ -1622,7 +1512,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 57, endLine: 1, @@ -1631,7 +1520,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 74, endLine: 1, @@ -1640,7 +1528,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 76, endLine: 1, @@ -1649,7 +1536,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "MethodDefinition", line: 1, column: 93, endLine: 1, @@ -1658,7 +1544,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "MethodDefinition", line: 1, column: 95, endLine: 1, @@ -1725,7 +1610,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "Property", line: 2, column: 3, endLine: 2, @@ -1734,7 +1618,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "Property", line: 2, column: 7, endLine: 2, @@ -1751,7 +1634,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "Property", line: 2, column: 3, endLine: 2, @@ -1760,7 +1642,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "Property", line: 2, column: 9, endLine: 2, @@ -1777,7 +1658,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "Property", line: 2, column: 4, endLine: 2, @@ -1786,7 +1666,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "Property", line: 2, column: 10, endLine: 2, @@ -1803,7 +1682,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "Property", line: 2, column: 3, endLine: 2, @@ -1812,7 +1690,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "Property", line: 2, column: 15, endLine: 2, @@ -1829,7 +1706,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "Property", line: 2, column: 4, endLine: 2, @@ -1838,7 +1714,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "Property", line: 2, column: 16, endLine: 2, @@ -1855,7 +1730,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "Property", line: 2, column: 3, endLine: 2, @@ -1864,7 +1738,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "MemberExpression", line: 2, column: 5, endLine: 2, @@ -1873,7 +1746,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "MemberExpression", line: 2, column: 7, endLine: 2, @@ -1882,7 +1754,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "Property", line: 2, column: 8, endLine: 2, @@ -1899,7 +1770,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "Property", line: 2, column: 4, endLine: 2, @@ -1908,7 +1778,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MemberExpression", line: 2, column: 7, endLine: 2, @@ -1917,7 +1786,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MemberExpression", line: 2, column: 9, endLine: 2, @@ -1926,7 +1794,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "Property", line: 2, column: 11, endLine: 2, @@ -1945,7 +1812,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "Property", line: 2, column: 3, endLine: 2, @@ -1954,7 +1820,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceAfter", data: { tokenValue: "[" }, - type: "MemberExpression", line: 2, column: 5, endLine: 2, @@ -1963,7 +1828,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "missingSpaceBefore", data: { tokenValue: "]" }, - type: "Property", line: 2, column: 18, endLine: 2, @@ -1984,7 +1848,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "Property", line: 2, column: 4, endLine: 2, @@ -1993,7 +1856,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { tokenValue: "[" }, - type: "MemberExpression", line: 2, column: 11, endLine: 2, @@ -2002,7 +1864,6 @@ ruleTester.run("computed-property-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { tokenValue: "]" }, - type: "MemberExpression", line: 2, column: 18, endLine: 2, diff --git a/tests/lib/rules/consistent-return.js b/tests/lib/rules/consistent-return.js index bf82bce373f1..9cce7a8defcd 100644 --- a/tests/lib/rules/consistent-return.js +++ b/tests/lib/rules/consistent-return.js @@ -91,7 +91,6 @@ ruleTester.run("consistent-return", rule, { { messageId: "missingReturnValue", data: { name: "Function 'foo'" }, - type: "ReturnStatement", line: 1, column: 46, endLine: 1, @@ -106,7 +105,6 @@ ruleTester.run("consistent-return", rule, { { messageId: "missingReturnValue", data: { name: "Arrow function" }, - type: "ReturnStatement", line: 1, column: 47, endLine: 1, @@ -120,7 +118,6 @@ ruleTester.run("consistent-return", rule, { { messageId: "unexpectedReturnValue", data: { name: "Function 'foo'" }, - type: "ReturnStatement", line: 1, column: 41, endLine: 1, @@ -134,7 +131,6 @@ ruleTester.run("consistent-return", rule, { { messageId: "missingReturnValue", data: { name: "Function" }, - type: "ReturnStatement", line: 1, column: 44, endLine: 1, @@ -148,7 +144,6 @@ ruleTester.run("consistent-return", rule, { { messageId: "unexpectedReturnValue", data: { name: "Function" }, - type: "ReturnStatement", line: 1, column: 39, endLine: 1, @@ -163,7 +158,6 @@ ruleTester.run("consistent-return", rule, { { messageId: "unexpectedReturnValue", data: { name: "Arrow function" }, - type: "ReturnStatement", line: 1, column: 33, endLine: 1, @@ -178,7 +172,6 @@ ruleTester.run("consistent-return", rule, { { messageId: "missingReturnValue", data: { name: "Function 'foo'" }, - type: "ReturnStatement", line: 1, column: 41, endLine: 1, @@ -193,7 +186,6 @@ ruleTester.run("consistent-return", rule, { { messageId: "missingReturnValue", data: { name: "Function 'foo'" }, - type: "ReturnStatement", line: 1, column: 41, endLine: 1, @@ -208,7 +200,6 @@ ruleTester.run("consistent-return", rule, { { messageId: "unexpectedReturnValue", data: { name: "Function 'foo'" }, - type: "ReturnStatement", line: 1, column: 46, endLine: 1, @@ -223,7 +214,6 @@ ruleTester.run("consistent-return", rule, { { messageId: "unexpectedReturnValue", data: { name: "Function 'foo'" }, - type: "ReturnStatement", line: 1, column: 43, endLine: 1, @@ -240,7 +230,6 @@ ruleTester.run("consistent-return", rule, { { messageId: "missingReturnValue", data: { name: "Program" }, - type: "ReturnStatement", line: 1, column: 25, endLine: 1, @@ -254,7 +243,6 @@ ruleTester.run("consistent-return", rule, { { messageId: "missingReturn", data: { name: "function 'foo'" }, - type: "FunctionDeclaration", line: 1, column: 10, endLine: 1, @@ -268,7 +256,6 @@ ruleTester.run("consistent-return", rule, { { messageId: "missingReturn", data: { name: "function '_foo'" }, - type: "FunctionDeclaration", line: 1, column: 10, endLine: 1, @@ -282,7 +269,6 @@ ruleTester.run("consistent-return", rule, { { messageId: "missingReturn", data: { name: "function 'foo'" }, - type: "FunctionExpression", line: 1, column: 12, endLine: 1, @@ -296,7 +282,6 @@ ruleTester.run("consistent-return", rule, { { messageId: "missingReturn", data: { name: "function" }, - type: "FunctionExpression", line: 1, column: 3, endLine: 1, @@ -311,7 +296,6 @@ ruleTester.run("consistent-return", rule, { { messageId: "missingReturn", data: { name: "arrow function" }, - type: "ArrowFunctionExpression", line: 1, column: 6, endLine: 1, @@ -326,7 +310,6 @@ ruleTester.run("consistent-return", rule, { { messageId: "missingReturn", data: { name: "method 'foo'" }, - type: "FunctionExpression", line: 1, column: 12, endLine: 1, @@ -341,7 +324,6 @@ ruleTester.run("consistent-return", rule, { { messageId: "missingReturn", data: { name: "method 'foo'" }, - type: "FunctionExpression", line: 1, column: 10, endLine: 1, @@ -358,7 +340,6 @@ ruleTester.run("consistent-return", rule, { { messageId: "missingReturn", data: { name: "program" }, - type: "Program", line: 1, column: 1, endLine: void 0, @@ -373,7 +354,6 @@ ruleTester.run("consistent-return", rule, { { messageId: "missingReturn", data: { name: "method 'CapitalizedFunction'" }, - type: "FunctionExpression", line: 1, column: 11, endLine: 1, @@ -388,7 +368,6 @@ ruleTester.run("consistent-return", rule, { { messageId: "missingReturn", data: { name: "method 'constructor'" }, - type: "FunctionExpression", line: 1, column: 4, endLine: 1, diff --git a/tests/lib/rules/consistent-this.js b/tests/lib/rules/consistent-this.js index 4513841ab2e3..288325001f2e 100644 --- a/tests/lib/rules/consistent-this.js +++ b/tests/lib/rules/consistent-this.js @@ -64,7 +64,6 @@ ruleTester.run("consistent-this", rule, { { messageId: "unexpectedAlias", data: { name: "context" }, - type: "VariableDeclarator", }, ], }, @@ -75,7 +74,6 @@ ruleTester.run("consistent-this", rule, { { messageId: "unexpectedAlias", data: { name: "that" }, - type: "VariableDeclarator", }, ], }, @@ -86,7 +84,6 @@ ruleTester.run("consistent-this", rule, { { messageId: "unexpectedAlias", data: { name: "self" }, - type: "VariableDeclarator", }, ], }, @@ -97,7 +94,6 @@ ruleTester.run("consistent-this", rule, { { messageId: "aliasNotAssignedToThis", data: { name: "self" }, - type: "VariableDeclarator", }, ], }, @@ -108,7 +104,6 @@ ruleTester.run("consistent-this", rule, { { messageId: "aliasNotAssignedToThis", data: { name: "self" }, - type: "VariableDeclarator", }, ], }, @@ -119,12 +114,10 @@ ruleTester.run("consistent-this", rule, { { messageId: "aliasNotAssignedToThis", data: { name: "self" }, - type: "VariableDeclarator", }, { messageId: "aliasNotAssignedToThis", data: { name: "self" }, - type: "AssignmentExpression", }, ], }, @@ -135,7 +128,6 @@ ruleTester.run("consistent-this", rule, { { messageId: "unexpectedAlias", data: { name: "context" }, - type: "AssignmentExpression", }, ], }, @@ -146,7 +138,6 @@ ruleTester.run("consistent-this", rule, { { messageId: "unexpectedAlias", data: { name: "that" }, - type: "AssignmentExpression", }, ], }, @@ -157,7 +148,6 @@ ruleTester.run("consistent-this", rule, { { messageId: "unexpectedAlias", data: { name: "self" }, - type: "AssignmentExpression", }, ], }, @@ -168,7 +158,6 @@ ruleTester.run("consistent-this", rule, { { messageId: "aliasNotAssignedToThis", data: { name: "self" }, - type: "AssignmentExpression", }, ], }, @@ -179,7 +168,6 @@ ruleTester.run("consistent-this", rule, { { messageId: "aliasNotAssignedToThis", data: { name: "self" }, - type: "VariableDeclarator", }, ], }, @@ -191,7 +179,6 @@ ruleTester.run("consistent-this", rule, { { messageId: "aliasNotAssignedToThis", data: { name: "self" }, - type: "VariableDeclarator", }, ], }, diff --git a/tests/lib/rules/constructor-super.js b/tests/lib/rules/constructor-super.js index 3527979537ca..9cdb9ae02ef4 100644 --- a/tests/lib/rules/constructor-super.js +++ b/tests/lib/rules/constructor-super.js @@ -159,83 +159,150 @@ ruleTester.run("constructor-super", rule, { // inherit from non constructors. { code: "class A extends null { constructor() { super(); } }", - errors: [{ messageId: "badSuper", type: "CallExpression" }], + errors: [ + { + messageId: "badSuper", + }, + ], }, { code: "class A extends null { constructor() { } }", - errors: [{ messageId: "missingAll", type: "MethodDefinition" }], + errors: [ + { + messageId: "missingAll", + }, + ], }, { code: "class A extends 100 { constructor() { super(); } }", - errors: [{ messageId: "badSuper", type: "CallExpression" }], + errors: [ + { + messageId: "badSuper", + }, + ], }, { code: "class A extends 'test' { constructor() { super(); } }", - errors: [{ messageId: "badSuper", type: "CallExpression" }], + errors: [ + { + messageId: "badSuper", + }, + ], }, { code: "class A extends (B = 5) { constructor() { super(); } }", - errors: [{ messageId: "badSuper", type: "CallExpression" }], + errors: [ + { + messageId: "badSuper", + }, + ], }, { code: "class A extends (B && 5) { constructor() { super(); } }", - errors: [{ messageId: "badSuper", type: "CallExpression" }], + errors: [ + { + messageId: "badSuper", + }, + ], }, { // `B &&= 5` evaluates either to a falsy value of `B` (which, then, cannot be a constructor), or to '5' code: "class A extends (B &&= 5) { constructor() { super(); } }", - errors: [{ messageId: "badSuper", type: "CallExpression" }], + errors: [ + { + messageId: "badSuper", + }, + ], }, { code: "class A extends (B += C) { constructor() { super(); } }", - errors: [{ messageId: "badSuper", type: "CallExpression" }], + errors: [ + { + messageId: "badSuper", + }, + ], }, { code: "class A extends (B -= C) { constructor() { super(); } }", - errors: [{ messageId: "badSuper", type: "CallExpression" }], + errors: [ + { + messageId: "badSuper", + }, + ], }, { code: "class A extends (B **= C) { constructor() { super(); } }", - errors: [{ messageId: "badSuper", type: "CallExpression" }], + errors: [ + { + messageId: "badSuper", + }, + ], }, { code: "class A extends (B |= C) { constructor() { super(); } }", - errors: [{ messageId: "badSuper", type: "CallExpression" }], + errors: [ + { + messageId: "badSuper", + }, + ], }, { code: "class A extends (B &= C) { constructor() { super(); } }", - errors: [{ messageId: "badSuper", type: "CallExpression" }], + errors: [ + { + messageId: "badSuper", + }, + ], }, // derived classes. { code: "class A extends B { constructor() { } }", - errors: [{ messageId: "missingAll", type: "MethodDefinition" }], + errors: [ + { + messageId: "missingAll", + }, + ], }, { code: "class A extends B { constructor() { for (var a of b) super.foo(); } }", - errors: [{ messageId: "missingAll", type: "MethodDefinition" }], + errors: [ + { + messageId: "missingAll", + }, + ], }, { code: "class A extends B { constructor() { for (var i = 1; i < 10; i++) super.foo(); } }", - errors: [{ messageId: "missingAll", type: "MethodDefinition" }], + errors: [ + { + messageId: "missingAll", + }, + ], }, // nested execution scope. { code: "class A extends B { constructor() { var c = class extends D { constructor() { super(); } } } }", - errors: [{ messageId: "missingAll", type: "MethodDefinition" }], + errors: [ + { + messageId: "missingAll", + }, + ], }, { code: "class A extends B { constructor() { var c = () => super(); } }", - errors: [{ messageId: "missingAll", type: "MethodDefinition" }], + errors: [ + { + messageId: "missingAll", + }, + ], }, { code: "class A extends B { constructor() { class C extends D { constructor() { super(); } } } }", errors: [ { messageId: "missingAll", - type: "MethodDefinition", column: 21, }, ], @@ -245,7 +312,6 @@ ruleTester.run("constructor-super", rule, { errors: [ { messageId: "missingAll", - type: "MethodDefinition", column: 21, }, ], @@ -255,7 +321,6 @@ ruleTester.run("constructor-super", rule, { errors: [ { messageId: "missingAll", - type: "MethodDefinition", column: 66, }, ], @@ -265,7 +330,6 @@ ruleTester.run("constructor-super", rule, { errors: [ { messageId: "missingAll", - type: "MethodDefinition", column: 72, }, ], @@ -274,74 +338,127 @@ ruleTester.run("constructor-super", rule, { // lacked in some code path. { code: "class A extends B { constructor() { if (a) super(); } }", - errors: [{ messageId: "missingSome", type: "MethodDefinition" }], + errors: [ + { + messageId: "missingSome", + }, + ], }, { code: "class A extends B { constructor() { if (a); else super(); } }", - errors: [{ messageId: "missingSome", type: "MethodDefinition" }], + errors: [ + { + messageId: "missingSome", + }, + ], }, { code: "class A extends B { constructor() { a && super(); } }", - errors: [{ messageId: "missingSome", type: "MethodDefinition" }], + errors: [ + { + messageId: "missingSome", + }, + ], }, { code: "class A extends B { constructor() { switch (a) { case 0: super(); } } }", - errors: [{ messageId: "missingSome", type: "MethodDefinition" }], + errors: [ + { + messageId: "missingSome", + }, + ], }, { code: "class A extends B { constructor() { switch (a) { case 0: break; default: super(); } } }", - errors: [{ messageId: "missingSome", type: "MethodDefinition" }], + errors: [ + { + messageId: "missingSome", + }, + ], }, { code: "class A extends B { constructor() { try { super(); } catch (err) {} } }", - errors: [{ messageId: "missingSome", type: "MethodDefinition" }], + errors: [ + { + messageId: "missingSome", + }, + ], }, { code: "class A extends B { constructor() { try { a; } catch (err) { super(); } } }", - errors: [{ messageId: "missingSome", type: "MethodDefinition" }], + errors: [ + { + messageId: "missingSome", + }, + ], }, { code: "class A extends B { constructor() { if (a) return; super(); } }", - errors: [{ messageId: "missingSome", type: "MethodDefinition" }], + errors: [ + { + messageId: "missingSome", + }, + ], }, // duplicate. { code: "class A extends B { constructor() { super(); super(); } }", errors: [ - { messageId: "duplicate", type: "CallExpression", column: 46 }, + { + messageId: "duplicate", + column: 46, + }, ], }, { code: "class A extends B { constructor() { super() || super(); } }", errors: [ - { messageId: "duplicate", type: "CallExpression", column: 48 }, + { + messageId: "duplicate", + column: 48, + }, ], }, { code: "class A extends B { constructor() { if (a) super(); super(); } }", errors: [ - { messageId: "duplicate", type: "CallExpression", column: 53 }, + { + messageId: "duplicate", + column: 53, + }, ], }, { code: "class A extends B { constructor() { switch (a) { case 0: super(); default: super(); } } }", errors: [ - { messageId: "duplicate", type: "CallExpression", column: 76 }, + { + messageId: "duplicate", + column: 76, + }, ], }, { code: "class A extends B { constructor(a) { while (a) super(); } }", errors: [ - { messageId: "missingSome", type: "MethodDefinition" }, - { messageId: "duplicate", type: "CallExpression", column: 48 }, + { + messageId: "missingSome", + }, + { + messageId: "duplicate", + column: 48, + }, ], }, // ignores `super()` on unreachable paths. { code: "class A extends B { constructor() { return; super(); } }", - errors: [{ messageId: "missingAll", type: "MethodDefinition" }], + errors: [ + { + messageId: "missingAll", + }, + ], }, // https://github.com/eslint/eslint/issues/8248 @@ -351,7 +468,11 @@ ruleTester.run("constructor-super", rule, { for (a in b) for (c in d); } }`, - errors: [{ messageId: "missingAll", type: "MethodDefinition" }], + errors: [ + { + messageId: "missingAll", + }, + ], }, { @@ -364,7 +485,11 @@ ruleTester.run("constructor-super", rule, { } }`, - errors: [{ messageId: "missingAll", type: "MethodDefinition" }], + errors: [ + { + messageId: "missingAll", + }, + ], }, { code: `class C extends D { @@ -378,7 +503,11 @@ ruleTester.run("constructor-super", rule, { } }`, - errors: [{ messageId: "missingAll", type: "MethodDefinition" }], + errors: [ + { + messageId: "missingAll", + }, + ], }, { code: `class C extends D { @@ -390,7 +519,11 @@ ruleTester.run("constructor-super", rule, { } }`, - errors: [{ messageId: "duplicate", type: "CallExpression" }], + errors: [ + { + messageId: "duplicate", + }, + ], }, { code: `class C extends D { @@ -405,7 +538,11 @@ ruleTester.run("constructor-super", rule, { } }`, - errors: [{ messageId: "missingSome", type: "MethodDefinition" }], + errors: [ + { + messageId: "missingSome", + }, + ], }, ], }); diff --git a/tests/lib/rules/curly.js b/tests/lib/rules/curly.js index f00319fae890..9145fc0ee8d0 100644 --- a/tests/lib/rules/curly.js +++ b/tests/lib/rules/curly.js @@ -449,7 +449,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", line: 1, column: 10, endLine: 1, @@ -464,7 +463,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", line: 2, column: 2, endLine: 2, @@ -479,7 +477,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfter", data: { name: "else" }, - type: "IfStatement", }, ], }, @@ -490,7 +487,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -501,7 +497,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfterCondition", data: { name: "while" }, - type: "WhileStatement", line: 1, column: 13, endLine: 1, @@ -516,7 +511,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfterCondition", data: { name: "while" }, - type: "WhileStatement", line: 2, column: 2, endLine: 2, @@ -531,7 +525,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfter", data: { name: "do" }, - type: "DoWhileStatement", line: 1, column: 4, endLine: 1, @@ -546,7 +539,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfter", data: { name: "do" }, - type: "DoWhileStatement", line: 2, column: 2, endLine: 2, @@ -561,7 +553,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfterCondition", data: { name: "for" }, - type: "ForStatement", }, ], }, @@ -572,7 +563,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfter", data: { name: "for-in" }, - type: "ForInStatement", }, ], }, @@ -584,7 +574,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfter", data: { name: "for-of" }, - type: "ForOfStatement", line: 1, column: 22, endLine: 1, @@ -600,7 +589,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfter", data: { name: "for-of" }, - type: "ForOfStatement", line: 2, column: 2, endLine: 2, @@ -616,7 +604,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfterCondition", data: { name: "for" }, - type: "ForStatement", line: 1, column: 11, endLine: 1, @@ -632,7 +619,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfterCondition", data: { name: "for" }, - type: "ForStatement", line: 2, column: 2, endLine: 2, @@ -649,7 +635,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfter", data: { name: "for-of" }, - type: "ForOfStatement", line: 1, column: 22, endLine: 1, @@ -666,7 +651,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfter", data: { name: "do" }, - type: "DoWhileStatement", line: 1, column: 3, endLine: 1, @@ -682,7 +666,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "for" }, - type: "ForStatement", line: 1, column: 13, endLine: 1, @@ -696,7 +679,6 @@ ruleTester.run("curly", rule, { errors: [ { data: { name: "for" }, - type: "ForStatement", messageId: "missingCurlyAfterCondition", line: 2, column: 2, @@ -713,7 +695,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", line: 1, column: 10, endLine: 1, @@ -729,7 +710,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -741,7 +721,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -753,7 +732,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "while" }, - type: "WhileStatement", line: 1, column: 13, endLine: 1, @@ -769,7 +747,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfter", data: { name: "else" }, - type: "IfStatement", }, ], }, @@ -781,7 +758,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfter", data: { name: "else" }, - type: "IfStatement", }, ], }, @@ -793,7 +769,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -805,7 +780,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -841,7 +815,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfter", data: { name: "else" }, - type: "IfStatement", line: 6, column: 8, endLine: 11, @@ -857,7 +830,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfter", data: { name: "for-in" }, - type: "ForInStatement", line: 1, column: 22, endLine: 1, @@ -874,7 +846,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfter", data: { name: "for-of" }, - type: "ForOfStatement", }, ], }, @@ -886,7 +857,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", line: 2, column: 2, endLine: 2, @@ -901,7 +871,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", line: 1, column: 10, endLine: 1, @@ -917,7 +886,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfterCondition", data: { name: "while" }, - type: "WhileStatement", }, ], }, @@ -929,7 +897,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfterCondition", data: { name: "for" }, - type: "ForStatement", }, ], }, @@ -941,7 +908,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfterCondition", data: { name: "while" }, - type: "WhileStatement", }, ], }, @@ -953,7 +919,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -965,7 +930,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfter", data: { name: "do" }, - type: "DoWhileStatement", line: 1, column: 4, endLine: 1, @@ -981,7 +945,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfter", data: { name: "do" }, - type: "DoWhileStatement", line: 2, column: 2, endLine: 2, @@ -997,7 +960,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfter", data: { name: "for-in" }, - type: "ForInStatement", line: 1, column: 22, endLine: 1, @@ -1013,7 +975,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfter", data: { name: "for-in" }, - type: "ForInStatement", }, ], }, @@ -1025,7 +986,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfter", data: { name: "for-in" }, - type: "ForInStatement", }, ], }, @@ -1038,7 +998,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfter", data: { name: "for-of" }, - type: "ForOfStatement", line: 2, column: 2, endLine: 2, @@ -1055,7 +1014,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfter", data: { name: "for-of" }, - type: "ForOfStatement", }, ], }, @@ -1067,7 +1025,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1079,7 +1036,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfterCondition", data: { name: "while" }, - type: "WhileStatement", }, ], }, @@ -1091,7 +1047,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1103,7 +1058,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1116,7 +1070,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfter", data: { name: "else" }, - type: "IfStatement", }, ], }, @@ -1129,7 +1082,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1141,7 +1093,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1153,7 +1104,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "while" }, - type: "WhileStatement", }, ], }, @@ -1165,7 +1115,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "for" }, - type: "ForStatement", line: 1, column: 27, endLine: 3, @@ -1181,7 +1130,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfter", data: { name: "for-in" }, - type: "ForInStatement", line: 1, column: 22, endLine: 1, @@ -1190,7 +1138,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", line: 1, column: 31, endLine: 1, @@ -1199,7 +1146,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfter", data: { name: "else" }, - type: "IfStatement", line: 1, column: 52, endLine: 1, @@ -1215,7 +1161,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfter", data: { name: "for-in" }, - type: "ForInStatement", line: 2, column: 2, endLine: 3, @@ -1231,7 +1176,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfter", data: { name: "for-in" }, - type: "ForInStatement", }, ], }, @@ -1244,7 +1188,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfter", data: { name: "for-of" }, - type: "ForOfStatement", }, ], }, @@ -1257,7 +1200,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfter", data: { name: "for-of" }, - type: "ForOfStatement", }, ], }, @@ -1269,7 +1211,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1281,7 +1222,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfter", data: { name: "else" }, - type: "IfStatement", }, ], }, @@ -1293,7 +1233,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfter", data: { name: "else" }, - type: "IfStatement", line: 1, column: 23, endLine: 1, @@ -1309,12 +1248,10 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, { messageId: "missingCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1326,7 +1263,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1338,7 +1274,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfter", data: { name: "do" }, - type: "DoWhileStatement", }, ], }, @@ -1350,7 +1285,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfter", data: { name: "do" }, - type: "DoWhileStatement", line: 2, column: 1, endLine: 2, @@ -1366,7 +1300,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "while" }, - type: "WhileStatement", line: 1, column: 13, endLine: 1, @@ -1382,7 +1315,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "while" }, - type: "WhileStatement", line: 2, column: 1, endLine: 3, @@ -1398,7 +1330,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "for" }, - type: "ForStatement", line: 1, column: 10, endLine: 1, @@ -1414,7 +1345,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfter", data: { name: "do" }, - type: "DoWhileStatement", }, ], }, @@ -1426,7 +1356,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1438,7 +1367,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfter", data: { name: "do" }, - type: "DoWhileStatement", }, ], }, @@ -1452,7 +1380,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1464,7 +1391,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1476,7 +1402,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1488,7 +1413,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1500,7 +1424,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1513,7 +1436,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1525,7 +1447,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1549,7 +1470,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1561,7 +1481,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1574,7 +1493,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1586,7 +1504,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1599,7 +1516,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1611,7 +1527,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1625,7 +1540,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1637,7 +1551,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1649,7 +1562,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfter", data: { name: "else" }, - type: "IfStatement", }, ], }, @@ -1661,7 +1573,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "for" }, - type: "ForStatement", }, ], }, @@ -1673,7 +1584,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfter", data: { name: "for-in" }, - type: "ForInStatement", }, ], }, @@ -1686,7 +1596,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfter", data: { name: "for-of" }, - type: "ForOfStatement", }, ], }, @@ -1698,7 +1607,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "while" }, - type: "WhileStatement", }, ], }, @@ -1710,7 +1618,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfter", data: { name: "do" }, - type: "DoWhileStatement", }, ], }, @@ -1724,7 +1631,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1736,7 +1642,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1748,7 +1653,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1760,7 +1664,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1772,7 +1675,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "while" }, - type: "WhileStatement", }, ], }, @@ -1784,7 +1686,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "while" }, - type: "WhileStatement", }, ], }, @@ -1796,7 +1697,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "while" }, - type: "WhileStatement", }, ], }, @@ -1808,7 +1708,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1820,7 +1719,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1832,7 +1730,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1844,7 +1741,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfter", data: { name: "do" }, - type: "DoWhileStatement", }, ], }, @@ -1856,7 +1752,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1868,7 +1763,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "while" }, - type: "WhileStatement", }, ], }, @@ -1880,7 +1774,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, ], }, @@ -1892,7 +1785,6 @@ ruleTester.run("curly", rule, { { messageId: "missingCurlyAfter", data: { name: "else" }, - type: "IfStatement", line: 1, column: 43, endLine: 1, @@ -1908,7 +1800,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfter", data: { name: "else" }, - type: "IfStatement", line: 3, column: 2, endLine: 3, @@ -1921,7 +1812,6 @@ ruleTester.run("curly", rule, { output: "if (a) {foo()} \nelse\n {bar();}", errors: [ { - type: "IfStatement", messageId: "missingCurlyAfterCondition", line: 1, column: 8, @@ -1929,7 +1819,6 @@ ruleTester.run("curly", rule, { endColumn: 13, }, { - type: "IfStatement", messageId: "missingCurlyAfter", line: 3, column: 2, @@ -1946,7 +1835,6 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", line: 1, column: 8, endLine: 1, @@ -1960,7 +1848,6 @@ ruleTester.run("curly", rule, { options: ["multi-or-nest"], errors: [ { - type: "IfStatement", data: { name: "if" }, messageId: "unexpectedCurlyAfterCondition", line: 1, @@ -1969,7 +1856,6 @@ ruleTester.run("curly", rule, { endColumn: 24, }, { - type: "IfStatement", data: { name: "if" }, messageId: "unexpectedCurlyAfterCondition", line: 1, @@ -1986,7 +1872,6 @@ ruleTester.run("curly", rule, { errors: [ { data: { name: "if" }, - type: "IfStatement", messageId: "missingCurlyAfterCondition", line: 1, column: 11, @@ -2002,7 +1887,6 @@ ruleTester.run("curly", rule, { errors: [ { data: { name: "for" }, - type: "ForStatement", messageId: "unexpectedCurlyAfterCondition", line: 4, column: 3, @@ -2018,7 +1902,6 @@ ruleTester.run("curly", rule, { errors: [ { data: { name: "for" }, - type: "ForStatement", messageId: "missingCurlyAfterCondition", line: 5, column: 1, @@ -2041,12 +1924,10 @@ ruleTester.run("curly", rule, { { messageId: "unexpectedCurlyAfterCondition", data: { name: "if" }, - type: "IfStatement", }, { messageId: "unexpectedCurlyAfterCondition", data: { name: "while" }, - type: "WhileStatement", }, ], }, @@ -2056,7 +1937,6 @@ ruleTester.run("curly", rule, { errors: [ { data: { name: "for" }, - type: "ForStatement", messageId: "missingCurlyAfterCondition", line: 1, column: 8, @@ -2071,7 +1951,6 @@ ruleTester.run("curly", rule, { errors: [ { data: { name: "for-in" }, - type: "ForInStatement", messageId: "missingCurlyAfter", line: 4, column: 4, @@ -2087,7 +1966,6 @@ ruleTester.run("curly", rule, { errors: [ { data: { name: "for-of" }, - type: "ForOfStatement", messageId: "missingCurlyAfter", line: 3, column: 1, diff --git a/tests/lib/rules/default-case-last.js b/tests/lib/rules/default-case-last.js index d7828c52de19..733a26a24690 100644 --- a/tests/lib/rules/default-case-last.js +++ b/tests/lib/rules/default-case-last.js @@ -24,7 +24,6 @@ const RuleTester = require("../../../lib/rule-tester/rule-tester"); function error(column) { const errorObject = { messageId: "notLast", - type: "SwitchCase", }; if (column) { diff --git a/tests/lib/rules/default-case.js b/tests/lib/rules/default-case.js index 2f0ad8c7d5da..1d38b4438862 100644 --- a/tests/lib/rules/default-case.js +++ b/tests/lib/rules/default-case.js @@ -72,7 +72,6 @@ ruleTester.run("default-case", rule, { errors: [ { messageId: "missingDefaultCase", - type: "SwitchStatement", }, ], }, @@ -81,7 +80,6 @@ ruleTester.run("default-case", rule, { errors: [ { messageId: "missingDefaultCase", - type: "SwitchStatement", }, ], }, @@ -90,7 +88,6 @@ ruleTester.run("default-case", rule, { errors: [ { messageId: "missingDefaultCase", - type: "SwitchStatement", }, ], }, @@ -104,7 +101,6 @@ ruleTester.run("default-case", rule, { errors: [ { messageId: "missingDefaultCase", - type: "SwitchStatement", }, ], }, @@ -118,7 +114,6 @@ ruleTester.run("default-case", rule, { errors: [ { messageId: "missingDefaultCase", - type: "SwitchStatement", }, ], }, @@ -132,7 +127,6 @@ ruleTester.run("default-case", rule, { errors: [ { messageId: "missingDefaultCase", - type: "SwitchStatement", }, ], }, diff --git a/tests/lib/rules/default-param-last.js b/tests/lib/rules/default-param-last.js index 374d70901ed3..bed32e3b4408 100644 --- a/tests/lib/rules/default-param-last.js +++ b/tests/lib/rules/default-param-last.js @@ -23,7 +23,6 @@ const ruleTester = new RuleTester({ const cannedError = { messageId: SHOULD_BE_LAST, - type: "AssignmentPattern", }; ruleTester.run("default-param-last", rule, { diff --git a/tests/lib/rules/dot-location.js b/tests/lib/rules/dot-location.js index 11aca5334ba3..4a60b9678635 100644 --- a/tests/lib/rules/dot-location.js +++ b/tests/lib/rules/dot-location.js @@ -225,7 +225,6 @@ ruleTester.run("dot-location", rule, { errors: [ { messageId: "expectedDotAfterObject", - type: "MemberExpression", line: 2, column: 1, endLine: 2, @@ -240,7 +239,6 @@ ruleTester.run("dot-location", rule, { errors: [ { messageId: "expectedDotBeforeProperty", - type: "MemberExpression", line: 1, column: 4, endLine: 1, @@ -255,7 +253,6 @@ ruleTester.run("dot-location", rule, { errors: [ { messageId: "expectedDotBeforeProperty", - type: "MemberExpression", line: 1, column: 6, }, @@ -268,7 +265,6 @@ ruleTester.run("dot-location", rule, { errors: [ { messageId: "expectedDotAfterObject", - type: "MemberExpression", line: 2, column: 1, }, @@ -281,7 +277,6 @@ ruleTester.run("dot-location", rule, { errors: [ { messageId: "expectedDotAfterObject", - type: "MemberExpression", line: 2, column: 1, }, @@ -294,7 +289,6 @@ ruleTester.run("dot-location", rule, { errors: [ { messageId: "expectedDotAfterObject", - type: "MemberExpression", line: 2, column: 1, }, @@ -307,7 +301,6 @@ ruleTester.run("dot-location", rule, { errors: [ { messageId: "expectedDotAfterObject", - type: "MemberExpression", line: 2, column: 1, }, @@ -320,7 +313,6 @@ ruleTester.run("dot-location", rule, { errors: [ { messageId: "expectedDotAfterObject", - type: "MemberExpression", line: 2, column: 1, }, @@ -334,7 +326,6 @@ ruleTester.run("dot-location", rule, { errors: [ { messageId: "expectedDotAfterObject", - type: "MemberExpression", line: 2, column: 1, }, @@ -348,7 +339,6 @@ ruleTester.run("dot-location", rule, { errors: [ { messageId: "expectedDotAfterObject", - type: "MemberExpression", line: 2, column: 1, }, @@ -362,7 +352,6 @@ ruleTester.run("dot-location", rule, { errors: [ { messageId: "expectedDotAfterObject", - type: "MemberExpression", line: 2, column: 1, }, @@ -376,7 +365,6 @@ ruleTester.run("dot-location", rule, { errors: [ { messageId: "expectedDotAfterObject", - type: "MemberExpression", line: 2, column: 1, }, @@ -389,7 +377,6 @@ ruleTester.run("dot-location", rule, { errors: [ { messageId: "expectedDotBeforeProperty", - type: "MemberExpression", line: 1, column: 13, }, @@ -402,7 +389,6 @@ ruleTester.run("dot-location", rule, { errors: [ { messageId: "expectedDotAfterObject", - type: "MemberExpression", line: 2, column: 10, }, @@ -415,7 +401,6 @@ ruleTester.run("dot-location", rule, { errors: [ { messageId: "expectedDotAfterObject", - type: "MemberExpression", line: 3, column: 1, }, @@ -429,7 +414,6 @@ ruleTester.run("dot-location", rule, { errors: [ { messageId: "expectedDotAfterObject", - type: "MemberExpression", line: 3, column: 1, }, @@ -444,7 +428,6 @@ ruleTester.run("dot-location", rule, { errors: [ { messageId: "expectedDotAfterObject", - type: "MemberExpression", line: 3, column: 1, }, @@ -457,7 +440,6 @@ ruleTester.run("dot-location", rule, { errors: [ { messageId: "expectedDotAfterObject", - type: "MemberExpression", line: 3, column: 1, }, @@ -470,7 +452,6 @@ ruleTester.run("dot-location", rule, { errors: [ { messageId: "expectedDotAfterObject", - type: "MemberExpression", line: 3, column: 1, }, @@ -483,7 +464,6 @@ ruleTester.run("dot-location", rule, { errors: [ { messageId: "expectedDotAfterObject", - type: "MemberExpression", line: 4, column: 1, }, @@ -496,7 +476,6 @@ ruleTester.run("dot-location", rule, { errors: [ { messageId: "expectedDotAfterObject", - type: "MemberExpression", line: 3, column: 1, }, @@ -509,7 +488,6 @@ ruleTester.run("dot-location", rule, { errors: [ { messageId: "expectedDotAfterObject", - type: "MemberExpression", line: 4, column: 1, }, @@ -522,7 +500,6 @@ ruleTester.run("dot-location", rule, { errors: [ { messageId: "expectedDotAfterObject", - type: "MemberExpression", line: 3, column: 1, }, @@ -535,7 +512,6 @@ ruleTester.run("dot-location", rule, { errors: [ { messageId: "expectedDotAfterObject", - type: "MemberExpression", line: 4, column: 1, }, @@ -548,7 +524,6 @@ ruleTester.run("dot-location", rule, { errors: [ { messageId: "expectedDotAfterObject", - type: "MemberExpression", line: 3, column: 8, }, @@ -561,7 +536,6 @@ ruleTester.run("dot-location", rule, { errors: [ { messageId: "expectedDotAfterObject", - type: "MemberExpression", line: 2, column: 1, }, diff --git a/tests/lib/rules/eol-last.js b/tests/lib/rules/eol-last.js index c6442396fc99..6051aa61d1cb 100644 --- a/tests/lib/rules/eol-last.js +++ b/tests/lib/rules/eol-last.js @@ -57,7 +57,6 @@ ruleTester.run("eol-last", rule, { errors: [ { messageId: "missing", - type: "Program", line: 1, column: 13, endLine: void 0, @@ -71,7 +70,6 @@ ruleTester.run("eol-last", rule, { errors: [ { messageId: "missing", - type: "Program", line: 2, column: 4, endLine: void 0, @@ -86,7 +84,6 @@ ruleTester.run("eol-last", rule, { errors: [ { messageId: "unexpected", - type: "Program", line: 1, column: 13, endLine: 2, @@ -101,7 +98,6 @@ ruleTester.run("eol-last", rule, { errors: [ { messageId: "unexpected", - type: "Program", line: 1, column: 13, endLine: 2, @@ -116,7 +112,6 @@ ruleTester.run("eol-last", rule, { errors: [ { messageId: "unexpected", - type: "Program", line: 2, column: 1, endLine: 3, @@ -131,7 +126,6 @@ ruleTester.run("eol-last", rule, { errors: [ { messageId: "unexpected", - type: "Program", line: 2, column: 13, endLine: 3, @@ -146,7 +140,6 @@ ruleTester.run("eol-last", rule, { errors: [ { messageId: "unexpected", - type: "Program", line: 2, column: 13, endLine: 3, @@ -161,7 +154,6 @@ ruleTester.run("eol-last", rule, { errors: [ { messageId: "unexpected", - type: "Program", line: 2, column: 1, endLine: 3, @@ -178,7 +170,6 @@ ruleTester.run("eol-last", rule, { errors: [ { messageId: "missing", - type: "Program", line: 1, column: 13, endLine: void 0, @@ -193,7 +184,6 @@ ruleTester.run("eol-last", rule, { errors: [ { messageId: "missing", - type: "Program", line: 2, column: 4, endLine: void 0, @@ -210,7 +200,6 @@ ruleTester.run("eol-last", rule, { errors: [ { messageId: "missing", - type: "Program", line: 1, column: 13, endLine: void 0, @@ -225,7 +214,6 @@ ruleTester.run("eol-last", rule, { errors: [ { messageId: "missing", - type: "Program", line: 2, column: 4, endLine: void 0, diff --git a/tests/lib/rules/eqeqeq.js b/tests/lib/rules/eqeqeq.js index 8ae84b8958f9..f9929734d6e4 100644 --- a/tests/lib/rules/eqeqeq.js +++ b/tests/lib/rules/eqeqeq.js @@ -70,7 +70,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedEqEqEq, - type: "BinaryExpression", suggestions: [ { messageId: "replaceOperator", @@ -87,7 +86,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedNotEqEq, - type: "BinaryExpression", suggestions: [ { messageId: "replaceOperator", @@ -105,7 +103,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedEqEqEq, - type: "BinaryExpression", }, ], }, @@ -117,7 +114,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedEqEqEq, - type: "BinaryExpression", }, ], }, @@ -128,7 +124,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedNotEqEq, - type: "BinaryExpression", }, ], }, @@ -139,7 +134,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedEqEqEq, - type: "BinaryExpression", }, ], }, @@ -150,7 +144,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedEqEqEq, - type: "BinaryExpression", }, ], }, @@ -162,7 +155,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedEqEqEq, - type: "BinaryExpression", }, ], }, @@ -173,7 +165,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedNotEqEq, - type: "BinaryExpression", }, ], }, @@ -185,7 +176,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedNotEqEq, - type: "BinaryExpression", }, ], }, @@ -195,7 +185,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedEqEqEq, - type: "BinaryExpression", suggestions: [ { messageId: "replaceOperator", @@ -213,7 +202,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedEqEqEq, - type: "BinaryExpression", suggestions: [ { messageId: "replaceOperator", @@ -230,7 +218,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedNotEqEq, - type: "BinaryExpression", suggestions: [ { messageId: "replaceOperator", @@ -248,7 +235,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedEqEqEq, - type: "BinaryExpression", suggestions: [ { messageId: "replaceOperator", @@ -266,7 +252,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedNotEqEq, - type: "BinaryExpression", suggestions: [ { messageId: "replaceOperator", @@ -284,7 +269,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedEqEqEq, - type: "BinaryExpression", suggestions: [ { messageId: "replaceOperator", @@ -303,7 +287,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedEqEqEq, - type: "BinaryExpression", }, ], }, @@ -315,7 +298,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedNotEqEq, - type: "BinaryExpression", }, ], }, @@ -327,7 +309,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedNotEqEq, - type: "BinaryExpression", }, ], }, @@ -339,7 +320,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedEqEqEq, - type: "BinaryExpression", }, ], }, @@ -351,7 +331,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedEqEqEq, - type: "BinaryExpression", }, ], }, @@ -362,7 +341,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedEqEqEq, - type: "BinaryExpression", suggestions: [ { messageId: "replaceOperator", @@ -380,7 +358,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedNotEqEq, - type: "BinaryExpression", suggestions: [ { messageId: "replaceOperator", @@ -399,7 +376,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedEqEqEq, - type: "BinaryExpression", }, ], }, @@ -411,7 +387,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedNotEqEq, - type: "BinaryExpression", }, ], }, @@ -422,7 +397,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedEqEq, - type: "BinaryExpression", suggestions: [ { messageId: "replaceOperator", @@ -440,7 +414,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedNotEq, - type: "BinaryExpression", suggestions: [ { messageId: "replaceOperator", @@ -459,7 +432,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedEqEq, - type: "BinaryExpression", }, ], }, @@ -471,7 +443,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedNotEq, - type: "BinaryExpression", }, ], }, @@ -481,7 +452,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedEqEqEq, - type: "BinaryExpression", line: 2, suggestions: [ { @@ -499,7 +469,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedEqEqEq, - type: "BinaryExpression", line: 1, suggestions: [ { @@ -517,7 +486,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedNotEqEq, - type: "BinaryExpression", line: 1, suggestions: [ { @@ -535,7 +503,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedEqEqEq, - type: "BinaryExpression", line: 1, suggestions: [ { @@ -553,7 +520,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedNotEqEq, - type: "BinaryExpression", line: 1, suggestions: [ { @@ -571,7 +537,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedEqEqEq, - type: "BinaryExpression", line: 1, suggestions: [ { @@ -589,7 +554,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedNotEqEq, - type: "BinaryExpression", line: 1, suggestions: [ { @@ -607,7 +571,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedEqEqEq, - type: "BinaryExpression", line: 1, suggestions: [ { @@ -620,7 +583,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedEqEqEq, - type: "BinaryExpression", line: 1, suggestions: [ { @@ -638,7 +600,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedNotEqEq, - type: "BinaryExpression", line: 1, suggestions: [ { @@ -651,7 +612,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedNotEqEq, - type: "BinaryExpression", line: 1, suggestions: [ { @@ -671,7 +631,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedEqEqEq, - type: "BinaryExpression", column: 3, endColumn: 5, suggestions: [ @@ -690,7 +649,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedNotEqEq, - type: "BinaryExpression", column: 2, endColumn: 4, suggestions: [ @@ -709,7 +667,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedEqEqEq, - type: "BinaryExpression", column: 9, endColumn: 11, suggestions: [ @@ -728,7 +685,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedNotEqEq, - type: "BinaryExpression", column: 10, endColumn: 12, suggestions: [ @@ -748,7 +704,6 @@ ruleTester.run("eqeqeq", rule, { { messageId: "unexpected", data: wantedEqEqEq, - type: "BinaryExpression", column: 9, endColumn: 11, }, diff --git a/tests/lib/rules/func-call-spacing.js b/tests/lib/rules/func-call-spacing.js index 387643c0e11d..9e7484ac7c0f 100644 --- a/tests/lib/rules/func-call-spacing.js +++ b/tests/lib/rules/func-call-spacing.js @@ -247,14 +247,18 @@ ruleTester.run("func-call-spacing", rule, { code: "f ();", output: "f();", errors: [ - { messageId: "unexpectedWhitespace", type: "CallExpression" }, + { + messageId: "unexpectedWhitespace", + }, ], }, { code: "f (a, b);", output: "f(a, b);", errors: [ - { messageId: "unexpectedWhitespace", type: "CallExpression" }, + { + messageId: "unexpectedWhitespace", + }, ], }, { @@ -263,7 +267,6 @@ ruleTester.run("func-call-spacing", rule, { errors: [ { messageId: "unexpectedWhitespace", - type: "CallExpression", column: 4, line: 1, endColumn: 4, @@ -277,7 +280,6 @@ ruleTester.run("func-call-spacing", rule, { errors: [ { messageId: "unexpectedWhitespace", - type: "CallExpression", column: 8, line: 1, endColumn: 8, @@ -289,50 +291,66 @@ ruleTester.run("func-call-spacing", rule, { code: "f() ()", output: "f()()", errors: [ - { messageId: "unexpectedWhitespace", type: "CallExpression" }, + { + messageId: "unexpectedWhitespace", + }, ], }, { code: "(function() {} ())", output: "(function() {}())", errors: [ - { messageId: "unexpectedWhitespace", type: "CallExpression" }, + { + messageId: "unexpectedWhitespace", + }, ], }, { code: "var f = new Foo ()", output: "var f = new Foo()", errors: [ - { messageId: "unexpectedWhitespace", type: "NewExpression" }, + { + messageId: "unexpectedWhitespace", + }, ], }, { code: "f ( (0) )", output: "f( (0) )", errors: [ - { messageId: "unexpectedWhitespace", type: "CallExpression" }, + { + messageId: "unexpectedWhitespace", + }, ], }, { code: "f(0) (1)", output: "f(0)(1)", errors: [ - { messageId: "unexpectedWhitespace", type: "CallExpression" }, + { + messageId: "unexpectedWhitespace", + }, ], }, { code: "(f) (0)", output: "(f)(0)", errors: [ - { messageId: "unexpectedWhitespace", type: "CallExpression" }, + { + messageId: "unexpectedWhitespace", + }, ], }, { code: "f ();\n t ();", output: "f();\n t();", errors: [ - { messageId: "unexpectedWhitespace", type: "CallExpression" }, - { messageId: "unexpectedWhitespace", type: "CallExpression" }, + { + messageId: "unexpectedWhitespace", + }, + { + messageId: "unexpectedWhitespace", + }, ], }, { @@ -340,7 +358,9 @@ ruleTester.run("func-call-spacing", rule, { output: "import(source);", languageOptions: { ecmaVersion: 2020 }, errors: [ - { messageId: "unexpectedWhitespace", type: "ImportExpression" }, + { + messageId: "unexpectedWhitespace", + }, ], }, @@ -349,35 +369,45 @@ ruleTester.run("func-call-spacing", rule, { code: "f\n();", output: null, // no change errors: [ - { messageId: "unexpectedWhitespace", type: "CallExpression" }, + { + messageId: "unexpectedWhitespace", + }, ], }, { code: "f\r();", output: null, // no change errors: [ - { messageId: "unexpectedWhitespace", type: "CallExpression" }, + { + messageId: "unexpectedWhitespace", + }, ], }, { code: "f\u2028();", output: null, // no change errors: [ - { messageId: "unexpectedWhitespace", type: "CallExpression" }, + { + messageId: "unexpectedWhitespace", + }, ], }, { code: "f\u2029();", output: null, // no change errors: [ - { messageId: "unexpectedWhitespace", type: "CallExpression" }, + { + messageId: "unexpectedWhitespace", + }, ], }, { code: "f\r\n();", output: null, // no change errors: [ - { messageId: "unexpectedWhitespace", type: "CallExpression" }, + { + messageId: "unexpectedWhitespace", + }, ], }, { @@ -385,7 +415,9 @@ ruleTester.run("func-call-spacing", rule, { output: null, languageOptions: { ecmaVersion: 2020 }, errors: [ - { messageId: "unexpectedWhitespace", type: "ImportExpression" }, + { + messageId: "unexpectedWhitespace", + }, ], }, @@ -395,7 +427,9 @@ ruleTester.run("func-call-spacing", rule, { output: "f();", options: ["never"], errors: [ - { messageId: "unexpectedWhitespace", type: "CallExpression" }, + { + messageId: "unexpectedWhitespace", + }, ], }, { @@ -403,7 +437,9 @@ ruleTester.run("func-call-spacing", rule, { output: "f(a, b);", options: ["never"], errors: [ - { messageId: "unexpectedWhitespace", type: "CallExpression" }, + { + messageId: "unexpectedWhitespace", + }, ], }, { @@ -413,7 +449,6 @@ ruleTester.run("func-call-spacing", rule, { errors: [ { messageId: "unexpectedWhitespace", - type: "CallExpression", column: 4, line: 1, endColumn: 5, @@ -428,7 +463,6 @@ ruleTester.run("func-call-spacing", rule, { errors: [ { messageId: "unexpectedWhitespace", - type: "CallExpression", column: 8, line: 1, endColumn: 8, @@ -441,7 +475,9 @@ ruleTester.run("func-call-spacing", rule, { output: "f()()", options: ["never"], errors: [ - { messageId: "unexpectedWhitespace", type: "CallExpression" }, + { + messageId: "unexpectedWhitespace", + }, ], }, { @@ -449,7 +485,9 @@ ruleTester.run("func-call-spacing", rule, { output: "(function() {}())", options: ["never"], errors: [ - { messageId: "unexpectedWhitespace", type: "CallExpression" }, + { + messageId: "unexpectedWhitespace", + }, ], }, { @@ -457,7 +495,9 @@ ruleTester.run("func-call-spacing", rule, { output: "var f = new Foo()", options: ["never"], errors: [ - { messageId: "unexpectedWhitespace", type: "NewExpression" }, + { + messageId: "unexpectedWhitespace", + }, ], }, { @@ -465,7 +505,9 @@ ruleTester.run("func-call-spacing", rule, { output: "f( (0) )", options: ["never"], errors: [ - { messageId: "unexpectedWhitespace", type: "CallExpression" }, + { + messageId: "unexpectedWhitespace", + }, ], }, { @@ -473,7 +515,9 @@ ruleTester.run("func-call-spacing", rule, { output: "f(0)(1)", options: ["never"], errors: [ - { messageId: "unexpectedWhitespace", type: "CallExpression" }, + { + messageId: "unexpectedWhitespace", + }, ], }, { @@ -481,7 +525,9 @@ ruleTester.run("func-call-spacing", rule, { output: "(f)(0)", options: ["never"], errors: [ - { messageId: "unexpectedWhitespace", type: "CallExpression" }, + { + messageId: "unexpectedWhitespace", + }, ], }, { @@ -489,8 +535,12 @@ ruleTester.run("func-call-spacing", rule, { output: "f();\n t();", options: ["never"], errors: [ - { messageId: "unexpectedWhitespace", type: "CallExpression" }, - { messageId: "unexpectedWhitespace", type: "CallExpression" }, + { + messageId: "unexpectedWhitespace", + }, + { + messageId: "unexpectedWhitespace", + }, ], }, { @@ -499,7 +549,9 @@ ruleTester.run("func-call-spacing", rule, { options: ["never"], languageOptions: { ecmaVersion: 2020 }, errors: [ - { messageId: "unexpectedWhitespace", type: "ImportExpression" }, + { + messageId: "unexpectedWhitespace", + }, ], }, @@ -511,7 +563,6 @@ ruleTester.run("func-call-spacing", rule, { errors: [ { messageId: "unexpectedWhitespace", - type: "CallExpression", line: 1, column: 2, endLine: 2, @@ -530,7 +581,6 @@ ruleTester.run("func-call-spacing", rule, { errors: [ { messageId: "unexpectedWhitespace", - type: "CallExpression", line: 2, column: 24, endLine: 3, @@ -545,7 +595,6 @@ ruleTester.run("func-call-spacing", rule, { errors: [ { messageId: "unexpectedWhitespace", - type: "CallExpression", line: 1, column: 12, endLine: 2, @@ -560,7 +609,6 @@ ruleTester.run("func-call-spacing", rule, { errors: [ { messageId: "unexpectedWhitespace", - type: "CallExpression", line: 1, column: 12, endColumn: 0, @@ -575,7 +623,6 @@ ruleTester.run("func-call-spacing", rule, { errors: [ { messageId: "unexpectedWhitespace", - type: "CallExpression", }, ], }, @@ -586,7 +633,6 @@ ruleTester.run("func-call-spacing", rule, { errors: [ { messageId: "unexpectedWhitespace", - type: "CallExpression", }, ], }, @@ -597,7 +643,6 @@ ruleTester.run("func-call-spacing", rule, { errors: [ { messageId: "unexpectedWhitespace", - type: "CallExpression", }, ], }, @@ -608,7 +653,6 @@ ruleTester.run("func-call-spacing", rule, { errors: [ { messageId: "unexpectedWhitespace", - type: "CallExpression", }, ], }, @@ -618,28 +662,40 @@ ruleTester.run("func-call-spacing", rule, { code: "f();", output: "f ();", options: ["always"], - errors: [{ messageId: "missing", type: "CallExpression" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "f\n();", output: null, // Don't fix to avoid hiding no-unexpected-multiline (https://github.com/eslint/eslint/issues/7787) options: ["always"], errors: [ - { messageId: "unexpectedNewline", type: "CallExpression" }, + { + messageId: "unexpectedNewline", + }, ], }, { code: "f(a, b);", output: "f (a, b);", options: ["always"], - errors: [{ messageId: "missing", type: "CallExpression" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "f\n(a, b);", output: null, // Don't fix to avoid hiding no-unexpected-multiline (https://github.com/eslint/eslint/issues/7787) options: ["always"], errors: [ - { messageId: "unexpectedNewline", type: "CallExpression" }, + { + messageId: "unexpectedNewline", + }, ], }, { @@ -649,7 +705,6 @@ ruleTester.run("func-call-spacing", rule, { errors: [ { messageId: "missing", - type: "CallExpression", column: 3, line: 1, endLine: 1, @@ -664,7 +719,6 @@ ruleTester.run("func-call-spacing", rule, { errors: [ { messageId: "unexpectedNewline", - type: "CallExpression", column: 4, line: 1, endColumn: 1, @@ -677,7 +731,10 @@ ruleTester.run("func-call-spacing", rule, { output: "f.b ().c ();", options: ["always"], errors: [ - { messageId: "missing", type: "CallExpression", column: 3 }, + { + messageId: "missing", + column: 3, + }, ], }, { @@ -687,7 +744,6 @@ ruleTester.run("func-call-spacing", rule, { errors: [ { messageId: "unexpectedNewline", - type: "CallExpression", column: 4, line: 1, endColumn: 1, @@ -699,14 +755,20 @@ ruleTester.run("func-call-spacing", rule, { code: "f() ()", output: "f () ()", options: ["always"], - errors: [{ messageId: "missing", type: "CallExpression" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "f\n() ()", output: null, // Don't fix to avoid hiding no-unexpected-multiline (https://github.com/eslint/eslint/issues/7787) options: ["always"], errors: [ - { messageId: "unexpectedNewline", type: "CallExpression" }, + { + messageId: "unexpectedNewline", + }, ], }, { @@ -714,54 +776,86 @@ ruleTester.run("func-call-spacing", rule, { output: "f\n() ()", // Don't fix the first error to avoid hiding no-unexpected-multiline (https://github.com/eslint/eslint/issues/7787) options: ["always"], errors: [ - { messageId: "unexpectedNewline", type: "CallExpression" }, - { messageId: "missing", type: "CallExpression" }, + { + messageId: "unexpectedNewline", + }, + { + messageId: "missing", + }, ], }, { code: "(function() {}())", output: "(function() {} ())", options: ["always"], - errors: [{ messageId: "missing", type: "CallExpression" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "var f = new Foo()", output: "var f = new Foo ()", options: ["always"], - errors: [{ messageId: "missing", type: "NewExpression" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "f( (0) )", output: "f ( (0) )", options: ["always"], - errors: [{ messageId: "missing", type: "CallExpression" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "f(0) (1)", output: "f (0) (1)", options: ["always"], - errors: [{ messageId: "missing", type: "CallExpression" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "(f)(0)", output: "(f) (0)", options: ["always"], - errors: [{ messageId: "missing", type: "CallExpression" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "import(source);", output: "import (source);", options: ["always"], languageOptions: { ecmaVersion: 2020 }, - errors: [{ messageId: "missing", type: "ImportExpression" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "f();\n t();", output: "f ();\n t ();", options: ["always"], errors: [ - { messageId: "missing", type: "CallExpression" }, - { messageId: "missing", type: "CallExpression" }, + { + messageId: "missing", + }, + { + messageId: "missing", + }, ], }, { @@ -769,7 +863,9 @@ ruleTester.run("func-call-spacing", rule, { output: null, // Don't fix to avoid hiding no-unexpected-multiline (https://github.com/eslint/eslint/issues/7787) options: ["always"], errors: [ - { messageId: "unexpectedNewline", type: "CallExpression" }, + { + messageId: "unexpectedNewline", + }, ], }, { @@ -777,7 +873,9 @@ ruleTester.run("func-call-spacing", rule, { output: null, // Don't fix to avoid hiding no-unexpected-multiline (https://github.com/eslint/eslint/issues/7787) options: ["always"], errors: [ - { messageId: "unexpectedNewline", type: "CallExpression" }, + { + messageId: "unexpectedNewline", + }, ], }, { @@ -785,7 +883,9 @@ ruleTester.run("func-call-spacing", rule, { output: null, // Don't fix to avoid hiding no-unexpected-multiline (https://github.com/eslint/eslint/issues/7787) options: ["always"], errors: [ - { messageId: "unexpectedNewline", type: "CallExpression" }, + { + messageId: "unexpectedNewline", + }, ], }, { @@ -793,7 +893,9 @@ ruleTester.run("func-call-spacing", rule, { output: null, // Don't fix to avoid hiding no-unexpected-multiline (https://github.com/eslint/eslint/issues/7787) options: ["always"], errors: [ - { messageId: "unexpectedNewline", type: "CallExpression" }, + { + messageId: "unexpectedNewline", + }, ], }, @@ -802,13 +904,21 @@ ruleTester.run("func-call-spacing", rule, { code: "f();", output: "f ();", options: ["always", { allowNewlines: true }], - errors: [{ messageId: "missing", type: "CallExpression" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "f(a, b);", output: "f (a, b);", options: ["always", { allowNewlines: true }], - errors: [{ messageId: "missing", type: "CallExpression" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "f.b();", @@ -817,7 +927,6 @@ ruleTester.run("func-call-spacing", rule, { errors: [ { messageId: "missing", - type: "CallExpression", column: 3, }, ], @@ -827,52 +936,83 @@ ruleTester.run("func-call-spacing", rule, { output: "f.b ().c ();", options: ["always", { allowNewlines: true }], errors: [ - { messageId: "missing", type: "CallExpression", column: 3 }, + { + messageId: "missing", + column: 3, + }, ], }, { code: "f() ()", output: "f () ()", options: ["always", { allowNewlines: true }], - errors: [{ messageId: "missing", type: "CallExpression" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "(function() {}())", output: "(function() {} ())", options: ["always", { allowNewlines: true }], - errors: [{ messageId: "missing", type: "CallExpression" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "var f = new Foo()", output: "var f = new Foo ()", options: ["always", { allowNewlines: true }], - errors: [{ messageId: "missing", type: "NewExpression" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "f( (0) )", output: "f ( (0) )", options: ["always", { allowNewlines: true }], - errors: [{ messageId: "missing", type: "CallExpression" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "f(0) (1)", output: "f (0) (1)", options: ["always", { allowNewlines: true }], - errors: [{ messageId: "missing", type: "CallExpression" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "(f)(0)", output: "(f) (0)", options: ["always", { allowNewlines: true }], - errors: [{ messageId: "missing", type: "CallExpression" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "f();\n t();", output: "f ();\n t ();", options: ["always", { allowNewlines: true }], errors: [ - { messageId: "missing", type: "CallExpression" }, - { messageId: "missing", type: "CallExpression" }, + { + messageId: "missing", + }, + { + messageId: "missing", + }, ], }, { @@ -881,7 +1021,6 @@ ruleTester.run("func-call-spacing", rule, { errors: [ { messageId: "unexpectedWhitespace", - type: "CallExpression", line: 1, column: 2, endLine: 1, @@ -895,7 +1034,6 @@ ruleTester.run("func-call-spacing", rule, { errors: [ { messageId: "unexpectedWhitespace", - type: "CallExpression", line: 1, column: 2, endLine: 2, @@ -910,7 +1048,6 @@ ruleTester.run("func-call-spacing", rule, { errors: [ { messageId: "missing", - type: "CallExpression", line: 1, column: 2, endLine: 1, @@ -925,7 +1062,6 @@ ruleTester.run("func-call-spacing", rule, { errors: [ { messageId: "unexpectedNewline", - type: "CallExpression", line: 1, column: 4, endLine: 2, diff --git a/tests/lib/rules/func-names.js b/tests/lib/rules/func-names.js index c7ea49b705a9..941af07f8643 100644 --- a/tests/lib/rules/func-names.js +++ b/tests/lib/rules/func-names.js @@ -290,7 +290,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 21, endColumn: 29, @@ -302,7 +301,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 2, endColumn: 10, @@ -314,7 +312,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 3, endColumn: 11, @@ -326,7 +323,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 18, endColumn: 26, @@ -338,7 +334,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 12, endColumn: 20, @@ -350,7 +345,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 5, endColumn: 13, @@ -363,7 +357,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 21, endColumn: 29, @@ -376,7 +369,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 2, endColumn: 10, @@ -389,7 +381,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 3, endColumn: 11, @@ -402,7 +393,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 18, endColumn: 26, @@ -415,7 +405,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 5, endColumn: 13, @@ -429,7 +418,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 13, endColumn: 21, @@ -443,7 +431,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 18, endColumn: 26, @@ -457,7 +444,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 13, endColumn: 21, @@ -471,7 +457,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 16, endColumn: 24, @@ -485,7 +470,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 22, endColumn: 30, @@ -499,7 +483,6 @@ ruleTester.run("func-names", rule, { { messageId: "named", data: { name: "function 'foo'" }, - type: "FunctionExpression", line: 1, column: 9, endColumn: 21, @@ -513,7 +496,6 @@ ruleTester.run("func-names", rule, { { messageId: "named", data: { name: "function 'foo'" }, - type: "FunctionExpression", line: 1, column: 21, endColumn: 33, @@ -527,7 +509,6 @@ ruleTester.run("func-names", rule, { { messageId: "named", data: { name: "method 'foo'" }, - type: "FunctionExpression", line: 1, column: 3, endColumn: 20, @@ -543,7 +524,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionDeclaration", column: 16, endColumn: 24, }, @@ -556,7 +536,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionDeclaration", column: 16, endColumn: 24, }, @@ -569,7 +548,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", column: 17, endColumn: 25, }, @@ -584,7 +562,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 15, endColumn: 25, @@ -598,7 +575,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 11, endColumn: 20, @@ -612,7 +588,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 2, endColumn: 11, @@ -626,7 +601,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 15, endColumn: 25, @@ -640,7 +614,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 11, endColumn: 20, @@ -654,7 +627,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 2, endColumn: 11, @@ -668,7 +640,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 15, endColumn: 25, @@ -682,7 +653,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 2, endColumn: 11, @@ -696,7 +666,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 15, endColumn: 25, @@ -710,7 +679,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 2, endColumn: 11, @@ -724,7 +692,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 15, endColumn: 25, @@ -738,7 +705,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 11, endColumn: 20, @@ -752,7 +718,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 2, endColumn: 11, @@ -766,7 +731,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 15, endColumn: 25, @@ -780,7 +744,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 2, endColumn: 11, @@ -794,7 +757,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 15, endColumn: 25, @@ -808,7 +770,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 11, endColumn: 20, @@ -822,7 +783,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 2, endColumn: 11, @@ -836,7 +796,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 15, endColumn: 25, @@ -850,7 +809,6 @@ ruleTester.run("func-names", rule, { errors: [ { messageId: "unnamed", - type: "FunctionExpression", line: 1, column: 2, endColumn: 11, @@ -866,7 +824,6 @@ ruleTester.run("func-names", rule, { { messageId: "named", data: { name: "generator function 'baz'" }, - type: "FunctionExpression", line: 1, column: 15, endColumn: 28, @@ -881,7 +838,6 @@ ruleTester.run("func-names", rule, { { messageId: "named", data: { name: "generator function 'baz'" }, - type: "FunctionExpression", line: 1, column: 15, endColumn: 28, @@ -896,7 +852,6 @@ ruleTester.run("func-names", rule, { { messageId: "named", data: { name: "generator function 'baz'" }, - type: "FunctionExpression", line: 1, column: 15, endColumn: 28, @@ -911,7 +866,6 @@ ruleTester.run("func-names", rule, { { messageId: "named", data: { name: "generator function 'baz'" }, - type: "FunctionExpression", line: 1, column: 15, endColumn: 28, diff --git a/tests/lib/rules/func-style.js b/tests/lib/rules/func-style.js index 626cddcd2fe0..b561dc6b28af 100644 --- a/tests/lib/rules/func-style.js +++ b/tests/lib/rules/func-style.js @@ -219,7 +219,6 @@ ruleTester.run("func-style", rule, { errors: [ { messageId: "declaration", - type: "VariableDeclarator", }, ], }, @@ -230,7 +229,6 @@ ruleTester.run("func-style", rule, { errors: [ { messageId: "declaration", - type: "VariableDeclarator", }, ], }, @@ -241,7 +239,6 @@ ruleTester.run("func-style", rule, { errors: [ { messageId: "declaration", - type: "VariableDeclarator", }, ], }, @@ -252,7 +249,6 @@ ruleTester.run("func-style", rule, { errors: [ { messageId: "declaration", - type: "VariableDeclarator", }, ], }, @@ -262,7 +258,6 @@ ruleTester.run("func-style", rule, { errors: [ { messageId: "expression", - type: "FunctionDeclaration", }, ], }, @@ -272,7 +267,6 @@ ruleTester.run("func-style", rule, { errors: [ { messageId: "expression", - type: "FunctionDeclaration", }, ], }, @@ -285,7 +279,6 @@ ruleTester.run("func-style", rule, { errors: [ { messageId: "expression", - type: "FunctionDeclaration", }, ], }, @@ -298,7 +291,6 @@ ruleTester.run("func-style", rule, { errors: [ { messageId: "expression", - type: "FunctionDeclaration", }, ], }, @@ -309,7 +301,6 @@ ruleTester.run("func-style", rule, { errors: [ { messageId: "declaration", - type: "VariableDeclarator", }, ], }, @@ -323,7 +314,6 @@ ruleTester.run("func-style", rule, { errors: [ { messageId: "declaration", - type: "VariableDeclarator", }, ], }, @@ -337,7 +327,6 @@ ruleTester.run("func-style", rule, { errors: [ { messageId: "declaration", - type: "VariableDeclarator", }, ], }, @@ -348,7 +337,6 @@ ruleTester.run("func-style", rule, { errors: [ { messageId: "declaration", - type: "VariableDeclarator", }, ], }, @@ -362,7 +350,6 @@ ruleTester.run("func-style", rule, { errors: [ { messageId: "declaration", - type: "VariableDeclarator", }, ], }, @@ -376,7 +363,6 @@ ruleTester.run("func-style", rule, { errors: [ { messageId: "declaration", - type: "VariableDeclarator", }, ], }, @@ -390,7 +376,6 @@ ruleTester.run("func-style", rule, { errors: [ { messageId: "expression", - type: "FunctionDeclaration", }, ], }, @@ -404,7 +389,6 @@ ruleTester.run("func-style", rule, { errors: [ { messageId: "declaration", - type: "VariableDeclarator", }, ], }, @@ -418,7 +402,6 @@ ruleTester.run("func-style", rule, { errors: [ { messageId: "declaration", - type: "VariableDeclarator", }, ], }, @@ -428,7 +411,6 @@ ruleTester.run("func-style", rule, { errors: [ { messageId: "declaration", - type: "VariableDeclarator", }, ], }, @@ -438,7 +420,6 @@ ruleTester.run("func-style", rule, { errors: [ { messageId: "expression", - type: "FunctionDeclaration", }, ], }, @@ -448,7 +429,6 @@ ruleTester.run("func-style", rule, { errors: [ { messageId: "declaration", - type: "VariableDeclarator", }, ], }, @@ -464,7 +444,6 @@ ruleTester.run("func-style", rule, { errors: [ { messageId: "declaration", - type: "VariableDeclarator", }, ], }, @@ -480,7 +459,6 @@ ruleTester.run("func-style", rule, { errors: [ { messageId: "declaration", - type: "VariableDeclarator", }, ], }, @@ -490,7 +468,6 @@ ruleTester.run("func-style", rule, { errors: [ { messageId: "expression", - type: "FunctionDeclaration", }, ], }, @@ -713,7 +690,6 @@ ruleTesterTypeScript.run("func-style", rule, { errors: [ { messageId: "declaration", - type: "VariableDeclarator", }, ], }, @@ -723,7 +699,6 @@ ruleTesterTypeScript.run("func-style", rule, { errors: [ { messageId: "declaration", - type: "VariableDeclarator", }, ], }, @@ -733,7 +708,6 @@ ruleTesterTypeScript.run("func-style", rule, { errors: [ { messageId: "declaration", - type: "VariableDeclarator", }, ], }, @@ -743,7 +717,6 @@ ruleTesterTypeScript.run("func-style", rule, { errors: [ { messageId: "declaration", - type: "VariableDeclarator", }, ], }, @@ -753,7 +726,6 @@ ruleTesterTypeScript.run("func-style", rule, { errors: [ { messageId: "expression", - type: "FunctionDeclaration", }, ], }, @@ -763,7 +735,6 @@ ruleTesterTypeScript.run("func-style", rule, { errors: [ { messageId: "expression", - type: "FunctionDeclaration", }, ], }, @@ -776,7 +747,6 @@ ruleTesterTypeScript.run("func-style", rule, { errors: [ { messageId: "expression", - type: "FunctionDeclaration", }, ], }, @@ -789,7 +759,6 @@ ruleTesterTypeScript.run("func-style", rule, { errors: [ { messageId: "expression", - type: "FunctionDeclaration", }, ], }, @@ -799,7 +768,6 @@ ruleTesterTypeScript.run("func-style", rule, { errors: [ { messageId: "declaration", - type: "VariableDeclarator", }, ], }, @@ -812,7 +780,6 @@ ruleTesterTypeScript.run("func-style", rule, { errors: [ { messageId: "declaration", - type: "VariableDeclarator", }, ], }, @@ -825,7 +792,6 @@ ruleTesterTypeScript.run("func-style", rule, { errors: [ { messageId: "declaration", - type: "VariableDeclarator", }, ], }, @@ -835,7 +801,6 @@ ruleTesterTypeScript.run("func-style", rule, { errors: [ { messageId: "declaration", - type: "VariableDeclarator", }, ], }, @@ -848,7 +813,6 @@ ruleTesterTypeScript.run("func-style", rule, { errors: [ { messageId: "declaration", - type: "VariableDeclarator", }, ], }, @@ -861,7 +825,6 @@ ruleTesterTypeScript.run("func-style", rule, { errors: [ { messageId: "declaration", - type: "VariableDeclarator", }, ], }, @@ -874,7 +837,6 @@ ruleTesterTypeScript.run("func-style", rule, { errors: [ { messageId: "expression", - type: "FunctionDeclaration", }, ], }, @@ -887,7 +849,6 @@ ruleTesterTypeScript.run("func-style", rule, { errors: [ { messageId: "declaration", - type: "VariableDeclarator", }, ], }, @@ -900,7 +861,6 @@ ruleTesterTypeScript.run("func-style", rule, { errors: [ { messageId: "declaration", - type: "VariableDeclarator", }, ], }, @@ -909,7 +869,6 @@ ruleTesterTypeScript.run("func-style", rule, { errors: [ { messageId: "expression", - type: "FunctionDeclaration", }, ], }, @@ -918,7 +877,6 @@ ruleTesterTypeScript.run("func-style", rule, { errors: [ { messageId: "expression", - type: "FunctionDeclaration", }, ], }, @@ -932,7 +890,6 @@ ruleTesterTypeScript.run("func-style", rule, { errors: [ { messageId: "expression", - type: "FunctionDeclaration", }, ], }, @@ -946,7 +903,6 @@ ruleTesterTypeScript.run("func-style", rule, { errors: [ { messageId: "expression", - type: "FunctionDeclaration", }, ], }, @@ -965,7 +921,6 @@ ruleTesterTypeScript.run("func-style", rule, { errors: [ { messageId: "expression", - type: "FunctionDeclaration", }, ], }, @@ -983,7 +938,6 @@ ruleTesterTypeScript.run("func-style", rule, { errors: [ { messageId: "expression", - type: "FunctionDeclaration", }, ], }, @@ -1002,7 +956,6 @@ ruleTesterTypeScript.run("func-style", rule, { errors: [ { messageId: "expression", - type: "FunctionDeclaration", }, ], }, diff --git a/tests/lib/rules/function-paren-newline.js b/tests/lib/rules/function-paren-newline.js index 0865ab6cf074..af4b33248ee8 100644 --- a/tests/lib/rules/function-paren-newline.js +++ b/tests/lib/rules/function-paren-newline.js @@ -18,17 +18,21 @@ const fixtureParser = require("../../fixtures/fixture-parser"); // Tests //------------------------------------------------------------------------------ -const LEFT_MISSING_ERROR = { messageId: "expectedAfter", type: "Punctuator" }; +const LEFT_MISSING_ERROR = { + messageId: "expectedAfter", +}; const LEFT_UNEXPECTED_ERROR = { messageId: "unexpectedAfter", - type: "Punctuator", }; -const RIGHT_MISSING_ERROR = { messageId: "expectedBefore", type: "Punctuator" }; +const RIGHT_MISSING_ERROR = { + messageId: "expectedBefore", +}; const RIGHT_UNEXPECTED_ERROR = { messageId: "unexpectedBefore", - type: "Punctuator", }; -const EXPECTED_BETWEEN = { messageId: "expectedBetween", type: "Identifier" }; +const EXPECTED_BETWEEN = { + messageId: "expectedBetween", +}; const ruleTester = new RuleTester({ languageOptions: { ecmaVersion: 6, sourceType: "script" }, diff --git a/tests/lib/rules/generator-star-spacing.js b/tests/lib/rules/generator-star-spacing.js index f2d31ca102da..12c2a05ba119 100644 --- a/tests/lib/rules/generator-star-spacing.js +++ b/tests/lib/rules/generator-star-spacing.js @@ -18,15 +18,17 @@ const rule = require("../../../lib/rules/generator-star-spacing"), const ruleTester = new RuleTester({ languageOptions: { ecmaVersion: 2018 } }); -const missingBeforeError = { messageId: "missingBefore", type: "Punctuator" }; -const missingAfterError = { messageId: "missingAfter", type: "Punctuator" }; +const missingBeforeError = { + messageId: "missingBefore", +}; +const missingAfterError = { + messageId: "missingAfter", +}; const unexpectedBeforeError = { messageId: "unexpectedBefore", - type: "Punctuator", }; const unexpectedAfterError = { messageId: "unexpectedAfter", - type: "Punctuator", }; ruleTester.run("generator-star-spacing", rule, { diff --git a/tests/lib/rules/global-require.js b/tests/lib/rules/global-require.js index 1b6db9e71571..295a29ce486f 100644 --- a/tests/lib/rules/global-require.js +++ b/tests/lib/rules/global-require.js @@ -49,7 +49,9 @@ const valid = [ }, ]; -const error = { messageId: "unexpected", type: "CallExpression" }; +const error = { + messageId: "unexpected", +}; const invalid = [ // block statements diff --git a/tests/lib/rules/grouped-accessor-pairs.js b/tests/lib/rules/grouped-accessor-pairs.js index 847a81f65539..38ba2228d6f3 100644 --- a/tests/lib/rules/grouped-accessor-pairs.js +++ b/tests/lib/rules/grouped-accessor-pairs.js @@ -159,7 +159,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "getter 'a'", latterName: "setter 'a'", }, - type: "Property", column: 20, }, ], @@ -173,7 +172,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "setter 'abc'", latterName: "getter 'abc'", }, - type: "Property", column: 27, }, ], @@ -184,7 +182,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { { messageId: "notGrouped", data: { formerName: "getter", latterName: "setter" }, - type: "Property", column: 22, }, ], @@ -198,7 +195,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "getter 'abc'", latterName: "setter 'abc'", }, - type: "MethodDefinition", column: 29, }, ], @@ -212,7 +208,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "setter 'abc'", latterName: "getter 'abc'", }, - type: "MethodDefinition", column: 31, }, ], @@ -226,7 +221,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "static setter 'a'", latterName: "static getter 'a'", }, - type: "MethodDefinition", column: 37, }, ], @@ -240,7 +234,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "static getter '123'", latterName: "static setter '123'", }, - type: "MethodDefinition", column: 35, }, ], @@ -254,7 +247,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "static getter", latterName: "static setter", }, - type: "MethodDefinition", column: 36, }, ], @@ -268,7 +260,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "getter '#abc'", latterName: "setter '#abc'", }, - type: "MethodDefinition", column: 32, }, ], @@ -282,7 +273,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "private getter #abc", latterName: "private setter #abc", }, - type: "MethodDefinition", column: 30, }, ], @@ -299,7 +289,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { latterName: "getter 'a'", formerName: "setter 'a'", }, - type: "Property", column: 18, }, ], @@ -314,7 +303,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { latterName: "setter '123'", formerName: "getter '123'", }, - type: "Property", column: 17, }, ], @@ -326,7 +314,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { { messageId: "invalidOrder", data: { latterName: "setter", formerName: "getter" }, - type: "Property", column: 17, }, ], @@ -341,7 +328,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { latterName: "getter 'abc'", formerName: "setter 'abc'", }, - type: "MethodDefinition", column: 26, }, ], @@ -356,7 +342,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { latterName: "setter 'abc'", formerName: "getter 'abc'", }, - type: "MethodDefinition", column: 26, }, ], @@ -371,7 +356,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { latterName: "static setter 'a'", formerName: "static getter 'a'", }, - type: "MethodDefinition", column: 28, }, ], @@ -386,7 +370,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { latterName: "static getter 'abc'", formerName: "static setter 'abc'", }, - type: "MethodDefinition", column: 34, }, ], @@ -401,7 +384,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "static setter", latterName: "static getter", }, - type: "MethodDefinition", column: 35, }, ], @@ -416,7 +398,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { latterName: "getter '#abc'", formerName: "setter '#abc'", }, - type: "MethodDefinition", column: 29, }, ], @@ -431,7 +412,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { latterName: "private getter #abc", formerName: "private setter #abc", }, - type: "MethodDefinition", column: 27, }, ], @@ -448,7 +428,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "getter 'a'", latterName: "setter 'a'", }, - type: "Property", }, ], }, @@ -462,7 +441,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "getter 'a'", latterName: "setter 'a'", }, - type: "Property", }, ], }, @@ -476,7 +454,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "getter 'a'", latterName: "setter 'a'", }, - type: "Property", }, ], }, @@ -490,7 +467,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "setter 'a'", latterName: "getter 'a'", }, - type: "MethodDefinition", }, ], }, @@ -504,7 +480,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "static setter 'a'", latterName: "static getter 'a'", }, - type: "MethodDefinition", }, ], }, @@ -519,7 +494,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "getter 'abc'", latterName: "setter 'abc'", }, - type: "Property", }, ], }, @@ -530,7 +504,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { { messageId: "invalidOrder", data: { formerName: "setter ''", latterName: "getter ''" }, - type: "Property", }, ], }, @@ -544,7 +517,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "setter 'abc'", latterName: "getter 'abc'", }, - type: "MethodDefinition", }, ], }, @@ -558,7 +530,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "setter 'abc'", latterName: "getter 'abc'", }, - type: "MethodDefinition", }, ], }, @@ -572,7 +543,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "setter 'abc'", latterName: "getter 'abc'", }, - type: "Property", }, ], }, @@ -586,7 +556,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "setter '123'", latterName: "getter '123'", }, - type: "Property", }, ], }, @@ -600,7 +569,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "static setter '123'", latterName: "static getter '123'", }, - type: "MethodDefinition", }, ], }, @@ -611,7 +579,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { { messageId: "invalidOrder", data: { formerName: "setter", latterName: "getter" }, - type: "MethodDefinition", }, ], }, @@ -622,7 +589,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { { messageId: "invalidOrder", data: { formerName: "setter", latterName: "getter" }, - type: "Property", }, ], }, @@ -637,7 +603,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "getter 'a'", latterName: "setter 'a'", }, - type: "Property", column: 21, }, { @@ -646,7 +611,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "setter 'c'", latterName: "getter 'c'", }, - type: "Property", column: 56, }, ], @@ -660,7 +624,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "getter 'a'", latterName: "setter 'a'", }, - type: "Property", column: 29, }, { @@ -669,7 +632,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "setter 'b'", latterName: "getter 'b'", }, - type: "Property", column: 43, }, ], @@ -683,13 +645,11 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "getter 'a'", latterName: "setter 'a'", }, - type: "Property", column: 31, }, { messageId: "notGrouped", data: { formerName: "setter", latterName: "getter" }, - type: "Property", column: 45, }, ], @@ -704,7 +664,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "setter 'b'", latterName: "getter 'b'", }, - type: "Property", column: 31, }, { @@ -713,7 +672,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "setter 'c'", latterName: "getter 'c'", }, - type: "Property", column: 56, }, ], @@ -725,13 +683,11 @@ ruleTester.run("grouped-accessor-pairs", rule, { { messageId: "invalidOrder", data: { formerName: "setter", latterName: "getter" }, - type: "Property", column: 20, }, { messageId: "invalidOrder", data: { formerName: "setter", latterName: "getter" }, - type: "Property", column: 50, }, ], @@ -745,7 +701,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "getter 'a'", latterName: "setter 'a'", }, - type: "MethodDefinition", column: 38, }, { @@ -754,7 +709,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "getter 'b'", latterName: "setter 'b'", }, - type: "MethodDefinition", column: 74, }, ], @@ -768,7 +722,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "setter 'a'", latterName: "getter 'a'", }, - type: "MethodDefinition", column: 40, }, { @@ -777,7 +730,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "static getter 'a'", latterName: "static setter 'a'", }, - type: "MethodDefinition", column: 50, }, ], @@ -792,7 +744,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "getter 'a'", latterName: "setter 'a'", }, - type: "MethodDefinition", column: 21, }, { @@ -801,7 +752,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "static getter 'b'", latterName: "static setter 'b'", }, - type: "MethodDefinition", column: 51, }, ], @@ -812,13 +762,11 @@ ruleTester.run("grouped-accessor-pairs", rule, { { messageId: "notGrouped", data: { formerName: "setter", latterName: "getter" }, - type: "MethodDefinition", column: 41, }, { messageId: "notGrouped", data: { formerName: "getter", latterName: "setter" }, - type: "MethodDefinition", column: 55, }, ], @@ -834,7 +782,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "getter 'b'", latterName: "setter 'b'", }, - type: "Property", column: 57, }, ], @@ -848,7 +795,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "getter 'a'", latterName: "setter 'a'", }, - type: "Property", column: 26, }, ], @@ -862,7 +808,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "setter 'a'", latterName: "getter 'a'", }, - type: "Property", column: 31, }, ], @@ -873,7 +818,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { { messageId: "notGrouped", data: { formerName: "setter", latterName: "getter" }, - type: "Property", column: 34, }, ], @@ -888,7 +832,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "setter 'b'", latterName: "getter 'b'", }, - type: "Property", column: 43, }, ], @@ -902,7 +845,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "getter 'a'", latterName: "setter 'a'", }, - type: "MethodDefinition", column: 58, }, ], @@ -916,7 +858,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "static getter 'a'", latterName: "static setter 'a'", }, - type: "MethodDefinition", column: 40, }, ], @@ -931,7 +872,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "static getter 'a'", latterName: "static setter 'a'", }, - type: "MethodDefinition", column: 51, }, ], @@ -947,7 +887,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "getter 'a'", latterName: "setter 'a'", }, - type: "Property", column: 21, }, ], @@ -962,7 +901,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "setter 'a'", latterName: "getter 'a'", }, - type: "Property", column: 25, }, ], @@ -976,7 +914,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "getter 'a'", latterName: "setter 'a'", }, - type: "MethodDefinition", column: 27, }, ], @@ -991,7 +928,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "getter 'a'", latterName: "setter 'a'", }, - type: "MethodDefinition", column: 24, }, ], @@ -1007,7 +943,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "getter 'a'", latterName: "setter 'a'", }, - type: "Property", line: 3, column: 5, endLine: 3, @@ -1024,7 +959,6 @@ ruleTester.run("grouped-accessor-pairs", rule, { formerName: "static setter 'a'", latterName: "static getter 'a'", }, - type: "MethodDefinition", line: 1, column: 37, endLine: 2, @@ -1087,7 +1021,6 @@ ruleTesterTypeScript.run("grouped-accessor-pairs", rule, { formerName: "getter 'a'", latterName: "setter 'a'", }, - type: "TSMethodSignature", column: 44, }, ], @@ -1102,7 +1035,6 @@ ruleTesterTypeScript.run("grouped-accessor-pairs", rule, { formerName: "getter 'a'", latterName: "setter 'a'", }, - type: "TSMethodSignature", column: 29, }, ], @@ -1117,7 +1049,6 @@ ruleTesterTypeScript.run("grouped-accessor-pairs", rule, { formerName: "setter 'a'", latterName: "getter 'a'", }, - type: "TSMethodSignature", column: 40, }, ], @@ -1132,7 +1063,6 @@ ruleTesterTypeScript.run("grouped-accessor-pairs", rule, { formerName: "getter 'a'", latterName: "setter 'a'", }, - type: "TSMethodSignature", column: 41, }, ], @@ -1147,7 +1077,6 @@ ruleTesterTypeScript.run("grouped-accessor-pairs", rule, { formerName: "getter 'a'", latterName: "setter 'a'", }, - type: "TSMethodSignature", column: 26, }, ], diff --git a/tests/lib/rules/guard-for-in.js b/tests/lib/rules/guard-for-in.js index bf1ab3f52078..9dad93266ea0 100644 --- a/tests/lib/rules/guard-for-in.js +++ b/tests/lib/rules/guard-for-in.js @@ -17,7 +17,9 @@ const rule = require("../../../lib/rules/guard-for-in"), //------------------------------------------------------------------------------ const ruleTester = new RuleTester(); -const error = { messageId: "wrap", type: "ForInStatement" }; +const error = { + messageId: "wrap", +}; ruleTester.run("guard-for-in", rule, { valid: [ diff --git a/tests/lib/rules/handle-callback-err.js b/tests/lib/rules/handle-callback-err.js index 4d49378fedaf..45cc9ef1fbe3 100644 --- a/tests/lib/rules/handle-callback-err.js +++ b/tests/lib/rules/handle-callback-err.js @@ -20,11 +20,9 @@ const ruleTester = new RuleTester(); const expectedFunctionDeclarationError = { messageId: "expected", - type: "FunctionDeclaration", }; const expectedFunctionExpressionError = { messageId: "expected", - type: "FunctionExpression", }; ruleTester.run("handle-callback-err", rule, { diff --git a/tests/lib/rules/id-blacklist.js b/tests/lib/rules/id-blacklist.js index 0bcea02bd544..218c7e2506d5 100644 --- a/tests/lib/rules/id-blacklist.js +++ b/tests/lib/rules/id-blacklist.js @@ -22,7 +22,9 @@ const ruleTester = new RuleTester({ sourceType: "script", }, }); -const error = { messageId: "restricted", type: "Identifier" }; +const error = { + messageId: "restricted", +}; ruleTester.run("id-blacklist", rule, { valid: [ @@ -272,7 +274,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 17, }, ], @@ -285,7 +286,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 17, }, ], @@ -298,7 +298,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 17, }, ], @@ -311,7 +310,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 10, }, ], @@ -324,7 +322,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 22, }, ], @@ -337,7 +334,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 8, }, ], @@ -350,7 +346,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 26, }, ], @@ -363,13 +358,11 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 5, }, { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 19, }, ], @@ -382,7 +375,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 5, }, @@ -390,7 +382,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 19, }, ], @@ -403,19 +394,16 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 5, }, { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 19, }, { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 26, }, ], @@ -428,19 +416,16 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 5, }, { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 19, }, { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 26, }, ], @@ -459,7 +444,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 17, }, ], @@ -472,7 +456,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 17, }, ], @@ -485,7 +468,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 17, }, ], @@ -498,7 +480,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 10, }, ], @@ -511,7 +492,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 22, }, ], @@ -528,7 +508,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", }, ], }, @@ -539,7 +518,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", }, ], }, @@ -626,7 +604,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 8, }, ], @@ -639,7 +616,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 13, }, ], @@ -652,13 +628,11 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 9, }, { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 15, }, ], @@ -671,7 +645,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "baz" }, - type: "Identifier", column: 19, }, ], @@ -684,13 +657,11 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 15, }, { messageId: "restricted", data: { name: "baz" }, - type: "Identifier", column: 21, }, ], @@ -703,19 +674,16 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 9, }, { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 17, }, { messageId: "restricted", data: { name: "baz" }, - type: "Identifier", column: 23, }, ], @@ -728,7 +696,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "baz" }, - type: "Identifier", column: 21, }, ], @@ -741,7 +708,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "qux" }, - type: "Identifier", column: 27, }, ], @@ -754,7 +720,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 12, }, ], @@ -767,7 +732,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "baz" }, - type: "Identifier", column: 24, }, ], @@ -780,13 +744,11 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 4, }, { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 14, }, ], @@ -799,7 +761,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 17, }, ], @@ -812,7 +773,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 10, }, ], @@ -825,7 +785,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "baz" }, - type: "Identifier", column: 18, }, ], @@ -838,7 +797,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 10, }, ], @@ -851,7 +809,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 11, }, ], @@ -864,7 +821,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 17, }, ], @@ -877,7 +833,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 19, }, ], @@ -890,7 +845,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 10, }, ], @@ -903,7 +857,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 7, }, ], @@ -916,7 +869,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 8, }, ], @@ -930,7 +882,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "undefined" }, - type: "Identifier", }, ], }, @@ -941,7 +892,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "undefined" }, - type: "Identifier", }, ], }, @@ -952,7 +902,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "undefined" }, - type: "Identifier", column: 13, }, ], @@ -965,7 +914,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "Number" }, - type: "Identifier", }, ], }, @@ -977,7 +925,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "Number" }, - type: "Identifier", }, ], }, @@ -991,13 +938,11 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "myGlobal" }, - type: "Identifier", column: 1, }, { messageId: "restricted", data: { name: "myGlobal" }, - type: "Identifier", column: 30, }, ], @@ -1012,13 +957,11 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 7, }, { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 22, }, ], @@ -1031,13 +974,11 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 5, }, { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 10, }, ], @@ -1049,13 +990,11 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 7, }, { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 16, }, ], @@ -1067,13 +1006,11 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 10, }, { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 29, }, ], @@ -1086,13 +1023,11 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "Foo" }, - type: "Identifier", column: 7, }, { messageId: "restricted", data: { name: "Foo" }, - type: "Identifier", column: 24, }, ], @@ -1107,13 +1042,11 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "undefined" }, - type: "Identifier", column: 5, }, { messageId: "restricted", data: { name: "undefined" }, - type: "Identifier", column: 16, }, ], @@ -1125,13 +1058,11 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "undefined" }, - type: "Identifier", column: 7, }, { messageId: "restricted", data: { name: "undefined" }, - type: "Identifier", column: 22, }, ], @@ -1143,13 +1074,11 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "undefined" }, - type: "Identifier", column: 10, }, { messageId: "restricted", data: { name: "undefined" }, - type: "Identifier", column: 28, }, ], @@ -1162,13 +1091,11 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "Number" }, - type: "Identifier", column: 7, }, { messageId: "restricted", data: { name: "Number" }, - type: "Identifier", column: 21, }, ], @@ -1190,7 +1117,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "myGlobal" }, - type: "Identifier", column: 31, }, ], @@ -1207,7 +1133,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "undefined" }, - type: "Identifier", }, ], }, @@ -1218,7 +1143,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "Number" }, - type: "Identifier", }, ], }, @@ -1229,7 +1153,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "Map" }, - type: "Identifier", }, ], }, @@ -1243,13 +1166,11 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "undefined" }, - type: "Identifier", column: 16, }, { messageId: "restricted", data: { name: "undefined" }, - type: "Identifier", column: 33, }, ], @@ -1261,13 +1182,11 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "Number" }, - type: "Identifier", column: 14, }, { messageId: "restricted", data: { name: "Number" }, - type: "Identifier", column: 32, }, ], @@ -1282,13 +1201,11 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "myGlobal" }, - type: "Identifier", column: 22, }, { messageId: "restricted", data: { name: "myGlobal" }, - type: "Identifier", column: 36, }, ], @@ -1301,13 +1218,11 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "Number" }, - type: "Identifier", column: 28, }, { messageId: "restricted", data: { name: "Number" }, - type: "Identifier", column: 58, }, ], @@ -1320,13 +1235,11 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "Number" }, - type: "Identifier", column: 8, }, { messageId: "restricted", data: { name: "Number" }, - type: "Identifier", column: 44, }, ], @@ -1338,7 +1251,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "undefined" }, - type: "Identifier", }, ], }, @@ -1352,7 +1264,6 @@ ruleTester.run("id-blacklist", rule, { { messageId: "restricted", data: { name: "undefined" }, - type: "Identifier", }, ], }, diff --git a/tests/lib/rules/id-denylist.js b/tests/lib/rules/id-denylist.js index e9fc9dc48831..03f7970b3ddb 100644 --- a/tests/lib/rules/id-denylist.js +++ b/tests/lib/rules/id-denylist.js @@ -22,7 +22,9 @@ const ruleTester = new RuleTester({ sourceType: "script", }, }); -const error = { messageId: "restricted", type: "Identifier" }; +const error = { + messageId: "restricted", +}; ruleTester.run("id-denylist", rule, { valid: [ @@ -318,7 +320,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 17, }, ], @@ -331,7 +332,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 17, }, ], @@ -344,7 +344,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 17, }, ], @@ -357,7 +356,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 10, }, ], @@ -370,7 +368,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 22, }, ], @@ -383,7 +380,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 8, }, ], @@ -396,7 +392,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 26, }, ], @@ -409,13 +404,11 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 5, }, { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 19, }, ], @@ -428,7 +421,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 5, }, @@ -436,7 +428,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 19, }, ], @@ -449,19 +440,16 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 5, }, { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 19, }, { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 26, }, ], @@ -474,19 +462,16 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 5, }, { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 19, }, { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 26, }, ], @@ -505,7 +490,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 17, }, ], @@ -518,7 +502,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 17, }, ], @@ -531,7 +514,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 17, }, ], @@ -544,7 +526,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 10, }, ], @@ -557,7 +538,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 22, }, ], @@ -574,7 +554,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", }, ], }, @@ -585,7 +564,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", }, ], }, @@ -672,7 +650,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 8, }, ], @@ -685,7 +662,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 13, }, ], @@ -698,13 +674,11 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 9, }, { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 15, }, ], @@ -717,7 +691,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "baz" }, - type: "Identifier", column: 19, }, ], @@ -730,13 +703,11 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 15, }, { messageId: "restricted", data: { name: "baz" }, - type: "Identifier", column: 21, }, ], @@ -749,19 +720,16 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 9, }, { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 17, }, { messageId: "restricted", data: { name: "baz" }, - type: "Identifier", column: 23, }, ], @@ -774,7 +742,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "baz" }, - type: "Identifier", column: 21, }, ], @@ -787,7 +754,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "qux" }, - type: "Identifier", column: 27, }, ], @@ -800,7 +766,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 12, }, ], @@ -813,7 +778,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "baz" }, - type: "Identifier", column: 24, }, ], @@ -826,13 +790,11 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 4, }, { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 14, }, ], @@ -845,7 +807,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 17, }, ], @@ -858,7 +819,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 10, }, ], @@ -871,7 +831,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "baz" }, - type: "Identifier", column: 18, }, ], @@ -884,7 +843,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 10, }, ], @@ -897,7 +855,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 11, }, ], @@ -910,7 +867,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 17, }, ], @@ -923,7 +879,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 19, }, ], @@ -936,7 +891,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 10, }, ], @@ -949,7 +903,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 7, }, ], @@ -962,7 +915,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "bar" }, - type: "Identifier", column: 8, }, ], @@ -976,7 +928,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "undefined" }, - type: "Identifier", }, ], }, @@ -987,7 +938,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "undefined" }, - type: "Identifier", }, ], }, @@ -998,7 +948,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "undefined" }, - type: "Identifier", column: 13, }, ], @@ -1011,7 +960,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "Number" }, - type: "Identifier", }, ], }, @@ -1023,7 +971,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "Number" }, - type: "Identifier", }, ], }, @@ -1037,13 +984,11 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "myGlobal" }, - type: "Identifier", column: 1, }, { messageId: "restricted", data: { name: "myGlobal" }, - type: "Identifier", column: 30, }, ], @@ -1058,13 +1003,11 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 7, }, { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 22, }, ], @@ -1077,13 +1020,11 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 5, }, { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 10, }, ], @@ -1095,13 +1036,11 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 7, }, { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 16, }, ], @@ -1113,13 +1052,11 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 10, }, { messageId: "restricted", data: { name: "foo" }, - type: "Identifier", column: 29, }, ], @@ -1132,13 +1069,11 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "Foo" }, - type: "Identifier", column: 7, }, { messageId: "restricted", data: { name: "Foo" }, - type: "Identifier", column: 24, }, ], @@ -1153,13 +1088,11 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "undefined" }, - type: "Identifier", column: 5, }, { messageId: "restricted", data: { name: "undefined" }, - type: "Identifier", column: 16, }, ], @@ -1171,13 +1104,11 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "undefined" }, - type: "Identifier", column: 7, }, { messageId: "restricted", data: { name: "undefined" }, - type: "Identifier", column: 22, }, ], @@ -1189,13 +1120,11 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "undefined" }, - type: "Identifier", column: 10, }, { messageId: "restricted", data: { name: "undefined" }, - type: "Identifier", column: 28, }, ], @@ -1208,13 +1137,11 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "Number" }, - type: "Identifier", column: 7, }, { messageId: "restricted", data: { name: "Number" }, - type: "Identifier", column: 21, }, ], @@ -1236,7 +1163,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "myGlobal" }, - type: "Identifier", column: 31, }, ], @@ -1253,7 +1179,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "undefined" }, - type: "Identifier", }, ], }, @@ -1264,7 +1189,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "Number" }, - type: "Identifier", }, ], }, @@ -1275,7 +1199,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "Map" }, - type: "Identifier", }, ], }, @@ -1289,13 +1212,11 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "undefined" }, - type: "Identifier", column: 16, }, { messageId: "restricted", data: { name: "undefined" }, - type: "Identifier", column: 33, }, ], @@ -1307,13 +1228,11 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "Number" }, - type: "Identifier", column: 14, }, { messageId: "restricted", data: { name: "Number" }, - type: "Identifier", column: 32, }, ], @@ -1328,13 +1247,11 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "myGlobal" }, - type: "Identifier", column: 22, }, { messageId: "restricted", data: { name: "myGlobal" }, - type: "Identifier", column: 36, }, ], @@ -1347,13 +1264,11 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "Number" }, - type: "Identifier", column: 28, }, { messageId: "restricted", data: { name: "Number" }, - type: "Identifier", column: 58, }, ], @@ -1366,13 +1281,11 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "Number" }, - type: "Identifier", column: 8, }, { messageId: "restricted", data: { name: "Number" }, - type: "Identifier", column: 44, }, ], @@ -1384,7 +1297,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "undefined" }, - type: "Identifier", }, ], }, @@ -1398,7 +1310,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "undefined" }, - type: "Identifier", }, ], }, @@ -1412,12 +1323,10 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "camelCase" }, - type: "Identifier", }, { messageId: "restrictedPrivate", data: { name: "camelCase" }, - type: "PrivateIdentifier", }, ], }, @@ -1429,12 +1338,10 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "snake_case" }, - type: "Identifier", }, { messageId: "restrictedPrivate", data: { name: "snake_case" }, - type: "PrivateIdentifier", }, ], }, @@ -1448,7 +1355,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "type" }, - type: "Identifier", }, ], }, @@ -1460,7 +1366,6 @@ ruleTester.run("id-denylist", rule, { { messageId: "restricted", data: { name: "json" }, - type: "Identifier", }, ], }, diff --git a/tests/lib/rules/id-length.js b/tests/lib/rules/id-length.js index 711e483fc3a7..211cafc1eddc 100644 --- a/tests/lib/rules/id-length.js +++ b/tests/lib/rules/id-length.js @@ -17,15 +17,17 @@ const rule = require("../../../lib/rules/id-length"), //------------------------------------------------------------------------------ const ruleTester = new RuleTester(); -const tooShortError = { messageId: "tooShort", type: "Identifier" }; +const tooShortError = { + messageId: "tooShort", +}; const tooShortErrorPrivate = { messageId: "tooShortPrivate", - type: "PrivateIdentifier", }; -const tooLongError = { messageId: "tooLong", type: "Identifier" }; +const tooLongError = { + messageId: "tooLong", +}; const tooLongErrorPrivate = { messageId: "tooLongPrivate", - type: "PrivateIdentifier", }; ruleTester.run("id-length", rule, { @@ -563,7 +565,6 @@ ruleTester.run("id-length", rule, { { messageId: "tooShort", data: { name: "a", min: 2 }, - type: "Identifier", }, ], }, @@ -594,7 +595,6 @@ ruleTester.run("id-length", rule, { data: { name: "b", min: 2 }, line: 1, column: 19, - type: "Identifier", }, ], }, @@ -607,7 +607,6 @@ ruleTester.run("id-length", rule, { data: { name: "hasOwnProperty", max: 10 }, line: 1, column: 5, - type: "Identifier", }, ], }, @@ -620,14 +619,12 @@ ruleTester.run("id-length", rule, { data: { name: "d", min: 2 }, line: 1, column: 29, - type: "Identifier", }, { messageId: "tooShort", data: { name: "e", min: 2 }, line: 1, column: 32, - type: "Identifier", }, ], }, @@ -643,7 +640,6 @@ ruleTester.run("id-length", rule, { { messageId: "tooShort", data: { name: "a", min: 2 }, - type: "Identifier", }, ], }, @@ -683,7 +679,6 @@ ruleTester.run("id-length", rule, { data: { name: "longName", max: 5 }, line: 1, column: 13, - type: "Identifier", }, ], }, @@ -697,7 +692,6 @@ ruleTester.run("id-length", rule, { data: { name: "a", min: 2 }, line: 1, column: 10, - type: "Identifier", }, ], }, @@ -710,7 +704,6 @@ ruleTester.run("id-length", rule, { data: { name: "d", min: 2 }, line: 1, column: 20, - type: "Identifier", }, ], }, @@ -723,14 +716,12 @@ ruleTester.run("id-length", rule, { data: { name: "d", min: 2 }, line: 1, column: 20, - type: "Identifier", }, { messageId: "tooShort", data: { name: "e", min: 2 }, line: 1, column: 23, - type: "Identifier", }, ], }, @@ -743,7 +734,6 @@ ruleTester.run("id-length", rule, { data: { name: "c", min: 2 }, line: 1, column: 17, - type: "Identifier", }, ], }, @@ -756,7 +746,6 @@ ruleTester.run("id-length", rule, { data: { name: "d", min: 2 }, line: 1, column: 20, - type: "Identifier", }, ], }, @@ -769,14 +758,12 @@ ruleTester.run("id-length", rule, { data: { name: "a", min: 2 }, line: 1, column: 7, - type: "Identifier", }, { messageId: "tooShort", data: { name: "d", min: 2 }, line: 1, column: 18, - type: "Identifier", }, ], }, @@ -799,7 +786,6 @@ ruleTester.run("id-length", rule, { data: { name: "z", min: 2 }, line: 1, column: 15, - type: "Identifier", }, ], }, @@ -812,7 +798,6 @@ ruleTester.run("id-length", rule, { data: { name: "x", min: 2 }, line: 1, column: 14, - type: "Identifier", }, ], }, @@ -831,7 +816,6 @@ ruleTester.run("id-length", rule, { data: { name: "x", min: 2 }, line: 1, column: 12, - type: "Identifier", }, ], }, diff --git a/tests/lib/rules/id-match.js b/tests/lib/rules/id-match.js index d870c067946b..b5c4b8ef2ad2 100644 --- a/tests/lib/rules/id-match.js +++ b/tests/lib/rules/id-match.js @@ -17,7 +17,9 @@ const rule = require("../../../lib/rules/id-match"), //------------------------------------------------------------------------------ const ruleTester = new RuleTester(); -const error = { messageId: "notMatch", type: "Identifier" }; +const error = { + messageId: "notMatch", +}; ruleTester.run("id-match", rule, { valid: [ @@ -442,7 +444,6 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'no_under' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, ], }, @@ -559,7 +560,6 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'category_alias' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, ], }, @@ -577,7 +577,6 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'category_alias' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, ], }, @@ -595,7 +594,6 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'other_props' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, ], }, @@ -612,7 +610,6 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'category_id' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, ], }, @@ -629,7 +626,6 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'category_id' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, ], }, @@ -646,7 +642,6 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'no_camelcased' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, ], }, @@ -663,7 +658,6 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'no_camelcased' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, ], }, @@ -675,7 +669,6 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'no_camelcased' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, ], }, @@ -692,7 +685,6 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'no_camelcased' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, ], }, @@ -709,7 +701,6 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'no_camel_cased' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, ], }, @@ -726,7 +717,6 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'no_camel_cased' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, ], }, @@ -743,7 +733,6 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'no_camelcased' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, ], }, @@ -760,7 +749,6 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'another_no_camelcased' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, ], }, @@ -777,7 +765,6 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'no_camelcased' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, ], }, @@ -794,7 +781,6 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'no_camelcased' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, ], }, @@ -811,7 +797,6 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'no_camelcased' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, ], }, @@ -828,7 +813,6 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'no_camelcased' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, ], }, @@ -845,12 +829,10 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'no_camelcased' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, { message: "Identifier 'camelcased_value' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, ], }, @@ -867,7 +849,6 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'no_camelcased' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, ], }, @@ -884,7 +865,6 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'my_default' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, ], }, @@ -901,7 +881,6 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'no_camelcased' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, ], }, @@ -918,7 +897,6 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'bar_baz' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, ], }, @@ -935,7 +913,6 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'no_camelcased' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, ], }, @@ -965,14 +942,12 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'foo_variable' does not match the pattern '^\\$?[a-z]+([A-Z0-9][a-z0-9]+)*$'.", - type: "Identifier", line: 2, column: 19, }, { message: "Identifier 'MyClass' does not match the pattern '^\\$?[a-z]+([A-Z0-9][a-z0-9]+)*$'.", - type: "Identifier", line: 3, column: 19, }, @@ -981,14 +956,12 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'Object' does not match the pattern '^\\$?[a-z]+([A-Z0-9][a-z0-9]+)*$'.", - type: "Identifier", line: 9, column: 22, }, { message: "Identifier 'Object' does not match the pattern '^\\$?[a-z]+([A-Z0-9][a-z0-9]+)*$'.", - type: "Identifier", line: 9, column: 33, }, @@ -997,14 +970,12 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'Array' does not match the pattern '^\\$?[a-z]+([A-Z0-9][a-z0-9]+)*$'.", - type: "Identifier", line: 10, column: 22, }, { message: "Identifier 'Array' does not match the pattern '^\\$?[a-z]+([A-Z0-9][a-z0-9]+)*$'.", - type: "Identifier", line: 10, column: 32, }, @@ -1013,7 +984,6 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'Array' does not match the pattern '^\\$?[a-z]+([A-Z0-9][a-z0-9]+)*$'.", - type: "Identifier", line: 11, column: 17, }, @@ -1029,7 +999,6 @@ ruleTester.run("id-match", rule, { { message: "Identifier '_foo' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, ], }, @@ -1041,7 +1010,6 @@ ruleTester.run("id-match", rule, { { message: "Identifier '#_foo' does not match the pattern '^[^_]+$'.", - type: "PrivateIdentifier", }, ], }, @@ -1060,7 +1028,6 @@ ruleTester.run("id-match", rule, { { message: "Identifier '_foo' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, ], }, @@ -1077,7 +1044,6 @@ ruleTester.run("id-match", rule, { { message: "Identifier '#_foo' does not match the pattern '^[^_]+$'.", - type: "PrivateIdentifier", }, ], }, @@ -1103,12 +1069,10 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'foo_one' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, { message: "Identifier 'bar_one' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, ], }, @@ -1132,12 +1096,10 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'foo_one' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, { message: "Identifier 'bar_one' does not match the pattern '^[^_]+$'.", - type: "Identifier", }, ], }, @@ -1159,7 +1121,6 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'a' does not match the pattern '^[^a]'.", - type: "Identifier", }, ], }, @@ -1183,7 +1144,6 @@ ruleTester.run("id-match", rule, { { message: "Identifier 'a' does not match the pattern '^[^a]'.", - type: "Identifier", }, ], }, diff --git a/tests/lib/rules/indent-legacy.js b/tests/lib/rules/indent-legacy.js index bc4f17a035e1..230e00cd6669 100644 --- a/tests/lib/rules/indent-legacy.js +++ b/tests/lib/rules/indent-legacy.js @@ -65,7 +65,6 @@ function expectedErrors(providedIndentType, providedErrors) { : `${err[1]} ${indentType}${err[1] === 1 ? "" : "s"}`, actual: err[2], }, - type: err[3], line: err[0], })); } @@ -1804,7 +1803,7 @@ ruleTester.run("indent-legacy", rule, { code: "var a = b;\n" + "if (a) {\n" + "b();\n" + "}\n", output: "var a = b;\n" + "if (a) {\n" + " b();\n" + "}\n", options: [2], - errors: expectedErrors([[3, 2, 0, "ExpressionStatement"]]), + errors: expectedErrors([[3, 2, 0]]), }, { code: @@ -1839,8 +1838,8 @@ ruleTester.run("indent-legacy", rule, { "}\n", options: [2], errors: expectedErrors([ - [4, 2, 0, "ExpressionStatement"], - [6, 2, 4, "ExpressionStatement"], + [4, 2, 0], + [6, 2, 4], ]), }, { @@ -1848,8 +1847,8 @@ ruleTester.run("indent-legacy", rule, { output: "if (a){\n\tb=c;\n\tc=d;\n\te=f;\n}", options: ["tab"], errors: expectedErrors("tab", [ - [3, 1, 2, "ExpressionStatement"], - [4, 1, 0, "ExpressionStatement"], + [3, 1, 2], + [4, 1, 0], ]), }, { @@ -1857,8 +1856,8 @@ ruleTester.run("indent-legacy", rule, { output: "if (a){\n b=c;\n c=d;\n e=f;\n}", options: [4], errors: expectedErrors([ - [3, 4, 6, "ExpressionStatement"], - [4, 4, 1, "ExpressionStatement"], + [3, 4, 6], + [4, 4, 1], ]), }, { @@ -1866,7 +1865,7 @@ ruleTester.run("indent-legacy", rule, { output: fixedFixture, options: [2, { SwitchCase: 1, MemberExpression: 1 }], errors: expectedErrors([ - [5, 2, 4, "VariableDeclaration"], + [5, 2, 4], [10, 4, 6, "BlockStatement"], [11, 2, 4, "BlockStatement"], [15, 4, 2, "ExpressionStatement"], @@ -1987,8 +1986,8 @@ ruleTester.run("indent-legacy", rule, { "}", options: [4, { SwitchCase: 1 }], errors: expectedErrors([ - [4, 8, 4, "BreakStatement"], - [7, 8, 4, "BreakStatement"], + [4, 8, 4], + [7, 8, 4], ]), }, { @@ -2006,8 +2005,8 @@ ruleTester.run("indent-legacy", rule, { " };", options: [4], errors: expectedErrors([ - [3, 8, 7, "Property"], - [4, 8, 10, "Property"], + [3, 8, 7], + [4, 8, 10], ]), }, { @@ -2034,7 +2033,7 @@ ruleTester.run("indent-legacy", rule, { " break;\n" + "}", options: [4, { SwitchCase: 1 }], - errors: expectedErrors([9, 8, 4, "BreakStatement"]), + errors: expectedErrors([9, 8, 4]), }, { code: @@ -2105,12 +2104,12 @@ ruleTester.run("indent-legacy", rule, { "}", options: [4], errors: expectedErrors([ - [3, 4, 8, "ExpressionStatement"], - [4, 4, 8, "BreakStatement"], - [5, 0, 4, "SwitchCase"], - [6, 4, 8, "BreakStatement"], - [7, 0, 4, "SwitchCase"], - [8, 4, 8, "BreakStatement"], + [3, 4, 8], + [4, 4, 8], + [5, 0, 4], + [6, 4, 8], + [7, 0, 4], + [8, 4, 8], ]), }, { @@ -2124,7 +2123,7 @@ ruleTester.run("indent-legacy", rule, { "with (obj) {\n" + " console.log(foo + bar);\n" + "}\n", - errors: expectedErrors([3, 4, 0, "ExpressionStatement"]), + errors: expectedErrors([3, 4, 0]), }, { code: @@ -2147,12 +2146,12 @@ ruleTester.run("indent-legacy", rule, { "}\n", options: [4, { SwitchCase: 1 }], errors: expectedErrors([ - [2, 4, 0, "SwitchCase"], - [3, 8, 0, "ExpressionStatement"], - [4, 8, 0, "BreakStatement"], - [5, 4, 0, "SwitchCase"], - [6, 8, 0, "ExpressionStatement"], - [7, 8, 0, "BreakStatement"], + [2, 4, 0], + [3, 8, 0], + [4, 8, 0], + [5, 4, 0], + [6, 8, 0], + [7, 8, 0], ]), }, { @@ -2215,37 +2214,37 @@ ruleTester.run("indent-legacy", rule, { "};", options: [2, { MemberExpression: 1 }], languageOptions: { ecmaVersion: 6 }, - errors: expectedErrors([[3, 4, 6, "Punctuator"]]), + errors: expectedErrors([[3, 4, 6]]), }, { code: "while (a) \n" + "b();", output: "while (a) \n" + " b();", options: [4], - errors: expectedErrors([[2, 4, 0, "ExpressionStatement"]]), + errors: expectedErrors([[2, 4, 0]]), }, { code: "for (;;) \n" + "b();", output: "for (;;) \n" + " b();", options: [4], - errors: expectedErrors([[2, 4, 0, "ExpressionStatement"]]), + errors: expectedErrors([[2, 4, 0]]), }, { code: "for (a in x) \n" + "b();", output: "for (a in x) \n" + " b();", options: [4], - errors: expectedErrors([[2, 4, 0, "ExpressionStatement"]]), + errors: expectedErrors([[2, 4, 0]]), }, { code: "do \n" + "b();\n" + "while(true)", output: "do \n" + " b();\n" + "while(true)", options: [4], - errors: expectedErrors([[2, 4, 0, "ExpressionStatement"]]), + errors: expectedErrors([[2, 4, 0]]), }, { code: "if(true) \n" + "b();", output: "if(true) \n" + " b();", options: [4], - errors: expectedErrors([[2, 4, 0, "ExpressionStatement"]]), + errors: expectedErrors([[2, 4, 0]]), }, { code: @@ -2253,9 +2252,9 @@ ruleTester.run("indent-legacy", rule, { output: "var test = {\n" + " a: 1,\n" + " b: 2\n" + "};\n", options: [2], errors: expectedErrors([ - [2, 2, 6, "Property"], - [3, 2, 4, "Property"], - [4, 0, 4, "ObjectExpression"], + [2, 2, 6], + [3, 2, 4], + [4, 0, 4], ]), }, { @@ -2275,9 +2274,9 @@ ruleTester.run("indent-legacy", rule, { " b;\n", options: [4], errors: expectedErrors([ - [2, 8, 6, "ExpressionStatement"], - [3, 8, 4, "ExpressionStatement"], - [4, 8, 10, "ExpressionStatement"], + [2, 8, 6], + [3, 8, 4], + [4, 8, 10], ]), }, { @@ -2285,8 +2284,8 @@ ruleTester.run("indent-legacy", rule, { output: "var a = 1,\n" + " b = 2,\n" + " c = 3;\n", options: [4], errors: expectedErrors([ - [2, 4, 0, "VariableDeclarator"], - [3, 4, 0, "VariableDeclarator"], + [2, 4, 0], + [3, 4, 0], ]), }, { @@ -2299,8 +2298,8 @@ ruleTester.run("indent-legacy", rule, { options: [4], languageOptions: { ecmaVersion: 6 }, errors: expectedErrors([ - [2, 4, 0, "Identifier"], - [3, 4, 2, "ExpressionStatement"], + [2, 4, 0], + [3, 4, 2], ]), }, { @@ -2316,8 +2315,8 @@ ruleTester.run("indent-legacy", rule, { options: [4], languageOptions: { ecmaVersion: 6 }, errors: expectedErrors([ - [2, 4, 0, "Identifier"], - [3, 4, 2, "ReturnStatement"], + [2, 4, 0], + [3, 4, 2], ]), }, { @@ -2332,7 +2331,7 @@ ruleTester.run("indent-legacy", rule, { "});\n", options: [4], languageOptions: { ecmaVersion: 6 }, - errors: expectedErrors([[2, 4, 0, "Identifier"]]), + errors: expectedErrors([[2, 4, 0]]), }, { code: "[a, b, c].forEach((index) => {\n" + " index;\n" + "});\n", @@ -2340,7 +2339,7 @@ ruleTester.run("indent-legacy", rule, { "[a, b, c].forEach((index) => {\n" + " index;\n" + "});\n", options: [4], languageOptions: { ecmaVersion: 6 }, - errors: expectedErrors([[2, 4, 2, "ExpressionStatement"]]), + errors: expectedErrors([[2, 4, 2]]), }, { code: @@ -2353,7 +2352,7 @@ ruleTester.run("indent-legacy", rule, { "});\n", options: [4], languageOptions: { ecmaVersion: 6 }, - errors: expectedErrors([[2, 4, 2, "ReturnStatement"]]), + errors: expectedErrors([[2, 4, 2]]), }, { code: @@ -2361,8 +2360,8 @@ ruleTester.run("indent-legacy", rule, { output: "var x = ['a',\n" + " 'b',\n" + " 'c'\n" + "];", options: [4], errors: expectedErrors([ - [2, 4, 9, "Literal"], - [3, 4, 9, "Literal"], + [2, 4, 9], + [3, 4, 9], ]), }, { @@ -2380,9 +2379,9 @@ ruleTester.run("indent-legacy", rule, { "];", options: [4], errors: expectedErrors([ - [2, 4, 9, "Literal"], - [3, 4, 9, "Literal"], - [4, 4, 9, "Literal"], + [2, 4, 9], + [3, 4, 9], + [4, 4, 9], ]), }, { @@ -2400,10 +2399,10 @@ ruleTester.run("indent-legacy", rule, { " 'd'];", options: [4], errors: expectedErrors([ - [2, 4, 9, "Literal"], - [3, 4, 9, "Literal"], - [4, 4, 9, "Literal"], - [5, 4, 0, "Literal"], + [2, 4, 9], + [3, 4, 9], + [4, 4, 9], + [5, 4, 0], ]), }, { @@ -2422,10 +2421,10 @@ ruleTester.run("indent-legacy", rule, { options: [4], languageOptions: { ecmaVersion: 6 }, errors: expectedErrors([ - [2, 4, 9, "Literal"], - [3, 4, 9, "Literal"], - [4, 4, 9, "Literal"], - [5, 0, 2, "ArrayExpression"], + [2, 4, 9], + [3, 4, 9], + [4, 4, 9], + [5, 0, 2], ]), }, { @@ -2433,8 +2432,8 @@ ruleTester.run("indent-legacy", rule, { output: "while (1 < 2)\n console.log('foo')\nconsole.log('bar')", options: [2], errors: expectedErrors([ - [2, 2, 0, "ExpressionStatement"], - [3, 0, 2, "ExpressionStatement"], + [2, 2, 0], + [3, 0, 2], ]), }, { @@ -2453,7 +2452,7 @@ ruleTester.run("indent-legacy", rule, { " }\n" + "}\n", options: [2, { SwitchCase: 1 }], - errors: expectedErrors([[3, 4, 2, "SwitchCase"]]), + errors: expectedErrors([[3, 4, 2]]), }, { code: @@ -2463,7 +2462,7 @@ ruleTester.run("indent-legacy", rule, { "var geometry, box, face1, face2, colorT, colorB, sprite, padding, maxWidth,\n" + " height, rotate;", options: [2, { SwitchCase: 1 }], - errors: expectedErrors([[2, 2, 0, "VariableDeclarator"]]), + errors: expectedErrors([[2, 2, 0]]), }, { code: @@ -2486,38 +2485,38 @@ ruleTester.run("indent-legacy", rule, { "}\n", options: [4, { SwitchCase: 2 }], errors: expectedErrors([ - [2, 8, 0, "SwitchCase"], - [3, 12, 0, "ExpressionStatement"], - [4, 12, 0, "BreakStatement"], - [5, 8, 0, "SwitchCase"], - [6, 12, 0, "ExpressionStatement"], - [7, 12, 0, "BreakStatement"], + [2, 8, 0], + [3, 12, 0], + [4, 12, 0], + [5, 8, 0], + [6, 12, 0], + [7, 12, 0], ]), }, { code: "var geometry,\n" + "rotate;", output: "var geometry,\n" + " rotate;", options: [2, { VariableDeclarator: 1 }], - errors: expectedErrors([[2, 2, 0, "VariableDeclarator"]]), + errors: expectedErrors([[2, 2, 0]]), }, { code: "var geometry,\n" + " rotate;", output: "var geometry,\n" + " rotate;", options: [2, { VariableDeclarator: 2 }], - errors: expectedErrors([[2, 4, 2, "VariableDeclarator"]]), + errors: expectedErrors([[2, 4, 2]]), }, { code: "var geometry,\n" + "\trotate;", output: "var geometry,\n" + "\t\trotate;", options: ["tab", { VariableDeclarator: 2 }], - errors: expectedErrors("tab", [[2, 2, 1, "VariableDeclarator"]]), + errors: expectedErrors("tab", [[2, 2, 1]]), }, { code: "let geometry,\n" + " rotate;", output: "let geometry,\n" + " rotate;", options: [2, { VariableDeclarator: 2 }], languageOptions: { ecmaVersion: 6 }, - errors: expectedErrors([[2, 4, 2, "VariableDeclarator"]]), + errors: expectedErrors([[2, 4, 2]]), }, { code: @@ -2531,15 +2530,15 @@ ruleTester.run("indent-legacy", rule, { " if (true)\n" + " console.log(val);", options: [2, { VariableDeclarator: 2, SwitchCase: 1 }], - errors: expectedErrors([[4, 6, 4, "ExpressionStatement"]]), + errors: expectedErrors([[4, 6, 4]]), }, { code: "var a = {\n" + " a: 1,\n" + " b: 2\n" + "}", output: "var a = {\n" + " a: 1,\n" + " b: 2\n" + "}", options: [2, { VariableDeclarator: 2, SwitchCase: 1 }], errors: expectedErrors([ - [2, 2, 4, "Property"], - [3, 2, 4, "Property"], + [2, 2, 4], + [3, 2, 4], ]), }, { @@ -2547,8 +2546,8 @@ ruleTester.run("indent-legacy", rule, { output: "var a = [\n" + " a,\n" + " b\n" + "]", options: [2, { VariableDeclarator: 2, SwitchCase: 1 }], errors: expectedErrors([ - [2, 2, 4, "Identifier"], - [3, 2, 4, "Identifier"], + [2, 2, 4], + [3, 2, 4], ]), }, { @@ -2557,8 +2556,8 @@ ruleTester.run("indent-legacy", rule, { options: [2, { VariableDeclarator: { let: 2 }, SwitchCase: 1 }], languageOptions: { ecmaVersion: 6 }, errors: expectedErrors([ - [2, 2, 4, "Identifier"], - [3, 2, 4, "Identifier"], + [2, 2, 4], + [3, 2, 4], ]), }, { @@ -2574,8 +2573,8 @@ ruleTester.run("indent-legacy", rule, { " b = 4;\n", options: [4], errors: expectedErrors([ - [2, 8, 6, "Property"], - [3, 4, 2, "ObjectExpression"], + [2, 8, 6], + [3, 4, 2], ]), }, { @@ -2600,9 +2599,9 @@ ruleTester.run("indent-legacy", rule, { options: [2, { VariableDeclarator: { var: 2 } }], languageOptions: { ecmaVersion: 6 }, errors: expectedErrors([ - [6, 4, 6, "Property"], - [7, 2, 4, "ObjectExpression"], - [8, 2, 4, "VariableDeclarator"], + [6, 4, 6], + [7, 2, 4], + [8, 2, 4], ]), }, { @@ -2624,10 +2623,10 @@ ruleTester.run("indent-legacy", rule, { " };", options: [2, { VariableDeclarator: 2, SwitchCase: 1 }], errors: expectedErrors([ - [4, 4, 5, "ObjectExpression"], - [5, 6, 7, "Property"], - [6, 6, 8, "Property"], - [7, 4, 5, "ObjectExpression"], + [4, 4, 5], + [5, 6, 7], + [6, 6, 8], + [7, 4, 5], ]), }, { @@ -2645,10 +2644,10 @@ ruleTester.run("indent-legacy", rule, { " };", options: [2, { VariableDeclarator: 2, SwitchCase: 1 }], errors: expectedErrors([ - [2, 4, 5, "ObjectExpression"], - [3, 6, 7, "Property"], - [4, 6, 8, "Property"], - [5, 4, 5, "ObjectExpression"], + [2, 4, 5], + [3, 6, 7], + [4, 6, 8], + [5, 4, 5], ]), }, { @@ -2661,12 +2660,12 @@ ruleTester.run("indent-legacy", rule, { " , crypto = require('crypto')\n" + " ;\n", options: [2], - errors: expectedErrors([[3, 1, 0, "VariableDeclaration"]]), + errors: expectedErrors([[3, 1, 0]]), }, { code: "var a = 1\n" + " ,b = 2\n" + ";", output: "var a = 1\n" + " ,b = 2\n" + " ;", - errors: expectedErrors([[3, 3, 0, "VariableDeclaration"]]), + errors: expectedErrors([[3, 3, 0]]), }, { code: @@ -2683,7 +2682,7 @@ ruleTester.run("indent-legacy", rule, { "}", options: [4, { VariableDeclarator: 1, SwitchCase: 1 }], languageOptions: { ecmaVersion: 6 }, - errors: expectedErrors([[2, 4, 2, "MethodDefinition"]]), + errors: expectedErrors([[2, 4, 2]]), }, { code: @@ -2701,8 +2700,8 @@ ruleTester.run("indent-legacy", rule, { options: [4, { VariableDeclarator: 1, SwitchCase: 1 }], languageOptions: { ecmaVersion: 6 }, errors: expectedErrors([ - [2, 4, 2, "MethodDefinition"], - [4, 4, 2, "MethodDefinition"], + [2, 4, 2], + [4, 4, 2], ]), }, { @@ -2722,7 +2721,7 @@ ruleTester.run("indent-legacy", rule, { " };", options: [2, { VariableDeclarator: 2, SwitchCase: 1 }], languageOptions: { ecmaVersion: 6 }, - errors: expectedErrors([[3, 6, 4, "MethodDefinition"]]), + errors: expectedErrors([[3, 6, 4]]), }, { code: @@ -2744,7 +2743,7 @@ ruleTester.run("indent-legacy", rule, { " }\n" + "}\n", options: [4], - errors: expectedErrors([[5, 4, 2, "Keyword"]]), + errors: expectedErrors([[5, 4, 2]]), }, { code: @@ -2766,7 +2765,7 @@ ruleTester.run("indent-legacy", rule, { " \n" + "}\n", options: [4], - errors: expectedErrors([[5, 4, 2, "Keyword"]]), + errors: expectedErrors([[5, 4, 2]]), }, { code: @@ -2784,7 +2783,7 @@ ruleTester.run("indent-legacy", rule, { " bar();\n" + "}\n", options: [4], - errors: expectedErrors([[4, 4, 2, "Keyword"]]), + errors: expectedErrors([[4, 4, 2]]), }, { code: @@ -2800,7 +2799,7 @@ ruleTester.run("indent-legacy", rule, { " }\n" + "})();", options: [2, { outerIIFEBody: 0 }], - errors: expectedErrors([[2, 0, 2, "FunctionDeclaration"]]), + errors: expectedErrors([[2, 0, 2]]), }, { code: @@ -2816,13 +2815,13 @@ ruleTester.run("indent-legacy", rule, { " }\n" + "})();", options: [4, { outerIIFEBody: 2 }], - errors: expectedErrors([[2, 8, 4, "FunctionDeclaration"]]), + errors: expectedErrors([[2, 8, 4]]), }, { code: "if(data) {\n" + "console.log('hi');\n" + "}", output: "if(data) {\n" + " console.log('hi');\n" + "}", options: [2, { outerIIFEBody: 0 }], - errors: expectedErrors([[2, 2, 0, "ExpressionStatement"]]), + errors: expectedErrors([[2, 2, 0]]), }, { code: @@ -2838,7 +2837,7 @@ ruleTester.run("indent-legacy", rule, { " }\n" + "}(x);", options: [4, { outerIIFEBody: 2 }], - errors: expectedErrors([[2, 8, 4, "FunctionDeclaration"]]), + errors: expectedErrors([[2, 8, 4]]), }, { code: @@ -2854,7 +2853,7 @@ ruleTester.run("indent-legacy", rule, { " }()\n" + "};\n", options: [2, { outerIIFEBody: 0 }], - errors: expectedErrors([[3, 4, 2, "ReturnStatement"]]), + errors: expectedErrors([[3, 4, 2]]), }, { code: @@ -2870,7 +2869,7 @@ ruleTester.run("indent-legacy", rule, { " }\n" + "}();", options: [2, { outerIIFEBody: 2 }], - errors: expectedErrors([[2, 2, 4, "FunctionDeclaration"]]), + errors: expectedErrors([[2, 2, 4]]), }, { code: @@ -2886,39 +2885,39 @@ ruleTester.run("indent-legacy", rule, { "\t}()\n" + "};", options: ["tab", { outerIIFEBody: 3 }], - errors: expectedErrors("tab", [[3, 2, 4, "ReturnStatement"]]), + errors: expectedErrors("tab", [[3, 2, 4]]), }, { code: "Buffer\n" + ".toString()", output: "Buffer\n" + " .toString()", options: [4, { MemberExpression: 1 }], - errors: expectedErrors([[2, 4, 0, "Punctuator"]]), + errors: expectedErrors([[2, 4, 0]]), }, { code: "Buffer\n" + " .indexOf('a')\n" + ".toString()", output: "Buffer\n" + " .indexOf('a')\n" + " .toString()", options: [4, { MemberExpression: 1 }], - errors: expectedErrors([[3, 4, 0, "Punctuator"]]), + errors: expectedErrors([[3, 4, 0]]), }, { code: "Buffer.\n" + "length", output: "Buffer.\n" + " length", options: [4, { MemberExpression: 1 }], - errors: expectedErrors([[2, 4, 0, "Identifier"]]), + errors: expectedErrors([[2, 4, 0]]), }, { code: "Buffer.\n" + "\t\tlength", output: "Buffer.\n" + "\tlength", options: ["tab", { MemberExpression: 1 }], - errors: expectedErrors("tab", [[2, 1, 2, "Identifier"]]), + errors: expectedErrors("tab", [[2, 1, 2]]), }, { code: "Buffer\n" + " .foo\n" + " .bar", output: "Buffer\n" + " .foo\n" + " .bar", options: [2, { MemberExpression: 2 }], errors: expectedErrors([ - [2, 4, 2, "Punctuator"], - [3, 4, 2, "Punctuator"], + [2, 4, 2], + [3, 4, 2], ]), }, { @@ -2933,7 +2932,7 @@ ruleTester.run("indent-legacy", rule, { "else if (baz) foobar();\n" + "else if (qux) qux();", options: [2], - errors: expectedErrors([3, 0, 2, "Keyword"]), + errors: expectedErrors([3, 0, 2]), }, { code: @@ -2945,15 +2944,15 @@ ruleTester.run("indent-legacy", rule, { "else if (baz) foobar();\n" + "else qux();", options: [2], - errors: expectedErrors([3, 0, 2, "Keyword"]), + errors: expectedErrors([3, 0, 2]), }, { code: "foo();\n" + " if (baz) foobar();\n" + " else qux();", output: "foo();\n" + "if (baz) foobar();\n" + "else qux();", options: [2], errors: expectedErrors([ - [2, 0, 2, "IfStatement"], - [3, 0, 2, "Keyword"], + [2, 0, 2], + [3, 0, 2], ]), }, { @@ -2970,7 +2969,7 @@ ruleTester.run("indent-legacy", rule, { " qux();\n" + // (fixed on the next pass) " }", options: [2], - errors: expectedErrors([3, 0, 5, "Keyword"]), + errors: expectedErrors([3, 0, 5]), }, { code: @@ -2989,8 +2988,8 @@ ruleTester.run("indent-legacy", rule, { " }", options: [2], errors: expectedErrors([ - [3, 2, 4, "ExpressionStatement"], - [4, 0, 5, "BlockStatement"], + [3, 2, 4], + [4, 0, 5], ]), }, { @@ -3006,8 +3005,8 @@ ruleTester.run("indent-legacy", rule, { "}", options: [2, { FunctionDeclaration: { parameters: 1, body: 2 } }], errors: expectedErrors([ - [2, 2, 4, "Identifier"], - [3, 4, 6, "ExpressionStatement"], + [2, 2, 4], + [3, 4, 6], ]), }, { @@ -3023,8 +3022,8 @@ ruleTester.run("indent-legacy", rule, { "}", options: [2, { FunctionDeclaration: { parameters: 3, body: 1 } }], errors: expectedErrors([ - [2, 6, 2, "Identifier"], - [3, 2, 0, "ExpressionStatement"], + [2, 6, 2], + [3, 2, 0], ]), }, { @@ -3042,9 +3041,9 @@ ruleTester.run("indent-legacy", rule, { "}", options: [4, { FunctionDeclaration: { parameters: 1, body: 3 } }], errors: expectedErrors([ - [2, 4, 8, "Identifier"], - [3, 4, 2, "Identifier"], - [4, 12, 6, "ExpressionStatement"], + [2, 4, 8], + [3, 4, 2], + [4, 12, 6], ]), }, { @@ -3065,16 +3064,16 @@ ruleTester.run("indent-legacy", rule, { { FunctionDeclaration: { parameters: "first", body: 1 } }, ], errors: expectedErrors([ - [2, 13, 2, "Identifier"], - [3, 13, 19, "Identifier"], - [4, 2, 3, "ExpressionStatement"], + [2, 13, 2], + [3, 13, 19], + [4, 2, 3], ]), }, { code: "function foo(aaa, bbb)\n" + "{\n" + "bar();\n" + "}", output: "function foo(aaa, bbb)\n" + "{\n" + " bar();\n" + "}", options: [2, { FunctionDeclaration: { body: 3 } }], - errors: expectedErrors([3, 6, 0, "ExpressionStatement"]), + errors: expectedErrors([3, 6, 0]), }, { code: @@ -3094,8 +3093,8 @@ ruleTester.run("indent-legacy", rule, { { FunctionDeclaration: { parameters: "first", body: 2 } }, ], errors: expectedErrors([ - [3, 0, 4, "Identifier"], - [4, 4, 0, "ExpressionStatement"], + [3, 0, 4], + [4, 4, 0], ]), }, { @@ -3115,9 +3114,9 @@ ruleTester.run("indent-legacy", rule, { "}", options: [2, { FunctionExpression: { parameters: 2, body: 0 } }], errors: expectedErrors([ - [2, 4, 2, "Identifier"], - [4, 4, 6, "Identifier"], - [5, 0, 2, "ExpressionStatement"], + [2, 4, 2], + [4, 4, 6], + [5, 0, 2], ]), }, { @@ -3135,9 +3134,9 @@ ruleTester.run("indent-legacy", rule, { "}", options: [2, { FunctionExpression: { parameters: 1, body: 10 } }], errors: expectedErrors([ - [2, 2, 3, "Identifier"], - [3, 2, 1, "Identifier"], - [4, 20, 2, "ExpressionStatement"], + [2, 2, 3], + [3, 2, 1], + [4, 20, 2], ]), }, { @@ -3158,9 +3157,9 @@ ruleTester.run("indent-legacy", rule, { { FunctionExpression: { parameters: "first", body: 1 } }, ], errors: expectedErrors([ - [2, 19, 2, "Identifier"], - [3, 19, 24, "Identifier"], - [4, 4, 8, "ExpressionStatement"], + [2, 19, 2], + [3, 19, 24], + [4, 4, 8], ]), }, { @@ -3181,8 +3180,8 @@ ruleTester.run("indent-legacy", rule, { { FunctionExpression: { parameters: "first", body: 3 } }, ], errors: expectedErrors([ - [3, 0, 4, "Identifier"], - [4, 6, 2, "ExpressionStatement"], + [3, 0, 4], + [4, 6, 2], ]), }, { @@ -3211,17 +3210,15 @@ ruleTester.run("indent-legacy", rule, { "}", options: ["tab"], errors: expectedErrors("tab", [ - [3, "1 tab", "2 spaces", "ExpressionStatement"], - [4, "1 tab", "14 spaces", "ExpressionStatement"], + [3, "1 tab", "2 spaces"], + [4, "1 tab", "14 spaces"], ]), }, { code: "function foo() {\n" + " bar();\n" + "\t\t}", output: "function foo() {\n" + " bar();\n" + "}", options: [2], - errors: expectedErrors([ - [3, "0 spaces", "2 tabs", "BlockStatement"], - ]), + errors: expectedErrors([[3, "0 spaces", "2 tabs"]]), }, { code: @@ -3237,7 +3234,7 @@ ruleTester.run("indent-legacy", rule, { " }\n" + "}", options: [2, { FunctionDeclaration: { body: 1 } }], - errors: expectedErrors([3, 4, 8, "ExpressionStatement"]), + errors: expectedErrors([3, 4, 8]), }, { code: @@ -3255,7 +3252,7 @@ ruleTester.run("indent-legacy", rule, { " }\n" + "}", options: [2, { FunctionDeclaration: { body: 1, parameters: 2 } }], - errors: expectedErrors([3, 6, 4, "Identifier"]), + errors: expectedErrors([3, 6, 4]), }, { code: @@ -3295,15 +3292,15 @@ ruleTester.run("indent-legacy", rule, { " }\n" + "}", errors: expectedErrors([ - [4, 4, 0, "Keyword"], - [6, 4, 0, "Keyword"], + [4, 4, 0], + [6, 4, 0], ]), }, { code: "{\n" + " do {\n" + " }\n" + "while (true)\n" + "}", output: "{\n" + " do {\n" + " }\n" + " while (true)\n" + "}", - errors: expectedErrors([4, 4, 0, "Keyword"]), + errors: expectedErrors([4, 4, 0]), }, { code: @@ -3319,7 +3316,7 @@ ruleTester.run("indent-legacy", rule, { " )\n" + "}", options: [2], - errors: expectedErrors([[4, "2 spaces", "4", "ReturnStatement"]]), + errors: expectedErrors([[4, "2 spaces", "4"]]), }, { code: @@ -3335,7 +3332,7 @@ ruleTester.run("indent-legacy", rule, { " );\n" + "}", options: [2], - errors: expectedErrors([[4, "2 spaces", "4", "ReturnStatement"]]), + errors: expectedErrors([[4, "2 spaces", "4"]]), }, { code: @@ -3355,27 +3352,27 @@ ruleTester.run("indent-legacy", rule, { " }\n" + "}", options: [2, { VariableDeclarator: 2, SwitchCase: 1 }], - errors: expectedErrors([[4, "6 spaces", "4", "ReturnStatement"]]), + errors: expectedErrors([[4, "6 spaces", "4"]]), }, { code: "function foo() {\n" + " return 1\n" + "}", output: "function foo() {\n" + " return 1\n" + "}", options: [2], - errors: expectedErrors([[2, "2 spaces", "3", "ReturnStatement"]]), + errors: expectedErrors([[2, "2 spaces", "3"]]), }, { code: "function foo() {\n" + " return 1;\n" + "}", output: "function foo() {\n" + " return 1;\n" + "}", options: [2], - errors: expectedErrors([[2, "2 spaces", "3", "ReturnStatement"]]), + errors: expectedErrors([[2, "2 spaces", "3"]]), }, { code: "foo(\n" + "bar,\n" + " baz,\n" + " qux);", output: "foo(\n" + " bar,\n" + " baz,\n" + " qux);", options: [2, { CallExpression: { arguments: 1 } }], errors: expectedErrors([ - [2, 2, 0, "Identifier"], - [4, 2, 4, "Identifier"], + [2, 2, 0], + [4, 2, 4], ]), }, { @@ -3383,8 +3380,8 @@ ruleTester.run("indent-legacy", rule, { output: "foo(\n" + " bar,\n" + " baz);", options: [2, { CallExpression: { arguments: 2 } }], errors: expectedErrors([ - [2, "4 spaces", "1 tab", "Identifier"], - [3, "4 spaces", "1 tab", "Identifier"], + [2, "4 spaces", "1 tab"], + [3, "4 spaces", "1 tab"], ]), }, { @@ -3392,15 +3389,15 @@ ruleTester.run("indent-legacy", rule, { output: "foo(bar,\n" + "\tbaz,\n" + "\tqux);", options: ["tab", { CallExpression: { arguments: 1 } }], errors: expectedErrors("tab", [ - [2, 1, 2, "Identifier"], - [3, 1, 2, "Identifier"], + [2, 1, 2], + [3, 1, 2], ]), }, { code: "foo(bar, baz,\n" + " qux);", output: "foo(bar, baz,\n" + " qux);", options: [2, { CallExpression: { arguments: "first" } }], - errors: expectedErrors([2, 4, 9, "Identifier"]), + errors: expectedErrors([2, 4, 9]), }, { code: "foo(\n" + " bar,\n" + " baz);", @@ -3423,9 +3420,9 @@ ruleTester.run("indent-legacy", rule, { ");", options: [2, { CallExpression: { arguments: 3 } }], errors: expectedErrors([ - [2, 6, 2, "BinaryExpression"], - [3, 6, 14, "UnaryExpression"], - [4, 6, 8, "NewExpression"], + [2, 6, 2], + [3, 6, 14], + [4, 6, 8], ]), }, @@ -3436,7 +3433,7 @@ ruleTester.run("indent-legacy", rule, { languageOptions: { parserOptions: { ecmaFeatures: { globalReturn: true } }, }, - errors: expectedErrors([3, 0, 4, "ReturnStatement"]), + errors: expectedErrors([3, 0, 4]), }, { code: "return (\n" + " foo\n" + " )", @@ -3444,14 +3441,14 @@ ruleTester.run("indent-legacy", rule, { languageOptions: { parserOptions: { ecmaFeatures: { globalReturn: true } }, }, - errors: expectedErrors([3, 0, 4, "ReturnStatement"]), + errors: expectedErrors([3, 0, 4]), }, // https://github.com/eslint/eslint/issues/7604 { code: "if (foo) {\n" + " /* comment */bar();\n" + "}", output: "if (foo) {\n" + " /* comment */bar();\n" + "}", - errors: expectedErrors([2, 4, 8, "ExpressionStatement"]), + errors: expectedErrors([2, 4, 8]), }, { code: @@ -3464,7 +3461,7 @@ ruleTester.run("indent-legacy", rule, { " /** comment */{\n" + " ok: true" + " });", - errors: expectedErrors([2, 4, 8, "ObjectExpression"]), + errors: expectedErrors([2, 4, 8]), }, { code: @@ -3474,23 +3471,23 @@ ruleTester.run("indent-legacy", rule, { " ]", output: "var foo = [\n" + " bar,\n" + " baz\n" + "]", errors: expectedErrors([ - [2, 4, 11, "Identifier"], - [3, 4, 2, "Identifier"], - [4, 0, 10, "ArrayExpression"], + [2, 4, 11], + [3, 4, 2], + [4, 0, 10], ]), }, { code: "var foo = [bar,\n" + "baz,\n" + " qux\n" + "]", output: "var foo = [bar,\n" + " baz,\n" + " qux\n" + "]", - errors: expectedErrors([2, 4, 0, "Identifier"]), + errors: expectedErrors([2, 4, 0]), }, { code: "var foo = [bar,\n" + " baz,\n" + " qux\n" + "]", output: "var foo = [bar,\n" + "baz,\n" + "qux\n" + "]", options: [2, { ArrayExpression: 0 }], errors: expectedErrors([ - [2, 0, 2, "Identifier"], - [3, 0, 2, "Identifier"], + [2, 0, 2], + [3, 0, 2], ]), }, { @@ -3551,8 +3548,8 @@ ruleTester.run("indent-legacy", rule, { output: "var foo = {\n" + "bar: 1,\n" + "baz: 2\n" + "};", options: [2, { ObjectExpression: 0 }], errors: expectedErrors([ - [2, 0, 2, "Property"], - [3, 0, 2, "Property"], + [2, 0, 2], + [3, 0, 2], ]), }, { @@ -3575,7 +3572,7 @@ ruleTester.run("indent-legacy", rule, { " ]\n" + "}", options: [2, { ArrayExpression: 4 }], - errors: expectedErrors([2, 2, 4, "ExpressionStatement"]), + errors: expectedErrors([2, 2, 4]), }, { code: diff --git a/tests/lib/rules/indent.js b/tests/lib/rules/indent.js index ca83c8a1fae2..5dd461eed75b 100644 --- a/tests/lib/rules/indent.js +++ b/tests/lib/rules/indent.js @@ -67,7 +67,6 @@ function expectedErrors(providedIndentType, providedErrors) { : `${err[1]} ${indentType}${err[1] === 1 ? "" : "s"}`, actual: err[2], }, - type: err[3], line: err[0], })); } @@ -6672,7 +6671,7 @@ ruleTester.run("indent", rule, { } `, options: [2], - errors: expectedErrors([[3, 2, 0, "Identifier"]]), + errors: expectedErrors([[3, 2, 0]]), }, { code: unIndent` @@ -6689,9 +6688,9 @@ ruleTester.run("indent", rule, { `, options: [2], errors: expectedErrors([ - [2, 2, 18, "Identifier"], - [3, 2, 4, "Identifier"], - [4, 0, 2, "Punctuator"], + [2, 2, 18], + [3, 2, 4], + [4, 0, 2], ]), }, { @@ -6715,8 +6714,8 @@ ruleTester.run("indent", rule, { `, options: [2], errors: expectedErrors([ - [4, 2, 0, "Identifier"], - [6, 2, 4, "Identifier"], + [4, 2, 0], + [6, 2, 4], ]), }, { @@ -6736,8 +6735,8 @@ ruleTester.run("indent", rule, { `, options: ["tab"], errors: expectedErrors("tab", [ - [3, 1, 2, "Identifier"], - [4, 1, 0, "Identifier"], + [3, 1, 2], + [4, 1, 0], ]), }, { @@ -6757,8 +6756,8 @@ ruleTester.run("indent", rule, { `, options: [4], errors: expectedErrors([ - [3, 4, 6, "Identifier"], - [4, 4, 1, "Identifier"], + [3, 4, 6], + [4, 4, 1], ]), }, { @@ -6773,113 +6772,113 @@ ruleTester.run("indent", rule, { }, ], errors: expectedErrors([ - [5, 2, 4, "Keyword"], - [6, 2, 0, "Line"], - [10, 4, 6, "Punctuator"], - [11, 2, 4, "Punctuator"], - - [15, 4, 2, "Identifier"], - [16, 2, 4, "Punctuator"], - [23, 2, 4, "Punctuator"], - [29, 2, 4, "Keyword"], - [30, 4, 6, "Identifier"], - [36, 4, 6, "Identifier"], - [38, 2, 4, "Punctuator"], - [39, 4, 2, "Identifier"], - [40, 2, 0, "Punctuator"], - [54, 2, 4, "Punctuator"], - [114, 4, 2, "Keyword"], - [120, 4, 6, "Keyword"], - [124, 4, 2, "Keyword"], - [134, 4, 6, "Keyword"], - [138, 2, 3, "Punctuator"], - [139, 2, 3, "Punctuator"], - [143, 4, 0, "Identifier"], - [144, 6, 2, "Punctuator"], - [145, 6, 2, "Punctuator"], - [151, 4, 6, "Identifier"], - [152, 6, 8, "Punctuator"], - [153, 6, 8, "Punctuator"], - [159, 4, 2, "Identifier"], - [161, 4, 6, "Identifier"], - [175, 2, 0, "Identifier"], - [177, 2, 4, "Identifier"], - [189, 2, 0, "Keyword"], - [192, 6, 18, "Identifier"], - [193, 6, 4, "Identifier"], - [195, 6, 8, "Identifier"], - [228, 5, 4, "Identifier"], - [231, 3, 2, "Punctuator"], - [245, 0, 2, "Punctuator"], - [248, 0, 2, "Punctuator"], - [304, 4, 6, "Identifier"], - [306, 4, 8, "Identifier"], - [307, 2, 4, "Punctuator"], - [308, 2, 4, "Identifier"], - [311, 4, 6, "Identifier"], - [312, 4, 6, "Identifier"], - [313, 4, 6, "Identifier"], - [314, 2, 4, "Punctuator"], - [315, 2, 4, "Identifier"], - [318, 4, 6, "Identifier"], - [319, 4, 6, "Identifier"], - [320, 4, 6, "Identifier"], - [321, 2, 4, "Punctuator"], - [322, 2, 4, "Identifier"], - [326, 2, 1, "Numeric"], - [327, 2, 1, "Numeric"], - [328, 2, 1, "Numeric"], - [329, 2, 1, "Numeric"], - [330, 2, 1, "Numeric"], - [331, 2, 1, "Numeric"], - [332, 2, 1, "Numeric"], - [333, 2, 1, "Numeric"], - [334, 2, 1, "Numeric"], - [335, 2, 1, "Numeric"], - [340, 2, 4, "Identifier"], - [341, 2, 0, "Identifier"], - [344, 2, 4, "Identifier"], - [345, 2, 0, "Identifier"], - [348, 2, 4, "Identifier"], - [349, 2, 0, "Identifier"], - [355, 2, 0, "Identifier"], - [357, 2, 4, "Identifier"], - [361, 4, 6, "Identifier"], - [362, 2, 4, "Punctuator"], - [363, 2, 4, "Identifier"], - [368, 2, 0, "Keyword"], - [370, 2, 4, "Keyword"], - [374, 4, 6, "Keyword"], - [376, 4, 2, "Keyword"], - [383, 2, 0, "Identifier"], - [385, 2, 4, "Identifier"], - [390, 2, 0, "Identifier"], - [392, 2, 4, "Identifier"], - [409, 2, 0, "Identifier"], - [410, 2, 4, "Identifier"], - [416, 2, 0, "Identifier"], - [417, 2, 4, "Identifier"], - [418, 0, 4, "Punctuator"], - [422, 2, 4, "Identifier"], - [423, 2, 0, "Identifier"], - [427, 2, 6, "Identifier"], - [428, 2, 8, "Identifier"], - [429, 2, 4, "Identifier"], - [430, 0, 4, "Punctuator"], - [433, 2, 4, "Identifier"], - [434, 0, 4, "Punctuator"], - [437, 2, 0, "Identifier"], - [438, 0, 4, "Punctuator"], - [442, 2, 4, "Identifier"], - [443, 2, 4, "Identifier"], - [444, 0, 2, "Punctuator"], - [451, 2, 0, "Identifier"], - [453, 2, 4, "Identifier"], - [499, 6, 8, "Punctuator"], - [500, 8, 6, "Identifier"], - [504, 4, 6, "Punctuator"], - [505, 6, 8, "Identifier"], - [506, 4, 8, "Punctuator"], + [5, 2, 4], + [6, 2, 0], + [10, 4, 6], + [11, 2, 4], + + [15, 4, 2], + [16, 2, 4], + [23, 2, 4], + [29, 2, 4], + [30, 4, 6], + [36, 4, 6], + [38, 2, 4], + [39, 4, 2], + [40, 2, 0], + [54, 2, 4], + [114, 4, 2], + [120, 4, 6], + [124, 4, 2], + [134, 4, 6], + [138, 2, 3], + [139, 2, 3], + [143, 4, 0], + [144, 6, 2], + [145, 6, 2], + [151, 4, 6], + [152, 6, 8], + [153, 6, 8], + [159, 4, 2], + [161, 4, 6], + [175, 2, 0], + [177, 2, 4], + [189, 2, 0], + [192, 6, 18], + [193, 6, 4], + [195, 6, 8], + [228, 5, 4], + [231, 3, 2], + [245, 0, 2], + [248, 0, 2], + [304, 4, 6], + [306, 4, 8], + [307, 2, 4], + [308, 2, 4], + [311, 4, 6], + [312, 4, 6], + [313, 4, 6], + [314, 2, 4], + [315, 2, 4], + [318, 4, 6], + [319, 4, 6], + [320, 4, 6], + [321, 2, 4], + [322, 2, 4], + [326, 2, 1], + [327, 2, 1], + [328, 2, 1], + [329, 2, 1], + [330, 2, 1], + [331, 2, 1], + [332, 2, 1], + [333, 2, 1], + [334, 2, 1], + [335, 2, 1], + [340, 2, 4], + [341, 2, 0], + [344, 2, 4], + [345, 2, 0], + [348, 2, 4], + [349, 2, 0], + [355, 2, 0], + [357, 2, 4], + [361, 4, 6], + [362, 2, 4], + [363, 2, 4], + [368, 2, 0], + [370, 2, 4], + [374, 4, 6], + [376, 4, 2], + [383, 2, 0], + [385, 2, 4], + [390, 2, 0], + [392, 2, 4], + [409, 2, 0], + [410, 2, 4], + [416, 2, 0], + [417, 2, 4], + [418, 0, 4], + [422, 2, 4], + [423, 2, 0], + [427, 2, 6], + [428, 2, 8], + [429, 2, 4], + [430, 0, 4], + [433, 2, 4], + [434, 0, 4], + [437, 2, 0], + [438, 0, 4], + [442, 2, 4], + [443, 2, 4], + [444, 0, 2], + [451, 2, 0], + [453, 2, 4], + [499, 6, 8], + [500, 8, 6], + [504, 4, 6], + [505, 6, 8], + [506, 4, 8], ]), }, { @@ -6911,8 +6910,8 @@ ruleTester.run("indent", rule, { `, options: [4, { SwitchCase: 1 }], errors: expectedErrors([ - [4, 8, 4, "Keyword"], - [7, 8, 4, "Keyword"], + [4, 8, 4], + [7, 8, 4], ]), }, { @@ -6932,8 +6931,8 @@ ruleTester.run("indent", rule, { `, options: [4], errors: expectedErrors([ - [3, 8, 7, "Identifier"], - [4, 8, 10, "Identifier"], + [3, 8, 7], + [4, 8, 10], ]), }, { @@ -6962,7 +6961,7 @@ ruleTester.run("indent", rule, { } `, options: [4, { SwitchCase: 1 }], - errors: expectedErrors([9, 8, 4, "Keyword"]), + errors: expectedErrors([9, 8, 4]), }, { code: unIndent` @@ -7007,9 +7006,9 @@ ruleTester.run("indent", rule, { `, options: [4, { SwitchCase: 1 }], errors: expectedErrors([ - [11, 8, 4, "Keyword"], - [14, 8, 4, "Keyword"], - [17, 8, 4, "Keyword"], + [11, 8, 4], + [14, 8, 4], + [17, 8, 4], ]), }, { @@ -7037,12 +7036,12 @@ ruleTester.run("indent", rule, { `, options: [4], errors: expectedErrors([ - [3, 4, 8, "Identifier"], - [4, 4, 8, "Keyword"], - [5, 0, 4, "Keyword"], - [6, 4, 8, "Keyword"], - [7, 0, 4, "Keyword"], - [8, 4, 8, "Keyword"], + [3, 4, 8], + [4, 4, 8], + [5, 0, 4], + [6, 4, 8], + [7, 0, 4], + [8, 4, 8], ]), }, { @@ -7058,7 +7057,7 @@ ruleTester.run("indent", rule, { console.log(foo + bar); } `, - errors: expectedErrors([3, 4, 0, "Identifier"]), + errors: expectedErrors([3, 4, 0]), }, { code: unIndent` @@ -7083,12 +7082,12 @@ ruleTester.run("indent", rule, { `, options: [4, { SwitchCase: 1 }], errors: expectedErrors([ - [2, 4, 0, "Keyword"], - [3, 8, 0, "Identifier"], - [4, 8, 0, "Keyword"], - [5, 4, 0, "Keyword"], - [6, 8, 0, "Identifier"], - [7, 8, 0, "Keyword"], + [2, 4, 0], + [3, 8, 0], + [4, 8, 0], + [5, 4, 0], + [6, 8, 0], + [7, 8, 0], ]), }, { @@ -7105,7 +7104,7 @@ ruleTester.run("indent", rule, { } `, options: [4, { MemberExpression: 1 }], - errors: expectedErrors([3, 8, 10, "Punctuator"]), + errors: expectedErrors([3, 8, 10]), }, { code: unIndent` @@ -7120,7 +7119,7 @@ ruleTester.run("indent", rule, { .bar ) `, - errors: expectedErrors([3, 8, 4, "Punctuator"]), + errors: expectedErrors([3, 8, 4]), }, { code: unIndent` @@ -7136,7 +7135,7 @@ ruleTester.run("indent", rule, { } `, options: [4, { MemberExpression: 2 }], - errors: expectedErrors([3, 12, 13, "Punctuator"]), + errors: expectedErrors([3, 12, 13]), }, { code: unIndent` @@ -7152,7 +7151,7 @@ ruleTester.run("indent", rule, { } `, options: [4, { MemberExpression: 2 }], - errors: expectedErrors([3, 12, 13, "Punctuator"]), + errors: expectedErrors([3, 12, 13]), }, { code: unIndent` @@ -7172,7 +7171,7 @@ ruleTester.run("indent", rule, { }; `, options: [2, { MemberExpression: 1 }], - errors: expectedErrors([3, 4, 6, "Punctuator"]), + errors: expectedErrors([3, 4, 6]), }, { code: unIndent` @@ -7184,7 +7183,7 @@ ruleTester.run("indent", rule, { b(); `, options: [4], - errors: expectedErrors([[2, 4, 0, "Identifier"]]), + errors: expectedErrors([[2, 4, 0]]), }, { code: unIndent` @@ -7210,13 +7209,13 @@ ruleTester.run("indent", rule, { }]; `, errors: expectedErrors([ - [2, 4, 8, "Identifier"], - [3, 0, 4, "Punctuator"], - [4, 0, 4, "Punctuator"], - [5, 4, 8, "Identifier"], - [6, 0, 4, "Punctuator"], - [7, 0, 4, "Punctuator"], - [8, 4, 8, "Identifier"], + [2, 4, 8], + [3, 0, 4], + [4, 0, 4], + [5, 4, 8], + [6, 0, 4], + [7, 0, 4], + [8, 4, 8], ]), }, { @@ -7231,8 +7230,8 @@ ruleTester.run("indent", rule, { foo++) {} `, errors: expectedErrors([ - [2, 4, 0, "Identifier"], - [3, 4, 0, "Identifier"], + [2, 4, 0], + [3, 4, 0], ]), }, { @@ -7251,10 +7250,10 @@ ruleTester.run("indent", rule, { ) {} `, errors: expectedErrors([ - [2, 4, 0, "Keyword"], - [3, 4, 0, "Identifier"], - [4, 4, 0, "Identifier"], - [5, 0, 4, "Punctuator"], + [2, 4, 0], + [3, 4, 0], + [4, 4, 0], + [5, 0, 4], ]), }, { @@ -7267,7 +7266,7 @@ ruleTester.run("indent", rule, { b(); `, options: [4], - errors: expectedErrors([[2, 4, 0, "Identifier"]]), + errors: expectedErrors([[2, 4, 0]]), }, { code: unIndent` @@ -7279,7 +7278,7 @@ ruleTester.run("indent", rule, { b(); `, options: [4], - errors: expectedErrors([[2, 4, 0, "Identifier"]]), + errors: expectedErrors([[2, 4, 0]]), }, { code: unIndent` @@ -7293,7 +7292,7 @@ ruleTester.run("indent", rule, { while(true) `, options: [4], - errors: expectedErrors([[2, 4, 0, "Identifier"]]), + errors: expectedErrors([[2, 4, 0]]), }, { code: unIndent` @@ -7305,7 +7304,7 @@ ruleTester.run("indent", rule, { b(); `, options: [4], - errors: expectedErrors([[2, 4, 0, "Identifier"]]), + errors: expectedErrors([[2, 4, 0]]), }, { code: unIndent` @@ -7317,7 +7316,7 @@ ruleTester.run("indent", rule, { b(); `, options: [4], - errors: expectedErrors([[2, 4, 0, "Identifier"]]), + errors: expectedErrors([[2, 4, 0]]), }, { code: unIndent` @@ -7334,9 +7333,9 @@ ruleTester.run("indent", rule, { `, options: [2], errors: expectedErrors([ - [2, 2, 6, "Identifier"], - [3, 2, 4, "Identifier"], - [4, 0, 4, "Punctuator"], + [2, 2, 6], + [3, 2, 4], + [4, 0, 4], ]), }, { @@ -7358,9 +7357,9 @@ ruleTester.run("indent", rule, { `, options: [4], errors: expectedErrors([ - [2, 8, 6, "Identifier"], - [3, 8, 4, "Identifier"], - [4, 8, 10, "Identifier"], + [2, 8, 6], + [3, 8, 4], + [4, 8, 10], ]), }, { @@ -7376,8 +7375,8 @@ ruleTester.run("indent", rule, { `, options: [4], errors: expectedErrors([ - [2, 4, 0, "Identifier"], - [3, 4, 0, "Identifier"], + [2, 4, 0], + [3, 4, 0], ]), }, { @@ -7395,8 +7394,8 @@ ruleTester.run("indent", rule, { `, options: [4], errors: expectedErrors([ - [3, 4, 8, "Identifier"], - [4, 0, 4, "Punctuator"], + [3, 4, 8], + [4, 0, 4], ]), }, { @@ -7414,8 +7413,8 @@ ruleTester.run("indent", rule, { `, options: [4], errors: expectedErrors([ - [2, 4, 0, "Identifier"], - [3, 4, 2, "Keyword"], + [2, 4, 0], + [3, 4, 2], ]), }, { @@ -7430,7 +7429,7 @@ ruleTester.run("indent", rule, { }); `, options: [4], - errors: expectedErrors([[2, 4, 2, "Keyword"]]), + errors: expectedErrors([[2, 4, 2]]), }, { code: unIndent` @@ -7447,8 +7446,8 @@ ruleTester.run("indent", rule, { `, options: [4, { MemberExpression: 1 }], errors: expectedErrors([ - [3, 8, 4, "Identifier"], - [4, 4, 0, "Punctuator"], + [3, 8, 4], + [4, 4, 0], ]), }, { @@ -7466,8 +7465,8 @@ ruleTester.run("indent", rule, { `, options: [4], errors: expectedErrors([ - [2, 4, 9, "String"], - [3, 4, 9, "String"], + [2, 4, 9], + [3, 4, 9], ]), }, { @@ -7487,9 +7486,9 @@ ruleTester.run("indent", rule, { `, options: [4], errors: expectedErrors([ - [2, 4, 9, "String"], - [3, 4, 9, "String"], - [4, 4, 9, "String"], + [2, 4, 9], + [3, 4, 9], + [4, 4, 9], ]), }, { @@ -7509,10 +7508,10 @@ ruleTester.run("indent", rule, { `, options: [4], errors: expectedErrors([ - [2, 4, 9, "String"], - [3, 4, 9, "String"], - [4, 4, 9, "String"], - [5, 4, 0, "String"], + [2, 4, 9], + [3, 4, 9], + [4, 4, 9], + [5, 4, 0], ]), }, { @@ -7532,10 +7531,10 @@ ruleTester.run("indent", rule, { `, options: [4], errors: expectedErrors([ - [2, 4, 9, "String"], - [3, 4, 9, "String"], - [4, 4, 9, "String"], - [5, 0, 2, "Punctuator"], + [2, 4, 9], + [3, 4, 9], + [4, 4, 9], + [5, 0, 2], ]), }, { @@ -7554,8 +7553,8 @@ ruleTester.run("indent", rule, { ] `, errors: expectedErrors([ - [3, 4, 8, "Identifier"], - [4, 0, 4, "Punctuator"], + [3, 4, 8], + [4, 0, 4], ]), }, { @@ -7580,8 +7579,8 @@ ruleTester.run("indent", rule, { ) `, errors: expectedErrors([ - [4, 4, 8, "Identifier"], - [5, 0, 4, "Punctuator"], + [4, 4, 8], + [5, 0, 4], ]), }, { @@ -7597,8 +7596,8 @@ ruleTester.run("indent", rule, { `, options: [2], errors: expectedErrors([ - [2, 2, 0, "Identifier"], - [3, 0, 2, "Identifier"], + [2, 2, 0], + [3, 0, 2], ]), }, { @@ -7619,7 +7618,7 @@ ruleTester.run("indent", rule, { } `, options: [2, { SwitchCase: 1 }], - errors: expectedErrors([[3, 4, 2, "Keyword"]]), + errors: expectedErrors([[3, 4, 2]]), }, { code: unIndent` @@ -7631,7 +7630,7 @@ ruleTester.run("indent", rule, { height, rotate; `, options: [2, { SwitchCase: 1 }], - errors: expectedErrors([[2, 2, 0, "Identifier"]]), + errors: expectedErrors([[2, 2, 0]]), }, { code: unIndent` @@ -7656,12 +7655,12 @@ ruleTester.run("indent", rule, { `, options: [4, { SwitchCase: 2 }], errors: expectedErrors([ - [2, 8, 0, "Keyword"], - [3, 12, 0, "Identifier"], - [4, 12, 0, "Keyword"], - [5, 8, 0, "Keyword"], - [6, 12, 0, "Identifier"], - [7, 12, 0, "Keyword"], + [2, 8, 0], + [3, 12, 0], + [4, 12, 0], + [5, 8, 0], + [6, 12, 0], + [7, 12, 0], ]), }, { @@ -7674,7 +7673,7 @@ ruleTester.run("indent", rule, { rotate; `, options: [2, { VariableDeclarator: 1 }], - errors: expectedErrors([[2, 2, 0, "Identifier"]]), + errors: expectedErrors([[2, 2, 0]]), }, { code: unIndent` @@ -7686,7 +7685,7 @@ ruleTester.run("indent", rule, { rotate; `, options: [2, { VariableDeclarator: 2 }], - errors: expectedErrors([[2, 4, 2, "Identifier"]]), + errors: expectedErrors([[2, 4, 2]]), }, { code: unIndent` @@ -7698,7 +7697,7 @@ ruleTester.run("indent", rule, { \t\trotate; `, options: ["tab", { VariableDeclarator: 2 }], - errors: expectedErrors("tab", [[2, 2, 1, "Identifier"]]), + errors: expectedErrors("tab", [[2, 2, 1]]), }, { code: unIndent` @@ -7710,7 +7709,7 @@ ruleTester.run("indent", rule, { rotate; `, options: [2, { VariableDeclarator: 2 }], - errors: expectedErrors([[2, 4, 2, "Identifier"]]), + errors: expectedErrors([[2, 4, 2]]), }, { code: unIndent` @@ -7727,8 +7726,8 @@ ruleTester.run("indent", rule, { `, options: [2, { VariableDeclarator: "first" }], errors: expectedErrors([ - [2, 4, 2, "Identifier"], - [4, 6, 2, "Identifier"], + [2, 4, 2], + [4, 6, 2], ]), }, { @@ -7741,7 +7740,7 @@ ruleTester.run("indent", rule, { bar = bar; `, options: [2, { VariableDeclarator: { var: "first" } }], - errors: expectedErrors([[2, 4, 2, "Identifier"]]), + errors: expectedErrors([[2, 4, 2]]), }, { code: unIndent` @@ -7757,7 +7756,7 @@ ruleTester.run("indent", rule, { console.log(val); `, options: [2, { VariableDeclarator: 2, SwitchCase: 1 }], - errors: expectedErrors([[4, 6, 4, "Identifier"]]), + errors: expectedErrors([[4, 6, 4]]), }, { code: unIndent` @@ -7774,8 +7773,8 @@ ruleTester.run("indent", rule, { `, options: [2, { VariableDeclarator: 2, SwitchCase: 1 }], errors: expectedErrors([ - [2, 2, 4, "Identifier"], - [3, 2, 4, "Identifier"], + [2, 2, 4], + [3, 2, 4], ]), }, { @@ -7793,8 +7792,8 @@ ruleTester.run("indent", rule, { `, options: [2, { VariableDeclarator: 2, SwitchCase: 1 }], errors: expectedErrors([ - [2, 2, 4, "Identifier"], - [3, 2, 4, "Identifier"], + [2, 2, 4], + [3, 2, 4], ]), }, { @@ -7812,8 +7811,8 @@ ruleTester.run("indent", rule, { `, options: [2, { VariableDeclarator: { let: 2 }, SwitchCase: 1 }], errors: expectedErrors([ - [2, 2, 4, "Identifier"], - [3, 2, 4, "Identifier"], + [2, 2, 4], + [3, 2, 4], ]), }, { @@ -7831,8 +7830,8 @@ ruleTester.run("indent", rule, { `, options: [4], errors: expectedErrors([ - [2, 8, 6, "Identifier"], - [3, 4, 2, "Punctuator"], + [2, 8, 6], + [3, 4, 2], ]), }, { @@ -7858,9 +7857,9 @@ ruleTester.run("indent", rule, { `, options: [2, { VariableDeclarator: { var: 2 } }], errors: expectedErrors([ - [6, 4, 6, "Identifier"], - [7, 2, 4, "Punctuator"], - [8, 2, 4, "Identifier"], + [6, 4, 6], + [7, 2, 4], + [8, 2, 4], ]), }, { @@ -7883,7 +7882,7 @@ ruleTester.run("indent", rule, { }; `, options: [2, { VariableDeclarator: 2, SwitchCase: 1 }], - errors: expectedErrors([6, 6, 7, "Identifier"]), + errors: expectedErrors([6, 6, 7]), }, { code: unIndent` @@ -7901,7 +7900,7 @@ ruleTester.run("indent", rule, { }; `, options: [2, { VariableDeclarator: 2, SwitchCase: 1 }], - errors: expectedErrors([4, 7, 8, "Identifier"]), + errors: expectedErrors([4, 7, 8]), }, { code: unIndent` @@ -7924,8 +7923,8 @@ ruleTester.run("indent", rule, { `, options: [2], errors: expectedErrors([ - [4, 6, 8, "Identifier"], - [5, 4, 6, "Punctuator"], + [4, 6, 8], + [5, 4, 6], ]), }, { @@ -7940,7 +7939,7 @@ ruleTester.run("indent", rule, { ; `, options: [2], - errors: expectedErrors([[2, 2, 1, "Punctuator"]]), + errors: expectedErrors([[2, 2, 1]]), }, { code: unIndent` @@ -7953,7 +7952,7 @@ ruleTester.run("indent", rule, { ,b = 2 ; `, - errors: expectedErrors([[2, 4, 3, "Punctuator"]]), + errors: expectedErrors([[2, 4, 3]]), }, { code: unIndent` @@ -7971,7 +7970,7 @@ ruleTester.run("indent", rule, { } `, options: [4, { VariableDeclarator: 1, SwitchCase: 1 }], - errors: expectedErrors([[2, 4, 2, "Identifier"]]), + errors: expectedErrors([[2, 4, 2]]), }, { code: unIndent` @@ -7990,8 +7989,8 @@ ruleTester.run("indent", rule, { `, options: [4, { VariableDeclarator: 1, SwitchCase: 1 }], errors: expectedErrors([ - [2, 4, 2, "Identifier"], - [4, 4, 2, "Identifier"], + [2, 4, 2], + [4, 4, 2], ]), }, { @@ -8012,7 +8011,7 @@ ruleTester.run("indent", rule, { }; `, options: [2, { VariableDeclarator: 2, SwitchCase: 1 }], - errors: expectedErrors([[3, 6, 4, "Identifier"]]), + errors: expectedErrors([[3, 6, 4]]), }, { code: unIndent` @@ -8036,7 +8035,7 @@ ruleTester.run("indent", rule, { } `, options: [4], - errors: expectedErrors([[5, 4, 2, "Keyword"]]), + errors: expectedErrors([[5, 4, 2]]), }, { code: unIndent` @@ -8060,7 +8059,7 @@ ruleTester.run("indent", rule, { } `, options: [4], - errors: expectedErrors([[5, 4, 2, "Keyword"]]), + errors: expectedErrors([[5, 4, 2]]), }, { code: unIndent` @@ -8080,7 +8079,7 @@ ruleTester.run("indent", rule, { } `, options: [4], - errors: expectedErrors([[4, 4, 2, "Keyword"]]), + errors: expectedErrors([[4, 4, 2]]), }, { code: unIndent` @@ -8099,9 +8098,9 @@ ruleTester.run("indent", rule, { `, options: [2, { outerIIFEBody: 0 }], errors: expectedErrors([ - [2, 0, 2, "Keyword"], - [3, 2, 4, "Keyword"], - [4, 0, 2, "Punctuator"], + [2, 0, 2], + [3, 2, 4], + [4, 0, 2], ]), }, { @@ -8121,9 +8120,9 @@ ruleTester.run("indent", rule, { `, options: [4, { outerIIFEBody: 2 }], errors: expectedErrors([ - [2, 8, 4, "Keyword"], - [3, 12, 8, "Keyword"], - [4, 8, 4, "Punctuator"], + [2, 8, 4], + [3, 12, 8], + [4, 8, 4], ]), }, { @@ -8138,7 +8137,7 @@ ruleTester.run("indent", rule, { } `, options: [2, { outerIIFEBody: 0 }], - errors: expectedErrors([[2, 2, 0, "Identifier"]]), + errors: expectedErrors([[2, 2, 0]]), }, { code: unIndent` @@ -8157,9 +8156,9 @@ ruleTester.run("indent", rule, { `, options: [4, { outerIIFEBody: 2 }], errors: expectedErrors([ - [2, 8, 4, "Keyword"], - [3, 12, 8, "Keyword"], - [4, 8, 4, "Punctuator"], + [2, 8, 4], + [3, 12, 8], + [4, 8, 4], ]), }, { @@ -8178,7 +8177,7 @@ ruleTester.run("indent", rule, { }; `, options: [2, { outerIIFEBody: 0 }], - errors: expectedErrors([[3, 4, 2, "Keyword"]]), + errors: expectedErrors([[3, 4, 2]]), }, { code: unIndent` @@ -8197,9 +8196,9 @@ ruleTester.run("indent", rule, { `, options: [2, { outerIIFEBody: 2 }], errors: expectedErrors([ - [2, 2, 4, "Keyword"], - [3, 4, 6, "Keyword"], - [4, 2, 4, "Punctuator"], + [2, 2, 4], + [3, 4, 6], + [4, 2, 4], ]), }, { @@ -8218,7 +8217,7 @@ ruleTester.run("indent", rule, { }; `, options: ["tab", { outerIIFEBody: 3 }], - errors: expectedErrors("tab", [[3, 2, 4, "Keyword"]]), + errors: expectedErrors("tab", [[3, 2, 4]]), }, { code: unIndent` @@ -8236,7 +8235,7 @@ ruleTester.run("indent", rule, { })(); `, options: [4, { outerIIFEBody: "off" }], - errors: expectedErrors([[3, 8, 4, "Keyword"]]), + errors: expectedErrors([[3, 8, 4]]), }, { code: unIndent` @@ -8254,7 +8253,7 @@ ruleTester.run("indent", rule, { })(); `, options: [4, { outerIIFEBody: "off" }], - errors: expectedErrors([[3, 4, 0, "Keyword"]]), + errors: expectedErrors([[3, 4, 0]]), }, { code: unIndent` @@ -8272,7 +8271,7 @@ ruleTester.run("indent", rule, { })(); `, options: [4, { outerIIFEBody: "off" }], - errors: expectedErrors([[3, 8, 4, "Keyword"]]), + errors: expectedErrors([[3, 8, 4]]), }, { code: unIndent` @@ -8290,7 +8289,7 @@ ruleTester.run("indent", rule, { })(); `, options: [4, { outerIIFEBody: "off" }], - errors: expectedErrors([[3, 4, 0, "Keyword"]]), + errors: expectedErrors([[3, 4, 0]]), }, { code: unIndent` @@ -8302,7 +8301,7 @@ ruleTester.run("indent", rule, { .toString() `, options: [4, { MemberExpression: 1 }], - errors: expectedErrors([[2, 4, 0, "Punctuator"]]), + errors: expectedErrors([[2, 4, 0]]), }, { code: unIndent` @@ -8316,7 +8315,7 @@ ruleTester.run("indent", rule, { .toString() `, options: [4, { MemberExpression: 1 }], - errors: expectedErrors([[3, 4, 0, "Punctuator"]]), + errors: expectedErrors([[3, 4, 0]]), }, { code: unIndent` @@ -8328,7 +8327,7 @@ ruleTester.run("indent", rule, { length `, options: [4, { MemberExpression: 1 }], - errors: expectedErrors([[2, 4, 0, "Identifier"]]), + errors: expectedErrors([[2, 4, 0]]), }, { code: unIndent` @@ -8340,7 +8339,7 @@ ruleTester.run("indent", rule, { \tlength `, options: ["tab", { MemberExpression: 1 }], - errors: expectedErrors("tab", [[2, 1, 2, "Identifier"]]), + errors: expectedErrors("tab", [[2, 1, 2]]), }, { code: unIndent` @@ -8355,8 +8354,8 @@ ruleTester.run("indent", rule, { `, options: [2, { MemberExpression: 2 }], errors: expectedErrors([ - [2, 4, 2, "Punctuator"], - [3, 4, 2, "Punctuator"], + [2, 4, 2], + [3, 4, 2], ]), }, { @@ -8372,7 +8371,7 @@ ruleTester.run("indent", rule, { .target } `, - errors: expectedErrors([3, 8, 4, "Punctuator"]), + errors: expectedErrors([3, 8, 4]), }, { code: unIndent` @@ -8387,7 +8386,7 @@ ruleTester.run("indent", rule, { target } `, - errors: expectedErrors([3, 8, 4, "Identifier"]), + errors: expectedErrors([3, 8, 4]), }, { // Indentation with multiple else statements: https://github.com/eslint/eslint/issues/6956 @@ -8403,7 +8402,7 @@ ruleTester.run("indent", rule, { else if (qux) qux(); `, options: [2], - errors: expectedErrors([3, 0, 2, "Keyword"]), + errors: expectedErrors([3, 0, 2]), }, { code: unIndent` @@ -8417,7 +8416,7 @@ ruleTester.run("indent", rule, { else qux(); `, options: [2], - errors: expectedErrors([3, 0, 2, "Keyword"]), + errors: expectedErrors([3, 0, 2]), }, { code: unIndent` @@ -8432,8 +8431,8 @@ ruleTester.run("indent", rule, { `, options: [2], errors: expectedErrors([ - [2, 0, 2, "Keyword"], - [3, 0, 2, "Keyword"], + [2, 0, 2], + [3, 0, 2], ]), }, { @@ -8453,9 +8452,9 @@ ruleTester.run("indent", rule, { `, options: [2], errors: expectedErrors([ - [3, 0, 5, "Keyword"], - [4, 2, 7, "Identifier"], - [5, 0, 5, "Punctuator"], + [3, 0, 5], + [4, 2, 7], + [5, 0, 5], ]), }, { @@ -8477,10 +8476,10 @@ ruleTester.run("indent", rule, { `, options: [2], errors: expectedErrors([ - [3, 2, 4, "Identifier"], - [4, 0, 5, "Punctuator"], - [5, 2, 7, "Identifier"], - [6, 0, 5, "Punctuator"], + [3, 2, 4], + [4, 0, 5], + [5, 2, 7], + [6, 0, 5], ]), }, { @@ -8498,8 +8497,8 @@ ruleTester.run("indent", rule, { `, options: [2, { FunctionDeclaration: { parameters: 1, body: 2 } }], errors: expectedErrors([ - [2, 2, 4, "Identifier"], - [3, 4, 6, "Identifier"], + [2, 2, 4], + [3, 4, 6], ]), }, { @@ -8517,8 +8516,8 @@ ruleTester.run("indent", rule, { `, options: [2, { FunctionDeclaration: { parameters: 3, body: 1 } }], errors: expectedErrors([ - [2, 6, 2, "Identifier"], - [3, 2, 0, "Identifier"], + [2, 6, 2], + [3, 2, 0], ]), }, { @@ -8538,9 +8537,9 @@ ruleTester.run("indent", rule, { `, options: [4, { FunctionDeclaration: { parameters: 1, body: 3 } }], errors: expectedErrors([ - [2, 4, 8, "Identifier"], - [3, 4, 2, "Identifier"], - [4, 12, 6, "Identifier"], + [2, 4, 8], + [3, 4, 2], + [4, 12, 6], ]), }, { @@ -8563,9 +8562,9 @@ ruleTester.run("indent", rule, { { FunctionDeclaration: { parameters: "first", body: 1 } }, ], errors: expectedErrors([ - [2, 13, 2, "Identifier"], - [3, 13, 19, "Identifier"], - [4, 2, 3, "Identifier"], + [2, 13, 2], + [3, 13, 19], + [4, 2, 3], ]), }, { @@ -8582,7 +8581,7 @@ ruleTester.run("indent", rule, { } `, options: [2, { FunctionDeclaration: { body: 3 } }], - errors: expectedErrors([3, 6, 0, "Identifier"]), + errors: expectedErrors([3, 6, 0]), }, { code: unIndent` @@ -8604,9 +8603,9 @@ ruleTester.run("indent", rule, { { FunctionDeclaration: { parameters: "first", body: 2 } }, ], errors: expectedErrors([ - [2, 2, 0, "Identifier"], - [3, 2, 4, "Identifier"], - [4, 4, 0, "Identifier"], + [2, 2, 0], + [3, 2, 4], + [4, 4, 0], ]), }, { @@ -8628,9 +8627,9 @@ ruleTester.run("indent", rule, { `, options: [2, { FunctionExpression: { parameters: 2, body: 0 } }], errors: expectedErrors([ - [2, 4, 2, "Identifier"], - [4, 4, 6, "Identifier"], - [5, 0, 2, "Identifier"], + [2, 4, 2], + [4, 4, 6], + [5, 0, 2], ]), }, { @@ -8650,9 +8649,9 @@ ruleTester.run("indent", rule, { `, options: [2, { FunctionExpression: { parameters: 1, body: 10 } }], errors: expectedErrors([ - [2, 2, 3, "Identifier"], - [3, 2, 1, "Identifier"], - [4, 20, 2, "Identifier"], + [2, 2, 3], + [3, 2, 1], + [4, 20, 2], ]), }, { @@ -8675,9 +8674,9 @@ ruleTester.run("indent", rule, { { FunctionExpression: { parameters: "first", body: 1 } }, ], errors: expectedErrors([ - [2, 19, 2, "Identifier"], - [3, 19, 24, "Identifier"], - [4, 4, 8, "Identifier"], + [2, 19, 2], + [3, 19, 24], + [4, 4, 8], ]), }, { @@ -8700,9 +8699,9 @@ ruleTester.run("indent", rule, { { FunctionExpression: { parameters: "first", body: 3 } }, ], errors: expectedErrors([ - [2, 2, 0, "Identifier"], - [3, 2, 4, "Identifier"], - [4, 6, 2, "Identifier"], + [2, 2, 0], + [3, 2, 4], + [4, 6, 2], ]), }, { @@ -8715,7 +8714,7 @@ ruleTester.run("indent", rule, { var baz = qux; `, options: [2], - errors: expectedErrors([2, "0 spaces", "3 tabs", "Keyword"]), + errors: expectedErrors([2, "0 spaces", "3 tabs"]), }, { code: unIndent` @@ -8734,8 +8733,8 @@ ruleTester.run("indent", rule, { `, options: ["tab"], errors: expectedErrors("tab", [ - [3, "1 tab", "2 spaces", "Identifier"], - [4, "1 tab", "14 spaces", "Identifier"], + [3, "1 tab", "2 spaces"], + [4, "1 tab", "14 spaces"], ]), }, { @@ -8750,7 +8749,7 @@ ruleTester.run("indent", rule, { } `, options: [2], - errors: expectedErrors([[3, "0 spaces", "2 tabs", "Punctuator"]]), + errors: expectedErrors([[3, "0 spaces", "2 tabs"]]), }, { code: unIndent` @@ -8768,7 +8767,7 @@ ruleTester.run("indent", rule, { } `, options: [2, { FunctionDeclaration: { body: 1 } }], - errors: expectedErrors([3, 4, 8, "Identifier"]), + errors: expectedErrors([3, 4, 8]), }, { code: unIndent` @@ -8788,7 +8787,7 @@ ruleTester.run("indent", rule, { } `, options: [2, { FunctionDeclaration: { body: 1, parameters: 2 } }], - errors: expectedErrors([3, 6, 4, "Identifier"]), + errors: expectedErrors([3, 6, 4]), }, { code: unIndent` @@ -8808,7 +8807,7 @@ ruleTester.run("indent", rule, { } `, options: [2, { FunctionExpression: { parameters: 3 } }], - errors: expectedErrors([3, 8, 10, "Identifier"]), + errors: expectedErrors([3, 8, 10]), }, { code: unIndent` @@ -8832,7 +8831,7 @@ ruleTester.run("indent", rule, { CallExpression: { arguments: 3 }, }, ], - errors: expectedErrors([3, 12, 8, "Identifier"]), + errors: expectedErrors([3, 12, 8]), }, { code: unIndent` @@ -8856,8 +8855,8 @@ ruleTester.run("indent", rule, { } `, errors: expectedErrors([ - [4, 4, 0, "Keyword"], - [6, 4, 0, "Keyword"], + [4, 4, 0], + [6, 4, 0], ]), }, { @@ -8875,7 +8874,7 @@ ruleTester.run("indent", rule, { while (true) } `, - errors: expectedErrors([4, 4, 0, "Keyword"]), + errors: expectedErrors([4, 4, 0]), }, { code: unIndent` @@ -8893,7 +8892,7 @@ ruleTester.run("indent", rule, { } `, options: [2], - errors: expectedErrors([[4, 2, 4, "Punctuator"]]), + errors: expectedErrors([[4, 2, 4]]), }, { code: unIndent` @@ -8911,7 +8910,7 @@ ruleTester.run("indent", rule, { } `, options: [2], - errors: expectedErrors([[4, 2, 4, "Punctuator"]]), + errors: expectedErrors([[4, 2, 4]]), }, { code: unIndent` @@ -8933,7 +8932,7 @@ ruleTester.run("indent", rule, { } `, options: [2, { VariableDeclarator: 2, SwitchCase: 1 }], - errors: expectedErrors([[4, 6, 4, "Keyword"]]), + errors: expectedErrors([[4, 6, 4]]), }, { code: unIndent` @@ -8947,7 +8946,7 @@ ruleTester.run("indent", rule, { } `, options: [2], - errors: expectedErrors([[2, 2, 3, "Keyword"]]), + errors: expectedErrors([[2, 2, 3]]), }, { code: unIndent` @@ -8964,8 +8963,8 @@ ruleTester.run("indent", rule, { `, options: [2, { CallExpression: { arguments: 1 } }], errors: expectedErrors([ - [2, 2, 0, "Identifier"], - [4, 2, 4, "Identifier"], + [2, 2, 0], + [4, 2, 4], ]), }, { @@ -8981,8 +8980,8 @@ ruleTester.run("indent", rule, { `, options: [2, { CallExpression: { arguments: 2 } }], errors: expectedErrors([ - [2, "4 spaces", "1 tab", "Identifier"], - [3, "4 spaces", "1 tab", "Identifier"], + [2, "4 spaces", "1 tab"], + [3, "4 spaces", "1 tab"], ]), }, { @@ -8998,8 +8997,8 @@ ruleTester.run("indent", rule, { `, options: ["tab", { CallExpression: { arguments: 1 } }], errors: expectedErrors("tab", [ - [2, 1, 2, "Identifier"], - [3, 1, 2, "Identifier"], + [2, 1, 2], + [3, 1, 2], ]), }, { @@ -9012,7 +9011,7 @@ ruleTester.run("indent", rule, { qux); `, options: [2, { CallExpression: { arguments: "first" } }], - errors: expectedErrors([2, 4, 9, "Identifier"]), + errors: expectedErrors([2, 4, 9]), }, { code: unIndent` @@ -9027,8 +9026,8 @@ ruleTester.run("indent", rule, { `, options: [2, { CallExpression: { arguments: "first" } }], errors: expectedErrors([ - [2, 2, 10, "Identifier"], - [3, 2, 4, "Identifier"], + [2, 2, 10], + [3, 2, 4], ]), }, { @@ -9048,9 +9047,9 @@ ruleTester.run("indent", rule, { `, options: [2, { CallExpression: { arguments: 3 } }], errors: expectedErrors([ - [2, 6, 2, "Numeric"], - [3, 6, 14, "Punctuator"], - [4, 6, 8, "Keyword"], + [2, 6, 2], + [3, 6, 14], + [4, 6, 8], ]), }, @@ -9069,7 +9068,7 @@ ruleTester.run("indent", rule, { languageOptions: { parserOptions: { ecmaFeatures: { globalReturn: true } }, }, - errors: expectedErrors([3, 0, 4, "Punctuator"]), + errors: expectedErrors([3, 0, 4]), }, { code: unIndent` @@ -9085,7 +9084,7 @@ ruleTester.run("indent", rule, { languageOptions: { parserOptions: { ecmaFeatures: { globalReturn: true } }, }, - errors: expectedErrors([3, 0, 4, "Punctuator"]), + errors: expectedErrors([3, 0, 4]), }, // https://github.com/eslint/eslint/issues/7604 @@ -9100,7 +9099,7 @@ ruleTester.run("indent", rule, { /* comment */bar(); } `, - errors: expectedErrors([2, 4, 8, "Block"]), + errors: expectedErrors([2, 4, 8]), }, { code: unIndent` @@ -9115,7 +9114,7 @@ ruleTester.run("indent", rule, { ok: true }); `, - errors: expectedErrors([2, 4, 8, "Block"]), + errors: expectedErrors([2, 4, 8]), }, { code: unIndent` @@ -9129,7 +9128,7 @@ ruleTester.run("indent", rule, { ); `, options: [4, { CallExpression: { arguments: 1 } }], - errors: expectedErrors([2, 4, 0, "Punctuator"]), + errors: expectedErrors([2, 4, 0]), }, { code: unIndent` @@ -9143,7 +9142,7 @@ ruleTester.run("indent", rule, { )) `, options: [4], - errors: expectedErrors([2, 4, 0, "Identifier"]), + errors: expectedErrors([2, 4, 0]), }, // ternary expressions (https://github.com/eslint/eslint/issues/7420) @@ -9160,8 +9159,8 @@ ruleTester.run("indent", rule, { `, options: [2], errors: expectedErrors([ - [2, 2, 0, "Punctuator"], - [3, 2, 4, "Punctuator"], + [2, 2, 0], + [3, 2, 4], ]), }, { @@ -9181,7 +9180,7 @@ ruleTester.run("indent", rule, { qux ] `, - errors: expectedErrors([5, 4, 8, "Identifier"]), + errors: expectedErrors([5, 4, 8]), }, { code: unIndent` @@ -9212,16 +9211,16 @@ ruleTester.run("indent", rule, { `, options: [2, { offsetTernaryExpressions: true }], errors: expectedErrors([ - [2, 2, 0, "Punctuator"], - [3, 6, 0, "Keyword"], - [4, 4, 0, "Punctuator"], - [5, 2, 0, "Punctuator"], - [6, 4, 0, "Punctuator"], - [7, 8, 0, "Keyword"], - [8, 6, 0, "Punctuator"], - [9, 4, 0, "Punctuator"], - [10, 8, 0, "Keyword"], - [11, 6, 0, "Punctuator"], + [2, 2, 0], + [3, 6, 0], + [4, 4, 0], + [5, 2, 0], + [6, 4, 0], + [7, 8, 0], + [8, 6, 0], + [9, 4, 0], + [10, 8, 0], + [11, 6, 0], ]), }, { @@ -9253,16 +9252,16 @@ ruleTester.run("indent", rule, { `, options: [2, { offsetTernaryExpressions: false }], errors: expectedErrors([ - [2, 2, 0, "Punctuator"], - [3, 4, 0, "Keyword"], - [4, 2, 0, "Punctuator"], - [5, 2, 0, "Punctuator"], - [6, 4, 0, "Punctuator"], - [7, 6, 0, "Keyword"], - [8, 4, 0, "Punctuator"], - [9, 4, 0, "Punctuator"], - [10, 6, 0, "Keyword"], - [11, 4, 0, "Punctuator"], + [2, 2, 0], + [3, 4, 0], + [4, 2, 0], + [5, 2, 0], + [6, 4, 0], + [7, 6, 0], + [8, 4, 0], + [9, 4, 0], + [10, 6, 0], + [11, 4, 0], ]), }, { @@ -9288,15 +9287,15 @@ ruleTester.run("indent", rule, { `, options: [2], errors: expectedErrors([ - [2, 0, 2, "Line"], - [3, 0, 4, "Block"], - [6, 0, 1, "Line"], + [2, 0, 2], + [3, 0, 4], + [6, 0, 1], ]), }, { code: " // comment", output: "// comment", - errors: expectedErrors([1, 0, 2, "Line"]), + errors: expectedErrors([1, 0, 2]), }, { code: unIndent` @@ -9307,7 +9306,7 @@ ruleTester.run("indent", rule, { foo // comment `, - errors: expectedErrors([2, 0, 2, "Line"]), + errors: expectedErrors([2, 0, 2]), }, { code: unIndent` @@ -9318,7 +9317,7 @@ ruleTester.run("indent", rule, { // comment foo `, - errors: expectedErrors([1, 0, 2, "Line"]), + errors: expectedErrors([1, 0, 2]), }, { code: unIndent` @@ -9331,7 +9330,7 @@ ruleTester.run("indent", rule, { // no elements ] `, - errors: expectedErrors([2, 4, 8, "Line"]), + errors: expectedErrors([2, 4, 8]), }, { /* @@ -9356,10 +9355,10 @@ ruleTester.run("indent", rule, { `, options: [2], errors: expectedErrors([ - [2, 2, 0, "Identifier"], - [4, 2, 4, "Identifier"], - [5, 2, 6, "Identifier"], - [6, 0, 2, "Punctuator"], + [2, 2, 0], + [4, 2, 4], + [5, 2, 6], + [6, 0, 2], ]), }, { @@ -9379,8 +9378,8 @@ ruleTester.run("indent", rule, { `, options: [2], errors: expectedErrors([ - [4, 2, 4, "Identifier"], - [5, 0, 2, "Punctuator"], + [4, 2, 4], + [5, 0, 2], ]), }, { @@ -9397,9 +9396,9 @@ ruleTester.run("indent", rule, { ] `, errors: expectedErrors([ - [2, 4, 11, "Identifier"], - [3, 4, 2, "Identifier"], - [4, 0, 10, "Punctuator"], + [2, 4, 11], + [3, 4, 2], + [4, 0, 10], ]), }, { @@ -9415,7 +9414,7 @@ ruleTester.run("indent", rule, { qux ] `, - errors: expectedErrors([2, 4, 0, "Identifier"]), + errors: expectedErrors([2, 4, 0]), }, { code: unIndent` @@ -9432,8 +9431,8 @@ ruleTester.run("indent", rule, { `, options: [2, { ArrayExpression: 0 }], errors: expectedErrors([ - [2, 0, 2, "Identifier"], - [3, 0, 2, "Identifier"], + [2, 0, 2], + [3, 0, 2], ]), }, { @@ -9451,8 +9450,8 @@ ruleTester.run("indent", rule, { `, options: [2, { ArrayExpression: 8 }], errors: expectedErrors([ - [2, 16, 2, "Identifier"], - [3, 16, 2, "Identifier"], + [2, 16, 2], + [3, 16, 2], ]), }, { @@ -9470,8 +9469,8 @@ ruleTester.run("indent", rule, { `, options: [2, { ArrayExpression: "first" }], errors: expectedErrors([ - [2, 11, 4, "Identifier"], - [3, 11, 4, "Identifier"], + [2, 11, 4], + [3, 11, 4], ]), }, { @@ -9486,7 +9485,7 @@ ruleTester.run("indent", rule, { ] `, options: [2, { ArrayExpression: "first" }], - errors: expectedErrors([2, 11, 4, "Identifier"]), + errors: expectedErrors([2, 11, 4]), }, { code: unIndent` @@ -9507,8 +9506,8 @@ ruleTester.run("indent", rule, { `, options: [4, { ArrayExpression: 2, ObjectExpression: "first" }], errors: expectedErrors([ - [3, 10, 12, "Identifier"], - [5, 10, 12, "Identifier"], + [3, 10, 12], + [5, 10, 12], ]), }, { @@ -9526,8 +9525,8 @@ ruleTester.run("indent", rule, { `, options: [2, { ObjectExpression: 0 }], errors: expectedErrors([ - [2, 0, 2, "Identifier"], - [3, 0, 2, "Identifier"], + [2, 0, 2], + [3, 0, 2], ]), }, { @@ -9540,7 +9539,7 @@ ruleTester.run("indent", rule, { baz: 3 } `, options: [2, { ObjectExpression: "first" }], - errors: expectedErrors([2, 13, 0, "Identifier"]), + errors: expectedErrors([2, 13, 0]), }, { code: unIndent` @@ -9559,9 +9558,9 @@ ruleTester.run("indent", rule, { `, options: [2, { ArrayExpression: 4 }], errors: expectedErrors([ - [2, 2, 4, "Punctuator"], - [3, 10, 12, "Identifier"], - [4, 2, 4, "Punctuator"], + [2, 2, 4], + [3, 10, 12], + [4, 2, 4], ]), }, { @@ -9583,10 +9582,10 @@ ruleTester.run("indent", rule, { `, options: [2], errors: expectedErrors([ - [2, 2, 0, "Identifier"], - [4, 2, 4, "Identifier"], - [5, 2, 6, "Identifier"], - [6, 0, 2, "Punctuator"], + [2, 2, 0], + [4, 2, 4], + [5, 2, 6], + [6, 0, 2], ]), }, { @@ -9606,8 +9605,8 @@ ruleTester.run("indent", rule, { `, languageOptions: { ecmaVersion: 6, sourceType: "module" }, errors: expectedErrors([ - [2, 4, 0, "Identifier"], - [3, 4, 2, "Identifier"], + [2, 4, 0], + [3, 4, 2], ]), }, { @@ -9625,7 +9624,7 @@ ruleTester.run("indent", rule, { `, options: [4, { ImportDeclaration: "first" }], languageOptions: { ecmaVersion: 6, sourceType: "module" }, - errors: expectedErrors([[3, 9, 10, "Identifier"]]), + errors: expectedErrors([[3, 9, 10]]), }, { code: unIndent` @@ -9642,7 +9641,7 @@ ruleTester.run("indent", rule, { `, options: [2, { ImportDeclaration: 2 }], languageOptions: { ecmaVersion: 6, sourceType: "module" }, - errors: expectedErrors([[3, 4, 5, "Identifier"]]), + errors: expectedErrors([[3, 4, 5]]), }, { code: unIndent` @@ -9663,8 +9662,8 @@ ruleTester.run("indent", rule, { `, languageOptions: { ecmaVersion: 6, sourceType: "module" }, errors: expectedErrors([ - [3, 4, 0, "Identifier"], - [4, 4, 2, "Identifier"], + [3, 4, 0], + [4, 4, 2], ]), }, { @@ -9686,8 +9685,8 @@ ruleTester.run("indent", rule, { `, languageOptions: { ecmaVersion: 6, sourceType: "module" }, errors: expectedErrors([ - [3, 4, 0, "Identifier"], - [4, 4, 2, "Identifier"], + [3, 4, 0], + [4, 4, 2], ]), }, { @@ -9704,8 +9703,8 @@ ruleTester.run("indent", rule, { `, options: [2, { MemberExpression: 2 }], errors: expectedErrors([ - [2, 4, 2, "Punctuator"], - [3, 4, 6, "Punctuator"], + [2, 4, 2], + [3, 4, 6], ]), }, { @@ -9718,7 +9717,7 @@ ruleTester.run("indent", rule, { baz(); `, options: [2], - errors: expectedErrors([2, 2, 4, "Identifier"]), + errors: expectedErrors([2, 2, 4]), }, { code: unIndent` @@ -9730,7 +9729,7 @@ ruleTester.run("indent", rule, { 5; `, options: [2], - errors: expectedErrors([2, 2, 4, "Numeric"]), + errors: expectedErrors([2, 2, 4]), }, { // BinaryExpressions with parens @@ -9745,7 +9744,7 @@ ruleTester.run("indent", rule, { ) `, options: [4], - errors: expectedErrors([2, 4, 8, "Identifier"]), + errors: expectedErrors([2, 4, 8]), }, { code: unIndent` @@ -9758,7 +9757,7 @@ ruleTester.run("indent", rule, { !bar( ) `, - errors: expectedErrors([3, 4, 0, "Punctuator"]), + errors: expectedErrors([3, 4, 0]), }, { code: unIndent` @@ -9774,8 +9773,8 @@ ruleTester.run("indent", rule, { }) `, errors: expectedErrors([ - [3, 8, 4, "Identifier"], - [4, 4, 0, "Punctuator"], + [3, 8, 4], + [4, 4, 0], ]), }, { @@ -9789,7 +9788,7 @@ ruleTester.run("indent", rule, { ] || [ ] `, - errors: expectedErrors([3, 0, 4, "Punctuator"]), + errors: expectedErrors([3, 0, 4]), }, { code: unIndent` @@ -9805,8 +9804,8 @@ ruleTester.run("indent", rule, { ) `, errors: expectedErrors([ - [3, 12, 16, "Identifier"], - [4, 8, 12, "Punctuator"], + [3, 12, 16], + [4, 8, 12], ]), }, { @@ -9823,8 +9822,8 @@ ruleTester.run("indent", rule, { ) `, errors: expectedErrors([ - [3, 4, 8, "Numeric"], - [4, 0, 4, "Punctuator"], + [3, 4, 8], + [4, 0, 4], ]), }, @@ -9839,7 +9838,7 @@ ruleTester.run("indent", rule, { bar}\` `, options: [2], - errors: expectedErrors([2, 2, 0, "Identifier"]), + errors: expectedErrors([2, 2, 0]), }, { code: unIndent` @@ -9854,8 +9853,8 @@ ruleTester.run("indent", rule, { `, options: [2], errors: expectedErrors([ - [2, 2, 4, "Template"], - [3, 4, 0, "Identifier"], + [2, 2, 4], + [3, 4, 0], ]), }, { @@ -9875,10 +9874,10 @@ ruleTester.run("indent", rule, { `, options: [2], errors: expectedErrors([ - [2, 2, 4, "Template"], - [3, 4, 2, "Identifier"], - [4, 2, 4, "Template"], - [5, 0, 2, "Template"], + [2, 2, 4], + [3, 4, 2], + [4, 2, 4], + [5, 0, 2], ]), }, { @@ -9898,9 +9897,9 @@ ruleTester.run("indent", rule, { `, options: [2], errors: expectedErrors([ - [2, 2, 0, "Punctuator"], - [3, 4, 2, "Identifier"], - [4, 2, 0, "Punctuator"], + [2, 2, 0], + [3, 4, 2], + [4, 2, 0], ]), }, { @@ -9919,8 +9918,8 @@ ruleTester.run("indent", rule, { } `, errors: expectedErrors([ - [3, 8, 0, "Identifier"], - [4, 8, 2, "Identifier"], + [3, 8, 0], + [4, 8, 2], ]), }, { @@ -9941,8 +9940,8 @@ ruleTester.run("indent", rule, { } `, errors: expectedErrors([ - [4, 4, 8, "Identifier"], - [5, 0, 4, "Template"], + [4, 4, 8], + [5, 0, 4], ]), }, { @@ -9962,7 +9961,7 @@ ruleTester.run("indent", rule, { so the spaces before this line aren't removed.\`; } `, - errors: expectedErrors([4, 4, 12, "Identifier"]), + errors: expectedErrors([4, 4, 12]), }, { /* @@ -9985,7 +9984,7 @@ ruleTester.run("indent", rule, { 2); } `, - errors: expectedErrors([3, 8, 0, "Numeric"]), + errors: expectedErrors([3, 8, 0]), }, { // https://github.com/eslint/eslint/issues/3737 @@ -10005,8 +10004,8 @@ ruleTester.run("indent", rule, { `, options: [2], errors: expectedErrors([ - [2, 2, 4, "Keyword"], - [3, 4, 6, "Identifier"], + [2, 2, 4], + [3, 4, 6], ]), }, { @@ -10042,15 +10041,15 @@ ruleTester.run("indent", rule, { { MemberExpression: 1, CallExpression: { arguments: 1 } }, ], errors: expectedErrors([ - [3, 8, 4, "Punctuator"], - [4, 12, 15, "String"], - [5, 12, 14, "Punctuator"], - [6, 16, 14, "Numeric"], - [7, 16, 9, "Numeric"], - [8, 16, 35, "Numeric"], - [9, 12, 22, "Punctuator"], - [10, 8, 0, "Punctuator"], - [11, 0, 1, "Punctuator"], + [3, 8, 4], + [4, 12, 15], + [5, 12, 14], + [6, 16, 14], + [7, 16, 9], + [8, 16, 35], + [9, 12, 22], + [10, 8, 0], + [11, 0, 1], ]), }, @@ -10069,8 +10068,8 @@ ruleTester.run("indent", rule, { ] `, errors: expectedErrors([ - [2, 4, 6, "Punctuator"], - [3, 4, 2, "Punctuator"], + [2, 4, 6], + [3, 4, 2], ]), }, { @@ -10087,8 +10086,8 @@ ruleTester.run("indent", rule, { ] `, errors: expectedErrors([ - [2, 4, 6, "Punctuator"], - [3, 4, 2, "Punctuator"], + [2, 4, 6], + [3, 4, 2], ]), }, { @@ -10110,8 +10109,8 @@ ruleTester.run("indent", rule, { }, ], errors: expectedErrors([ - [2, 13, 12, "Punctuator"], - [3, 14, 13, "String"], + [2, 13, 12], + [3, 14, 13], ]), }, { @@ -10124,7 +10123,7 @@ ruleTester.run("indent", rule, { foo( ) `, - errors: expectedErrors([2, 0, 2, "Punctuator"]), + errors: expectedErrors([2, 0, 2]), }, { // https://github.com/eslint/eslint/issues/7616 @@ -10145,12 +10144,12 @@ ruleTester.run("indent", rule, { ) `, options: [4, { CallExpression: { arguments: "first" } }], - errors: expectedErrors([[2, 4, 8, "Identifier"]]), + errors: expectedErrors([[2, 4, 8]]), }, { code: " new Foo", output: "new Foo", - errors: expectedErrors([1, 0, 2, "Keyword"]), + errors: expectedErrors([1, 0, 2]), }, { code: unIndent` @@ -10171,9 +10170,9 @@ ruleTester.run("indent", rule, { `, languageOptions: { ecmaVersion: 6, sourceType: "module" }, errors: expectedErrors([ - [3, 4, 0, "Identifier"], - [4, 4, 8, "Identifier"], - [5, 4, 2, "Identifier"], + [3, 4, 0], + [4, 4, 8], + [5, 4, 2], ]), }, { @@ -10188,7 +10187,7 @@ ruleTester.run("indent", rule, { : baz `, options: [4, { flatTernaryExpressions: true }], - errors: expectedErrors([3, 4, 0, "Punctuator"]), + errors: expectedErrors([3, 4, 0]), }, { code: unIndent` @@ -10202,7 +10201,7 @@ ruleTester.run("indent", rule, { baz `, options: [4, { flatTernaryExpressions: true }], - errors: expectedErrors([3, 4, 0, "Identifier"]), + errors: expectedErrors([3, 4, 0]), }, { code: unIndent` @@ -10216,7 +10215,7 @@ ruleTester.run("indent", rule, { : baz `, options: [4, { flatTernaryExpressions: true }], - errors: expectedErrors([3, 4, 2, "Punctuator"]), + errors: expectedErrors([3, 4, 2]), }, { code: unIndent` @@ -10230,7 +10229,7 @@ ruleTester.run("indent", rule, { baz `, options: [4, { flatTernaryExpressions: true }], - errors: expectedErrors([3, 4, 0, "Identifier"]), + errors: expectedErrors([3, 4, 0]), }, { code: unIndent` @@ -10247,8 +10246,8 @@ ruleTester.run("indent", rule, { `, options: [4, { flatTernaryExpressions: true }], errors: expectedErrors([ - [3, 4, 8, "Punctuator"], - [4, 4, 12, "Punctuator"], + [3, 4, 8], + [4, 4, 12], ]), }, { @@ -10266,8 +10265,8 @@ ruleTester.run("indent", rule, { `, options: [4, { flatTernaryExpressions: true }], errors: expectedErrors([ - [3, 4, 8, "Identifier"], - [4, 4, 12, "Identifier"], + [3, 4, 8], + [4, 4, 12], ]), }, { @@ -10287,8 +10286,8 @@ ruleTester.run("indent", rule, { `, options: [4, { flatTernaryExpressions: true }], errors: expectedErrors([ - [3, 4, 6, "Identifier"], - [4, 4, 2, "Identifier"], + [3, 4, 6], + [4, 4, 2], ]), }, { @@ -10306,8 +10305,8 @@ ruleTester.run("indent", rule, { `, options: [4, { flatTernaryExpressions: true }], errors: expectedErrors([ - [3, 8, 4, "Punctuator"], - [4, 8, 4, "Punctuator"], + [3, 8, 4], + [4, 8, 4], ]), }, { @@ -10325,8 +10324,8 @@ ruleTester.run("indent", rule, { `, options: [4, { flatTernaryExpressions: false }], errors: expectedErrors([ - [3, 8, 4, "Punctuator"], - [4, 12, 4, "Punctuator"], + [3, 8, 4], + [4, 12, 4], ]), }, { @@ -10344,8 +10343,8 @@ ruleTester.run("indent", rule, { `, options: [4, { flatTernaryExpressions: false }], errors: expectedErrors([ - [3, 8, 4, "Identifier"], - [4, 12, 4, "Identifier"], + [3, 8, 4], + [4, 12, 4], ]), }, { @@ -10369,10 +10368,10 @@ ruleTester.run("indent", rule, { `, options: [4, { flatTernaryExpressions: false }], errors: expectedErrors([ - [4, 8, 4, "Punctuator"], - [5, 8, 4, "Punctuator"], - [6, 12, 4, "Punctuator"], - [7, 12, 4, "Punctuator"], + [4, 8, 4], + [5, 8, 4], + [6, 12, 4], + [7, 12, 4], ]), }, { @@ -10396,10 +10395,10 @@ ruleTester.run("indent", rule, { `, options: [4, { flatTernaryExpressions: false }], errors: expectedErrors([ - [4, 8, 4, "Identifier"], - [5, 8, 4, "Identifier"], - [6, 12, 4, "Identifier"], - [7, 12, 4, "Identifier"], + [4, 8, 4], + [5, 8, 4], + [6, 12, 4], + [7, 12, 4], ]), }, { @@ -10414,7 +10413,7 @@ ruleTester.run("indent", rule, { }); `, options: [2, { CallExpression: { arguments: "first" } }], - errors: expectedErrors([2, 2, 10, "Identifier"]), + errors: expectedErrors([2, 2, 10]), }, { code: unIndent` @@ -10433,8 +10432,8 @@ ruleTester.run("indent", rule, { `, options: [2, { MemberExpression: 1 }], errors: expectedErrors([ - [4, 2, 4, "Identifier"], - [5, 0, 2, "Punctuator"], + [4, 2, 4], + [5, 0, 2], ]), }, { @@ -10454,8 +10453,8 @@ ruleTester.run("indent", rule, { `, options: [2, { MemberExpression: 1 }], errors: expectedErrors([ - [4, 2, 4, "Identifier"], - [5, 0, 2, "Punctuator"], + [4, 2, 4], + [5, 0, 2], ]), }, { @@ -10473,8 +10472,8 @@ ruleTester.run("indent", rule, { `, options: [2, { ArrayExpression: "first", MemberExpression: 1 }], errors: expectedErrors([ - [3, 2, 4, "Identifier"], - [4, 0, 2, "Punctuator"], + [3, 2, 4], + [4, 0, 2], ]), }, { @@ -10489,7 +10488,7 @@ ruleTester.run("indent", rule, { ]; `, options: [4, { MemberExpression: 1 }], - errors: expectedErrors([3, 0, 4, "Punctuator"]), + errors: expectedErrors([3, 0, 4]), }, { code: unIndent` @@ -10506,8 +10505,8 @@ ruleTester.run("indent", rule, { `, options: [4, { ObjectExpression: "first" }], errors: expectedErrors([ - [2, 4, 0, "Identifier"], - [3, 4, 0, "Identifier"], + [2, 4, 0], + [3, 4, 0], ]), }, { @@ -10523,8 +10522,8 @@ ruleTester.run("indent", rule, { `, options: [2, { CallExpression: { arguments: "first" } }], errors: expectedErrors([ - [2, 2, 24, "Identifier"], - [3, 2, 24, "Identifier"], + [2, 2, 24], + [3, 2, 24], ]), }, { @@ -10538,7 +10537,7 @@ ruleTester.run("indent", rule, { ; [1, 2, 3].map(baz) `, - errors: expectedErrors([3, 0, 4, "Punctuator"]), + errors: expectedErrors([3, 0, 4]), }, { code: unIndent` @@ -10549,7 +10548,7 @@ ruleTester.run("indent", rule, { if (foo) ; `, - errors: expectedErrors([2, 4, 0, "Punctuator"]), + errors: expectedErrors([2, 4, 0]), }, { code: unIndent` @@ -10561,7 +10560,7 @@ ruleTester.run("indent", rule, { from 'bar'; `, languageOptions: { ecmaVersion: 6, sourceType: "module" }, - errors: expectedErrors([2, 4, 0, "Identifier"]), + errors: expectedErrors([2, 4, 0]), }, { code: unIndent` @@ -10573,7 +10572,7 @@ ruleTester.run("indent", rule, { from 'bar'; `, languageOptions: { ecmaVersion: 6, sourceType: "module" }, - errors: expectedErrors([2, 4, 0, "Identifier"]), + errors: expectedErrors([2, 4, 0]), }, { code: unIndent` @@ -10591,8 +10590,8 @@ ruleTester.run("indent", rule, { } `, errors: expectedErrors([ - [4, 4, 8, "Identifier"], - [5, 0, 4, "Punctuator"], + [4, 4, 8], + [5, 0, 4], ]), }, { @@ -10611,8 +10610,8 @@ ruleTester.run("indent", rule, { } `, errors: expectedErrors([ - [4, 4, 8, "Identifier"], - [5, 0, 4, "Punctuator"], + [4, 4, 8], + [5, 0, 4], ]), }, { @@ -10631,8 +10630,8 @@ ruleTester.run("indent", rule, { ); `, errors: expectedErrors([ - [4, 4, 8, "Identifier"], - [5, 0, 4, "Punctuator"], + [4, 4, 8], + [5, 0, 4], ]), }, { @@ -10651,8 +10650,8 @@ ruleTester.run("indent", rule, { ) `, errors: expectedErrors([ - [4, 4, 8, "Identifier"], - [5, 0, 4, "Punctuator"], + [4, 4, 8], + [5, 0, 4], ]), }, { @@ -10671,8 +10670,8 @@ ruleTester.run("indent", rule, { ) `, errors: expectedErrors([ - [4, 4, 8, "Identifier"], - [5, 0, 4, "Punctuator"], + [4, 4, 8], + [5, 0, 4], ]), }, { @@ -10691,8 +10690,8 @@ ruleTester.run("indent", rule, { ) `, errors: expectedErrors([ - [4, 4, 8, "Identifier"], - [5, 0, 4, "Punctuator"], + [4, 4, 8], + [5, 0, 4], ]), }, { @@ -10707,8 +10706,8 @@ ruleTester.run("indent", rule, { baz `, errors: expectedErrors([ - [2, 4, 2, "Identifier"], - [3, 4, 6, "Identifier"], + [2, 4, 2], + [3, 4, 6], ]), }, { @@ -10729,9 +10728,9 @@ ruleTester.run("indent", rule, { )); `, errors: expectedErrors([ - [4, 8, 12, "String"], - [5, 8, 12, "String"], - [6, 4, 8, "Punctuator"], + [4, 8, 12], + [5, 8, 12], + [6, 4, 8], ]), }, { @@ -10752,9 +10751,9 @@ ruleTester.run("indent", rule, { )); `, errors: expectedErrors([ - [4, 8, 12, "String"], - [5, 8, 12, "String"], - [6, 4, 8, "Punctuator"], + [4, 8, 12], + [5, 8, 12], + [6, 4, 8], ]), }, { @@ -10774,7 +10773,7 @@ ruleTester.run("indent", rule, { 'bar' ); `, - errors: expectedErrors([[6, 8, 4, "Punctuator"]]), + errors: expectedErrors([[6, 8, 4]]), }, { code: unIndent` @@ -10791,7 +10790,7 @@ ruleTester.run("indent", rule, { 'fff' ); `, - errors: expectedErrors([[4, 12, 8, "String"]]), + errors: expectedErrors([[4, 12, 8]]), }, //---------------------------------------------------------------------- @@ -10823,8 +10822,8 @@ ruleTester.run("indent", rule, { parser: require(parser("unknown-nodes/namespace-invalid")), }, errors: expectedErrors([ - [3, 8, 4, "Identifier"], - [6, 8, 4, "Keyword"], + [3, 8, 4], + [6, 8, 4], ]), }, { @@ -10860,9 +10859,9 @@ ruleTester.run("indent", rule, { parser: require(parser("unknown-nodes/abstract-class-invalid")), }, errors: expectedErrors([ - [4, 12, 8, "Identifier"], - [7, 12, 8, "Identifier"], - [10, 8, 4, "Identifier"], + [4, 12, 8], + [7, 12, 8], + [10, 8, 4], ]), }, { @@ -10900,11 +10899,11 @@ ruleTester.run("indent", rule, { ), }, errors: expectedErrors([ - [4, 12, 8, "Keyword"], - [5, 16, 8, "Keyword"], - [6, 20, 8, "Identifier"], - [7, 16, 8, "Punctuator"], - [8, 12, 8, "Punctuator"], + [4, 12, 8], + [5, 16, 8], + [6, 20, 8], + [7, 16, 8], + [8, 12, 8], ]), }, { @@ -10946,8 +10945,8 @@ ruleTester.run("indent", rule, { ), }, errors: expectedErrors([ - [3, 8, 4, "Keyword"], - [7, 24, 20, "Identifier"], + [3, 8, 4], + [7, 24, 20], ]), }, @@ -10968,7 +10967,7 @@ ruleTester.run("indent", rule, { `, - errors: expectedErrors([2, 4, 2, "Punctuator"]), + errors: expectedErrors([2, 4, 2]), }, { code: unIndent` @@ -10982,7 +10981,7 @@ ruleTester.run("indent", rule, { `, options: [2], - errors: expectedErrors([2, 2, 4, "Punctuator"]), + errors: expectedErrors([2, 2, 4]), }, { code: unIndent` @@ -10996,7 +10995,7 @@ ruleTester.run("indent", rule, { `, options: ["tab"], - errors: expectedErrors([2, "1 tab", "4 spaces", "Punctuator"]), + errors: expectedErrors([2, "1 tab", "4 spaces"]), }, { code: unIndent` @@ -11014,7 +11013,7 @@ ruleTester.run("indent", rule, { } `, options: [2], - errors: expectedErrors([4, 2, 9, "Punctuator"]), + errors: expectedErrors([4, 2, 9]), }, { code: unIndent` @@ -11032,7 +11031,7 @@ ruleTester.run("indent", rule, { } `, options: [2], - errors: expectedErrors([4, 2, 4, "Punctuator"]), + errors: expectedErrors([4, 2, 4]), }, { code: unIndent` @@ -11055,9 +11054,9 @@ ruleTester.run("indent", rule, { `, options: [2], errors: expectedErrors([ - [3, 4, 0, "Punctuator"], - [4, 6, 2, "Punctuator"], - [5, 4, 0, "Punctuator"], + [3, 4, 0], + [4, 6, 2], + [5, 4, 0], ]), }, { @@ -11071,7 +11070,7 @@ ruleTester.run("indent", rule, { {test} `, - errors: expectedErrors([2, 4, 1, "Punctuator"]), + errors: expectedErrors([2, 4, 1]), }, { code: unIndent` @@ -11092,7 +11091,7 @@ ruleTester.run("indent", rule, { ))} `, - errors: expectedErrors([4, 12, 11, "Punctuator"]), + errors: expectedErrors([4, 12, 11]), }, { code: unIndent` @@ -11108,7 +11107,7 @@ ruleTester.run("indent", rule, { ] `, options: [2], - errors: expectedErrors([3, 2, 4, "Punctuator"]), + errors: expectedErrors([3, 2, 4]), }, { code: unIndent` @@ -11126,7 +11125,7 @@ ruleTester.run("indent", rule, { `, options: ["tab"], - errors: expectedErrors([3, "1 tab", "1 space", "Punctuator"]), + errors: expectedErrors([3, "1 tab", "1 space"]), }, { /* @@ -11143,7 +11142,7 @@ ruleTester.run("indent", rule, { : `, - errors: expectedErrors([3, 4, 0, "Punctuator"]), + errors: expectedErrors([3, 4, 0]), }, { /* @@ -11163,8 +11162,8 @@ ruleTester.run("indent", rule, { `, errors: expectedErrors([ - [3, 4, 0, "Punctuator"], - [4, 4, 0, "Punctuator"], + [3, 4, 0], + [4, 4, 0], ]), }, { @@ -11184,7 +11183,7 @@ ruleTester.run("indent", rule, { ) : `, - errors: expectedErrors([4, 4, 0, "Punctuator"]), + errors: expectedErrors([4, 4, 0]), }, { code: unIndent` @@ -11197,7 +11196,7 @@ ruleTester.run("indent", rule, { foo /> `, - errors: expectedErrors([2, 4, 2, "JSXIdentifier"]), + errors: expectedErrors([2, 4, 2]), }, { code: unIndent` @@ -11211,7 +11210,7 @@ ruleTester.run("indent", rule, { /> `, options: [2], - errors: expectedErrors([3, 0, 2, "Punctuator"]), + errors: expectedErrors([3, 0, 2]), }, { code: unIndent` @@ -11225,7 +11224,7 @@ ruleTester.run("indent", rule, { > `, options: [2], - errors: expectedErrors([3, 0, 2, "Punctuator"]), + errors: expectedErrors([3, 0, 2]), }, { code: unIndent` @@ -11253,7 +11252,7 @@ ruleTester.run("indent", rule, { }; `, options: [2], - errors: expectedErrors([6, 4, 36, "Punctuator"]), + errors: expectedErrors([6, 4, 36]), }, { code: unIndent` @@ -11271,7 +11270,7 @@ ruleTester.run("indent", rule, { } `, options: [2], - errors: expectedErrors([4, 2, 9, "Punctuator"]), + errors: expectedErrors([4, 2, 9]), }, { code: unIndent` @@ -11285,7 +11284,7 @@ ruleTester.run("indent", rule, { /> `, options: [2], - errors: expectedErrors([3, 0, 8, "Punctuator"]), + errors: expectedErrors([3, 0, 8]), }, { code: unIndent` @@ -11301,7 +11300,7 @@ ruleTester.run("indent", rule, { ) `, options: [2], - errors: expectedErrors([3, 2, 4, "Punctuator"]), + errors: expectedErrors([3, 2, 4]), }, { code: unIndent` @@ -11315,7 +11314,7 @@ ruleTester.run("indent", rule, { /> `, options: ["tab"], - errors: expectedErrors("tab", [3, 0, 1, "Punctuator"]), + errors: expectedErrors("tab", [3, 0, 1]), }, { code: unIndent` @@ -11329,7 +11328,7 @@ ruleTester.run("indent", rule, { > `, options: ["tab"], - errors: expectedErrors("tab", [3, 0, 1, "Punctuator"]), + errors: expectedErrors("tab", [3, 0, 1]), }, { code: unIndent` @@ -11359,10 +11358,10 @@ ruleTester.run("indent", rule, { > `, errors: expectedErrors([ - [3, 8, 4, "Punctuator"], - [4, 8, 4, "Punctuator"], - [9, 8, 4, "JSXIdentifier"], - [10, 8, 4, "JSXIdentifier"], + [3, 8, 4], + [4, 8, 4], + [9, 8, 4], + [10, 8, 4], ]), }, { @@ -11380,7 +11379,7 @@ ruleTester.run("indent", rule, { "number" /> `, - errors: expectedErrors([4, 8, 4, "JSXText"]), + errors: expectedErrors([4, 8, 4]), }, { code: unIndent` @@ -11397,7 +11396,7 @@ ruleTester.run("indent", rule, { {'number'} /> `, - errors: expectedErrors([4, 8, 4, "Punctuator"]), + errors: expectedErrors([4, 8, 4]), }, { code: unIndent` @@ -11414,7 +11413,7 @@ ruleTester.run("indent", rule, { ="number" /> `, - errors: expectedErrors([4, 8, 4, "Punctuator"]), + errors: expectedErrors([4, 8, 4]), }, { code: unIndent` @@ -11432,8 +11431,8 @@ ruleTester.run("indent", rule, { ) `, errors: expectedErrors([ - [4, 4, 8, "Identifier"], - [5, 0, 4, "Punctuator"], + [4, 4, 8], + [5, 0, 4], ]), }, { @@ -11456,9 +11455,9 @@ ruleTester.run("indent", rule, { ) `, errors: expectedErrors([ - [5, 4, 8, "Punctuator"], - [6, 4, 8, "Punctuator"], - [7, 0, 4, "Punctuator"], + [5, 4, 8], + [6, 4, 8], + [7, 0, 4], ]), }, { @@ -11481,9 +11480,9 @@ ruleTester.run("indent", rule, { `, errors: expectedErrors([ - [3, 8, 4, "Punctuator"], - [4, 12, 8, "Numeric"], - [5, 8, 4, "Punctuator"], + [3, 8, 4], + [4, 12, 8], + [5, 8, 4], ]), }, { @@ -11501,7 +11500,7 @@ ruleTester.run("indent", rule, { } `, - errors: expectedErrors([3, 8, 6, "Block"]), + errors: expectedErrors([3, 8, 6]), }, { code: unIndent` @@ -11514,7 +11513,7 @@ ruleTester.run("indent", rule, { {...props} /> `, - errors: expectedErrors([2, 4, 0, "Punctuator"]), + errors: expectedErrors([2, 4, 0]), }, { code: unIndent` @@ -11531,7 +11530,7 @@ ruleTester.run("indent", rule, { } /> `, - errors: expectedErrors([3, 8, 6, "Punctuator"]), + errors: expectedErrors([3, 8, 6]), }, { code: unIndent` @@ -11544,7 +11543,7 @@ ruleTester.run("indent", rule, {
bar
`, - errors: expectedErrors([2, 4, 0, "Punctuator"]), + errors: expectedErrors([2, 4, 0]), }, { code: unIndent` @@ -11557,7 +11556,7 @@ ruleTester.run("indent", rule, { baz qux. `, - errors: expectedErrors([2, 4, 0, "Punctuator"]), + errors: expectedErrors([2, 4, 0]), }, /* @@ -11575,7 +11574,7 @@ ruleTester.run("indent", rule, { `, - errors: expectedErrors([2, 4, 0, "Punctuator"]), + errors: expectedErrors([2, 4, 0]), }, { code: unIndent` @@ -11590,7 +11589,7 @@ ruleTester.run("indent", rule, { `, - errors: expectedErrors([2, 0, 4, "Punctuator"]), + errors: expectedErrors([2, 0, 4]), }, { code: unIndent` @@ -11605,7 +11604,7 @@ ruleTester.run("indent", rule, { < /> `, - errors: expectedErrors([4, 0, 4, "Punctuator"]), + errors: expectedErrors([4, 0, 4]), }, { code: unIndent` @@ -11620,7 +11619,7 @@ ruleTester.run("indent", rule, { `, - errors: expectedErrors([4, 0, 4, "Punctuator"]), + errors: expectedErrors([4, 0, 4]), }, { code: unIndent` @@ -11638,8 +11637,8 @@ ruleTester.run("indent", rule, { > `, errors: expectedErrors([ - [2, 0, 4, "Punctuator"], - [5, 0, 4, "Punctuator"], + [2, 0, 4], + [5, 0, 4], ]), }, { @@ -11658,8 +11657,8 @@ ruleTester.run("indent", rule, { /> `, errors: expectedErrors([ - [2, 0, 4, "Punctuator"], - [5, 0, 4, "Punctuator"], + [2, 0, 4], + [5, 0, 4], ]), }, { @@ -11675,7 +11674,7 @@ ruleTester.run("indent", rule, { `, - errors: expectedErrors([2, 0, 4, "Punctuator"]), + errors: expectedErrors([2, 0, 4]), }, { code: unIndent` @@ -11690,7 +11689,7 @@ ruleTester.run("indent", rule, { < // Comment /> `, - errors: expectedErrors([4, 0, 4, "Punctuator"]), + errors: expectedErrors([4, 0, 4]), }, { code: unIndent` @@ -11705,7 +11704,7 @@ ruleTester.run("indent", rule, { `, - errors: expectedErrors([4, 0, 4, "Punctuator"]), + errors: expectedErrors([4, 0, 4]), }, { code: unIndent` @@ -11720,7 +11719,7 @@ ruleTester.run("indent", rule, { `, - errors: expectedErrors([2, 0, 4, "Punctuator"]), + errors: expectedErrors([2, 0, 4]), }, { code: unIndent` @@ -11735,7 +11734,7 @@ ruleTester.run("indent", rule, { < /* Comment */ /> `, - errors: expectedErrors([4, 0, 4, "Punctuator"]), + errors: expectedErrors([4, 0, 4]), }, { code: unIndent` @@ -11750,7 +11749,7 @@ ruleTester.run("indent", rule, { `, - errors: expectedErrors([4, 0, 4, "Punctuator"]), + errors: expectedErrors([4, 0, 4]), }, { @@ -11767,7 +11766,7 @@ ruleTester.run("indent", rule, { languageOptions: { parser: require("../../fixtures/parsers/babel-eslint7/object-pattern-with-annotation"), }, - errors: expectedErrors([3, 0, 4, "Punctuator"]), + errors: expectedErrors([3, 0, 4]), }, { code: unIndent` @@ -11783,7 +11782,7 @@ ruleTester.run("indent", rule, { languageOptions: { parser: require("../../fixtures/parsers/babel-eslint7/array-pattern-with-annotation"), }, - errors: expectedErrors([3, 0, 4, "Punctuator"]), + errors: expectedErrors([3, 0, 4]), }, { code: unIndent` @@ -11799,7 +11798,7 @@ ruleTester.run("indent", rule, { languageOptions: { parser: require("../../fixtures/parsers/babel-eslint7/object-pattern-with-object-annotation"), }, - errors: expectedErrors([3, 0, 4, "Punctuator"]), + errors: expectedErrors([3, 0, 4]), }, { code: unIndent` @@ -11817,7 +11816,7 @@ ruleTester.run("indent", rule, { } `, options: [4, { ignoredNodes: ["ClassBody"] }], - errors: expectedErrors([3, 4, 0, "Identifier"]), + errors: expectedErrors([3, 4, 0]), }, { code: unIndent` @@ -11852,7 +11851,7 @@ ruleTester.run("indent", rule, { ], }, ], - errors: expectedErrors([7, 4, 0, "Identifier"]), + errors: expectedErrors([7, 4, 0]), }, { code: unIndent` @@ -11877,7 +11876,7 @@ ruleTester.run("indent", rule, { ], }, ], - errors: expectedErrors([3, 4, 0, "Identifier"]), + errors: expectedErrors([3, 4, 0]), }, { code: unIndent` @@ -11897,7 +11896,7 @@ ruleTester.run("indent", rule, { } `, options: [4, { ignoreComments: false }], - errors: expectedErrors([4, 4, 0, "Line"]), + errors: expectedErrors([4, 4, 0]), }, { code: unIndent` @@ -11917,7 +11916,7 @@ ruleTester.run("indent", rule, { } `, options: [4, { ignoreComments: false }], - errors: expectedErrors([4, 4, 0, "Block"]), + errors: expectedErrors([4, 4, 0]), }, { code: unIndent` @@ -11938,7 +11937,7 @@ ruleTester.run("indent", rule, { } } `, - errors: expectedErrors([4, 12, 8, "Numeric"]), + errors: expectedErrors([4, 12, 8]), }, //---------------------------------------------------------------------- @@ -11959,7 +11958,7 @@ ruleTester.run("indent", rule, { doSomething(); } `, - errors: expectedErrors([3, 4, 0, "Line"]), + errors: expectedErrors([3, 4, 0]), }, { code: unIndent` @@ -11978,7 +11977,7 @@ ruleTester.run("indent", rule, { } `, - errors: expectedErrors([4, 4, 0, "Line"]), + errors: expectedErrors([4, 4, 0]), }, { code: unIndent` @@ -12003,7 +12002,7 @@ ruleTester.run("indent", rule, { bar }]; `, - errors: expectedErrors([5, 0, 4, "Line"]), + errors: expectedErrors([5, 0, 4]), }, { code: unIndent` @@ -12020,7 +12019,7 @@ ruleTester.run("indent", rule, { ;(async () => {})() `, - errors: expectedErrors([3, 0, 4, "Line"]), + errors: expectedErrors([3, 0, 4]), }, { code: unIndent` @@ -12033,7 +12032,7 @@ ruleTester.run("indent", rule, { // comment ;(async () => {})() `, - errors: expectedErrors([2, 0, 4, "Line"]), + errors: expectedErrors([2, 0, 4]), }, { code: unIndent` @@ -12050,7 +12049,7 @@ ruleTester.run("indent", rule, { (async () => {})() `, - errors: expectedErrors([3, 4, 0, "Block"]), + errors: expectedErrors([3, 4, 0]), }, { code: unIndent` @@ -12063,7 +12062,7 @@ ruleTester.run("indent", rule, { ;(async () => {})() `, - errors: expectedErrors([1, 0, 4, "Line"]), + errors: expectedErrors([1, 0, 4]), }, { code: unIndent` @@ -12074,7 +12073,7 @@ ruleTester.run("indent", rule, { // comment ;(async () => {})() `, - errors: expectedErrors([1, 0, 4, "Line"]), + errors: expectedErrors([1, 0, 4]), }, { code: unIndent` @@ -12097,7 +12096,7 @@ ruleTester.run("indent", rule, { } `, - errors: expectedErrors([4, 4, 8, "Line"]), + errors: expectedErrors([4, 4, 8]), }, { code: unIndent` @@ -12116,7 +12115,7 @@ ruleTester.run("indent", rule, { } `, - errors: expectedErrors([3, 4, 8, "Line"]), + errors: expectedErrors([3, 4, 8]), }, { code: unIndent` @@ -12139,7 +12138,7 @@ ruleTester.run("indent", rule, { } `, - errors: expectedErrors([4, 8, 4, "Block"]), + errors: expectedErrors([4, 8, 4]), }, { code: unIndent` @@ -12158,7 +12157,7 @@ ruleTester.run("indent", rule, { ;[1, 2, 3].forEach(() => {}) `, - errors: expectedErrors([4, 0, 4, "Block"]), + errors: expectedErrors([4, 0, 4]), }, { code: unIndent` @@ -12173,7 +12172,7 @@ ruleTester.run("indent", rule, { /* comment */ ;[1, 2, 3].forEach(() => {}) `, - errors: expectedErrors([3, 0, 4, "Block"]), + errors: expectedErrors([3, 0, 4]), }, { code: unIndent` @@ -12192,7 +12191,7 @@ ruleTester.run("indent", rule, { [1, 2, 3].forEach(() => {}) `, - errors: expectedErrors([4, 4, 0, "Block"]), + errors: expectedErrors([4, 4, 0]), }, { code: unIndent` @@ -12205,7 +12204,7 @@ ruleTester.run("indent", rule, { ;[1, 2, 3].forEach(() => {}) `, - errors: expectedErrors([1, 0, 4, "Block"]), + errors: expectedErrors([1, 0, 4]), }, { code: unIndent` @@ -12216,7 +12215,7 @@ ruleTester.run("indent", rule, { /* comment */ ;[1, 2, 3].forEach(() => {}) `, - errors: expectedErrors([1, 0, 4, "Block"]), + errors: expectedErrors([1, 0, 4]), }, { code: unIndent` @@ -12241,7 +12240,7 @@ ruleTester.run("indent", rule, { } `, - errors: expectedErrors([5, 4, 8, "Block"]), + errors: expectedErrors([5, 4, 8]), }, { code: unIndent` @@ -12262,7 +12261,7 @@ ruleTester.run("indent", rule, { } `, - errors: expectedErrors([4, 4, 8, "Block"]), + errors: expectedErrors([4, 4, 8]), }, { code: unIndent` @@ -12287,7 +12286,7 @@ ruleTester.run("indent", rule, { } `, - errors: expectedErrors([5, 8, 4, "Block"]), + errors: expectedErrors([5, 8, 4]), }, // import expressions @@ -12304,8 +12303,8 @@ ruleTester.run("indent", rule, { `, languageOptions: { ecmaVersion: 2020 }, errors: expectedErrors([ - [2, 4, 0, "Identifier"], - [3, 0, 4, "Punctuator"], + [2, 4, 0], + [3, 0, 4], ]), }, @@ -12334,7 +12333,7 @@ ruleTester.run("indent", rule, { }); `, languageOptions: { ecmaVersion: 2015 }, - errors: expectedErrors([[7, 8, 4, "Identifier"]]), + errors: expectedErrors([[7, 8, 4]]), }, { code: unIndent` @@ -12361,9 +12360,9 @@ ruleTester.run("indent", rule, { `, languageOptions: { ecmaVersion: 2015 }, errors: expectedErrors([ - [2, 4, 8, "Identifier"], - [7, 8, 12, "Identifier"], - [8, 4, 8, "Punctuator"], + [2, 4, 8], + [7, 8, 12], + [8, 4, 8], ]), }, { @@ -12407,9 +12406,9 @@ ruleTester.run("indent", rule, { `, languageOptions: { ecmaVersion: 2015 }, errors: expectedErrors([ - [7, 8, 12, "Identifier"], - [15, 8, 12, "Identifier"], - [16, 4, 0, "Punctuator"], + [7, 8, 12], + [15, 8, 12], + [16, 4, 0], ]), }, { @@ -12453,9 +12452,9 @@ ruleTester.run("indent", rule, { `, languageOptions: { ecmaVersion: 2015 }, errors: expectedErrors([ - [7, 8, 12, "Identifier"], - [15, 8, 12, "Identifier"], - [16, 4, 0, "Punctuator"], + [7, 8, 12], + [15, 8, 12], + [16, 4, 0], ]), }, { @@ -12493,8 +12492,8 @@ ruleTester.run("indent", rule, { `, languageOptions: { ecmaVersion: 2015 }, errors: expectedErrors([ - [5, 4, 0, "Identifier"], - [11, 8, 4, "Identifier"], + [5, 4, 0], + [11, 8, 4], ]), }, { @@ -12526,9 +12525,9 @@ ruleTester.run("indent", rule, { `, languageOptions: { ecmaVersion: 2015 }, errors: expectedErrors([ - [4, 4, 8, "Identifier"], - [5, 4, 0, "Identifier"], - [9, 8, 0, "Identifier"], + [4, 4, 8], + [5, 4, 0], + [9, 8, 0], ]), }, { @@ -12543,7 +12542,7 @@ ruleTester.run("indent", rule, { }) `, languageOptions: { ecmaVersion: 2015 }, - errors: expectedErrors([[2, 4, 8, "Identifier"]]), + errors: expectedErrors([[2, 4, 8]]), }, { code: unIndent` @@ -12558,8 +12557,8 @@ ruleTester.run("indent", rule, { `, languageOptions: { ecmaVersion: 2015 }, errors: expectedErrors([ - [2, 4, 0, "Identifier"], - [3, 0, 4, "Punctuator"], + [2, 4, 0], + [3, 0, 4], ]), }, { @@ -12578,7 +12577,7 @@ ruleTester.run("indent", rule, { }) `, languageOptions: { ecmaVersion: 2015 }, - errors: expectedErrors([[5, 4, 0, "Punctuator"]]), + errors: expectedErrors([[5, 4, 0]]), }, { code: unIndent` @@ -12598,7 +12597,7 @@ ruleTester.run("indent", rule, { }) `, languageOptions: { ecmaVersion: 2015 }, - errors: expectedErrors([[5, 8, 0, "Identifier"]]), + errors: expectedErrors([[5, 8, 0]]), }, { code: unIndent` @@ -12620,9 +12619,9 @@ ruleTester.run("indent", rule, { options: [4, { MemberExpression: 0 }], languageOptions: { ecmaVersion: 2015 }, errors: expectedErrors([ - [2, 0, 4, "Punctuator"], - [5, 4, 0, "Identifier"], - [6, 0, 4, "Punctuator"], + [2, 0, 4], + [5, 4, 0], + [6, 0, 4], ]), }, @@ -12645,10 +12644,10 @@ ruleTester.run("indent", rule, { options: [4], languageOptions: { ecmaVersion: 2020 }, errors: expectedErrors([ - [2, 4, 0, "Punctuator"], - [3, 4, 0, "Punctuator"], - [4, 4, 0, "Punctuator"], - [5, 8, 0, "Punctuator"], + [2, 4, 0], + [3, 4, 0], + [4, 4, 0], + [5, 8, 0], ]), }, { @@ -12673,8 +12672,8 @@ ruleTester.run("indent", rule, { options: [4], languageOptions: { ecmaVersion: 2020 }, errors: expectedErrors([ - [6, 4, 0, "Punctuator"], - [7, 4, 0, "Punctuator"], + [6, 4, 0], + [7, 4, 0], ]), }, { @@ -12693,9 +12692,9 @@ ruleTester.run("indent", rule, { options: [4], languageOptions: { ecmaVersion: 2020 }, errors: expectedErrors([ - [2, 4, 0, "Punctuator"], - [3, 4, 0, "Punctuator"], - [4, 4, 0, "Punctuator"], + [2, 4, 0], + [3, 4, 0], + [4, 4, 0], ]), }, { @@ -12720,8 +12719,8 @@ ruleTester.run("indent", rule, { options: [4], languageOptions: { ecmaVersion: 2020 }, errors: expectedErrors([ - [6, 4, 0, "Punctuator"], - [7, 4, 0, "Punctuator"], + [6, 4, 0], + [7, 4, 0], ]), }, { @@ -12747,7 +12746,7 @@ ruleTester.run("indent", rule, { }, ], languageOptions: { ecmaVersion: 2020 }, - errors: expectedErrors([[2, 19, 20, "Identifier"]]), + errors: expectedErrors([[2, 19, 20]]), }, { code: unIndent` @@ -12759,7 +12758,7 @@ ruleTester.run("indent", rule, { b => {} `, options: [2], - errors: expectedErrors([[2, 0, 1, "Identifier"]]), + errors: expectedErrors([[2, 0, 1]]), }, { code: unIndent` @@ -12777,8 +12776,8 @@ ruleTester.run("indent", rule, { options: [4], languageOptions: { ecmaVersion: 2022 }, errors: expectedErrors([ - [2, 4, 0, "Identifier"], - [3, 4, 0, "Keyword"], + [2, 4, 0], + [3, 4, 0], ]), }, { @@ -12811,15 +12810,15 @@ ruleTester.run("indent", rule, { options: [4], languageOptions: { ecmaVersion: 2022 }, errors: expectedErrors([ - [2, 4, 0, "Identifier"], - [3, 8, 0, "Punctuator"], - [4, 12, 0, "Numeric"], - [5, 12, 0, "Punctuator"], - [6, 4, 0, "Keyword"], - [7, 8, 0, "Identifier"], - [8, 12, 0, "Punctuator"], - [9, 16, 0, "Numeric"], - [10, 16, 0, "Punctuator"], + [2, 4, 0], + [3, 8, 0], + [4, 12, 0], + [5, 12, 0], + [6, 4, 0], + [7, 8, 0], + [8, 12, 0], + [9, 16, 0], + [10, 16, 0], ]), }, { @@ -12872,25 +12871,25 @@ ruleTester.run("indent", rule, { options: [4], languageOptions: { ecmaVersion: 2022 }, errors: expectedErrors([ - [2, 4, 0, "Punctuator"], - [3, 8, 0, "Identifier"], - [4, 4, 0, "Punctuator"], - [5, 8, 0, "Punctuator"], - [6, 12, 0, "Numeric"], - [7, 12, 0, "Punctuator"], - [8, 4, 0, "Keyword"], - [9, 4, 0, "Punctuator"], - [10, 8, 0, "Identifier"], - [11, 4, 0, "Punctuator"], - [12, 8, 0, "Punctuator"], - [13, 12, 0, "Numeric"], - [14, 12, 0, "Punctuator"], - [15, 4, 0, "Punctuator"], - [16, 8, 0, "Identifier"], - [17, 4, 0, "Punctuator"], - [18, 8, 0, "Numeric"], - [19, 4, 0, "Punctuator"], - [20, 8, 0, "Numeric"], + [2, 4, 0], + [3, 8, 0], + [4, 4, 0], + [5, 8, 0], + [6, 12, 0], + [7, 12, 0], + [8, 4, 0], + [9, 4, 0], + [10, 8, 0], + [11, 4, 0], + [12, 8, 0], + [13, 12, 0], + [14, 12, 0], + [15, 4, 0], + [16, 8, 0], + [17, 4, 0], + [18, 8, 0], + [19, 4, 0], + [20, 8, 0], ]), }, { @@ -12913,9 +12912,9 @@ ruleTester.run("indent", rule, { options: [4], languageOptions: { ecmaVersion: 2022 }, errors: expectedErrors([ - [2, 4, 0, "Identifier"], - [3, 8, 0, "Identifier"], - [5, 4, 0, "Punctuator"], + [2, 4, 0], + [3, 8, 0], + [5, 4, 0], ]), }, { @@ -12938,10 +12937,10 @@ ruleTester.run("indent", rule, { options: [4], languageOptions: { ecmaVersion: 2022 }, errors: expectedErrors([ - [2, 4, 0, "PrivateIdentifier"], - [3, 4, 0, "Identifier"], - [4, 8, 0, "Keyword"], - [5, 4, 0, "Punctuator"], + [2, 4, 0], + [3, 4, 0], + [4, 8, 0], + [5, 4, 0], ]), }, { @@ -12964,10 +12963,10 @@ ruleTester.run("indent", rule, { options: [2], languageOptions: { ecmaVersion: 2022 }, errors: expectedErrors([ - [2, 2, 0, "Keyword"], - [3, 4, 0, "Identifier"], - [4, 4, 0, "Identifier"], - [5, 2, 0, "Punctuator"], + [2, 2, 0], + [3, 4, 0], + [4, 4, 0], + [5, 2, 0], ]), }, { @@ -12990,10 +12989,10 @@ ruleTester.run("indent", rule, { options: [4], languageOptions: { ecmaVersion: 2022 }, errors: expectedErrors([ - [2, 4, 0, "Keyword"], - [3, 8, 0, "Identifier"], - [4, 8, 0, "Identifier"], - [5, 4, 0, "Punctuator"], + [2, 4, 0], + [3, 8, 0], + [4, 8, 0], + [5, 4, 0], ]), }, { @@ -13016,10 +13015,10 @@ ruleTester.run("indent", rule, { options: [4], languageOptions: { ecmaVersion: 2022 }, errors: expectedErrors([ - [2, 4, 8, "Keyword"], - [3, 8, 4, "Identifier"], - [4, 8, 0, "Identifier"], - [5, 4, 8, "Punctuator"], + [2, 4, 8], + [3, 8, 4], + [4, 8, 0], + [5, 4, 8], ]), }, { @@ -13042,10 +13041,10 @@ ruleTester.run("indent", rule, { options: [4, { StaticBlock: { body: 2 } }], languageOptions: { ecmaVersion: 2022 }, errors: expectedErrors([ - [2, 4, 0, "Keyword"], - [3, 12, 0, "Identifier"], - [4, 12, 0, "Identifier"], - [5, 4, 0, "Punctuator"], + [2, 4, 0], + [3, 12, 0], + [4, 12, 0], + [5, 4, 0], ]), }, { @@ -13068,10 +13067,10 @@ ruleTester.run("indent", rule, { options: [4, { StaticBlock: { body: 0 } }], languageOptions: { ecmaVersion: 2022 }, errors: expectedErrors([ - [2, 4, 0, "Keyword"], - [3, 4, 0, "Identifier"], - [4, 4, 0, "Identifier"], - [5, 4, 0, "Punctuator"], + [2, 4, 0], + [3, 4, 0], + [4, 4, 0], + [5, 4, 0], ]), }, { @@ -13094,10 +13093,10 @@ ruleTester.run("indent", rule, { options: ["tab"], languageOptions: { ecmaVersion: 2022 }, errors: expectedErrors("tab", [ - [2, 1, 0, "Keyword"], - [3, 2, 0, "Identifier"], - [4, 2, 0, "Identifier"], - [5, 1, 0, "Punctuator"], + [2, 1, 0], + [3, 2, 0], + [4, 2, 0], + [5, 1, 0], ]), }, { @@ -13120,10 +13119,10 @@ ruleTester.run("indent", rule, { options: ["tab", { StaticBlock: { body: 2 } }], languageOptions: { ecmaVersion: 2022 }, errors: expectedErrors("tab", [ - [2, 1, 0, "Keyword"], - [3, 3, 0, "Identifier"], - [4, 3, 0, "Identifier"], - [5, 1, 0, "Punctuator"], + [2, 1, 0], + [3, 3, 0], + [4, 3, 0], + [5, 1, 0], ]), }, { @@ -13148,11 +13147,11 @@ ruleTester.run("indent", rule, { options: [4], languageOptions: { ecmaVersion: 2022 }, errors: expectedErrors([ - [2, 4, 0, "Keyword"], - [3, 4, 0, "Punctuator"], - [4, 8, 0, "Identifier"], - [5, 8, 0, "Identifier"], - [6, 4, 0, "Punctuator"], + [2, 4, 0], + [3, 4, 0], + [4, 8, 0], + [5, 8, 0], + [6, 4, 0], ]), }, { @@ -13177,8 +13176,8 @@ ruleTester.run("indent", rule, { options: [4], languageOptions: { ecmaVersion: 2022 }, errors: expectedErrors([ - [3, 4, 8, "Punctuator"], - [6, 4, 8, "Punctuator"], + [3, 4, 8], + [6, 4, 8], ]), }, { @@ -13201,10 +13200,10 @@ ruleTester.run("indent", rule, { options: [4], languageOptions: { ecmaVersion: 2022 }, errors: expectedErrors([ - [2, 4, 0, "Keyword"], - [3, 8, 0, "Keyword"], - [4, 12, 0, "Identifier"], - [5, 4, 0, "Punctuator"], + [2, 4, 0], + [3, 8, 0], + [4, 12, 0], + [5, 4, 0], ]), }, { @@ -13229,11 +13228,11 @@ ruleTester.run("indent", rule, { options: [4], languageOptions: { ecmaVersion: 2022 }, errors: expectedErrors([ - [2, 4, 0, "Keyword"], - [3, 4, 0, "Punctuator"], - [4, 8, 0, "Keyword"], - [5, 12, 0, "Identifier"], - [6, 4, 0, "Punctuator"], + [2, 4, 0], + [3, 4, 0], + [4, 8, 0], + [5, 12, 0], + [6, 4, 0], ]), }, { @@ -13258,11 +13257,11 @@ ruleTester.run("indent", rule, { options: [4], languageOptions: { ecmaVersion: 2022 }, errors: expectedErrors([ - [2, 4, 0, "Keyword"], - [3, 8, 0, "Keyword"], - [4, 12, 0, "Identifier"], - [5, 8, 0, "Punctuator"], - [6, 4, 0, "Punctuator"], + [2, 4, 0], + [3, 8, 0], + [4, 12, 0], + [5, 8, 0], + [6, 4, 0], ]), }, { @@ -13287,11 +13286,11 @@ ruleTester.run("indent", rule, { options: [4], languageOptions: { ecmaVersion: 2022 }, errors: expectedErrors([ - [2, 4, 0, "Keyword"], - [3, 8, 0, "Punctuator"], - [4, 12, 0, "Identifier"], - [5, 8, 0, "Punctuator"], - [6, 4, 0, "Punctuator"], + [2, 4, 0], + [3, 8, 0], + [4, 12, 0], + [5, 8, 0], + [6, 4, 0], ]), }, { @@ -13322,12 +13321,12 @@ ruleTester.run("indent", rule, { options: [4], languageOptions: { ecmaVersion: 2022 }, errors: expectedErrors([ - [2, 4, 0, "Keyword"], - [4, 4, 0, "Keyword"], - [5, 4, 0, "Punctuator"], - [7, 4, 0, "Keyword"], - [8, 4, 0, "Punctuator"], - [9, 4, 0, "Punctuator"], + [2, 4, 0], + [4, 4, 0], + [5, 4, 0], + [7, 4, 0], + [8, 4, 0], + [9, 4, 0], ]), }, { @@ -13360,12 +13359,12 @@ ruleTester.run("indent", rule, { options: [4], languageOptions: { ecmaVersion: 2022 }, errors: expectedErrors([ - [3, 4, 0, "Keyword"], - [4, 8, 4, "Identifier"], - [5, 4, 0, "Punctuator"], - [7, 4, 0, "Keyword"], - [8, 8, 4, "Identifier"], - [9, 4, 0, "Punctuator"], + [3, 4, 0], + [4, 8, 4], + [5, 4, 0], + [7, 4, 0], + [8, 8, 4], + [9, 4, 0], ]), }, { @@ -13398,11 +13397,11 @@ ruleTester.run("indent", rule, { options: [4], languageOptions: { ecmaVersion: 2022 }, errors: expectedErrors([ - [3, 4, 0, "Identifier"], - [5, 4, 0, "Keyword"], - [6, 8, 4, "Identifier"], - [7, 4, 0, "Punctuator"], - [9, 4, 0, "Identifier"], + [3, 4, 0], + [5, 4, 0], + [6, 8, 4], + [7, 4, 0], + [9, 4, 0], ]), }, { @@ -13443,15 +13442,15 @@ ruleTester.run("indent", rule, { options: [4], languageOptions: { ecmaVersion: 2022 }, errors: expectedErrors([ - [3, 4, 0, "Identifier"], - [4, 8, 4, "Identifier"], - [5, 4, 0, "Punctuator"], - [7, 4, 0, "Keyword"], - [8, 8, 4, "Identifier"], - [9, 4, 0, "Punctuator"], - [11, 4, 0, "Identifier"], - [12, 8, 4, "Identifier"], - [13, 4, 0, "Punctuator"], + [3, 4, 0], + [4, 8, 4], + [5, 4, 0], + [7, 4, 0], + [8, 8, 4], + [9, 4, 0], + [11, 4, 0], + [12, 8, 4], + [13, 4, 0], ]), }, { @@ -13478,12 +13477,12 @@ ruleTester.run("indent", rule, { options: [4], languageOptions: { ecmaVersion: 2022 }, errors: expectedErrors([ - [2, 4, 0, "Keyword"], - [3, 8, 0, "Keyword"], - [4, 12, 0, "Identifier"], - [5, 12, 0, "Identifier"], - [6, 8, 0, "Punctuator"], - [7, 4, 0, "Punctuator"], + [2, 4, 0], + [3, 8, 0], + [4, 12, 0], + [5, 12, 0], + [6, 8, 0], + [7, 4, 0], ]), }, { @@ -13513,12 +13512,12 @@ ruleTester.run("indent", rule, { ], languageOptions: { ecmaVersion: 2022 }, errors: expectedErrors([ - [2, 4, 0, "Identifier"], - [3, 12, 0, "Identifier"], - [4, 4, 0, "Punctuator"], - [5, 4, 0, "Keyword"], - [6, 12, 0, "Identifier"], - [7, 4, 0, "Punctuator"], + [2, 4, 0], + [3, 12, 0], + [4, 4, 0], + [5, 4, 0], + [6, 12, 0], + [7, 4, 0], ]), }, @@ -13535,7 +13534,7 @@ ruleTester.run("indent", rule, { ;[1, 2, 3].forEach(x=>console.log(x)) `, options: ["tab"], - errors: expectedErrors("tab", [3, 0, 1, "Punctuator"]), + errors: expectedErrors("tab", [3, 0, 1]), }, { code: unIndent` @@ -13549,7 +13548,7 @@ ruleTester.run("indent", rule, { ;[1, 2, 3].forEach(x=>console.log(x)) `, options: [4], - errors: expectedErrors([3, 0, 4, "Punctuator"]), + errors: expectedErrors([3, 0, 4]), }, { code: unIndent` @@ -13561,7 +13560,7 @@ ruleTester.run("indent", rule, { baz() `, options: [4], - errors: expectedErrors([2, 0, 4, "Identifier"]), + errors: expectedErrors([2, 0, 4]), }, { code: unIndent` @@ -13573,7 +13572,7 @@ ruleTester.run("indent", rule, { ;baz() `, options: [4], - errors: expectedErrors([2, 0, 4, "Punctuator"]), + errors: expectedErrors([2, 0, 4]), }, { code: unIndent` @@ -13587,7 +13586,7 @@ ruleTester.run("indent", rule, { baz(); `, options: [4], - errors: expectedErrors([3, 0, 4, "Identifier"]), + errors: expectedErrors([3, 0, 4]), }, { code: unIndent` @@ -13601,7 +13600,7 @@ ruleTester.run("indent", rule, { ; baz() `, options: [4], - errors: expectedErrors([3, 0, 4, "Punctuator"]), + errors: expectedErrors([3, 0, 4]), }, { code: unIndent` @@ -13618,8 +13617,8 @@ ruleTester.run("indent", rule, { `, options: [4], errors: expectedErrors([ - [3, 0, 4, "Punctuator"], - [4, 0, 4, "Identifier"], + [3, 0, 4], + [4, 0, 4], ]), }, { @@ -13636,7 +13635,7 @@ ruleTester.run("indent", rule, { baz() `, options: [4], - errors: expectedErrors([3, 0, 4, "Punctuator"]), + errors: expectedErrors([3, 0, 4]), }, { code: unIndent` @@ -13654,7 +13653,7 @@ ruleTester.run("indent", rule, { ;qux() `, options: [4], - errors: expectedErrors([5, 0, 4, "Punctuator"]), + errors: expectedErrors([5, 0, 4]), }, { code: unIndent` @@ -13670,7 +13669,7 @@ ruleTester.run("indent", rule, { ;qux() `, options: [4], - errors: expectedErrors([4, 0, 4, "Punctuator"]), + errors: expectedErrors([4, 0, 4]), }, { code: unIndent` @@ -13688,7 +13687,7 @@ ruleTester.run("indent", rule, { ;quux() `, options: [4], - errors: expectedErrors([5, 0, 4, "Punctuator"]), + errors: expectedErrors([5, 0, 4]), }, { code: unIndent` @@ -13708,7 +13707,7 @@ ruleTester.run("indent", rule, { ;quux() `, options: [4], - errors: expectedErrors([6, 0, 4, "Punctuator"]), + errors: expectedErrors([6, 0, 4]), }, { code: unIndent` @@ -13724,7 +13723,7 @@ ruleTester.run("indent", rule, { baz() `, options: [4], - errors: expectedErrors([3, 4, 0, "Punctuator"]), + errors: expectedErrors([3, 4, 0]), }, { code: unIndent` @@ -13738,7 +13737,7 @@ ruleTester.run("indent", rule, { baz() `, options: [4], - errors: expectedErrors([2, 4, 0, "Punctuator"]), + errors: expectedErrors([2, 4, 0]), }, { code: unIndent` @@ -13750,7 +13749,7 @@ ruleTester.run("indent", rule, { ;baz() `, options: [4], - errors: expectedErrors([2, 0, 4, "Punctuator"]), + errors: expectedErrors([2, 0, 4]), }, { code: unIndent` @@ -13764,7 +13763,7 @@ ruleTester.run("indent", rule, { baz() `, options: [4], - errors: expectedErrors([2, 0, 4, "Keyword"]), + errors: expectedErrors([2, 0, 4]), }, { code: unIndent` @@ -13780,7 +13779,7 @@ ruleTester.run("indent", rule, { baz() `, options: [4], - errors: expectedErrors([2, 4, 0, "Punctuator"]), + errors: expectedErrors([2, 4, 0]), }, { code: unIndent` @@ -13794,7 +13793,7 @@ ruleTester.run("indent", rule, { baz() `, options: [4], - errors: expectedErrors([2, 0, 4, "Punctuator"]), + errors: expectedErrors([2, 0, 4]), }, { code: unIndent` @@ -13806,7 +13805,7 @@ ruleTester.run("indent", rule, { while (bar) `, options: [4], - errors: expectedErrors([2, 0, 4, "Keyword"]), + errors: expectedErrors([2, 0, 4]), }, { code: unIndent` @@ -13818,7 +13817,7 @@ ruleTester.run("indent", rule, { ;while (bar) `, options: [4], - errors: expectedErrors([2, 0, 4, "Punctuator"]), + errors: expectedErrors([2, 0, 4]), }, { code: unIndent` @@ -13832,7 +13831,7 @@ ruleTester.run("indent", rule, { while (bar) `, options: [4], - errors: expectedErrors([3, 0, 4, "Keyword"]), + errors: expectedErrors([3, 0, 4]), }, { code: unIndent` @@ -13846,7 +13845,7 @@ ruleTester.run("indent", rule, { ;while (bar) `, options: [4], - errors: expectedErrors([3, 0, 4, "Punctuator"]), + errors: expectedErrors([3, 0, 4]), }, { code: unIndent` @@ -13858,7 +13857,7 @@ ruleTester.run("indent", rule, { while (foo) `, options: [4], - errors: expectedErrors([2, 0, 4, "Keyword"]), + errors: expectedErrors([2, 0, 4]), }, { code: unIndent` @@ -13872,7 +13871,7 @@ ruleTester.run("indent", rule, { while (foo) `, options: [4], - errors: expectedErrors([2, 4, 0, "Punctuator"]), + errors: expectedErrors([2, 4, 0]), }, { code: unIndent` @@ -13884,7 +13883,7 @@ ruleTester.run("indent", rule, { ;while (foo) `, options: [4], - errors: expectedErrors([2, 0, 4, "Punctuator"]), + errors: expectedErrors([2, 0, 4]), }, { code: unIndent` @@ -13898,7 +13897,7 @@ ruleTester.run("indent", rule, { ;[1, 2, 3].forEach(x=>console.log(x)) `, options: [4], - errors: expectedErrors([3, 0, 4, "Punctuator"]), + errors: expectedErrors([3, 0, 4]), }, { code: unIndent` @@ -13912,7 +13911,7 @@ ruleTester.run("indent", rule, { ;[1, 2, 3].forEach(x=>console.log(x)) `, options: [4], - errors: expectedErrors([3, 0, 4, "Punctuator"]), + errors: expectedErrors([3, 0, 4]), }, { code: unIndent` @@ -13926,7 +13925,7 @@ ruleTester.run("indent", rule, { ;[1, 2, 3].forEach(x=>console.log(x)) `, options: [4], - errors: expectedErrors([3, 0, 4, "Punctuator"]), + errors: expectedErrors([3, 0, 4]), }, { code: unIndent` @@ -13940,7 +13939,7 @@ ruleTester.run("indent", rule, { ;[1, 2, 3].forEach(x=>console.log(x)) `, options: [4], - errors: expectedErrors([3, 0, 4, "Punctuator"]), + errors: expectedErrors([3, 0, 4]), }, { code: unIndent` @@ -13954,7 +13953,7 @@ ruleTester.run("indent", rule, { ;[1, 2, 3].forEach(x=>console.log(x)) `, options: [4], - errors: expectedErrors([3, 0, 4, "Punctuator"]), + errors: expectedErrors([3, 0, 4]), }, { code: unIndent` @@ -13968,7 +13967,7 @@ ruleTester.run("indent", rule, { ;[1, 2, 3].forEach(x=>console.log(x)) `, options: [4], - errors: expectedErrors([3, 0, 4, "Punctuator"]), + errors: expectedErrors([3, 0, 4]), }, { code: unIndent` @@ -13984,7 +13983,7 @@ ruleTester.run("indent", rule, { ;[1, 2, 3].forEach(x=>console.log(x)) `, options: [4], - errors: expectedErrors([4, 0, 4, "Punctuator"]), + errors: expectedErrors([4, 0, 4]), }, // https://github.com/eslint/eslint/issues/17316 @@ -14007,8 +14006,8 @@ ruleTester.run("indent", rule, { `, options: ["tab"], errors: expectedErrors("tab", [ - [5, 1, 0, "Keyword"], - [6, 1, 0, "Keyword"], + [5, 1, 0], + [6, 1, 0], ]), }, { @@ -14030,8 +14029,8 @@ ruleTester.run("indent", rule, { `, options: ["tab"], errors: expectedErrors("tab", [ - [5, 1, 2, "Keyword"], - [6, 1, 2, "Keyword"], + [5, 1, 2], + [6, 1, 2], ]), }, { @@ -14052,8 +14051,8 @@ ruleTester.run("indent", rule, { else doSomething(); `, errors: expectedErrors([ - [5, 4, 0, "Keyword"], - [6, 4, 0, "Keyword"], + [5, 4, 0], + [6, 4, 0], ]), }, { @@ -14076,9 +14075,9 @@ ruleTester.run("indent", rule, { else doSomething(); `, errors: expectedErrors([ - [5, 4, 0, "Keyword"], - [6, 8, 0, "Identifier"], - [7, 4, 0, "Keyword"], + [5, 4, 0], + [6, 8, 0], + [7, 4, 0], ]), }, { @@ -14101,9 +14100,9 @@ ruleTester.run("indent", rule, { doSomething(); `, errors: expectedErrors([ - [5, 4, 0, "Keyword"], - [6, 4, 0, "Keyword"], - [7, 8, 0, "Identifier"], + [5, 4, 0], + [6, 4, 0], + [7, 8, 0], ]), }, { @@ -14128,10 +14127,10 @@ ruleTester.run("indent", rule, { doSomething(); `, errors: expectedErrors([ - [5, 4, 0, "Keyword"], - [6, 8, 4, "Identifier"], - [7, 4, 0, "Keyword"], - [8, 8, 0, "Identifier"], + [5, 4, 0], + [6, 8, 4], + [7, 4, 0], + [8, 8, 0], ]), }, { @@ -14149,7 +14148,7 @@ ruleTester.run("indent", rule, { else if (bar) doSomething(); else doSomething(); `, - errors: expectedErrors([[5, 0, 4, "Keyword"]]), + errors: expectedErrors([[5, 0, 4]]), }, { code: unIndent` @@ -14169,9 +14168,9 @@ ruleTester.run("indent", rule, { else doSomething(); `, errors: expectedErrors([ - [4, 0, 4, "Keyword"], - [5, 4, 8, "Identifier"], - [6, 0, 4, "Keyword"], + [4, 0, 4], + [5, 4, 8], + [6, 0, 4], ]), }, { @@ -14192,8 +14191,8 @@ ruleTester.run("indent", rule, { doSomething(); `, errors: expectedErrors([ - [5, 0, 5, "Keyword"], - [6, 4, 9, "Identifier"], + [5, 0, 5], + [6, 4, 9], ]), }, { @@ -14216,8 +14215,8 @@ ruleTester.run("indent", rule, { doSomething(); `, errors: expectedErrors([ - [5, 4, 0, "Identifier"], - [7, 4, 0, "Identifier"], + [5, 4, 0], + [7, 4, 0], ]), }, { @@ -14248,12 +14247,12 @@ ruleTester.run("indent", rule, { `, errors: expectedErrors([ - [5, 4, 0, "Keyword"], - [6, 8, 4, "Keyword"], - [7, 8, 4, "Keyword"], - [8, 4, 0, "Keyword"], - [9, 8, 4, "Keyword"], - [10, 8, 4, "Keyword"], + [5, 4, 0], + [6, 8, 4], + [7, 8, 4], + [8, 4, 0], + [9, 8, 4], + [10, 8, 4], ]), }, { @@ -14282,12 +14281,12 @@ ruleTester.run("indent", rule, { else doSomething(); `, errors: expectedErrors([ - [5, 4, 0, "Keyword"], - [6, 8, 0, "Keyword"], - [7, 8, 0, "Keyword"], - [8, 12, 0, "Keyword"], - [9, 12, 0, "Keyword"], - [10, 4, 0, "Keyword"], + [5, 4, 0], + [6, 8, 0], + [7, 8, 0], + [8, 12, 0], + [9, 12, 0], + [10, 4, 0], ]), }, { @@ -14306,9 +14305,9 @@ ruleTester.run("indent", rule, { else doSomething(); `, errors: expectedErrors([ - [2, 4, 0, "Keyword"], - [3, 4, 0, "Keyword"], - [5, 0, 4, "Keyword"], + [2, 4, 0], + [3, 4, 0], + [5, 0, 4], ]), }, { @@ -14328,7 +14327,7 @@ ruleTester.run("indent", rule, { doSomething(); } `, - errors: expectedErrors([[5, 4, 0, "Identifier"]]), + errors: expectedErrors([[5, 4, 0]]), }, { code: unIndent` @@ -14350,9 +14349,9 @@ ruleTester.run("indent", rule, { } `, errors: expectedErrors([ - [5, 0, 4, "Punctuator"], - [6, 4, 8, "Identifier"], - [7, 0, 4, "Punctuator"], + [5, 0, 4], + [6, 4, 8], + [7, 0, 4], ]), }, { @@ -14375,9 +14374,9 @@ ruleTester.run("indent", rule, { } `, errors: expectedErrors([ - [5, 4, 0, "Keyword"], - [6, 8, 4, "Identifier"], - [7, 4, 0, "Punctuator"], + [5, 4, 0], + [6, 8, 4], + [7, 4, 0], ]), }, { @@ -14402,10 +14401,10 @@ ruleTester.run("indent", rule, { } `, errors: expectedErrors([ - [5, 4, 0, "Keyword"], - [6, 4, 0, "Punctuator"], - [7, 8, 4, "Identifier"], - [8, 4, 0, "Punctuator"], + [5, 4, 0], + [6, 4, 0], + [7, 8, 4], + [8, 4, 0], ]), }, ], diff --git a/tests/lib/rules/init-declarations.js b/tests/lib/rules/init-declarations.js index 089892836dcb..d3361769a461 100644 --- a/tests/lib/rules/init-declarations.js +++ b/tests/lib/rules/init-declarations.js @@ -136,7 +136,6 @@ ruleTester.run("init-declarations", rule, { { messageId: "initialized", data: { idName: "foo" }, - type: "VariableDeclarator", }, ], }, @@ -147,7 +146,6 @@ ruleTester.run("init-declarations", rule, { { messageId: "initialized", data: { idName: "foo" }, - type: "VariableDeclarator", }, ], }, @@ -159,12 +157,10 @@ ruleTester.run("init-declarations", rule, { { messageId: "initialized", data: { idName: "foo" }, - type: "VariableDeclarator", }, { messageId: "initialized", data: { idName: "baz" }, - type: "VariableDeclarator", }, ], }, @@ -176,7 +172,6 @@ ruleTester.run("init-declarations", rule, { { messageId: "initialized", data: { idName: "bar" }, - type: "VariableDeclarator", }, ], }, @@ -188,7 +183,6 @@ ruleTester.run("init-declarations", rule, { { messageId: "initialized", data: { idName: "foo" }, - type: "VariableDeclarator", }, ], }, @@ -200,7 +194,6 @@ ruleTester.run("init-declarations", rule, { { messageId: "initialized", data: { idName: "a" }, - type: "VariableDeclarator", }, ], }, @@ -212,7 +205,6 @@ ruleTester.run("init-declarations", rule, { { messageId: "initialized", data: { idName: "b" }, - type: "VariableDeclarator", }, ], }, @@ -224,12 +216,10 @@ ruleTester.run("init-declarations", rule, { { messageId: "initialized", data: { idName: "a" }, - type: "VariableDeclarator", }, { messageId: "initialized", data: { idName: "c" }, - type: "VariableDeclarator", }, ], }, @@ -241,7 +231,6 @@ ruleTester.run("init-declarations", rule, { { messageId: "notInitialized", data: { idName: "foo" }, - type: "VariableDeclarator", }, ], }, @@ -253,7 +242,6 @@ ruleTester.run("init-declarations", rule, { { messageId: "notInitialized", data: { idName: "foo" }, - type: "VariableDeclarator", }, ], }, @@ -265,12 +253,10 @@ ruleTester.run("init-declarations", rule, { { messageId: "notInitialized", data: { idName: "bar" }, - type: "VariableDeclarator", }, { messageId: "notInitialized", data: { idName: "baz" }, - type: "VariableDeclarator", }, ], }, @@ -282,8 +268,6 @@ ruleTester.run("init-declarations", rule, { { messageId: "notInitialized", data: { idName: "bar" }, - - type: "VariableDeclarator", }, ], }, @@ -295,7 +279,6 @@ ruleTester.run("init-declarations", rule, { { messageId: "notInitialized", data: { idName: "a" }, - type: "VariableDeclarator", }, ], }, @@ -307,7 +290,6 @@ ruleTester.run("init-declarations", rule, { { messageId: "notInitialized", data: { idName: "a" }, - type: "VariableDeclarator", }, ], }, @@ -319,7 +301,6 @@ ruleTester.run("init-declarations", rule, { { messageId: "notInitialized", data: { idName: "c" }, - type: "VariableDeclarator", }, ], }, @@ -330,7 +311,6 @@ ruleTester.run("init-declarations", rule, { { messageId: "notInitialized", data: { idName: "i" }, - type: "VariableDeclarator", }, ], }, @@ -341,7 +321,6 @@ ruleTester.run("init-declarations", rule, { { messageId: "notInitialized", data: { idName: "foo" }, - type: "VariableDeclarator", }, ], }, @@ -353,7 +332,6 @@ ruleTester.run("init-declarations", rule, { { messageId: "notInitialized", data: { idName: "foo" }, - type: "VariableDeclarator", }, ], }, diff --git a/tests/lib/rules/jsx-quotes.js b/tests/lib/rules/jsx-quotes.js index 86a9aee0274d..86a58b959000 100644 --- a/tests/lib/rules/jsx-quotes.js +++ b/tests/lib/rules/jsx-quotes.js @@ -70,7 +70,6 @@ ruleTester.run("jsx-quotes", rule, { data: { description: "singlequote" }, line: 1, column: 10, - type: "Literal", }, ], }, @@ -84,7 +83,6 @@ ruleTester.run("jsx-quotes", rule, { data: { description: "doublequote" }, line: 1, column: 10, - type: "Literal", }, ], }, @@ -98,7 +96,6 @@ ruleTester.run("jsx-quotes", rule, { data: { description: "doublequote" }, line: 1, column: 10, - type: "Literal", }, ], }, @@ -111,7 +108,6 @@ ruleTester.run("jsx-quotes", rule, { data: { description: "singlequote" }, line: 1, column: 10, - type: "Literal", }, ], }, diff --git a/tests/lib/rules/key-spacing.js b/tests/lib/rules/key-spacing.js index 2958267502bb..45e9a949b523 100644 --- a/tests/lib/rules/key-spacing.js +++ b/tests/lib/rules/key-spacing.js @@ -1247,7 +1247,6 @@ ruleTester.run("key-spacing", rule, { ], errors: [ { - type: "Literal", messageId: "extraKey", data: { computed: "", key: "key" }, line: 1, @@ -1256,7 +1255,6 @@ ruleTester.run("key-spacing", rule, { endColumn: 15, }, { - type: "Identifier", messageId: "extraValue", data: { computed: "", key: "key" }, line: 1, @@ -1277,7 +1275,6 @@ ruleTester.run("key-spacing", rule, { ], errors: [ { - type: "Literal", messageId: "extraKey", data: { computed: "", key: "key" }, line: 1, @@ -1286,7 +1283,6 @@ ruleTester.run("key-spacing", rule, { endColumn: 15, }, { - type: "Identifier", messageId: "missingValue", data: { computed: "", key: "key" }, line: 1, @@ -1307,7 +1303,6 @@ ruleTester.run("key-spacing", rule, { ], errors: [ { - type: "Literal", messageId: "extraKey", data: { computed: "", key: "key" }, line: 1, @@ -1316,7 +1311,6 @@ ruleTester.run("key-spacing", rule, { endColumn: 2, }, { - type: "Identifier", messageId: "extraValue", data: { computed: "", key: "key" }, line: 2, @@ -1339,7 +1333,6 @@ ruleTester.run("key-spacing", rule, { { messageId: "extraValue", data: { computed: "", key: "key" }, - type: "Identifier", line: 1, column: 47, endLine: 1, @@ -1356,7 +1349,6 @@ ruleTester.run("key-spacing", rule, { { messageId: "missingValue", data: { computed: "computed ", key: "a + b" }, - type: "Identifier", line: 1, column: 25, }, @@ -1375,7 +1367,6 @@ ruleTester.run("key-spacing", rule, { { messageId: "extraKey", data: { computed: "", key: "key" }, - type: "Literal", line: 1, column: 20, endLine: 1, @@ -1396,7 +1387,6 @@ ruleTester.run("key-spacing", rule, { { messageId: "missingValue", data: { computed: "", key: "prop" }, - type: "Literal", line: 1, column: 18, }, @@ -1415,7 +1405,6 @@ ruleTester.run("key-spacing", rule, { { messageId: "missingKey", data: { computed: "", key: "b" }, - type: "Identifier", line: 1, column: 14, }, @@ -1434,7 +1423,6 @@ ruleTester.run("key-spacing", rule, { { messageId: "extraKey", data: { computed: "", key: "a" }, - type: "Literal", line: 1, column: 6, endLine: 1, @@ -1443,7 +1431,6 @@ ruleTester.run("key-spacing", rule, { { messageId: "missingValue", data: { computed: "", key: "a" }, - type: "CallExpression", line: 1, column: 9, endLine: 1, @@ -1452,7 +1439,6 @@ ruleTester.run("key-spacing", rule, { { messageId: "missingKey", data: { computed: "", key: "b" }, - type: "Identifier", line: 1, column: 16, endLine: 1, @@ -1461,7 +1447,6 @@ ruleTester.run("key-spacing", rule, { { messageId: "extraValue", data: { computed: "", key: "b" }, - type: "CallExpression", line: 1, column: 17, endLine: 1, @@ -1482,7 +1467,6 @@ ruleTester.run("key-spacing", rule, { { messageId: "missingValue", data: { computed: "", key: "key" }, - type: "Identifier", line: 1, column: 13, }, @@ -1512,21 +1496,18 @@ ruleTester.run("key-spacing", rule, { { messageId: "missingKey", data: { computed: "", key: "key" }, - type: "Identifier", line: 2, column: 5, }, { messageId: "extraValue", data: { computed: "", key: "key" }, - type: "Identifier", line: 2, column: 8, }, { messageId: "missingValue", data: { computed: "", key: "foobar" }, - type: "CallExpression", line: 3, column: 12, }, @@ -1560,21 +1541,18 @@ ruleTester.run("key-spacing", rule, { { messageId: "extraValue", data: { computed: "", key: "a" }, - type: "Identifier", line: 2, column: 9, }, { messageId: "missingKey", data: { computed: "", key: "foo" }, - type: "Identifier", line: 3, column: 5, }, { messageId: "extraKey", data: { computed: "", key: "b" }, - type: "Identifier", line: 4, column: 6, }, @@ -1609,28 +1587,24 @@ ruleTester.run("key-spacing", rule, { { messageId: "extraValue", data: { computed: "", key: "a" }, - type: "CallExpression", line: 2, column: 6, }, { messageId: "extraKey", data: { computed: "", key: "b" }, - type: "Literal", line: 3, column: 8, }, { messageId: "missingValue", data: { computed: "", key: "foo" }, - type: "Identifier", line: 4, column: 9, }, { messageId: "extraKey", data: { computed: "computed ", key: "a" }, - type: "Identifier", line: 6, column: 8, }, @@ -1664,14 +1638,12 @@ ruleTester.run("key-spacing", rule, { { messageId: "missingKey", data: { computed: "", key: "a" }, - type: "Identifier", line: 2, column: 5, }, { messageId: "extraValue", data: { computed: "", key: "bar" }, - type: "CallExpression", line: 5, column: 9, }, @@ -1705,21 +1677,18 @@ ruleTester.run("key-spacing", rule, { { messageId: "missingKey", data: { computed: "", key: "a" }, - type: "Identifier", line: 2, column: 5, }, { messageId: "missingKey", data: { computed: "", key: "e" }, - type: "Identifier", line: 5, column: 5, }, { messageId: "missingValue", data: { computed: "", key: "fg" }, - type: "Literal", line: 6, column: 8, }, @@ -1750,14 +1719,12 @@ ruleTester.run("key-spacing", rule, { { messageId: "extraValue", data: { computed: "", key: "key" }, - type: "Identifier", line: 2, column: 8, }, { messageId: "extraKey", data: { computed: "", key: "key2" }, - type: "Identifier", line: 4, column: 9, }, @@ -1793,12 +1760,10 @@ ruleTester.run("key-spacing", rule, { { messageId: "missingValue", data: { computed: "", key: "key1" }, - type: "Literal", }, { messageId: "missingValue", data: { computed: "", key: "key12" }, - type: "Literal", }, ], }, @@ -1811,7 +1776,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "key" }, line: 1, column: 13, - type: "BinaryExpression", }, ], }, @@ -1824,7 +1788,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "key" }, line: 1, column: 13, - type: "BinaryExpression", }, ], }, @@ -1838,7 +1801,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "a" }, line: 1, column: 13, - type: "Identifier", }, ], }, @@ -1854,7 +1816,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "b" }, line: 3, column: 6, - type: "Identifier", }, ], }, @@ -1878,7 +1839,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "b" }, line: 3, column: 11, - type: "Identifier", }, ], }, @@ -1897,7 +1857,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "key" }, line: 2, column: 2, - type: "Identifier", }, ], }, @@ -1924,7 +1883,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "baz" }, line: 4, column: 10, - type: "Literal", }, ], }, @@ -1951,7 +1909,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "foobar" }, line: 2, column: 11, - type: "Literal", }, ], }, @@ -1978,7 +1935,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "baz" }, line: 4, column: 10, - type: "Literal", }, ], }, @@ -2005,7 +1961,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "foobar" }, line: 2, column: 11, - type: "Literal", }, ], }, @@ -2040,7 +1995,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "baz" }, line: 6, column: 8, - type: "Literal", }, ], }, @@ -2061,7 +2015,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "foo" }, line: 2, column: 5, - type: "Identifier", }, ], }, @@ -2085,7 +2038,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "cats" }, line: 3, column: 9, - type: "Identifier", }, ], }, @@ -2105,7 +2057,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "foo" }, line: 1, column: 13, - type: "Identifier", }, ], }, @@ -2127,7 +2078,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "foo" }, line: 1, column: 16, - type: "Identifier", }, ], }, @@ -2147,7 +2097,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "foo" }, line: 1, column: 18, - type: "Identifier", }, ], }, @@ -2169,7 +2118,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "foo" }, line: 1, column: 17, - type: "Identifier", }, ], }, @@ -2191,7 +2139,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "cats" }, line: 2, column: 17, - type: "Identifier", }, ], }, @@ -2236,14 +2183,12 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "a" }, line: 3, column: 5, - type: "Identifier", }, { messageId: "extraKey", data: { computed: "", key: "f" }, line: 12, column: 6, - type: "Identifier", }, ], }, @@ -2273,7 +2218,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "a" }, line: 2, column: 6, - type: "Identifier", }, ], }, @@ -2293,7 +2237,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "c" }, line: 3, column: 6, - type: "Identifier", }, ], }, @@ -2325,7 +2268,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "a" }, line: 2, column: 5, - type: "Identifier", }, ], }, @@ -2368,7 +2310,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "a1" }, line: 6, column: 15, - type: "Literal", }, ], }, @@ -2410,7 +2351,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "a2" }, line: 6, column: 11, - type: "Identifier", }, ], }, @@ -2443,7 +2383,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "ex" }, line: 4, column: 7, - type: "Identifier", }, ], }, @@ -2476,7 +2415,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "ex" }, line: 4, column: 6, - type: "Identifier", }, ], }, @@ -2511,14 +2449,12 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "aInv" }, line: 2, column: 5, - type: "Identifier", }, { messageId: "missingValue", data: { computed: "", key: "aInv" }, line: 2, column: 11, - type: "Literal", }, ], }, @@ -2535,14 +2471,12 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "a" }, line: 1, column: 6, - type: "Identifier", }, { messageId: "extraKey", data: { computed: "", key: "c" }, line: 1, column: 21, - type: "Identifier", }, ], }, @@ -2580,28 +2514,24 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "longName" }, line: 2, column: 5, - type: "Identifier", }, { messageId: "missingValue", data: { computed: "", key: "longName" }, line: 2, column: 14, - type: "Literal", }, { messageId: "missingValue", data: { computed: "", key: "small" }, line: 3, column: 15, - type: "Literal", }, { messageId: "missingKey", data: { computed: "", key: "xs" }, line: 4, column: 5, - type: "Identifier", }, ], }, @@ -2655,35 +2585,30 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "func" }, line: 2, column: 10, - type: "FunctionExpression", }, { messageId: "missingKey", data: { computed: "", key: "longName" }, line: 5, column: 5, - type: "Identifier", }, { messageId: "missingKey", data: { computed: "", key: "small" }, line: 6, column: 5, - type: "Identifier", }, { messageId: "extraKey", data: { computed: "", key: "xs" }, line: 7, column: 7, - type: "Identifier", }, { messageId: "extraKey", data: { computed: "", key: "singleLine" }, line: 11, column: 15, - type: "Identifier", }, ], }, @@ -2737,42 +2662,36 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "func" }, line: 2, column: 10, - type: "FunctionExpression", }, { messageId: "missingKey", data: { computed: "", key: "small" }, line: 6, column: 5, - type: "Identifier", }, { messageId: "extraKey", data: { computed: "", key: "xs" }, line: 7, column: 7, - type: "Identifier", }, { messageId: "extraValue", data: { computed: "", key: "xs" }, line: 7, column: 19, - type: "Literal", }, { messageId: "extraValue", data: { computed: "", key: "func2" }, line: 8, column: 14, - type: "FunctionExpression", }, { messageId: "extraKey", data: { computed: "", key: "singleLine" }, line: 11, column: 15, - type: "Identifier", }, ], }, @@ -2818,14 +2737,12 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "key2" }, line: 4, column: 9, - type: "Literal", }, { messageId: "extraValue", data: { computed: "", key: "key3" }, line: 5, column: 9, - type: "Literal", }, ], }, @@ -2871,14 +2788,12 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "key2" }, line: 4, column: 9, - type: "Literal", }, { messageId: "extraValue", data: { computed: "", key: "key3" }, line: 5, column: 9, - type: "Literal", }, ], }, @@ -2892,7 +2807,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "foo" }, line: 1, column: 20, - type: "Identifier", }, ], }, @@ -2906,7 +2820,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "foo" }, line: 1, column: 7, - type: "Identifier", }, ], }, @@ -2920,14 +2833,12 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "foo" }, line: 1, column: 7, - type: "Identifier", }, { messageId: "missingValue", data: { computed: "", key: "foo" }, line: 1, column: 19, - type: "Identifier", }, ], }, @@ -2957,42 +2868,36 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "foo" }, line: 2, column: 5, - type: "Identifier", }, { messageId: "missingValue", data: { computed: "", key: "foo" }, line: 2, column: 9, - type: "Literal", }, { messageId: "missingKey", data: { computed: "", key: "bar" }, line: 2, column: 12, - type: "Literal", }, { messageId: "missingValue", data: { computed: "", key: "bar" }, line: 2, column: 18, - type: "Literal", }, { messageId: "missingKey", data: { computed: "", key: "baz" }, line: 2, column: 21, - type: "Identifier", }, { messageId: "missingValue", data: { computed: "", key: "baz" }, line: 2, column: 25, - type: "Literal", }, ], }, @@ -3020,28 +2925,24 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "foo" }, line: 2, column: 8, - type: "Identifier", }, { messageId: "extraKey", data: { computed: "", key: "bar" }, line: 2, column: 19, - type: "Literal", }, { messageId: "extraKey", data: { computed: "", key: "baz" }, line: 2, column: 28, - type: "Identifier", }, { messageId: "extraKey", data: { computed: "", key: "longlonglong" }, line: 2, column: 46, - type: "Identifier", }, ], }, @@ -3065,7 +2966,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "foo" }, line: 2, column: 9, - type: "Literal", }, ], }, @@ -3089,7 +2989,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "bar" }, line: 2, column: 9, - type: "Literal", }, ], }, @@ -3113,28 +3012,24 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "foo" }, line: 1, column: 16, - type: "Literal", }, { messageId: "extraValue", data: { computed: "", key: "bar" }, line: 1, column: 26, - type: "Literal", }, { messageId: "extraKey", data: { computed: "", key: "baz" }, line: 1, column: 34, - type: "Identifier", }, { messageId: "extraKey", data: { computed: "", key: "longlonglong" }, line: 1, column: 51, - type: "Identifier", }, ], }, @@ -3168,21 +3063,18 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "foo" }, line: 2, column: 5, - type: "Identifier", }, { messageId: "missingKey", data: { computed: "", key: "bar" }, line: 3, column: 5, - type: "Literal", }, { messageId: "missingKey", data: { computed: "", key: "baz" }, line: 3, column: 15, - type: "Identifier", }, ], }, @@ -3218,21 +3110,18 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "foo" }, line: 2, column: 5, - type: "Identifier", }, { messageId: "missingKey", data: { computed: "", key: "bar" }, line: 3, column: 5, - type: "Literal", }, { messageId: "missingKey", data: { computed: "", key: "baz" }, line: 3, column: 16, - type: "Identifier", }, ], }, @@ -3268,21 +3157,18 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "foo" }, line: 2, column: 10, - type: "Literal", }, { messageId: "missingValue", data: { computed: "", key: "bar" }, line: 3, column: 12, - type: "Literal", }, { messageId: "missingValue", data: { computed: "", key: "baz" }, line: 3, column: 20, - type: "Literal", }, ], }, @@ -3313,7 +3199,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "a" }, line: 3, column: 22, - type: "Literal", }, ], }, @@ -3344,7 +3229,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "a" }, line: 3, column: 17, - type: "Literal", }, ], }, @@ -3375,7 +3259,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "a" }, line: 3, column: 20, - type: "Literal", }, ], }, @@ -3409,21 +3292,18 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "🌷" }, line: 3, column: 21, - type: "Literal", }, { messageId: "extraValue", data: { computed: "", key: "🎁" }, line: 4, column: 21, - type: "Literal", }, { messageId: "extraValue", data: { computed: "", key: "🇮🇳" }, line: 5, column: 23, - type: "Literal", }, ], }, @@ -3462,21 +3342,18 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "id" }, line: 4, column: 19, - type: "Literal", }, { messageId: "extraValue", data: { computed: "", key: "code" }, line: 5, column: 21, - type: "Literal", }, { messageId: "extraValue", data: { computed: "computed ", key: "n" }, line: 6, column: 20, - type: "Literal", }, ], }, @@ -3511,14 +3388,12 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "id" }, line: 4, column: 19, - type: "Identifier", }, { messageId: "extraKey", data: { computed: "", key: "code" }, line: 5, column: 21, - type: "Identifier", }, ], }, @@ -3550,7 +3425,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "a" }, line: 3, column: 18, - type: "Literal", }, ], }, @@ -3590,14 +3464,12 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "singleLine" }, line: 2, column: 15, - type: "Identifier", }, { messageId: "extraKey", data: { computed: "", key: "newGroup" }, line: 3, column: 13, - type: "Identifier", }, ], }, @@ -3627,7 +3499,6 @@ ruleTester.run("key-spacing", rule, { data: { computed: "", key: "item" }, line: 3, column: 13, - type: "Identifier", }, ], }, diff --git a/tests/lib/rules/line-comment-position.js b/tests/lib/rules/line-comment-position.js index 2721b7b5a9c8..805c7dfd0864 100644 --- a/tests/lib/rules/line-comment-position.js +++ b/tests/lib/rules/line-comment-position.js @@ -92,7 +92,6 @@ ruleTester.run("line-comment-position", rule, { errors: [ { messageId: "above", - type: "Line", line: 1, column: 8, }, @@ -103,7 +102,6 @@ ruleTester.run("line-comment-position", rule, { errors: [ { messageId: "above", - type: "Line", line: 1, column: 8, }, @@ -117,7 +115,6 @@ ruleTester.run("line-comment-position", rule, { errors: [ { messageId: "beside", - type: "Line", line: 1, column: 1, }, @@ -130,7 +127,6 @@ ruleTester.run("line-comment-position", rule, { errors: [ { messageId: "beside", - type: "Line", line: 1, column: 1, }, @@ -149,7 +145,6 @@ ruleTester.run("line-comment-position", rule, { errors: [ { messageId: "beside", - type: "Line", line: 1, column: 1, }, @@ -160,7 +155,6 @@ ruleTester.run("line-comment-position", rule, { errors: [ { messageId: "above", - type: "Line", line: 1, column: 8, }, @@ -172,7 +166,6 @@ ruleTester.run("line-comment-position", rule, { errors: [ { messageId: "beside", - type: "Line", line: 1, column: 1, }, @@ -184,7 +177,6 @@ ruleTester.run("line-comment-position", rule, { errors: [ { messageId: "beside", - type: "Line", line: 2, column: 1, }, @@ -196,7 +188,6 @@ ruleTester.run("line-comment-position", rule, { errors: [ { messageId: "above", - type: "Line", line: 2, column: 8, }, diff --git a/tests/lib/rules/lines-around-comment.js b/tests/lib/rules/lines-around-comment.js index ef9797422363..94295f134ae1 100644 --- a/tests/lib/rules/lines-around-comment.js +++ b/tests/lib/rules/lines-around-comment.js @@ -1237,7 +1237,11 @@ ruleTester.run("lines-around-comment", rule, { { code: "bar()\n/** block block block\n * block \n */\nvar a = 1;", output: "bar()\n\n/** block block block\n * block \n */\nvar a = 1;", - errors: [{ messageId: "before", type: "Block" }], + errors: [ + { + messageId: "before", + }, + ], }, // line comments @@ -1245,27 +1249,47 @@ ruleTester.run("lines-around-comment", rule, { code: "baz()\n// A line comment with no empty line after\nvar a = 1;", output: "baz()\n// A line comment with no empty line after\n\nvar a = 1;", options: [{ afterLineComment: true }], - errors: [{ messageId: "after", type: "Line" }], + errors: [ + { + messageId: "after", + }, + ], }, { code: "baz()\n// A line comment with no empty line after\nvar a = 1;", output: "baz()\n\n// A line comment with no empty line after\nvar a = 1;", options: [{ beforeLineComment: true, afterLineComment: false }], - errors: [{ messageId: "before", type: "Line" }], + errors: [ + { + messageId: "before", + }, + ], }, { code: "// A line comment with no empty line after\nvar a = 1;", output: "// A line comment with no empty line after\n\nvar a = 1;", options: [{ beforeLineComment: true, afterLineComment: true }], - errors: [{ messageId: "after", type: "Line", line: 1, column: 1 }], + errors: [ + { + messageId: "after", + line: 1, + column: 1, + }, + ], }, { code: "baz()\n// A line comment with no empty line after\nvar a = 1;", output: "baz()\n\n// A line comment with no empty line after\n\nvar a = 1;", options: [{ beforeLineComment: true, afterLineComment: true }], errors: [ - { messageId: "before", type: "Line", line: 2 }, - { messageId: "after", type: "Line", line: 2 }, + { + messageId: "before", + line: 2, + }, + { + messageId: "after", + line: 2, + }, ], }, @@ -1275,8 +1299,14 @@ ruleTester.run("lines-around-comment", rule, { output: "bar()\n\n/**\n * block block block\n */\n\nvar a = 1;", options: [{ afterBlockComment: true, beforeBlockComment: true }], errors: [ - { messageId: "before", type: "Block", line: 2 }, - { messageId: "after", type: "Block", line: 2 }, + { + messageId: "before", + line: 2, + }, + { + messageId: "after", + line: 2, + }, ], }, { @@ -1284,8 +1314,14 @@ ruleTester.run("lines-around-comment", rule, { output: "bar()\n\n/* first block comment */ /* second block comment */\n\nvar a = 1;", options: [{ afterBlockComment: true, beforeBlockComment: true }], errors: [ - { messageId: "before", type: "Block", line: 2 }, - { messageId: "after", type: "Block", line: 2 }, + { + messageId: "before", + line: 2, + }, + { + messageId: "after", + line: 2, + }, ], }, { @@ -1293,21 +1329,37 @@ ruleTester.run("lines-around-comment", rule, { output: "bar()\n\n/* first block comment */ /* second block\n comment */\n\nvar a = 1;", options: [{ afterBlockComment: true, beforeBlockComment: true }], errors: [ - { messageId: "before", type: "Block", line: 2 }, - { messageId: "after", type: "Block", line: 2 }, + { + messageId: "before", + line: 2, + }, + { + messageId: "after", + line: 2, + }, ], }, { code: "bar()\n/**\n * block block block\n */\nvar a = 1;", output: "bar()\n/**\n * block block block\n */\n\nvar a = 1;", options: [{ afterBlockComment: true, beforeBlockComment: false }], - errors: [{ messageId: "after", type: "Block", line: 2 }], + errors: [ + { + messageId: "after", + line: 2, + }, + ], }, { code: "bar()\n/**\n * block block block\n */\nvar a = 1;", output: "bar()\n\n/**\n * block block block\n */\nvar a = 1;", options: [{ afterBlockComment: false, beforeBlockComment: true }], - errors: [{ messageId: "before", type: "Block", line: 2 }], + errors: [ + { + messageId: "before", + line: 2, + }, + ], }, { code: "var a,\n// line\nb;", @@ -1318,7 +1370,12 @@ ruleTester.run("lines-around-comment", rule, { allowBlockStart: true, }, ], - errors: [{ messageId: "before", type: "Line", line: 2 }], + errors: [ + { + messageId: "before", + line: 2, + }, + ], }, { code: "function foo(){\nvar a = 1;\n// line at block start\nvar g = 1;\n}", @@ -1329,7 +1386,12 @@ ruleTester.run("lines-around-comment", rule, { allowBlockStart: true, }, ], - errors: [{ messageId: "before", type: "Line", line: 3 }], + errors: [ + { + messageId: "before", + line: 3, + }, + ], }, { code: "var a,\n// line\nb;", @@ -1340,7 +1402,12 @@ ruleTester.run("lines-around-comment", rule, { allowBlockEnd: true, }, ], - errors: [{ messageId: "after", type: "Line", line: 2 }], + errors: [ + { + messageId: "after", + line: 2, + }, + ], }, { code: "function foo(){\nvar a = 1;\n\n// line at block start\nvar g = 1;\n}", @@ -1351,7 +1418,12 @@ ruleTester.run("lines-around-comment", rule, { allowBlockEnd: true, }, ], - errors: [{ messageId: "after", type: "Line", line: 4 }], + errors: [ + { + messageId: "after", + line: 4, + }, + ], }, { code: "switch ('foo'){\ncase 'foo':\n// line at switch case start\nbreak;\n}", @@ -1361,7 +1433,12 @@ ruleTester.run("lines-around-comment", rule, { beforeLineComment: true, }, ], - errors: [{ messageId: "before", type: "Line", line: 3 }], + errors: [ + { + messageId: "before", + line: 3, + }, + ], }, { code: "switch ('foo'){\ncase 'foo':\nbreak;\n\ndefault:\n// line at switch case start\nbreak;\n}", @@ -1371,7 +1448,12 @@ ruleTester.run("lines-around-comment", rule, { beforeLineComment: true, }, ], - errors: [{ messageId: "before", type: "Line", line: 6 }], + errors: [ + { + messageId: "before", + line: 6, + }, + ], }, { code: "while(true){\n// line at block start and end\n}", @@ -1382,7 +1464,12 @@ ruleTester.run("lines-around-comment", rule, { allowBlockStart: true, }, ], - errors: [{ messageId: "after", type: "Line", line: 2 }], + errors: [ + { + messageId: "after", + line: 2, + }, + ], }, { code: "while(true){\n// line at block start and end\n}", @@ -1393,7 +1480,12 @@ ruleTester.run("lines-around-comment", rule, { allowBlockEnd: true, }, ], - errors: [{ messageId: "before", type: "Line", line: 2 }], + errors: [ + { + messageId: "before", + line: 2, + }, + ], }, { code: "class A {\n// line at class start\nconstructor() {}\n}", @@ -1404,7 +1496,12 @@ ruleTester.run("lines-around-comment", rule, { }, ], languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "before", type: "Line", line: 2 }], + errors: [ + { + messageId: "before", + line: 2, + }, + ], }, { code: "class A {\n// line at class start\nconstructor() {}\n}", @@ -1417,7 +1514,12 @@ ruleTester.run("lines-around-comment", rule, { }, ], languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "before", type: "Line", line: 2 }], + errors: [ + { + messageId: "before", + line: 2, + }, + ], }, { code: "class B {\nconstructor() {}\n\n// line at class end\n}", @@ -1428,7 +1530,12 @@ ruleTester.run("lines-around-comment", rule, { }, ], languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "after", type: "Line", line: 4 }], + errors: [ + { + messageId: "after", + line: 4, + }, + ], }, { code: "class B {\nconstructor() {}\n\n// line at class end\n}", @@ -1441,7 +1548,12 @@ ruleTester.run("lines-around-comment", rule, { }, ], languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "after", type: "Line", line: 4 }], + errors: [ + { + messageId: "after", + line: 4, + }, + ], }, { code: "switch ('foo'){\ncase 'foo':\nvar g = 1;\n\n// line at switch case end\n}", @@ -1451,7 +1563,12 @@ ruleTester.run("lines-around-comment", rule, { afterLineComment: true, }, ], - errors: [{ messageId: "after", type: "Line", line: 5 }], + errors: [ + { + messageId: "after", + line: 5, + }, + ], }, { code: "switch ('foo'){\ncase 'foo':\nbreak;\n\ndefault:\nvar g = 1;\n\n// line at switch case end\n}", @@ -1461,7 +1578,12 @@ ruleTester.run("lines-around-comment", rule, { afterLineComment: true, }, ], - errors: [{ messageId: "after", type: "Line", line: 8 }], + errors: [ + { + messageId: "after", + line: 8, + }, + ], }, { code: unIndent` @@ -1486,7 +1608,12 @@ ruleTester.run("lines-around-comment", rule, { }, ], languageOptions: { ecmaVersion: 2022 }, - errors: [{ messageId: "after", type: "Line", line: 2 }], + errors: [ + { + messageId: "after", + line: 2, + }, + ], }, { code: unIndent` @@ -1513,7 +1640,12 @@ ruleTester.run("lines-around-comment", rule, { }, ], languageOptions: { ecmaVersion: 2022 }, - errors: [{ messageId: "after", type: "Block", line: 2 }], + errors: [ + { + messageId: "after", + line: 2, + }, + ], }, { code: unIndent` @@ -1542,8 +1674,14 @@ ruleTester.run("lines-around-comment", rule, { ], languageOptions: { ecmaVersion: 2022 }, errors: [ - { messageId: "before", type: "Line", line: 3 }, - { messageId: "after", type: "Line", line: 3 }, + { + messageId: "before", + line: 3, + }, + { + messageId: "after", + line: 3, + }, ], }, { @@ -1575,8 +1713,14 @@ ruleTester.run("lines-around-comment", rule, { ], languageOptions: { ecmaVersion: 2022 }, errors: [ - { messageId: "before", type: "Block", line: 3 }, - { messageId: "after", type: "Block", line: 3 }, + { + messageId: "before", + line: 3, + }, + { + messageId: "after", + line: 3, + }, ], }, { @@ -1604,7 +1748,12 @@ ruleTester.run("lines-around-comment", rule, { }, ], languageOptions: { ecmaVersion: 2022 }, - errors: [{ messageId: "after", type: "Line", line: 3 }], + errors: [ + { + messageId: "after", + line: 3, + }, + ], }, { code: unIndent` @@ -1633,7 +1782,12 @@ ruleTester.run("lines-around-comment", rule, { }, ], languageOptions: { ecmaVersion: 2022 }, - errors: [{ messageId: "after", type: "Block", line: 3 }], + errors: [ + { + messageId: "after", + line: 3, + }, + ], }, { code: unIndent` @@ -1660,7 +1814,12 @@ ruleTester.run("lines-around-comment", rule, { }, ], languageOptions: { ecmaVersion: 2022 }, - errors: [{ messageId: "before", type: "Line", line: 4 }], + errors: [ + { + messageId: "before", + line: 4, + }, + ], }, { code: unIndent` @@ -1689,7 +1848,12 @@ ruleTester.run("lines-around-comment", rule, { }, ], languageOptions: { ecmaVersion: 2022 }, - errors: [{ messageId: "before", type: "Block", line: 4 }], + errors: [ + { + messageId: "before", + line: 4, + }, + ], }, { code: unIndent` @@ -1720,8 +1884,14 @@ ruleTester.run("lines-around-comment", rule, { ], languageOptions: { ecmaVersion: 2022 }, errors: [ - { messageId: "before", type: "Line", line: 4 }, - { messageId: "after", type: "Line", line: 4 }, + { + messageId: "before", + line: 4, + }, + { + messageId: "after", + line: 4, + }, ], }, { @@ -1755,8 +1925,14 @@ ruleTester.run("lines-around-comment", rule, { ], languageOptions: { ecmaVersion: 2022 }, errors: [ - { messageId: "before", type: "Block", line: 4 }, - { messageId: "after", type: "Block", line: 4 }, + { + messageId: "before", + line: 4, + }, + { + messageId: "after", + line: 4, + }, ], }, { @@ -1782,7 +1958,12 @@ ruleTester.run("lines-around-comment", rule, { }, ], languageOptions: { ecmaVersion: 2022 }, - errors: [{ messageId: "before", type: "Line", line: 3 }], + errors: [ + { + messageId: "before", + line: 3, + }, + ], }, { code: unIndent` @@ -1809,7 +1990,12 @@ ruleTester.run("lines-around-comment", rule, { }, ], languageOptions: { ecmaVersion: 2022 }, - errors: [{ messageId: "before", type: "Block", line: 3 }], + errors: [ + { + messageId: "before", + line: 3, + }, + ], }, // object start comments @@ -1830,7 +2016,12 @@ ruleTester.run("lines-around-comment", rule, { beforeLineComment: true, }, ], - errors: [{ messageId: "before", type: "Line", line: 2 }], + errors: [ + { + messageId: "before", + line: 2, + }, + ], }, { code: @@ -1855,7 +2046,12 @@ ruleTester.run("lines-around-comment", rule, { beforeLineComment: true, }, ], - errors: [{ messageId: "before", type: "Line", line: 3 }], + errors: [ + { + messageId: "before", + line: 3, + }, + ], }, { code: @@ -1874,7 +2070,12 @@ ruleTester.run("lines-around-comment", rule, { beforeBlockComment: true, }, ], - errors: [{ messageId: "before", type: "Block", line: 2 }], + errors: [ + { + messageId: "before", + line: 2, + }, + ], }, { code: @@ -1903,7 +2104,12 @@ ruleTester.run("lines-around-comment", rule, { beforeLineComment: true, }, ], - errors: [{ messageId: "before", type: "Block", line: 3 }], + errors: [ + { + messageId: "before", + line: 3, + }, + ], }, { code: @@ -1923,7 +2129,12 @@ ruleTester.run("lines-around-comment", rule, { }, ], languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "before", type: "Line", line: 2 }], + errors: [ + { + messageId: "before", + line: 2, + }, + ], }, { code: @@ -1943,7 +2154,12 @@ ruleTester.run("lines-around-comment", rule, { }, ], languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "before", type: "Line", line: 2 }], + errors: [ + { + messageId: "before", + line: 2, + }, + ], }, { code: @@ -1963,7 +2179,12 @@ ruleTester.run("lines-around-comment", rule, { }, ], languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "before", type: "Block", line: 2 }], + errors: [ + { + messageId: "before", + line: 2, + }, + ], }, { code: @@ -1983,7 +2204,12 @@ ruleTester.run("lines-around-comment", rule, { }, ], languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "before", type: "Block", line: 2 }], + errors: [ + { + messageId: "before", + line: 2, + }, + ], }, // object end comments @@ -2004,7 +2230,12 @@ ruleTester.run("lines-around-comment", rule, { afterLineComment: true, }, ], - errors: [{ messageId: "after", type: "Line", line: 3 }], + errors: [ + { + messageId: "after", + line: 3, + }, + ], }, { code: @@ -2029,7 +2260,12 @@ ruleTester.run("lines-around-comment", rule, { afterLineComment: true, }, ], - errors: [{ messageId: "after", type: "Line", line: 5 }], + errors: [ + { + messageId: "after", + line: 5, + }, + ], }, { code: @@ -2050,7 +2286,12 @@ ruleTester.run("lines-around-comment", rule, { afterBlockComment: true, }, ], - errors: [{ messageId: "after", type: "Block", line: 4 }], + errors: [ + { + messageId: "after", + line: 4, + }, + ], }, { code: @@ -2081,7 +2322,12 @@ ruleTester.run("lines-around-comment", rule, { afterBlockComment: true, }, ], - errors: [{ messageId: "after", type: "Block", line: 6 }], + errors: [ + { + messageId: "after", + line: 6, + }, + ], }, { code: @@ -2101,7 +2347,12 @@ ruleTester.run("lines-around-comment", rule, { }, ], languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "after", type: "Line", line: 3 }], + errors: [ + { + messageId: "after", + line: 3, + }, + ], }, { code: @@ -2118,7 +2369,12 @@ ruleTester.run("lines-around-comment", rule, { }, ], languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "after", type: "Line", line: 3 }], + errors: [ + { + messageId: "after", + line: 3, + }, + ], }, { code: @@ -2140,7 +2396,12 @@ ruleTester.run("lines-around-comment", rule, { }, ], languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "after", type: "Block", line: 4 }], + errors: [ + { + messageId: "after", + line: 4, + }, + ], }, { code: @@ -2162,7 +2423,12 @@ ruleTester.run("lines-around-comment", rule, { }, ], languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "after", type: "Block", line: 4 }], + errors: [ + { + messageId: "after", + line: 4, + }, + ], }, // array start comments @@ -2180,7 +2446,12 @@ ruleTester.run("lines-around-comment", rule, { beforeLineComment: true, }, ], - errors: [{ messageId: "before", type: "Line", line: 2 }], + errors: [ + { + messageId: "before", + line: 2, + }, + ], }, { code: @@ -2199,7 +2470,12 @@ ruleTester.run("lines-around-comment", rule, { beforeBlockComment: true, }, ], - errors: [{ messageId: "before", type: "Block", line: 2 }], + errors: [ + { + messageId: "before", + line: 2, + }, + ], }, { code: @@ -2219,7 +2495,12 @@ ruleTester.run("lines-around-comment", rule, { }, ], languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "before", type: "Line", line: 2 }], + errors: [ + { + messageId: "before", + line: 2, + }, + ], }, { code: @@ -2239,7 +2520,12 @@ ruleTester.run("lines-around-comment", rule, { }, ], languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "before", type: "Block", line: 2 }], + errors: [ + { + messageId: "before", + line: 2, + }, + ], }, // array end comments @@ -2256,7 +2542,12 @@ ruleTester.run("lines-around-comment", rule, { afterLineComment: true, }, ], - errors: [{ messageId: "after", type: "Line", line: 3 }], + errors: [ + { + messageId: "after", + line: 3, + }, + ], }, { code: @@ -2277,7 +2568,12 @@ ruleTester.run("lines-around-comment", rule, { afterBlockComment: true, }, ], - errors: [{ messageId: "after", type: "Block", line: 4 }], + errors: [ + { + messageId: "after", + line: 4, + }, + ], }, { code: @@ -2294,7 +2590,12 @@ ruleTester.run("lines-around-comment", rule, { }, ], languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "after", type: "Line", line: 3 }], + errors: [ + { + messageId: "after", + line: 3, + }, + ], }, { code: @@ -2316,7 +2617,12 @@ ruleTester.run("lines-around-comment", rule, { }, ], languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "after", type: "Block", line: 4 }], + errors: [ + { + messageId: "after", + line: 4, + }, + ], }, // ignorePattern @@ -2345,69 +2651,115 @@ ruleTester.run("lines-around-comment", rule, { }, ], errors: [ - { messageId: "before", type: "Block", line: 7 }, - { messageId: "after", type: "Block", line: 7 }, + { + messageId: "before", + line: 7, + }, + { + messageId: "after", + line: 7, + }, ], }, { code: "foo;\n/* eslint */", output: "foo;\n\n/* eslint */", options: [{ applyDefaultIgnorePatterns: false }], - errors: [{ messageId: "before", type: "Block" }], + errors: [ + { + messageId: "before", + }, + ], }, { code: "foo;\n/* jshint */", output: "foo;\n\n/* jshint */", options: [{ applyDefaultIgnorePatterns: false }], - errors: [{ messageId: "before", type: "Block" }], + errors: [ + { + messageId: "before", + }, + ], }, { code: "foo;\n/* jslint */", output: "foo;\n\n/* jslint */", options: [{ applyDefaultIgnorePatterns: false }], - errors: [{ messageId: "before", type: "Block" }], + errors: [ + { + messageId: "before", + }, + ], }, { code: "foo;\n/* istanbul */", output: "foo;\n\n/* istanbul */", options: [{ applyDefaultIgnorePatterns: false }], - errors: [{ messageId: "before", type: "Block" }], + errors: [ + { + messageId: "before", + }, + ], }, { code: "foo;\n/* global */", output: "foo;\n\n/* global */", options: [{ applyDefaultIgnorePatterns: false }], - errors: [{ messageId: "before", type: "Block" }], + errors: [ + { + messageId: "before", + }, + ], }, { code: "foo;\n/* globals */", output: "foo;\n\n/* globals */", options: [{ applyDefaultIgnorePatterns: false }], - errors: [{ messageId: "before", type: "Block" }], + errors: [ + { + messageId: "before", + }, + ], }, { code: "foo;\n/* exported */", output: "foo;\n\n/* exported */", options: [{ applyDefaultIgnorePatterns: false }], - errors: [{ messageId: "before", type: "Block" }], + errors: [ + { + messageId: "before", + }, + ], }, { code: "foo;\n/* jscs */", output: "foo;\n\n/* jscs */", options: [{ applyDefaultIgnorePatterns: false }], - errors: [{ messageId: "before", type: "Block" }], + errors: [ + { + messageId: "before", + }, + ], }, { code: "foo\n/* something else */", output: "foo\n\n/* something else */", options: [{ ignorePattern: "pragma" }], - errors: [{ messageId: "before", type: "Block" }], + errors: [ + { + messageId: "before", + }, + ], }, { code: "foo\n/* eslint */", output: "foo\n\n/* eslint */", options: [{ applyDefaultIgnorePatterns: false }], - errors: [{ messageId: "before", type: "Block" }], + errors: [ + { + messageId: "before", + }, + ], }, // "fallthrough" patterns are not ignored by default @@ -2415,7 +2767,11 @@ ruleTester.run("lines-around-comment", rule, { code: "foo;\n/* fallthrough */", output: "foo;\n\n/* fallthrough */", options: [], - errors: [{ messageId: "before", type: "Block" }], + errors: [ + { + messageId: "before", + }, + ], }, { code: ` @@ -2450,7 +2806,11 @@ ruleTester.run("lines-around-comment", rule, { afterLineComment: true, }, ], - errors: [{ messageId: "before", type: "Line" }], + errors: [ + { + messageId: "before", + }, + ], }, // Hashbang comment @@ -2458,7 +2818,11 @@ ruleTester.run("lines-around-comment", rule, { code: "#!foo\nvar a = 1;", output: "#!foo\n\nvar a = 1;", options: [{ afterHashbangComment: true }], - errors: [{ messageId: "after", type: "Shebang" }], + errors: [ + { + messageId: "after", + }, + ], }, ], }); diff --git a/tests/lib/rules/logical-assignment-operators.js b/tests/lib/rules/logical-assignment-operators.js index dc8d26cd822c..deb880fe61d7 100644 --- a/tests/lib/rules/logical-assignment-operators.js +++ b/tests/lib/rules/logical-assignment-operators.js @@ -456,7 +456,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -468,7 +467,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "&&=" }, suggestions: [], }, @@ -480,7 +478,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "??=" }, suggestions: [], }, @@ -492,7 +489,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -506,7 +502,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -518,7 +513,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -530,7 +524,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -542,7 +535,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -556,7 +548,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -568,7 +559,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -580,7 +570,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -592,7 +581,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -604,7 +592,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -618,7 +605,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -630,7 +616,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -642,7 +627,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -654,7 +638,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -666,7 +649,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -678,7 +660,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -692,7 +673,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "??=" }, suggestions: [ { @@ -710,7 +690,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "??=" }, suggestions: [ { @@ -728,7 +707,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "??=" }, suggestions: [ { @@ -746,7 +724,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "??=" }, suggestions: [ { @@ -764,7 +741,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "??=" }, suggestions: [ { @@ -782,7 +758,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "??=" }, suggestions: [ { @@ -800,7 +775,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "??=" }, suggestions: [ { @@ -820,13 +794,11 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [ { messageId: "useLogicalOperator", data: { operator: "||=" }, - output: "with (object) a ||= b", }, ], @@ -839,7 +811,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [ { @@ -857,7 +828,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [ { @@ -875,7 +845,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -887,7 +856,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -899,7 +867,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -911,7 +878,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -928,7 +894,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [ { @@ -953,7 +918,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -965,7 +929,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -977,7 +940,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -989,7 +951,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -1003,7 +964,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, }, ], @@ -1014,7 +974,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "&&=" }, }, ], @@ -1025,7 +984,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "??=" }, }, ], @@ -1036,7 +994,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "??=" }, }, ], @@ -1049,7 +1006,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, }, ], @@ -1060,7 +1016,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, }, ], @@ -1071,7 +1026,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, }, ], @@ -1084,7 +1038,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, }, ], @@ -1095,7 +1048,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, }, ], @@ -1106,7 +1058,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, }, ], @@ -1117,7 +1068,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, }, ], @@ -1128,7 +1078,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, }, ], @@ -1139,7 +1088,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, }, ], @@ -1152,7 +1100,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, }, ], @@ -1163,7 +1110,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, }, ], @@ -1174,7 +1120,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, }, ], @@ -1185,7 +1130,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, }, ], @@ -1198,7 +1142,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, }, ], @@ -1210,7 +1153,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, }, ], @@ -1221,7 +1163,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, }, ], @@ -1232,7 +1173,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, }, ], @@ -1243,7 +1183,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, }, ], @@ -1254,7 +1193,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, }, ], @@ -1265,7 +1203,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, suggestions: [ { @@ -1283,7 +1220,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, suggestions: [ { @@ -1301,7 +1237,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, suggestions: [ { @@ -1319,7 +1254,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, suggestions: [ { @@ -1339,7 +1273,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, suggestions: [], }, @@ -1351,7 +1284,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, }, ], @@ -1362,7 +1294,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, }, ], @@ -1373,7 +1304,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, }, ], @@ -1384,7 +1314,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, }, ], @@ -1395,7 +1324,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, }, ], @@ -1406,7 +1334,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, }, ], @@ -1420,7 +1347,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -1432,7 +1358,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -1444,7 +1369,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -1456,7 +1380,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "||=" }, }, ], @@ -1468,7 +1391,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "||=" }, }, ], @@ -1480,7 +1402,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "??=" }, }, ], @@ -1492,7 +1413,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "??=" }, }, ], @@ -1504,7 +1424,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "??=" }, }, ], @@ -1516,7 +1435,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "??=" }, }, ], @@ -1528,7 +1446,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "??=" }, }, ], @@ -1540,7 +1457,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "??=" }, }, ], @@ -1552,7 +1468,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -1567,7 +1482,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "??=" }, }, ], @@ -1582,7 +1496,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "??=" }, }, ], @@ -1596,7 +1509,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "??=" }, suggestions: [], }, @@ -1609,7 +1521,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "??=" }, suggestions: [], }, @@ -1622,7 +1533,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "??=" }, suggestions: [], }, @@ -1635,7 +1545,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "??=" }, suggestions: [], }, @@ -1648,7 +1557,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "??=" }, suggestions: [], }, @@ -1661,7 +1569,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "??=" }, suggestions: [], }, @@ -1674,7 +1581,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "??=" }, suggestions: [], }, @@ -1687,7 +1593,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "??=" }, suggestions: [], }, @@ -1702,7 +1607,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -1714,7 +1618,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -1726,7 +1629,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -1738,7 +1640,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -1752,7 +1653,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -1764,7 +1664,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -1776,7 +1675,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -1788,7 +1686,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -1800,7 +1697,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -1812,7 +1708,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -1824,7 +1719,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -1836,7 +1730,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -1850,7 +1743,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -1862,7 +1754,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -1874,7 +1765,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -1886,7 +1776,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -1898,7 +1787,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -1910,7 +1798,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -1924,7 +1811,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -1936,7 +1822,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -1948,7 +1833,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -1962,7 +1846,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -1974,7 +1857,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -1986,7 +1868,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -1998,7 +1879,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -2012,7 +1892,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, suggestions: [], }, @@ -2025,7 +1904,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, suggestions: [], }, @@ -2038,7 +1916,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, suggestions: [], }, @@ -2048,7 +1925,12 @@ ruleTester.run("logical-assignment-operators", rule, { code: "if (this.prop) this.prop = value", output: "this.prop &&= value", options: ["always", { enforceForIfStatements: true }], - errors: [{ messageId: "if", type: "IfStatement", suggestions: [] }], + errors: [ + { + messageId: "if", + suggestions: [], + }, + ], }, { code: "(class extends SuperClass { method() { if (super.prop) super.prop = value } })", @@ -2057,7 +1939,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, suggestions: [], }, @@ -2070,7 +1951,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, suggestions: [], }, @@ -2085,7 +1965,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "??=" }, suggestions: [ { @@ -2104,7 +1983,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, suggestions: [ { @@ -2123,7 +2001,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, suggestions: [ { @@ -2142,7 +2019,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, suggestions: [ { @@ -2161,7 +2037,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, suggestions: [ { @@ -2182,7 +2057,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -2194,7 +2068,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -2206,7 +2079,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -2218,7 +2090,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -2230,7 +2101,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -2242,7 +2112,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -2254,7 +2123,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -2268,7 +2136,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -2280,7 +2147,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -2292,7 +2158,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -2304,7 +2169,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -2318,7 +2182,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "if", - type: "IfStatement", data: { operator: "&&=" }, }, ], @@ -2332,7 +2195,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "||=" }, }, ], @@ -2344,7 +2206,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "&&=" }, }, ], @@ -2356,7 +2217,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "??=" }, }, ], @@ -2368,7 +2228,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "||=" }, }, ], @@ -2382,7 +2241,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [ { @@ -2400,7 +2258,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [ { @@ -2418,7 +2275,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [ { @@ -2436,7 +2292,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [ { @@ -2454,7 +2309,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [ { @@ -2474,7 +2328,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "||=" }, }, ], @@ -2486,7 +2339,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "||=" }, }, ], @@ -2498,7 +2350,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "||=" }, }, ], @@ -2512,7 +2363,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "||=" }, }, ], @@ -2524,7 +2374,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "||=" }, }, ], @@ -2536,7 +2385,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "||=" }, }, ], @@ -2548,7 +2396,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "||=" }, }, ], @@ -2562,7 +2409,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "||=" }, }, ], @@ -2574,7 +2420,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "&&=" }, }, ], @@ -2586,7 +2431,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "||=" }, }, ], @@ -2598,7 +2442,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "&&=" }, }, ], @@ -2612,7 +2455,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "??=" }, }, ], @@ -2624,7 +2466,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "??=" }, }, ], @@ -2636,7 +2477,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "??=" }, }, ], @@ -2648,7 +2488,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "??=" }, }, ], @@ -2660,7 +2499,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "??=" }, }, ], @@ -2681,7 +2519,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "||=" }, }, ], @@ -2699,7 +2536,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, suggestions: [ { @@ -2724,7 +2560,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, suggestions: [ { @@ -2749,7 +2584,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "logical", - type: "LogicalExpression", data: { operator: "||=" }, suggestions: [ { @@ -2770,7 +2604,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -2783,7 +2616,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "&&=" }, suggestions: [], }, @@ -2796,7 +2628,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "??=" }, suggestions: [], }, @@ -2809,7 +2640,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -2822,7 +2652,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -2835,7 +2664,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "&&=" }, suggestions: [], }, @@ -2848,7 +2676,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "??=" }, suggestions: [], }, @@ -2861,7 +2688,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -2874,7 +2700,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -2887,7 +2712,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -2900,7 +2724,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -2913,7 +2736,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, @@ -2926,7 +2748,6 @@ ruleTester.run("logical-assignment-operators", rule, { errors: [ { messageId: "assignment", - type: "AssignmentExpression", data: { operator: "||=" }, suggestions: [], }, diff --git a/tests/lib/rules/max-classes-per-file.js b/tests/lib/rules/max-classes-per-file.js index ce9b7507b5b5..c2758dbb5c29 100644 --- a/tests/lib/rules/max-classes-per-file.js +++ b/tests/lib/rules/max-classes-per-file.js @@ -60,29 +60,53 @@ ruleTester.run("max-classes-per-file", rule, { invalid: [ { code: "class Foo {}\nclass Bar {}", - errors: [{ messageId: "maximumExceeded", type: "Program" }], + errors: [ + { + messageId: "maximumExceeded", + }, + ], }, { code: "class Foo {}\nconst myExpression = class {}", - errors: [{ messageId: "maximumExceeded", type: "Program" }], + errors: [ + { + messageId: "maximumExceeded", + }, + ], }, { code: "var x = class {};\nvar y = class {};", - errors: [{ messageId: "maximumExceeded", type: "Program" }], + errors: [ + { + messageId: "maximumExceeded", + }, + ], }, { code: "class Foo {}\nvar x = class {};", - errors: [{ messageId: "maximumExceeded", type: "Program" }], + errors: [ + { + messageId: "maximumExceeded", + }, + ], }, { code: "class Foo {} class Bar {}", options: [1], - errors: [{ messageId: "maximumExceeded", type: "Program" }], + errors: [ + { + messageId: "maximumExceeded", + }, + ], }, { code: "class Foo {} class Bar {} class Baz {}", options: [2], - errors: [{ messageId: "maximumExceeded", type: "Program" }], + errors: [ + { + messageId: "maximumExceeded", + }, + ], }, { code: ` @@ -91,7 +115,11 @@ ruleTester.run("max-classes-per-file", rule, { const myExpression = class {} `, options: [{ ignoreExpressions: true, max: 1 }], - errors: [{ messageId: "maximumExceeded", type: "Program" }], + errors: [ + { + messageId: "maximumExceeded", + }, + ], }, { code: ` @@ -101,7 +129,11 @@ ruleTester.run("max-classes-per-file", rule, { const myExpression = class {} `, options: [{ ignoreExpressions: true, max: 2 }], - errors: [{ messageId: "maximumExceeded", type: "Program" }], + errors: [ + { + messageId: "maximumExceeded", + }, + ], }, ], }); diff --git a/tests/lib/rules/max-depth.js b/tests/lib/rules/max-depth.js index 227cf80871b7..d8e8f7079cab 100644 --- a/tests/lib/rules/max-depth.js +++ b/tests/lib/rules/max-depth.js @@ -80,7 +80,6 @@ ruleTester.run("max-depth", rule, { { messageId: "tooDeeply", data: { depth: 3, maxDepth: 2 }, - type: "IfStatement", }, ], }, @@ -92,7 +91,6 @@ ruleTester.run("max-depth", rule, { { messageId: "tooDeeply", data: { depth: 3, maxDepth: 2 }, - type: "IfStatement", }, ], }, @@ -103,7 +101,6 @@ ruleTester.run("max-depth", rule, { { messageId: "tooDeeply", data: { depth: 2, maxDepth: 1 }, - type: "ForStatement", }, ], }, @@ -114,7 +111,6 @@ ruleTester.run("max-depth", rule, { { messageId: "tooDeeply", data: { depth: 2, maxDepth: 1 }, - type: "IfStatement", }, ], }, @@ -126,7 +122,6 @@ ruleTester.run("max-depth", rule, { { messageId: "tooDeeply", data: { depth: 2, maxDepth: 1 }, - type: "IfStatement", }, ], }, @@ -137,12 +132,10 @@ ruleTester.run("max-depth", rule, { { messageId: "tooDeeply", data: { depth: 2, maxDepth: 1 }, - type: "IfStatement", }, { messageId: "tooDeeply", data: { depth: 3, maxDepth: 1 }, - type: "IfStatement", }, ], }, @@ -152,7 +145,6 @@ ruleTester.run("max-depth", rule, { { messageId: "tooDeeply", data: { depth: 5, maxDepth: 4 }, - type: "IfStatement", }, ], }, @@ -165,7 +157,6 @@ ruleTester.run("max-depth", rule, { { messageId: "tooDeeply", data: { depth: 3, maxDepth: 2 }, - type: "IfStatement", }, ], }, diff --git a/tests/lib/rules/max-len.js b/tests/lib/rules/max-len.js index 5dd4779181fe..00424812a882 100644 --- a/tests/lib/rules/max-len.js +++ b/tests/lib/rules/max-len.js @@ -393,7 +393,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 86, maxLength: 80 }, - type: "Program", line: 1, column: 1, endLine: 1, @@ -408,7 +407,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 24, maxLength: 10 }, - type: "Program", line: 1, column: 1, endLine: 1, @@ -423,7 +421,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 22, maxLength: 15 }, - type: "Program", line: 1, column: 1, endLine: 1, @@ -438,7 +435,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 22, maxLength: 15 }, - type: "Program", line: 1, column: 1, endLine: 1, @@ -447,7 +443,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 22, maxLength: 15 }, - type: "Program", line: 2, column: 1, endLine: 2, @@ -462,7 +457,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 56, maxLength: 20 }, - type: "Program", line: 1, column: 1, endLine: 1, @@ -479,7 +473,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 54, maxLength: 20 }, - type: "Program", line: 1, column: 1, endLine: 1, @@ -494,7 +487,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 30, maxLength: 10 }, - type: "Program", line: 1, column: 1, endLine: 1, @@ -509,7 +501,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 62, maxLength: 40 }, - type: "Program", line: 1, column: 1, endLine: 1, @@ -524,7 +515,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 57, maxLength: 40 }, - type: "Program", line: 1, column: 1, endLine: 1, @@ -539,7 +529,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 53, maxLength: 40 }, - type: "Program", line: 1, column: 1, endLine: 1, @@ -554,7 +543,6 @@ ruleTester.run("max-len", rule, { { messageId: "maxComment", data: { lineLength: 49, maxCommentLength: 20 }, - type: "Program", line: 1, column: 1, endLine: 1, @@ -569,7 +557,6 @@ ruleTester.run("max-len", rule, { { messageId: "maxComment", data: { lineLength: 119, maxCommentLength: 80 }, - type: "Program", line: 1, column: 1, endLine: 1, @@ -584,7 +571,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 49, maxLength: 20 }, - type: "Program", line: 1, column: 1, endLine: 1, @@ -599,7 +585,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 73, maxLength: 40 }, - type: "Program", line: 1, column: 1, endLine: 1, @@ -617,7 +602,6 @@ ruleTester.run("max-len", rule, { { messageId: "maxComment", data: { lineLength: 29, maxCommentLength: 28 }, - type: "Program", line: 2, column: 1, endLine: 2, @@ -635,7 +619,6 @@ ruleTester.run("max-len", rule, { { messageId: "maxComment", data: { lineLength: 33, maxCommentLength: 32 }, - type: "Program", line: 2, column: 1, endLine: 2, @@ -654,7 +637,6 @@ ruleTester.run("max-len", rule, { { messageId: "maxComment", data: { lineLength: 29, maxCommentLength: 28 }, - type: "Program", line: 2, column: 1, endLine: 2, @@ -663,7 +645,6 @@ ruleTester.run("max-len", rule, { { messageId: "maxComment", data: { lineLength: 32, maxCommentLength: 28 }, - type: "Program", line: 3, column: 1, endLine: 3, @@ -682,7 +663,6 @@ ruleTester.run("max-len", rule, { { messageId: "maxComment", data: { lineLength: 33, maxCommentLength: 32 }, - type: "Program", line: 2, column: 1, endLine: 2, @@ -691,7 +671,6 @@ ruleTester.run("max-len", rule, { { messageId: "maxComment", data: { lineLength: 36, maxCommentLength: 32 }, - type: "Program", line: 3, column: 1, endLine: 3, @@ -710,7 +689,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 40, maxLength: 39 }, - type: "Program", line: 2, column: 1, endLine: 2, @@ -719,7 +697,6 @@ ruleTester.run("max-len", rule, { { messageId: "maxComment", data: { lineLength: 36, maxCommentLength: 35 }, - type: "Program", line: 3, column: 1, endLine: 3, @@ -738,7 +715,6 @@ ruleTester.run("max-len", rule, { { messageId: "maxComment", data: { lineLength: 33, maxCommentLength: 32 }, - type: "Program", line: 2, column: 1, endLine: 2, @@ -747,7 +723,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 43, maxLength: 42 }, - type: "Program", line: 3, column: 1, endLine: 3, @@ -766,7 +741,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 51, maxLength: 20 }, - type: "Program", line: 2, column: 1, endLine: 2, @@ -786,7 +760,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 39, maxLength: 29 }, - type: "Program", line: 2, column: 1, endLine: 2, @@ -804,7 +777,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 45, maxLength: 29 }, - type: "Program", line: 2, column: 1, endLine: 2, @@ -819,7 +791,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 57, maxLength: 29 }, - type: "Program", line: 2, column: 1, endLine: 2, @@ -837,7 +808,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 39, maxLength: 29 }, - type: "Program", line: 2, column: 1, endLine: 2, @@ -856,7 +826,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 39, maxLength: 29 }, - type: "Program", line: 2, column: 1, endLine: 2, @@ -875,7 +844,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 37, maxLength: 29 }, - type: "Program", line: 2, column: 1, endLine: 2, @@ -884,7 +852,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 44, maxLength: 29 }, - type: "Program", line: 3, column: 1, endLine: 3, @@ -900,7 +867,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 58, maxLength: 29 }, - type: "Program", line: 1, column: 1, endLine: 1, @@ -917,7 +883,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 12, maxLength: 10 }, - type: "Program", line: 1, column: 1, endLine: 1, @@ -933,7 +898,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 1, maxLength: 0 }, - type: "Program", line: 1, column: 1, endLine: 1, @@ -954,7 +918,6 @@ ruleTester.run("max-len", rule, { { messageId: "maxComment", data: { lineLength: 38, maxCommentLength: 37 }, - type: "Program", line: 2, column: 1, endLine: 2, @@ -973,7 +936,6 @@ ruleTester.run("max-len", rule, { { messageId: "maxComment", data: { lineLength: 44, maxCommentLength: 40 }, - type: "Program", line: 2, column: 1, endLine: 2, @@ -992,7 +954,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 38, maxLength: 15 }, - type: "Program", line: 2, column: 1, endLine: 2, @@ -1011,7 +972,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 38, maxLength: 37 }, - type: "Program", line: 2, column: 1, endLine: 2, @@ -1030,7 +990,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 38, maxLength: 37 }, - type: "Program", line: 2, column: 1, endLine: 2, @@ -1049,7 +1008,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 50, maxLength: 49 }, - type: "Program", line: 2, column: 1, endLine: 2, @@ -1069,7 +1027,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 44, maxLength: 37 }, - type: "Program", line: 2, column: 1, endLine: 2, @@ -1088,7 +1045,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 57, maxLength: 56 }, - type: "Program", line: 2, column: 1, endLine: 2, @@ -1107,7 +1063,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 57, maxLength: 56 }, - type: "Program", line: 2, column: 1, endLine: 2, @@ -1126,7 +1081,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 56, maxLength: 55 }, - type: "Program", line: 2, column: 1, endLine: 2, @@ -1146,7 +1100,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 51, maxLength: 30 }, - type: "Program", line: 3, column: 1, endLine: 3, @@ -1166,7 +1119,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 80, maxLength: 79 }, - type: "Program", line: 3, column: 1, endLine: 3, @@ -1185,7 +1137,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 87, maxLength: 85 }, - type: "Program", line: 2, column: 1, endLine: 2, @@ -1205,7 +1156,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 87, maxLength: 37 }, - type: "Program", line: 3, column: 1, endLine: 3, @@ -1225,7 +1175,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 119, maxLength: 37 }, - type: "Program", line: 3, column: 1, endLine: 3, @@ -1245,7 +1194,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 55, maxLength: 37 }, - type: "Program", line: 3, column: 1, endLine: 3, @@ -1265,7 +1213,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 55, maxLength: 37 }, - type: "Program", line: 3, column: 1, endLine: 3, @@ -1281,7 +1228,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 15, maxLength: 14 }, - type: "Program", line: 2, column: 1, endLine: 2, @@ -1301,7 +1247,6 @@ ruleTester.run("max-len", rule, { { messageId: "max", data: { lineLength: 31, maxLength: 30 }, - type: "Program", line: 3, column: 1, endLine: 3, diff --git a/tests/lib/rules/max-nested-callbacks.js b/tests/lib/rules/max-nested-callbacks.js index c0834c248e76..6d3bc33f8d86 100644 --- a/tests/lib/rules/max-nested-callbacks.js +++ b/tests/lib/rules/max-nested-callbacks.js @@ -73,7 +73,6 @@ ruleTester.run("max-nested-callbacks", rule, { { messageId: "exceed", data: { num: 3, max: 2 }, - type: "FunctionExpression", }, ], }, @@ -85,7 +84,6 @@ ruleTester.run("max-nested-callbacks", rule, { { messageId: "exceed", data: { num: 3, max: 2 }, - type: "FunctionExpression", }, ], }, @@ -97,7 +95,6 @@ ruleTester.run("max-nested-callbacks", rule, { { messageId: "exceed", data: { num: 3, max: 2 }, - type: "ArrowFunctionExpression", }, ], }, @@ -108,7 +105,6 @@ ruleTester.run("max-nested-callbacks", rule, { { messageId: "exceed", data: { num: 3, max: 2 }, - type: "FunctionExpression", }, ], }, @@ -118,7 +114,6 @@ ruleTester.run("max-nested-callbacks", rule, { { messageId: "exceed", data: { num: 11, max: 10 }, - type: "FunctionExpression", }, ], }, @@ -129,7 +124,6 @@ ruleTester.run("max-nested-callbacks", rule, { { messageId: "exceed", data: { num: 11, max: 10 }, - type: "FunctionExpression", }, ], }, @@ -147,7 +141,6 @@ ruleTester.run("max-nested-callbacks", rule, { { messageId: "exceed", data: { num: 3, max: 2 }, - type: "FunctionExpression", }, ], }, diff --git a/tests/lib/rules/max-params.js b/tests/lib/rules/max-params.js index 6401453ccdbd..2a884fb76132 100644 --- a/tests/lib/rules/max-params.js +++ b/tests/lib/rules/max-params.js @@ -40,7 +40,6 @@ ruleTester.run("max-params", rule, { { messageId: "exceed", data: { name: "Function 'test'", count: 3, max: 2.0 }, - type: "FunctionDeclaration", }, ], }, @@ -50,7 +49,6 @@ ruleTester.run("max-params", rule, { { messageId: "exceed", data: { name: "Function 'test'", count: 4, max: 3.0 }, - type: "FunctionDeclaration", }, ], }, @@ -61,7 +59,6 @@ ruleTester.run("max-params", rule, { { messageId: "exceed", data: { name: "Function", count: 4, max: 3.0 }, - type: "FunctionExpression", }, ], }, @@ -73,7 +70,6 @@ ruleTester.run("max-params", rule, { { messageId: "exceed", data: { name: "Arrow function", count: 4, max: 3.0 }, - type: "ArrowFunctionExpression", }, ], }, @@ -84,7 +80,6 @@ ruleTester.run("max-params", rule, { { messageId: "exceed", data: { name: "Function", count: 4, max: 3.0 }, - type: "FunctionExpression", }, ], }, @@ -95,7 +90,6 @@ ruleTester.run("max-params", rule, { { messageId: "exceed", data: { name: "Function 'test'", count: 3, max: 1.0 }, - type: "FunctionExpression", }, ], }, @@ -108,7 +102,6 @@ ruleTester.run("max-params", rule, { { messageId: "exceed", data: { name: "Function 'test'", count: 3, max: 2.0 }, - type: "FunctionDeclaration", }, ], }, diff --git a/tests/lib/rules/new-cap.js b/tests/lib/rules/new-cap.js index 8cfa5b9bd331..ffe0aadd623f 100644 --- a/tests/lib/rules/new-cap.js +++ b/tests/lib/rules/new-cap.js @@ -147,7 +147,6 @@ ruleTester.run("new-cap", rule, { errors: [ { messageId: "lower", - type: "NewExpression", line: 1, column: 13, endLine: 1, @@ -160,7 +159,6 @@ ruleTester.run("new-cap", rule, { errors: [ { messageId: "lower", - type: "NewExpression", line: 1, column: 13, endLine: 1, @@ -173,7 +171,6 @@ ruleTester.run("new-cap", rule, { errors: [ { messageId: "lower", - type: "NewExpression", line: 1, column: 17, endLine: 1, @@ -186,7 +183,6 @@ ruleTester.run("new-cap", rule, { errors: [ { messageId: "lower", - type: "NewExpression", line: 1, column: 17, endLine: 1, @@ -199,7 +195,6 @@ ruleTester.run("new-cap", rule, { errors: [ { messageId: "upper", - type: "CallExpression", line: 1, column: 9, endLine: 1, @@ -212,7 +207,6 @@ ruleTester.run("new-cap", rule, { errors: [ { messageId: "upper", - type: "CallExpression", line: 1, column: 11, endLine: 1, @@ -225,7 +219,6 @@ ruleTester.run("new-cap", rule, { errors: [ { messageId: "upper", - type: "CallExpression", line: 1, column: 11, endLine: 1, @@ -238,7 +231,6 @@ ruleTester.run("new-cap", rule, { errors: [ { messageId: "upper", - type: "CallExpression", line: 1, column: 16, endLine: 1, @@ -251,7 +243,6 @@ ruleTester.run("new-cap", rule, { errors: [ { messageId: "upper", - type: "CallExpression", line: 1, column: 9, endLine: 1, @@ -264,7 +255,6 @@ ruleTester.run("new-cap", rule, { errors: [ { messageId: "upper", - type: "CallExpression", line: 1, column: 11, endLine: 1, @@ -277,7 +267,6 @@ ruleTester.run("new-cap", rule, { errors: [ { messageId: "upper", - type: "CallExpression", line: 2, column: 2, endLine: 2, @@ -290,7 +279,6 @@ ruleTester.run("new-cap", rule, { errors: [ { messageId: "lower", - type: "NewExpression", line: 1, column: 15, endLine: 1, @@ -303,7 +291,6 @@ ruleTester.run("new-cap", rule, { errors: [ { messageId: "lower", - type: "NewExpression", line: 2, column: 1, endLine: 2, @@ -316,7 +303,6 @@ ruleTester.run("new-cap", rule, { errors: [ { messageId: "lower", - type: "NewExpression", line: 1, column: 13, endLine: 1, @@ -330,7 +316,6 @@ ruleTester.run("new-cap", rule, { errors: [ { messageId: "lower", - type: "NewExpression", line: 1, column: 18, endLine: 1, @@ -344,7 +329,6 @@ ruleTester.run("new-cap", rule, { errors: [ { messageId: "lower", - type: "NewExpression", line: 1, column: 15, endLine: 1, @@ -358,7 +342,6 @@ ruleTester.run("new-cap", rule, { errors: [ { messageId: "upper", - type: "CallExpression", line: 1, column: 11, endLine: 2, @@ -370,24 +353,40 @@ ruleTester.run("new-cap", rule, { { code: "var x = Foo.Bar(42);", options: [{ capIsNewExceptions: ["Foo"] }], - errors: [{ type: "CallExpression", messageId: "upper" }], + errors: [ + { + messageId: "upper", + }, + ], }, { code: "var x = Bar.Foo(42);", options: [{ capIsNewExceptionPattern: "^Foo\\.." }], - errors: [{ type: "CallExpression", messageId: "upper" }], + errors: [ + { + messageId: "upper", + }, + ], }, { code: "var x = new foo.bar(42);", options: [{ newIsCapExceptions: ["foo"] }], - errors: [{ type: "NewExpression", messageId: "lower" }], + errors: [ + { + messageId: "lower", + }, + ], }, { code: "var x = new bar.foo(42);", options: [{ newIsCapExceptionPattern: "^foo\\.." }], - errors: [{ type: "NewExpression", messageId: "lower" }], + errors: [ + { + messageId: "lower", + }, + ], }, // Optional chaining diff --git a/tests/lib/rules/new-parens.js b/tests/lib/rules/new-parens.js index b47072352e16..7d617fa2a77f 100644 --- a/tests/lib/rules/new-parens.js +++ b/tests/lib/rules/new-parens.js @@ -17,8 +17,12 @@ const parser = require("../../fixtures/fixture-parser"), // Tests //------------------------------------------------------------------------------ -const error = { messageId: "missing", type: "NewExpression" }; -const neverError = { messageId: "unnecessary", type: "NewExpression" }; +const error = { + messageId: "missing", +}; +const neverError = { + messageId: "unnecessary", +}; const ruleTester = new RuleTester(); diff --git a/tests/lib/rules/newline-after-var.js b/tests/lib/rules/newline-after-var.js index ea66bc3999f5..8042b05dc133 100644 --- a/tests/lib/rules/newline-after-var.js +++ b/tests/lib/rules/newline-after-var.js @@ -133,12 +133,10 @@ const NO_BREAK = "var greet = 'hello';console.log(greet);", const ALWAYS_ERROR = { messageId: "expected", - type: "VariableDeclaration", }; const NEVER_ERROR = { messageId: "unexpected", - type: "VariableDeclaration", }; //------------------------------------------------------------------------------ diff --git a/tests/lib/rules/no-alert.js b/tests/lib/rules/no-alert.js index 3720bb674c14..b88cd3466915 100644 --- a/tests/lib/rules/no-alert.js +++ b/tests/lib/rules/no-alert.js @@ -59,7 +59,6 @@ ruleTester.run("no-alert", rule, { { messageId: "unexpected", data: { name: "alert" }, - type: "CallExpression", line: 1, column: 1, }, @@ -71,7 +70,6 @@ ruleTester.run("no-alert", rule, { { messageId: "unexpected", data: { name: "alert" }, - type: "CallExpression", line: 1, column: 1, }, @@ -83,7 +81,6 @@ ruleTester.run("no-alert", rule, { { messageId: "unexpected", data: { name: "alert" }, - type: "CallExpression", line: 1, column: 1, }, @@ -95,7 +92,6 @@ ruleTester.run("no-alert", rule, { { messageId: "unexpected", data: { name: "confirm" }, - type: "CallExpression", line: 1, column: 1, }, @@ -107,7 +103,6 @@ ruleTester.run("no-alert", rule, { { messageId: "unexpected", data: { name: "confirm" }, - type: "CallExpression", line: 1, column: 1, }, @@ -119,7 +114,6 @@ ruleTester.run("no-alert", rule, { { messageId: "unexpected", data: { name: "confirm" }, - type: "CallExpression", line: 1, column: 1, }, @@ -131,7 +125,6 @@ ruleTester.run("no-alert", rule, { { messageId: "unexpected", data: { name: "prompt" }, - type: "CallExpression", line: 1, column: 1, }, @@ -143,7 +136,6 @@ ruleTester.run("no-alert", rule, { { messageId: "unexpected", data: { name: "prompt" }, - type: "CallExpression", line: 1, column: 1, }, @@ -155,7 +147,6 @@ ruleTester.run("no-alert", rule, { { messageId: "unexpected", data: { name: "prompt" }, - type: "CallExpression", line: 1, column: 1, }, @@ -167,7 +158,6 @@ ruleTester.run("no-alert", rule, { { messageId: "unexpected", data: { name: "alert" }, - type: "CallExpression", line: 1, column: 21, }, @@ -179,7 +169,6 @@ ruleTester.run("no-alert", rule, { { messageId: "unexpected", data: { name: "alert" }, - type: "CallExpression", line: 2, column: 1, }, @@ -191,7 +180,6 @@ ruleTester.run("no-alert", rule, { { messageId: "unexpected", data: { name: "alert" }, - type: "CallExpression", line: 1, column: 23, }, @@ -203,7 +191,6 @@ ruleTester.run("no-alert", rule, { { messageId: "unexpected", data: { name: "alert" }, - type: "CallExpression", line: 1, column: 18, }, @@ -215,7 +202,6 @@ ruleTester.run("no-alert", rule, { { messageId: "unexpected", data: { name: "alert" }, - type: "CallExpression", line: 2, column: 1, }, @@ -227,7 +213,6 @@ ruleTester.run("no-alert", rule, { { messageId: "unexpected", data: { name: "alert" }, - type: "CallExpression", line: 1, column: 1, }, @@ -239,7 +224,6 @@ ruleTester.run("no-alert", rule, { { messageId: "unexpected", data: { name: "alert" }, - type: "CallExpression", line: 1, column: 1, }, @@ -251,7 +235,6 @@ ruleTester.run("no-alert", rule, { { messageId: "unexpected", data: { name: "alert" }, - type: "CallExpression", line: 2, column: 1, }, @@ -264,7 +247,6 @@ ruleTester.run("no-alert", rule, { { messageId: "unexpected", data: { name: "alert" }, - type: "CallExpression", line: 1, column: 1, }, @@ -277,7 +259,6 @@ ruleTester.run("no-alert", rule, { { messageId: "unexpected", data: { name: "alert" }, - type: "CallExpression", line: 1, column: 1, }, @@ -290,7 +271,6 @@ ruleTester.run("no-alert", rule, { { messageId: "unexpected", data: { name: "alert" }, - type: "CallExpression", line: 2, column: 1, }, diff --git a/tests/lib/rules/no-array-constructor.js b/tests/lib/rules/no-array-constructor.js index a47eb03367ba..792d0c4fc267 100644 --- a/tests/lib/rules/no-array-constructor.js +++ b/tests/lib/rules/no-array-constructor.js @@ -62,7 +62,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "NewExpression", }, ], }, @@ -72,7 +71,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "NewExpression", }, ], }, @@ -82,7 +80,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "NewExpression", }, ], }, @@ -92,7 +89,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "NewExpression", }, ], }, @@ -101,7 +97,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "CallExpression", suggestions: [ { messageId: "useLiteral", @@ -127,7 +122,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "CallExpression", }, ], }, @@ -136,7 +130,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "CallExpression", suggestions: [ { messageId: "useLiteral", @@ -151,7 +144,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "CallExpression", suggestions: [ { messageId: "useLiteral", @@ -166,7 +158,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "NewExpression", suggestions: [ { messageId: "useLiteral", @@ -181,7 +172,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "CallExpression", suggestions: [ { messageId: "useLiteral", @@ -197,7 +187,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "CallExpression", }, ], }, @@ -207,7 +196,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "NewExpression", }, ], }, @@ -217,7 +205,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "NewExpression", }, ], }, @@ -523,7 +510,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "CallExpression", }, ], }, @@ -533,7 +519,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "CallExpression", }, ], }, @@ -542,7 +527,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "CallExpression", suggestions: [ { messageId: "useLiteral", @@ -557,7 +541,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "CallExpression", suggestions: [ { messageId: "useLiteral", @@ -573,7 +556,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "CallExpression", }, ], }, @@ -583,7 +565,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "CallExpression", }, ], }, @@ -593,7 +574,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "CallExpression", }, ], }, @@ -603,7 +583,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "NewExpression", }, ], }, @@ -613,7 +592,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "NewExpression", }, ], }, @@ -622,7 +600,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "NewExpression", suggestions: [ { messageId: "useLiteral", @@ -637,7 +614,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "NewExpression", suggestions: [ { messageId: "useLiteral", @@ -653,7 +629,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "NewExpression", }, ], }, @@ -663,7 +638,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "NewExpression", }, ], }, @@ -672,7 +646,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "NewExpression", suggestions: [ { messageId: "useLiteral", @@ -690,7 +663,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "CallExpression", suggestions: [ { messageId: "useLiteral", @@ -710,7 +682,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "CallExpression", suggestions: [ { messageId: "useLiteral", @@ -730,7 +701,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "NewExpression", suggestions: [ { messageId: "useLiteral", @@ -746,7 +716,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "NewExpression", suggestions: [ { messageId: "useLiteral", @@ -761,7 +730,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "CallExpression", suggestions: [ { messageId: "useLiteral", @@ -776,7 +744,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "CallExpression", suggestions: [ { messageId: "useLiteral", @@ -791,7 +758,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "CallExpression", suggestions: [ { messageId: "useLiteral", @@ -806,7 +772,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "CallExpression", suggestions: [ { messageId: "useLiteral", @@ -821,7 +786,6 @@ ruleTester.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "CallExpression", suggestions: [ { messageId: "useLiteral", @@ -929,7 +893,6 @@ ruleTesterTypeScript.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "CallExpression", suggestions: [ { messageId: "useLiteral", @@ -944,7 +907,6 @@ ruleTesterTypeScript.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "CallExpression", suggestions: [ { messageId: "useLiteral", @@ -959,7 +921,6 @@ ruleTesterTypeScript.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "CallExpression", suggestions: [ { messageId: "useLiteral", @@ -974,7 +935,6 @@ ruleTesterTypeScript.run("no-array-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "CallExpression", suggestions: [ { messageId: "useLiteral", diff --git a/tests/lib/rules/no-await-in-loop.js b/tests/lib/rules/no-await-in-loop.js index fd9d9ee9ba8c..0a9cd8b945e2 100644 --- a/tests/lib/rules/no-await-in-loop.js +++ b/tests/lib/rules/no-await-in-loop.js @@ -16,7 +16,9 @@ const rule = require("../../../lib/rules/no-await-in-loop"), // Tests //------------------------------------------------------------------------------ -const error = { messageId: "unexpectedAwait", type: "AwaitExpression" }; +const error = { + messageId: "unexpectedAwait", +}; const ruleTester = new RuleTester({ languageOptions: { ecmaVersion: 2018, sourceType: "script" }, @@ -96,7 +98,7 @@ ruleTester.run("no-await-in-loop", rule, { }, { code: "async function foo() { while (baz) { for await (x of xs); } }", - errors: [Object.assign({}, error, { type: "ForOfStatement" })], + errors: [error], }, // For of loops @@ -164,7 +166,7 @@ ruleTester.run("no-await-in-loop", rule, { sourceType: "module", ecmaVersion: 2026, }, - errors: [{ ...error, type: "VariableDeclaration" }], + errors: [error], }, { code: "for (;;) { await using resource = getResource(); }", @@ -172,7 +174,7 @@ ruleTester.run("no-await-in-loop", rule, { sourceType: "module", ecmaVersion: 2026, }, - errors: [{ ...error, type: "VariableDeclaration" }], + errors: [error], }, { code: "for (await using resource of resources) {}", @@ -180,7 +182,7 @@ ruleTester.run("no-await-in-loop", rule, { sourceType: "module", ecmaVersion: 2026, }, - errors: [{ ...error, type: "VariableDeclaration" }], + errors: [error], }, ], }); diff --git a/tests/lib/rules/no-bitwise.js b/tests/lib/rules/no-bitwise.js index a1cb1559f8b7..601ddc260eb9 100644 --- a/tests/lib/rules/no-bitwise.js +++ b/tests/lib/rules/no-bitwise.js @@ -40,7 +40,6 @@ ruleTester.run("no-bitwise", rule, { { messageId: "unexpected", data: { operator: "^" }, - type: "BinaryExpression", }, ], }, @@ -50,7 +49,6 @@ ruleTester.run("no-bitwise", rule, { { messageId: "unexpected", data: { operator: "|" }, - type: "BinaryExpression", }, ], }, @@ -60,7 +58,6 @@ ruleTester.run("no-bitwise", rule, { { messageId: "unexpected", data: { operator: "&" }, - type: "BinaryExpression", }, ], }, @@ -70,7 +67,6 @@ ruleTester.run("no-bitwise", rule, { { messageId: "unexpected", data: { operator: "<<" }, - type: "BinaryExpression", }, ], }, @@ -80,7 +76,6 @@ ruleTester.run("no-bitwise", rule, { { messageId: "unexpected", data: { operator: ">>" }, - type: "BinaryExpression", }, ], }, @@ -90,7 +85,6 @@ ruleTester.run("no-bitwise", rule, { { messageId: "unexpected", data: { operator: ">>>" }, - type: "BinaryExpression", }, ], }, @@ -100,7 +94,6 @@ ruleTester.run("no-bitwise", rule, { { messageId: "unexpected", data: { operator: "|" }, - type: "BinaryExpression", }, ], }, @@ -110,7 +103,6 @@ ruleTester.run("no-bitwise", rule, { { messageId: "unexpected", data: { operator: "~" }, - type: "UnaryExpression", }, ], }, @@ -120,7 +112,6 @@ ruleTester.run("no-bitwise", rule, { { messageId: "unexpected", data: { operator: "^=" }, - type: "AssignmentExpression", }, ], }, @@ -130,7 +121,6 @@ ruleTester.run("no-bitwise", rule, { { messageId: "unexpected", data: { operator: "|=" }, - type: "AssignmentExpression", }, ], }, @@ -140,7 +130,6 @@ ruleTester.run("no-bitwise", rule, { { messageId: "unexpected", data: { operator: "&=" }, - type: "AssignmentExpression", }, ], }, @@ -150,7 +139,6 @@ ruleTester.run("no-bitwise", rule, { { messageId: "unexpected", data: { operator: "<<=" }, - type: "AssignmentExpression", }, ], }, @@ -160,7 +148,6 @@ ruleTester.run("no-bitwise", rule, { { messageId: "unexpected", data: { operator: ">>=" }, - type: "AssignmentExpression", }, ], }, @@ -170,7 +157,6 @@ ruleTester.run("no-bitwise", rule, { { messageId: "unexpected", data: { operator: ">>>=" }, - type: "AssignmentExpression", }, ], }, diff --git a/tests/lib/rules/no-buffer-constructor.js b/tests/lib/rules/no-buffer-constructor.js index a4b3d4fc448e..9027d83d3e16 100644 --- a/tests/lib/rules/no-buffer-constructor.js +++ b/tests/lib/rules/no-buffer-constructor.js @@ -20,14 +20,12 @@ const CALL_ERROR = { data: { expr: "Buffer()", }, - type: "CallExpression", }; const CONSTRUCT_ERROR = { messageId: "deprecated", data: { expr: "new Buffer()", }, - type: "NewExpression", }; const ruleTester = new RuleTester(); diff --git a/tests/lib/rules/no-caller.js b/tests/lib/rules/no-caller.js index 12c2e73cf2a6..4c13517a5f8f 100644 --- a/tests/lib/rules/no-caller.js +++ b/tests/lib/rules/no-caller.js @@ -32,7 +32,6 @@ ruleTester.run("no-caller", rule, { { messageId: "unexpected", data: { prop: "callee" }, - type: "MemberExpression", }, ], }, @@ -42,7 +41,6 @@ ruleTester.run("no-caller", rule, { { messageId: "unexpected", data: { prop: "caller" }, - type: "MemberExpression", }, ], }, diff --git a/tests/lib/rules/no-case-declarations.js b/tests/lib/rules/no-case-declarations.js index 63b5b69f6796..a02f832851f7 100644 --- a/tests/lib/rules/no-case-declarations.js +++ b/tests/lib/rules/no-case-declarations.js @@ -61,7 +61,6 @@ ruleTester.run("no-case-declarations", rule, { errors: [ { messageId: "unexpected", - type: "FunctionDeclaration", suggestions: [ { messageId: "addBrackets", @@ -90,7 +89,6 @@ ruleTester.run("no-case-declarations", rule, { errors: [ { messageId: "unexpected", - type: "VariableDeclaration", suggestions: [ { messageId: "addBrackets", @@ -119,7 +117,6 @@ ruleTester.run("no-case-declarations", rule, { errors: [ { messageId: "unexpected", - type: "VariableDeclaration", suggestions: [ { messageId: "addBrackets", @@ -136,7 +133,6 @@ ruleTester.run("no-case-declarations", rule, { }, { messageId: "unexpected", - type: "VariableDeclaration", suggestions: [ { messageId: "addBrackets", @@ -166,7 +162,6 @@ ruleTester.run("no-case-declarations", rule, { errors: [ { messageId: "unexpected", - type: "VariableDeclaration", suggestions: [ { messageId: "addBrackets", @@ -183,7 +178,6 @@ ruleTester.run("no-case-declarations", rule, { }, { messageId: "unexpected", - type: "VariableDeclaration", suggestions: [ { messageId: "addBrackets", @@ -206,7 +200,6 @@ ruleTester.run("no-case-declarations", rule, { errors: [ { messageId: "unexpected", - type: "VariableDeclaration", suggestions: [ { messageId: "addBrackets", @@ -222,7 +215,6 @@ ruleTester.run("no-case-declarations", rule, { errors: [ { messageId: "unexpected", - type: "VariableDeclaration", suggestions: [ { messageId: "addBrackets", @@ -238,7 +230,6 @@ ruleTester.run("no-case-declarations", rule, { errors: [ { messageId: "unexpected", - type: "VariableDeclaration", suggestions: [ { messageId: "addBrackets", @@ -254,7 +245,6 @@ ruleTester.run("no-case-declarations", rule, { errors: [ { messageId: "unexpected", - type: "VariableDeclaration", suggestions: [ { messageId: "addBrackets", @@ -270,7 +260,6 @@ ruleTester.run("no-case-declarations", rule, { errors: [ { messageId: "unexpected", - type: "FunctionDeclaration", suggestions: [ { messageId: "addBrackets", @@ -286,7 +275,6 @@ ruleTester.run("no-case-declarations", rule, { errors: [ { messageId: "unexpected", - type: "FunctionDeclaration", suggestions: [ { messageId: "addBrackets", @@ -302,7 +290,6 @@ ruleTester.run("no-case-declarations", rule, { errors: [ { messageId: "unexpected", - type: "ClassDeclaration", suggestions: [ { messageId: "addBrackets", @@ -318,7 +305,6 @@ ruleTester.run("no-case-declarations", rule, { errors: [ { messageId: "unexpected", - type: "ClassDeclaration", suggestions: [ { messageId: "addBrackets", @@ -344,7 +330,6 @@ ruleTester.run("no-case-declarations", rule, { errors: [ { messageId: "unexpected", - type: "FunctionDeclaration", suggestions: [ { messageId: "addBrackets", diff --git a/tests/lib/rules/no-catch-shadow.js b/tests/lib/rules/no-catch-shadow.js index b35472af2b7f..3255de30ae20 100644 --- a/tests/lib/rules/no-catch-shadow.js +++ b/tests/lib/rules/no-catch-shadow.js @@ -50,7 +50,6 @@ ruleTester.run("no-catch-shadow", rule, { { messageId: "mutable", data: { name: "foo" }, - type: "CatchClause", }, ], }, @@ -60,7 +59,6 @@ ruleTester.run("no-catch-shadow", rule, { { messageId: "mutable", data: { name: "foo" }, - type: "CatchClause", }, ], }, @@ -70,7 +68,6 @@ ruleTester.run("no-catch-shadow", rule, { { messageId: "mutable", data: { name: "foo" }, - type: "CatchClause", }, ], }, @@ -80,7 +77,6 @@ ruleTester.run("no-catch-shadow", rule, { { messageId: "mutable", data: { name: "foo" }, - type: "CatchClause", }, ], }, diff --git a/tests/lib/rules/no-class-assign.js b/tests/lib/rules/no-class-assign.js index a844396755fb..4ace04973116 100644 --- a/tests/lib/rules/no-class-assign.js +++ b/tests/lib/rules/no-class-assign.js @@ -38,37 +38,55 @@ ruleTester.run("no-class-assign", rule, { { code: "class A { } A = 0;", errors: [ - { messageId: "class", data: { name: "A" }, type: "Identifier" }, + { + messageId: "class", + data: { name: "A" }, + }, ], }, { code: "class A { } ({A} = 0);", errors: [ - { messageId: "class", data: { name: "A" }, type: "Identifier" }, + { + messageId: "class", + data: { name: "A" }, + }, ], }, { code: "class A { } ({b: A = 0} = {});", errors: [ - { messageId: "class", data: { name: "A" }, type: "Identifier" }, + { + messageId: "class", + data: { name: "A" }, + }, ], }, { code: "A = 0; class A { }", errors: [ - { messageId: "class", data: { name: "A" }, type: "Identifier" }, + { + messageId: "class", + data: { name: "A" }, + }, ], }, { code: "class A { b() { A = 0; } }", errors: [ - { messageId: "class", data: { name: "A" }, type: "Identifier" }, + { + messageId: "class", + data: { name: "A" }, + }, ], }, { code: "let A = class A { b() { A = 0; } }", errors: [ - { messageId: "class", data: { name: "A" }, type: "Identifier" }, + { + messageId: "class", + data: { name: "A" }, + }, ], }, { @@ -77,14 +95,12 @@ ruleTester.run("no-class-assign", rule, { { messageId: "class", data: { name: "A" }, - type: "Identifier", line: 1, column: 13, }, { messageId: "class", data: { name: "A" }, - type: "Identifier", line: 1, column: 20, }, diff --git a/tests/lib/rules/no-compare-neg-zero.js b/tests/lib/rules/no-compare-neg-zero.js index 471606d92e55..012e50992f35 100644 --- a/tests/lib/rules/no-compare-neg-zero.js +++ b/tests/lib/rules/no-compare-neg-zero.js @@ -55,7 +55,6 @@ ruleTester.run("no-compare-neg-zero", rule, { { messageId: "unexpected", data: { operator: "===" }, - type: "BinaryExpression", }, ], }, @@ -65,7 +64,6 @@ ruleTester.run("no-compare-neg-zero", rule, { { messageId: "unexpected", data: { operator: "===" }, - type: "BinaryExpression", }, ], }, @@ -75,7 +73,6 @@ ruleTester.run("no-compare-neg-zero", rule, { { messageId: "unexpected", data: { operator: "==" }, - type: "BinaryExpression", }, ], }, @@ -85,7 +82,6 @@ ruleTester.run("no-compare-neg-zero", rule, { { messageId: "unexpected", data: { operator: "==" }, - type: "BinaryExpression", }, ], }, @@ -95,7 +91,6 @@ ruleTester.run("no-compare-neg-zero", rule, { { messageId: "unexpected", data: { operator: ">" }, - type: "BinaryExpression", }, ], }, @@ -105,7 +100,6 @@ ruleTester.run("no-compare-neg-zero", rule, { { messageId: "unexpected", data: { operator: ">" }, - type: "BinaryExpression", }, ], }, @@ -115,7 +109,6 @@ ruleTester.run("no-compare-neg-zero", rule, { { messageId: "unexpected", data: { operator: ">=" }, - type: "BinaryExpression", }, ], }, @@ -125,7 +118,6 @@ ruleTester.run("no-compare-neg-zero", rule, { { messageId: "unexpected", data: { operator: ">=" }, - type: "BinaryExpression", }, ], }, @@ -135,7 +127,6 @@ ruleTester.run("no-compare-neg-zero", rule, { { messageId: "unexpected", data: { operator: "<" }, - type: "BinaryExpression", }, ], }, @@ -145,7 +136,6 @@ ruleTester.run("no-compare-neg-zero", rule, { { messageId: "unexpected", data: { operator: "<" }, - type: "BinaryExpression", }, ], }, @@ -155,7 +145,6 @@ ruleTester.run("no-compare-neg-zero", rule, { { messageId: "unexpected", data: { operator: "<=" }, - type: "BinaryExpression", }, ], }, @@ -165,7 +154,6 @@ ruleTester.run("no-compare-neg-zero", rule, { { messageId: "unexpected", data: { operator: "<=" }, - type: "BinaryExpression", }, ], }, diff --git a/tests/lib/rules/no-cond-assign.js b/tests/lib/rules/no-cond-assign.js index 51011a1d9785..419a31cb2235 100644 --- a/tests/lib/rules/no-cond-assign.js +++ b/tests/lib/rules/no-cond-assign.js @@ -81,7 +81,6 @@ ruleTester.run("no-cond-assign", rule, { errors: [ { messageId: "missing", - type: "AssignmentExpression", line: 1, column: 12, endLine: 1, @@ -91,19 +90,35 @@ ruleTester.run("no-cond-assign", rule, { }, { code: "var x; while (x = 0) { var b = 1; }", - errors: [{ messageId: "missing", type: "AssignmentExpression" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "var x = 0, y; do { y = x; } while (x = x + 1);", - errors: [{ messageId: "missing", type: "AssignmentExpression" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "var x; for(; x+=1 ;){};", - errors: [{ messageId: "missing", type: "AssignmentExpression" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "var x; if ((x) = (0));", - errors: [{ messageId: "missing", type: "AssignmentExpression" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "if (someNode || (someNode = parentNode)) { }", @@ -112,7 +127,6 @@ ruleTester.run("no-cond-assign", rule, { { messageId: "unexpected", data: { type: "an 'if' statement" }, - type: "AssignmentExpression", column: 18, endColumn: 39, }, @@ -125,7 +139,6 @@ ruleTester.run("no-cond-assign", rule, { { messageId: "unexpected", data: { type: "a 'while' statement" }, - type: "AssignmentExpression", }, ], }, @@ -136,7 +149,6 @@ ruleTester.run("no-cond-assign", rule, { { messageId: "unexpected", data: { type: "a 'do...while' statement" }, - type: "AssignmentExpression", }, ], }, @@ -147,7 +159,6 @@ ruleTester.run("no-cond-assign", rule, { { messageId: "unexpected", data: { type: "a 'for' statement" }, - type: "AssignmentExpression", }, ], }, @@ -158,7 +169,6 @@ ruleTester.run("no-cond-assign", rule, { { messageId: "unexpected", data: { type: "an 'if' statement" }, - type: "AssignmentExpression", }, ], }, @@ -169,7 +179,6 @@ ruleTester.run("no-cond-assign", rule, { { messageId: "unexpected", data: { type: "a 'while' statement" }, - type: "AssignmentExpression", }, ], }, @@ -180,7 +189,6 @@ ruleTester.run("no-cond-assign", rule, { { messageId: "unexpected", data: { type: "a 'do...while' statement" }, - type: "AssignmentExpression", }, ], }, @@ -191,7 +199,6 @@ ruleTester.run("no-cond-assign", rule, { { messageId: "unexpected", data: { type: "a 'for' statement" }, - type: "AssignmentExpression", }, ], }, @@ -202,7 +209,6 @@ ruleTester.run("no-cond-assign", rule, { { messageId: "unexpected", data: { type: "an 'if' statement" }, - type: "AssignmentExpression", }, ], }, @@ -213,7 +219,6 @@ ruleTester.run("no-cond-assign", rule, { { messageId: "unexpected", data: { type: "a 'while' statement" }, - type: "AssignmentExpression", }, ], }, @@ -224,7 +229,6 @@ ruleTester.run("no-cond-assign", rule, { { messageId: "unexpected", data: { type: "a 'do...while' statement" }, - type: "AssignmentExpression", }, ], }, @@ -235,22 +239,33 @@ ruleTester.run("no-cond-assign", rule, { { messageId: "unexpected", data: { type: "a 'for' statement" }, - type: "AssignmentExpression", }, ], }, { code: "var x; var b = (x = 0) ? 1 : 0;", - errors: [{ messageId: "missing", type: "AssignmentExpression" }], + errors: [ + { + messageId: "missing", + }, + ], }, { code: "var x; var b = x && (y = 0) ? 1 : 0;", options: ["always"], - errors: [{ messageId: "unexpected", type: "AssignmentExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "(((3496.29)).bkufyydt = 2e308) ? foo : bar;", - errors: [{ messageId: "missing", type: "AssignmentExpression" }], + errors: [ + { + messageId: "missing", + }, + ], }, ], }); diff --git a/tests/lib/rules/no-console.js b/tests/lib/rules/no-console.js index 886d197bb01e..0979c3402a96 100644 --- a/tests/lib/rules/no-console.js +++ b/tests/lib/rules/no-console.js @@ -47,7 +47,6 @@ ruleTester.run("no-console", rule, { errors: [ { messageId: "unexpected", - type: "MemberExpression", suggestions: null, }, ], @@ -57,7 +56,6 @@ ruleTester.run("no-console", rule, { errors: [ { messageId: "unexpected", - type: "MemberExpression", suggestions: null, }, ], @@ -67,7 +65,6 @@ ruleTester.run("no-console", rule, { errors: [ { messageId: "unexpected", - type: "MemberExpression", suggestions: [ { messageId: "removeConsole", @@ -83,7 +80,6 @@ ruleTester.run("no-console", rule, { errors: [ { messageId: "unexpected", - type: "MemberExpression", suggestions: [ { messageId: "removeConsole", @@ -99,7 +95,6 @@ ruleTester.run("no-console", rule, { errors: [ { messageId: "unexpected", - type: "MemberExpression", suggestions: [ { messageId: "removeConsole", @@ -115,7 +110,6 @@ ruleTester.run("no-console", rule, { errors: [ { messageId: "unexpected", - type: "MemberExpression", suggestions: [ { messageId: "removeConsole", @@ -131,7 +125,6 @@ ruleTester.run("no-console", rule, { errors: [ { messageId: "unexpected", - type: "MemberExpression", suggestions: [ { messageId: "removeConsole", @@ -147,7 +140,6 @@ ruleTester.run("no-console", rule, { errors: [ { messageId: "unexpected", - type: "MemberExpression", suggestions: [ { messageId: "removeConsole", @@ -163,7 +155,6 @@ ruleTester.run("no-console", rule, { errors: [ { messageId: "unexpected", - type: "MemberExpression", suggestions: [ { messageId: "removeConsole", @@ -180,7 +171,6 @@ ruleTester.run("no-console", rule, { errors: [ { messageId: "unexpected", - type: "MemberExpression", suggestions: [ { messageId: "removeConsole", @@ -197,7 +187,6 @@ ruleTester.run("no-console", rule, { errors: [ { messageId: "unexpected", - type: "MemberExpression", suggestions: null, }, ], @@ -208,7 +197,6 @@ ruleTester.run("no-console", rule, { errors: [ { messageId: "unexpected", - type: "MemberExpression", suggestions: null, }, ], @@ -219,7 +207,6 @@ ruleTester.run("no-console", rule, { errors: [ { messageId: "unexpected", - type: "MemberExpression", suggestions: [ { messageId: "removeConsole", @@ -239,7 +226,6 @@ ruleTester.run("no-console", rule, { { messageId: "limited", data: { allowed: "warn" }, - type: "MemberExpression", suggestions: null, }, ], @@ -251,7 +237,6 @@ ruleTester.run("no-console", rule, { { messageId: "limited", data: { allowed: "log" }, - type: "MemberExpression", suggestions: null, }, ], @@ -263,7 +248,6 @@ ruleTester.run("no-console", rule, { { messageId: "limited", data: { allowed: "error" }, - type: "MemberExpression", suggestions: [ { messageId: "removeConsole", @@ -281,7 +265,6 @@ ruleTester.run("no-console", rule, { { messageId: "limited", data: { allowed: "warn" }, - type: "MemberExpression", suggestions: [ { messageId: "removeConsole", @@ -299,7 +282,6 @@ ruleTester.run("no-console", rule, { { messageId: "limited", data: { allowed: "log" }, - type: "MemberExpression", suggestions: [ { messageId: "removeConsole", @@ -317,7 +299,6 @@ ruleTester.run("no-console", rule, { { messageId: "limited", data: { allowed: "error" }, - type: "MemberExpression", suggestions: [ { messageId: "removeConsole", @@ -335,7 +316,6 @@ ruleTester.run("no-console", rule, { { messageId: "limited", data: { allowed: "error" }, - type: "MemberExpression", suggestions: [ { messageId: "removeConsole", @@ -353,7 +333,6 @@ ruleTester.run("no-console", rule, { { messageId: "limited", data: { allowed: "warn" }, - type: "MemberExpression", suggestions: [ { messageId: "removeConsole", @@ -372,7 +351,6 @@ ruleTester.run("no-console", rule, { { messageId: "limited", data: { allowed: "log" }, - type: "MemberExpression", suggestions: [ { messageId: "removeConsole", @@ -392,7 +370,6 @@ ruleTester.run("no-console", rule, { { messageId: "limited", data: { allowed: "warn, error" }, - type: "MemberExpression", suggestions: null, }, ], @@ -404,7 +381,6 @@ ruleTester.run("no-console", rule, { { messageId: "limited", data: { allowed: "warn, error" }, - type: "MemberExpression", suggestions: null, }, ], @@ -416,7 +392,6 @@ ruleTester.run("no-console", rule, { { messageId: "limited", data: { allowed: "warn, info" }, - type: "MemberExpression", suggestions: [ { messageId: "removeConsole", @@ -434,7 +409,6 @@ ruleTester.run("no-console", rule, { { messageId: "limited", data: { allowed: "warn, info, log" }, - type: "MemberExpression", suggestions: [ { messageId: "removeConsole", @@ -452,7 +426,6 @@ ruleTester.run("no-console", rule, { { messageId: "limited", data: { allowed: "warn, error, log" }, - type: "MemberExpression", suggestions: [ { messageId: "removeConsole", @@ -470,7 +443,6 @@ ruleTester.run("no-console", rule, { { messageId: "limited", data: { allowed: "info, log" }, - type: "MemberExpression", suggestions: [ { messageId: "removeConsole", @@ -488,7 +460,6 @@ ruleTester.run("no-console", rule, { { messageId: "limited", data: { allowed: "info, log" }, - type: "MemberExpression", suggestions: [ { messageId: "removeConsole", @@ -506,7 +477,6 @@ ruleTester.run("no-console", rule, { { messageId: "limited", data: { allowed: "warn, error" }, - type: "MemberExpression", suggestions: [ { messageId: "removeConsole", @@ -525,7 +495,6 @@ ruleTester.run("no-console", rule, { { messageId: "limited", data: { allowed: "log, error, warn" }, - type: "MemberExpression", suggestions: [ { messageId: "removeConsole", @@ -541,7 +510,6 @@ ruleTester.run("no-console", rule, { errors: [ { messageId: "unexpected", - type: "MemberExpression", suggestions: [ { messageId: "removeMethodCall", @@ -556,7 +524,6 @@ ruleTester.run("no-console", rule, { errors: [ { messageId: "unexpected", - type: "MemberExpression", suggestions: [ { messageId: "removeMethodCall", @@ -578,7 +545,6 @@ ruleTester.run("no-console", rule, { errors: [ { messageId: "unexpected", - type: "MemberExpression", suggestions: [ { messageId: "removeConsole", diff --git a/tests/lib/rules/no-const-assign.js b/tests/lib/rules/no-const-assign.js index 739f7d21f1ca..e03a8f00e1c2 100644 --- a/tests/lib/rules/no-const-assign.js +++ b/tests/lib/rules/no-const-assign.js @@ -43,43 +43,64 @@ ruleTester.run("no-const-assign", rule, { { code: "const x = 0; x = 1;", errors: [ - { messageId: "const", data: { name: "x" }, type: "Identifier" }, + { + messageId: "const", + data: { name: "x" }, + }, ], }, { code: "const {a: x} = {a: 0}; x = 1;", errors: [ - { messageId: "const", data: { name: "x" }, type: "Identifier" }, + { + messageId: "const", + data: { name: "x" }, + }, ], }, { code: "const x = 0; ({x} = {x: 1});", errors: [ - { messageId: "const", data: { name: "x" }, type: "Identifier" }, + { + messageId: "const", + data: { name: "x" }, + }, ], }, { code: "const x = 0; ({a: x = 1} = {});", errors: [ - { messageId: "const", data: { name: "x" }, type: "Identifier" }, + { + messageId: "const", + data: { name: "x" }, + }, ], }, { code: "const x = 0; x += 1;", errors: [ - { messageId: "const", data: { name: "x" }, type: "Identifier" }, + { + messageId: "const", + data: { name: "x" }, + }, ], }, { code: "const x = 0; ++x;", errors: [ - { messageId: "const", data: { name: "x" }, type: "Identifier" }, + { + messageId: "const", + data: { name: "x" }, + }, ], }, { code: "for (const i = 0; i < 10; ++i) { foo(i); }", errors: [ - { messageId: "const", data: { name: "i" }, type: "Identifier" }, + { + messageId: "const", + data: { name: "i" }, + }, ], }, { @@ -88,14 +109,12 @@ ruleTester.run("no-const-assign", rule, { { messageId: "const", data: { name: "x" }, - type: "Identifier", line: 1, column: 14, }, { messageId: "const", data: { name: "x" }, - type: "Identifier", line: 1, column: 21, }, @@ -104,19 +123,28 @@ ruleTester.run("no-const-assign", rule, { { code: "const x = 0; function foo() { x = x + 1; }", errors: [ - { messageId: "const", data: { name: "x" }, type: "Identifier" }, + { + messageId: "const", + data: { name: "x" }, + }, ], }, { code: "const x = 0; function foo(a) { x = a; }", errors: [ - { messageId: "const", data: { name: "x" }, type: "Identifier" }, + { + messageId: "const", + data: { name: "x" }, + }, ], }, { code: "const x = 0; while (true) { x = x + 1; }", errors: [ - { messageId: "const", data: { name: "x" }, type: "Identifier" }, + { + messageId: "const", + data: { name: "x" }, + }, ], }, { @@ -125,7 +153,6 @@ ruleTester.run("no-const-assign", rule, { { messageId: "const", data: { name: "x" }, - type: "Identifier", column: 18, }, ], @@ -136,7 +163,6 @@ ruleTester.run("no-const-assign", rule, { { messageId: "const", data: { name: "x" }, - type: "Identifier", column: 24, }, ], @@ -147,7 +173,6 @@ ruleTester.run("no-const-assign", rule, { { messageId: "const", data: { name: "x" }, - type: "Identifier", column: 18, }, ], @@ -158,7 +183,6 @@ ruleTester.run("no-const-assign", rule, { { messageId: "const", data: { name: "x" }, - type: "Identifier", column: 24, }, ], @@ -169,7 +193,6 @@ ruleTester.run("no-const-assign", rule, { { messageId: "const", data: { name: "x" }, - type: "Identifier", column: 19, }, ], @@ -180,7 +203,6 @@ ruleTester.run("no-const-assign", rule, { { messageId: "const", data: { name: "x" }, - type: "Identifier", column: 25, }, ], diff --git a/tests/lib/rules/no-constant-condition.js b/tests/lib/rules/no-constant-condition.js index 33474ba5169a..2f78062985ae 100644 --- a/tests/lib/rules/no-constant-condition.js +++ b/tests/lib/rules/no-constant-condition.js @@ -226,605 +226,1163 @@ ruleTester.run("no-constant-condition", rule, { invalid: [ { code: "for(;true;);", - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "for(;``;);", - errors: [{ messageId: "unexpected", type: "TemplateLiteral" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "for(;`foo`;);", - errors: [{ messageId: "unexpected", type: "TemplateLiteral" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "for(;`foo${bar}`;);", - errors: [{ messageId: "unexpected", type: "TemplateLiteral" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "do{}while(true)", - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "do{}while('1')", - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "do{}while(0)", - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "do{}while(t = -2)", - errors: [{ messageId: "unexpected", type: "AssignmentExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "do{}while(``)", - errors: [{ messageId: "unexpected", type: "TemplateLiteral" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "do{}while(`foo`)", - errors: [{ messageId: "unexpected", type: "TemplateLiteral" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "do{}while(`foo${bar}`)", - errors: [{ messageId: "unexpected", type: "TemplateLiteral" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "true ? 1 : 2;", - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "1 ? 1 : 2;", - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "q = 0 ? 1 : 2;", - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "(q = 0) ? 1 : 2;", - errors: [{ messageId: "unexpected", type: "AssignmentExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "`` ? 1 : 2;", - errors: [{ messageId: "unexpected", type: "TemplateLiteral" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "`foo` ? 1 : 2;", - errors: [{ messageId: "unexpected", type: "TemplateLiteral" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "`foo${bar}` ? 1 : 2;", - errors: [{ messageId: "unexpected", type: "TemplateLiteral" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(-2);", - errors: [{ messageId: "unexpected", type: "UnaryExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(true);", - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(1);", - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if({});", - errors: [{ messageId: "unexpected", type: "ObjectExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(0 < 1);", - errors: [{ messageId: "unexpected", type: "BinaryExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(0 || 1);", - errors: [{ messageId: "unexpected", type: "LogicalExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(a, 1);", - errors: [{ messageId: "unexpected", type: "SequenceExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(`foo`);", - errors: [{ messageId: "unexpected", type: "TemplateLiteral" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(``);", - errors: [{ messageId: "unexpected", type: "TemplateLiteral" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(`\\\n`);", - errors: [{ messageId: "unexpected", type: "TemplateLiteral" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(`${'bar'}`);", - errors: [{ messageId: "unexpected", type: "TemplateLiteral" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(`${'bar' + `foo`}`);", - errors: [{ messageId: "unexpected", type: "TemplateLiteral" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(`foo${false || true}`);", - errors: [{ messageId: "unexpected", type: "TemplateLiteral" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(`foo${0 || 1}`);", - errors: [{ messageId: "unexpected", type: "TemplateLiteral" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(`foo${bar}`);", - errors: [{ messageId: "unexpected", type: "TemplateLiteral" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(`${bar}foo`);", - errors: [{ messageId: "unexpected", type: "TemplateLiteral" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(!(true || a));", - errors: [{ messageId: "unexpected", type: "UnaryExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(!(a && void b && c));", - errors: [{ messageId: "unexpected", type: "UnaryExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(0 || !(a && null));", - errors: [{ messageId: "unexpected", type: "LogicalExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(1 + !(a || true));", - errors: [{ messageId: "unexpected", type: "BinaryExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(!(null && a) > 1);", - errors: [{ messageId: "unexpected", type: "BinaryExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(+(!(a && 0)));", - errors: [{ messageId: "unexpected", type: "UnaryExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(!typeof a === 'string');", - errors: [{ messageId: "unexpected", type: "BinaryExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(-('foo' || a));", - errors: [{ messageId: "unexpected", type: "UnaryExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(+(void a && b) === ~(1 || c));", - errors: [{ messageId: "unexpected", type: "BinaryExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(a ||= true);", - errors: [{ messageId: "unexpected", type: "AssignmentExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(a ||= 5);", - errors: [{ messageId: "unexpected", type: "AssignmentExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(a ||= 'foo' || b);", - errors: [{ messageId: "unexpected", type: "AssignmentExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(a ||= b || /regex/);", - errors: [{ messageId: "unexpected", type: "AssignmentExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(a ||= b ||= true);", - errors: [{ messageId: "unexpected", type: "AssignmentExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(a ||= b ||= c || 1);", - errors: [{ messageId: "unexpected", type: "AssignmentExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(!(a ||= true));", - errors: [{ messageId: "unexpected", type: "UnaryExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(!(a ||= 'foo') === true);", - errors: [{ messageId: "unexpected", type: "BinaryExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(!(a ||= 'foo') === false);", - errors: [{ messageId: "unexpected", type: "BinaryExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(a || (b ||= true));", - errors: [{ messageId: "unexpected", type: "LogicalExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if((a ||= 1) || b);", - errors: [{ messageId: "unexpected", type: "LogicalExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if((a ||= true) && true);", - errors: [{ messageId: "unexpected", type: "LogicalExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(true && (a ||= true));", - errors: [{ messageId: "unexpected", type: "LogicalExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(a &&= false);", - errors: [{ messageId: "unexpected", type: "AssignmentExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(a &&= null);", - errors: [{ messageId: "unexpected", type: "AssignmentExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(a &&= void b);", - errors: [{ messageId: "unexpected", type: "AssignmentExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(a &&= 0 && b);", - errors: [{ messageId: "unexpected", type: "AssignmentExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(a &&= b && '');", - errors: [{ messageId: "unexpected", type: "AssignmentExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(a &&= b &&= false);", - errors: [{ messageId: "unexpected", type: "AssignmentExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(a &&= b &&= c && false);", - errors: [{ messageId: "unexpected", type: "AssignmentExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(!(a &&= false));", - errors: [{ messageId: "unexpected", type: "UnaryExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(!(a &&= 0) + 1);", - errors: [{ messageId: "unexpected", type: "BinaryExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(a && (b &&= false));", - errors: [{ messageId: "unexpected", type: "LogicalExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if((a &&= null) && b);", - errors: [{ messageId: "unexpected", type: "LogicalExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(false || (a &&= false));", - errors: [{ messageId: "unexpected", type: "LogicalExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if((a &&= false) || false);", - errors: [{ messageId: "unexpected", type: "LogicalExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "while([]);", - errors: [{ messageId: "unexpected", type: "ArrayExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "while(~!0);", - errors: [{ messageId: "unexpected", type: "UnaryExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "while(x = 1);", - errors: [{ messageId: "unexpected", type: "AssignmentExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "while(function(){});", - errors: [{ messageId: "unexpected", type: "FunctionExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "while(true);", options: [{ checkLoops: "all" }], - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "while(1);", - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "while(() => {});", errors: [ - { messageId: "unexpected", type: "ArrowFunctionExpression" }, + { + messageId: "unexpected", + }, ], }, { code: "while(`foo`);", - errors: [{ messageId: "unexpected", type: "TemplateLiteral" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "while(``);", - errors: [{ messageId: "unexpected", type: "TemplateLiteral" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "while(`${'foo'}`);", - errors: [{ messageId: "unexpected", type: "TemplateLiteral" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "while(`${'foo' + 'bar'}`);", - errors: [{ messageId: "unexpected", type: "TemplateLiteral" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, // #5228 , typeof conditions { code: "if(typeof x){}", - errors: [{ messageId: "unexpected", type: "UnaryExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(typeof 'abc' === 'string'){}", - errors: [{ messageId: "unexpected", type: "BinaryExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(a = typeof b){}", - errors: [{ messageId: "unexpected", type: "AssignmentExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(a, typeof b){}", - errors: [{ messageId: "unexpected", type: "SequenceExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(typeof 'a' == 'string' || typeof 'b' == 'string'){}", - errors: [{ messageId: "unexpected", type: "LogicalExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "while(typeof x){}", - errors: [{ messageId: "unexpected", type: "UnaryExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, // #5726, void conditions { code: "if(1 || void x);", - errors: [{ messageId: "unexpected", type: "LogicalExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(void x);", - errors: [{ messageId: "unexpected", type: "UnaryExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(y = void x);", - errors: [{ messageId: "unexpected", type: "AssignmentExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(x, void x);", - errors: [{ messageId: "unexpected", type: "SequenceExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(void x === void y);", - errors: [{ messageId: "unexpected", type: "BinaryExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(void x && a);", - errors: [{ messageId: "unexpected", type: "LogicalExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(a && void x);", - errors: [{ messageId: "unexpected", type: "LogicalExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, // #5693 { code: "if(false && abc==='str'){}", - errors: [{ messageId: "unexpected", type: "LogicalExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(true || abc==='str'){}", - errors: [{ messageId: "unexpected", type: "LogicalExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(1 || abc==='str'){}", - errors: [{ messageId: "unexpected", type: "LogicalExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(abc==='str' || true){}", - errors: [{ messageId: "unexpected", type: "LogicalExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(abc==='str' || true || def ==='str'){}", - errors: [{ messageId: "unexpected", type: "LogicalExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(false || true){}", - errors: [{ messageId: "unexpected", type: "LogicalExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(typeof abc==='str' || true){}", - errors: [{ messageId: "unexpected", type: "LogicalExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, // #11181, string literals { code: "if('str' || a){}", - errors: [{ messageId: "unexpected", type: "LogicalExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if('str' || abc==='str'){}", - errors: [{ messageId: "unexpected", type: "LogicalExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if('str1' || 'str2'){}", - errors: [{ messageId: "unexpected", type: "LogicalExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if('str1' && 'str2'){}", - errors: [{ messageId: "unexpected", type: "LogicalExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(abc==='str' || 'str'){}", - errors: [{ messageId: "unexpected", type: "LogicalExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(a || 'str'){}", - errors: [{ messageId: "unexpected", type: "LogicalExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "while(x = 1);", options: [{ checkLoops: "all" }], - errors: [{ messageId: "unexpected", type: "AssignmentExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "do{ }while(x = 1)", options: [{ checkLoops: "all" }], - errors: [{ messageId: "unexpected", type: "AssignmentExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "for (;true;) {};", options: [{ checkLoops: "all" }], - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function* foo(){while(true){} yield 'foo';}", options: [{ checkLoops: "all" }], - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function* foo(){while(true){} yield 'foo';}", options: [{ checkLoops: true }], - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function* foo(){while(true){if (true) {yield 'foo';}}}", options: [{ checkLoops: "all" }], - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function* foo(){while(true){if (true) {yield 'foo';}}}", options: [{ checkLoops: true }], - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function* foo(){while(true){yield 'foo';} while(true) {}}", options: [{ checkLoops: "all" }], - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function* foo(){while(true){yield 'foo';} while(true) {}}", options: [{ checkLoops: true }], - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "var a = function* foo(){while(true){} yield 'foo';}", options: [{ checkLoops: "all" }], - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "var a = function* foo(){while(true){} yield 'foo';}", options: [{ checkLoops: true }], - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "while (true) { function* foo() {yield;}}", options: [{ checkLoops: "all" }], - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "while (true) { function* foo() {yield;}}", options: [{ checkLoops: true }], - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function* foo(){if (true) {yield 'foo';}}", - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function* foo() {for (let foo = yield; true;) {}}", - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function* foo() {for (foo = yield; true;) {}}", - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() {while (true) {function* bar() {while (true) {yield;}}}}", options: [{ checkLoops: "all" }], - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() {while (true) {const bar = function*() {while (true) {yield;}}}}", options: [{ checkLoops: "all" }], - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function* foo() { for (let foo = 1 + 2 + 3 + (yield); true; baz) {}}", - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, // #12225 { code: "if([a]) {}", - errors: [{ messageId: "unexpected", type: "ArrayExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if([]) {}", - errors: [{ messageId: "unexpected", type: "ArrayExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(''+['a']) {}", - errors: [{ messageId: "unexpected", type: "BinaryExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(''+[]) {}", - errors: [{ messageId: "unexpected", type: "BinaryExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(+1) {}", - errors: [{ messageId: "unexpected", type: "UnaryExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if ([,] + ''){}", - errors: [{ messageId: "unexpected", type: "BinaryExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, // #13238 { code: "if(/foo/ui);", languageOptions: { ecmaVersion: 11 }, - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(0n);", languageOptions: { ecmaVersion: 11 }, - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(0b0n);", languageOptions: { ecmaVersion: 11 }, - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(0o0n);", languageOptions: { ecmaVersion: 11 }, - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(0x0n);", languageOptions: { ecmaVersion: 11 }, - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(0b1n);", languageOptions: { ecmaVersion: 11 }, - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(0o1n);", languageOptions: { ecmaVersion: 11 }, - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(0x1n);", languageOptions: { ecmaVersion: 11 }, - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(0x1n || foo);", languageOptions: { ecmaVersion: 11 }, - errors: [{ messageId: "unexpected", type: "LogicalExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, // Classes and instances are always truthy diff --git a/tests/lib/rules/no-constructor-return.js b/tests/lib/rules/no-constructor-return.js index ca195e703767..a386764fc8b7 100644 --- a/tests/lib/rules/no-constructor-return.js +++ b/tests/lib/rules/no-constructor-return.js @@ -20,7 +20,11 @@ const ruleTester = new RuleTester({ languageOptions: { ecmaVersion: 2015, sourceType: "script" }, }); -const errors = [{ type: "ReturnStatement", messageId: "unexpected" }]; +const errors = [ + { + messageId: "unexpected", + }, +]; ruleTester.run("no-constructor-return", rule, { valid: [ diff --git a/tests/lib/rules/no-continue.js b/tests/lib/rules/no-continue.js index 72f3d2a6a686..a091d204b5f1 100644 --- a/tests/lib/rules/no-continue.js +++ b/tests/lib/rules/no-continue.js @@ -30,7 +30,6 @@ ruleTester.run("no-continue", rule, { errors: [ { messageId: "unexpected", - type: "ContinueStatement", }, ], }, @@ -39,7 +38,6 @@ ruleTester.run("no-continue", rule, { errors: [ { messageId: "unexpected", - type: "ContinueStatement", }, ], }, @@ -48,7 +46,6 @@ ruleTester.run("no-continue", rule, { errors: [ { messageId: "unexpected", - type: "ContinueStatement", }, ], }, @@ -57,7 +54,6 @@ ruleTester.run("no-continue", rule, { errors: [ { messageId: "unexpected", - type: "ContinueStatement", }, ], }, diff --git a/tests/lib/rules/no-control-regex.js b/tests/lib/rules/no-control-regex.js index 193b00557344..7c2b1f2ba0d3 100644 --- a/tests/lib/rules/no-control-regex.js +++ b/tests/lib/rules/no-control-regex.js @@ -47,7 +47,6 @@ ruleTester.run("no-control-regex", rule, { { messageId: "unexpected", data: { controlChars: "\\x1f" }, - type: "Literal", }, ], }, @@ -57,7 +56,6 @@ ruleTester.run("no-control-regex", rule, { { messageId: "unexpected", data: { controlChars: "\\x1f" }, - type: "Literal", }, ], }, @@ -67,7 +65,6 @@ ruleTester.run("no-control-regex", rule, { { messageId: "unexpected", data: { controlChars: "\\x1f" }, - type: "Literal", }, ], }, @@ -77,7 +74,6 @@ ruleTester.run("no-control-regex", rule, { { messageId: "unexpected", data: { controlChars: "\\x1f" }, - type: "Literal", }, ], }, @@ -87,7 +83,6 @@ ruleTester.run("no-control-regex", rule, { { messageId: "unexpected", data: { controlChars: "\\x1f, \\x1e" }, - type: "Literal", }, ], }, @@ -97,7 +92,6 @@ ruleTester.run("no-control-regex", rule, { { messageId: "unexpected", data: { controlChars: "\\x1f, \\x00" }, - type: "Literal", }, ], }, @@ -107,7 +101,6 @@ ruleTester.run("no-control-regex", rule, { { messageId: "unexpected", data: { controlChars: "\\x1f, \\x1f" }, - type: "Literal", }, ], }, @@ -117,7 +110,6 @@ ruleTester.run("no-control-regex", rule, { { messageId: "unexpected", data: { controlChars: "\\x1f" }, - type: "Literal", }, ], }, @@ -128,7 +120,6 @@ ruleTester.run("no-control-regex", rule, { { messageId: "unexpected", data: { controlChars: "\\x1f" }, - type: "Literal", }, ], }, @@ -139,7 +130,6 @@ ruleTester.run("no-control-regex", rule, { { messageId: "unexpected", data: { controlChars: "\\x1f" }, - type: "Literal", }, ], }, @@ -149,7 +139,6 @@ ruleTester.run("no-control-regex", rule, { { messageId: "unexpected", data: { controlChars: "\\x1f" }, - type: "Literal", }, ], }, @@ -160,7 +149,6 @@ ruleTester.run("no-control-regex", rule, { { messageId: "unexpected", data: { controlChars: "\\x1f" }, - type: "Literal", }, ], }, @@ -171,7 +159,6 @@ ruleTester.run("no-control-regex", rule, { { messageId: "unexpected", data: { controlChars: "\\x1f" }, - type: "Literal", }, ], }, @@ -182,7 +169,6 @@ ruleTester.run("no-control-regex", rule, { { messageId: "unexpected", data: { controlChars: "\\x1f" }, - type: "Literal", }, ], }, @@ -193,7 +179,6 @@ ruleTester.run("no-control-regex", rule, { { messageId: "unexpected", data: { controlChars: "\\x1f" }, - type: "Literal", }, ], }, @@ -203,7 +188,6 @@ ruleTester.run("no-control-regex", rule, { { messageId: "unexpected", data: { controlChars: "\\x1f" }, - type: "Literal", }, ], }, @@ -213,7 +197,6 @@ ruleTester.run("no-control-regex", rule, { { messageId: "unexpected", data: { controlChars: "\\x1f" }, - type: "Literal", }, ], }, @@ -223,7 +206,6 @@ ruleTester.run("no-control-regex", rule, { { messageId: "unexpected", data: { controlChars: "\\x1f" }, - type: "Literal", }, ], }, @@ -234,7 +216,6 @@ ruleTester.run("no-control-regex", rule, { { messageId: "unexpected", data: { controlChars: "\\x1f" }, - type: "Literal", }, ], }, @@ -245,7 +226,6 @@ ruleTester.run("no-control-regex", rule, { { messageId: "unexpected", data: { controlChars: "\\x11" }, - type: "Literal", column: 1, }, ], diff --git a/tests/lib/rules/no-debugger.js b/tests/lib/rules/no-debugger.js index 610f206f84af..51e7d94ed093 100644 --- a/tests/lib/rules/no-debugger.js +++ b/tests/lib/rules/no-debugger.js @@ -24,7 +24,11 @@ ruleTester.run("no-debugger", rule, { { code: "if (foo) debugger", output: null, - errors: [{ messageId: "unexpected", type: "DebuggerStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, ], }); diff --git a/tests/lib/rules/no-delete-var.js b/tests/lib/rules/no-delete-var.js index e7c3aea64e0c..639b6e3ec23c 100644 --- a/tests/lib/rules/no-delete-var.js +++ b/tests/lib/rules/no-delete-var.js @@ -28,7 +28,11 @@ ruleTester.run("no-delete-var", rule, { invalid: [ { code: "delete x", - errors: [{ messageId: "unexpected", type: "UnaryExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, ], }); diff --git a/tests/lib/rules/no-div-regex.js b/tests/lib/rules/no-div-regex.js index f51a0c69275c..18906d5e647f 100644 --- a/tests/lib/rules/no-div-regex.js +++ b/tests/lib/rules/no-div-regex.js @@ -27,7 +27,11 @@ ruleTester.run("no-div-regex", rule, { { code: "var f = function() { return /=foo/; };", output: "var f = function() { return /[=]foo/; };", - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, ], }); diff --git a/tests/lib/rules/no-dupe-class-members.js b/tests/lib/rules/no-dupe-class-members.js index 5c71c29dbb80..1be155ee9aad 100644 --- a/tests/lib/rules/no-dupe-class-members.js +++ b/tests/lib/rules/no-dupe-class-members.js @@ -63,7 +63,6 @@ ruleTester.run("no-dupe-class-members", rule, { code: "class A { foo() {} foo() {} }", errors: [ { - type: "MethodDefinition", line: 1, column: 20, messageId: "unexpected", @@ -75,7 +74,6 @@ ruleTester.run("no-dupe-class-members", rule, { code: "!class A { foo() {} foo() {} };", errors: [ { - type: "MethodDefinition", line: 1, column: 21, messageId: "unexpected", @@ -87,7 +85,6 @@ ruleTester.run("no-dupe-class-members", rule, { code: "class A { 'foo'() {} 'foo'() {} }", errors: [ { - type: "MethodDefinition", line: 1, column: 22, messageId: "unexpected", @@ -99,7 +96,6 @@ ruleTester.run("no-dupe-class-members", rule, { code: "class A { 10() {} 1e1() {} }", errors: [ { - type: "MethodDefinition", line: 1, column: 19, messageId: "unexpected", @@ -111,7 +107,6 @@ ruleTester.run("no-dupe-class-members", rule, { code: "class A { ['foo']() {} ['foo']() {} }", errors: [ { - type: "MethodDefinition", line: 1, column: 24, messageId: "unexpected", @@ -123,7 +118,6 @@ ruleTester.run("no-dupe-class-members", rule, { code: "class A { static ['foo']() {} static foo() {} }", errors: [ { - type: "MethodDefinition", line: 1, column: 31, messageId: "unexpected", @@ -135,7 +129,6 @@ ruleTester.run("no-dupe-class-members", rule, { code: "class A { set 'foo'(value) {} set ['foo'](val) {} }", errors: [ { - type: "MethodDefinition", line: 1, column: 31, messageId: "unexpected", @@ -147,7 +140,6 @@ ruleTester.run("no-dupe-class-members", rule, { code: "class A { ''() {} ['']() {} }", errors: [ { - type: "MethodDefinition", line: 1, column: 19, messageId: "unexpected", @@ -159,7 +151,6 @@ ruleTester.run("no-dupe-class-members", rule, { code: "class A { [`foo`]() {} [`foo`]() {} }", errors: [ { - type: "MethodDefinition", line: 1, column: 24, messageId: "unexpected", @@ -171,7 +162,6 @@ ruleTester.run("no-dupe-class-members", rule, { code: "class A { static get [`foo`]() {} static get ['foo']() {} }", errors: [ { - type: "MethodDefinition", line: 1, column: 35, messageId: "unexpected", @@ -183,7 +173,6 @@ ruleTester.run("no-dupe-class-members", rule, { code: "class A { foo() {} [`foo`]() {} }", errors: [ { - type: "MethodDefinition", line: 1, column: 20, messageId: "unexpected", @@ -195,7 +184,6 @@ ruleTester.run("no-dupe-class-members", rule, { code: "class A { get [`foo`]() {} 'foo'() {} }", errors: [ { - type: "MethodDefinition", line: 1, column: 28, messageId: "unexpected", @@ -207,7 +195,6 @@ ruleTester.run("no-dupe-class-members", rule, { code: "class A { static 'foo'() {} static [`foo`]() {} }", errors: [ { - type: "MethodDefinition", line: 1, column: 29, messageId: "unexpected", @@ -219,7 +206,6 @@ ruleTester.run("no-dupe-class-members", rule, { code: "class A { ['constructor']() {} ['constructor']() {} }", errors: [ { - type: "MethodDefinition", line: 1, column: 32, messageId: "unexpected", @@ -231,7 +217,6 @@ ruleTester.run("no-dupe-class-members", rule, { code: "class A { static [`constructor`]() {} static constructor() {} }", errors: [ { - type: "MethodDefinition", line: 1, column: 39, messageId: "unexpected", @@ -243,7 +228,6 @@ ruleTester.run("no-dupe-class-members", rule, { code: "class A { static constructor() {} static 'constructor'() {} }", errors: [ { - type: "MethodDefinition", line: 1, column: 35, messageId: "unexpected", @@ -255,7 +239,6 @@ ruleTester.run("no-dupe-class-members", rule, { code: "class A { [123]() {} [123]() {} }", errors: [ { - type: "MethodDefinition", line: 1, column: 22, messageId: "unexpected", @@ -267,7 +250,6 @@ ruleTester.run("no-dupe-class-members", rule, { code: "class A { [0x10]() {} 16() {} }", errors: [ { - type: "MethodDefinition", line: 1, column: 23, messageId: "unexpected", @@ -279,7 +261,6 @@ ruleTester.run("no-dupe-class-members", rule, { code: "class A { [100]() {} [1e2]() {} }", errors: [ { - type: "MethodDefinition", line: 1, column: 22, messageId: "unexpected", @@ -291,7 +272,6 @@ ruleTester.run("no-dupe-class-members", rule, { code: "class A { [123.00]() {} [`123`]() {} }", errors: [ { - type: "MethodDefinition", line: 1, column: 25, messageId: "unexpected", @@ -303,7 +283,6 @@ ruleTester.run("no-dupe-class-members", rule, { code: "class A { static '65'() {} static [0o101]() {} }", errors: [ { - type: "MethodDefinition", line: 1, column: 28, messageId: "unexpected", @@ -316,7 +295,6 @@ ruleTester.run("no-dupe-class-members", rule, { languageOptions: { ecmaVersion: 2020 }, errors: [ { - type: "MethodDefinition", line: 1, column: 23, messageId: "unexpected", @@ -328,7 +306,6 @@ ruleTester.run("no-dupe-class-members", rule, { code: "class A { [null]() {} 'null'() {} }", errors: [ { - type: "MethodDefinition", line: 1, column: 23, messageId: "unexpected", @@ -340,14 +317,12 @@ ruleTester.run("no-dupe-class-members", rule, { code: "class A { foo() {} foo() {} foo() {} }", errors: [ { - type: "MethodDefinition", line: 1, column: 20, messageId: "unexpected", data: { name: "foo" }, }, { - type: "MethodDefinition", line: 1, column: 29, messageId: "unexpected", @@ -359,7 +334,6 @@ ruleTester.run("no-dupe-class-members", rule, { code: "class A { static foo() {} static foo() {} }", errors: [ { - type: "MethodDefinition", line: 1, column: 27, messageId: "unexpected", @@ -371,7 +345,6 @@ ruleTester.run("no-dupe-class-members", rule, { code: "class A { foo() {} get foo() {} }", errors: [ { - type: "MethodDefinition", line: 1, column: 20, messageId: "unexpected", @@ -383,7 +356,6 @@ ruleTester.run("no-dupe-class-members", rule, { code: "class A { set foo(value) {} foo() {} }", errors: [ { - type: "MethodDefinition", line: 1, column: 29, messageId: "unexpected", @@ -395,7 +367,6 @@ ruleTester.run("no-dupe-class-members", rule, { code: "class A { foo; foo; }", errors: [ { - type: "PropertyDefinition", line: 1, column: 16, messageId: "unexpected", diff --git a/tests/lib/rules/no-dupe-else-if.js b/tests/lib/rules/no-dupe-else-if.js index f4407eeca2d9..7b6775517384 100644 --- a/tests/lib/rules/no-dupe-else-if.js +++ b/tests/lib/rules/no-dupe-else-if.js @@ -70,67 +70,100 @@ ruleTester.run("no-dupe-else-if", rule, { { code: "if (a) {} else if (a) {}", errors: [ - { messageId: "unexpected", type: "Identifier", column: 20 }, + { + messageId: "unexpected", + column: 20, + }, ], }, { code: "if (a); else if (a);", errors: [ - { messageId: "unexpected", type: "Identifier", column: 18 }, + { + messageId: "unexpected", + column: 18, + }, ], }, { code: "if (a) {} else if (a) {} else {}", errors: [ - { messageId: "unexpected", type: "Identifier", column: 20 }, + { + messageId: "unexpected", + column: 20, + }, ], }, { code: "if (a) {} else if (b) {} else if (a) {} else if (c) {}", errors: [ - { messageId: "unexpected", type: "Identifier", column: 35 }, + { + messageId: "unexpected", + column: 35, + }, ], }, { code: "if (a) {} else if (b) {} else if (a) {}", errors: [ - { messageId: "unexpected", type: "Identifier", column: 35 }, + { + messageId: "unexpected", + column: 35, + }, ], }, { code: "if (a) {} else if (b) {} else if (c) {} else if (a) {}", errors: [ - { messageId: "unexpected", type: "Identifier", column: 50 }, + { + messageId: "unexpected", + column: 50, + }, ], }, { code: "if (a) {} else if (b) {} else if (b) {}", errors: [ - { messageId: "unexpected", type: "Identifier", column: 35 }, + { + messageId: "unexpected", + column: 35, + }, ], }, { code: "if (a) {} else if (b) {} else if (b) {} else {}", errors: [ - { messageId: "unexpected", type: "Identifier", column: 35 }, + { + messageId: "unexpected", + column: 35, + }, ], }, { code: "if (a) {} else if (b) {} else if (c) {} else if (b) {}", errors: [ - { messageId: "unexpected", type: "Identifier", column: 50 }, + { + messageId: "unexpected", + column: 50, + }, ], }, { code: "if (a); else if (b); else if (c); else if (b); else if (d); else;", errors: [ - { messageId: "unexpected", type: "Identifier", column: 44 }, + { + messageId: "unexpected", + column: 44, + }, ], }, { code: "if (a); else if (b); else if (c); else if (d); else if (b); else if (e);", errors: [ - { messageId: "unexpected", type: "Identifier", column: 57 }, + { + messageId: "unexpected", + column: 57, + }, ], }, @@ -138,8 +171,14 @@ ruleTester.run("no-dupe-else-if", rule, { { code: "if (a) {} else if (a) {} else if (a) {}", errors: [ - { messageId: "unexpected", type: "Identifier", column: 20 }, - { messageId: "unexpected", type: "Identifier", column: 35 }, + { + messageId: "unexpected", + column: 20, + }, + { + messageId: "unexpected", + column: 35, + }, ], }, @@ -147,9 +186,18 @@ ruleTester.run("no-dupe-else-if", rule, { { code: "if (a) {} else if (b) {} else if (a) {} else if (b) {} else if (a) {}", errors: [ - { messageId: "unexpected", type: "Identifier", column: 35 }, - { messageId: "unexpected", type: "Identifier", column: 50 }, - { messageId: "unexpected", type: "Identifier", column: 65 }, + { + messageId: "unexpected", + column: 35, + }, + { + messageId: "unexpected", + column: 50, + }, + { + messageId: "unexpected", + column: 65, + }, ], }, @@ -157,7 +205,10 @@ ruleTester.run("no-dupe-else-if", rule, { { code: "if (a) { if (b) {} } else if (a) {}", errors: [ - { messageId: "unexpected", type: "Identifier", column: 31 }, + { + messageId: "unexpected", + column: 31, + }, ], }, @@ -167,7 +218,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "BinaryExpression", column: 26, }, ], @@ -177,21 +227,24 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "BinaryExpression", column: 24, }, ], }, { code: "if (true) {} else if (true) {}", - errors: [{ messageId: "unexpected", type: "Literal", column: 23 }], + errors: [ + { + messageId: "unexpected", + column: 23, + }, + ], }, { code: "if (a && b) {} else if (a && b) {}", errors: [ { messageId: "unexpected", - type: "LogicalExpression", column: 25, }, ], @@ -201,7 +254,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", column: 31, }, ], @@ -209,7 +261,10 @@ ruleTester.run("no-dupe-else-if", rule, { { code: "if (f(a)) {} else if (f(a)) {}", errors: [ - { messageId: "unexpected", type: "CallExpression", column: 23 }, + { + messageId: "unexpected", + column: 23, + }, ], }, @@ -219,7 +274,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "BinaryExpression", column: 26, }, ], @@ -229,7 +283,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "BinaryExpression", column: 26, }, ], @@ -241,7 +294,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "BinaryExpression", column: 27, }, ], @@ -251,14 +303,23 @@ ruleTester.run("no-dupe-else-if", rule, { { code: "if (a || b) {} else if (a) {}", errors: [ - { messageId: "unexpected", type: "Identifier", column: 25 }, + { + messageId: "unexpected", + column: 25, + }, ], }, { code: "if (a || b) {} else if (a) {} else if (b) {}", errors: [ - { messageId: "unexpected", type: "Identifier", column: 25 }, - { messageId: "unexpected", type: "Identifier", column: 40 }, + { + messageId: "unexpected", + column: 25, + }, + { + messageId: "unexpected", + column: 40, + }, ], }, { @@ -266,7 +327,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", column: 25, }, ], @@ -276,7 +336,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", column: 35, }, ], @@ -286,7 +345,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", column: 45, }, ], @@ -296,7 +354,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", column: 42, }, ], @@ -306,7 +363,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", column: 20, }, ], @@ -316,7 +372,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", column: 25, }, ], @@ -326,7 +381,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", column: 25, }, ], @@ -336,7 +390,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", column: 25, }, ], @@ -346,7 +399,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", column: 35, }, ], @@ -356,7 +408,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", column: 35, }, ], @@ -366,7 +417,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", column: 40, }, ], @@ -376,7 +426,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", column: 30, }, ], @@ -386,7 +435,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", column: 25, }, ], @@ -396,7 +444,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", column: 35, }, ], @@ -406,7 +453,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", column: 39, }, ], @@ -416,7 +462,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", column: 35, }, ], @@ -426,7 +471,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", column: 40, }, ], @@ -436,7 +480,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", column: 39, }, ], @@ -446,7 +489,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", column: 25, }, ], @@ -456,7 +498,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", column: 55, }, ], @@ -466,7 +507,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", column: 30, }, ], @@ -476,7 +516,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", column: 32, }, ], @@ -486,7 +525,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", column: 55, }, ], @@ -496,7 +534,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", column: 35, }, ], @@ -506,7 +543,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", column: 20, }, ], @@ -516,7 +552,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", column: 25, }, ], @@ -524,7 +559,10 @@ ruleTester.run("no-dupe-else-if", rule, { { code: "if (a || a) {} else if (a) {}", errors: [ - { messageId: "unexpected", type: "Identifier", column: 25 }, + { + messageId: "unexpected", + column: 25, + }, ], }, { @@ -532,7 +570,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", column: 20, }, ], @@ -542,7 +579,6 @@ ruleTester.run("no-dupe-else-if", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", column: 25, }, ], @@ -550,7 +586,10 @@ ruleTester.run("no-dupe-else-if", rule, { { code: "if (a && a) {} else if (a) {}", errors: [ - { messageId: "unexpected", type: "Identifier", column: 25 }, + { + messageId: "unexpected", + column: 25, + }, ], }, ], diff --git a/tests/lib/rules/no-dupe-keys.js b/tests/lib/rules/no-dupe-keys.js index c5dc8956d7c9..0dada02cc899 100644 --- a/tests/lib/rules/no-dupe-keys.js +++ b/tests/lib/rules/no-dupe-keys.js @@ -125,7 +125,6 @@ ruleTester.run("no-dupe-keys", rule, { { messageId: "unexpected", data: { name: "a" }, - type: "ObjectExpression", }, ], }, @@ -135,7 +134,6 @@ ruleTester.run("no-dupe-keys", rule, { { messageId: "unexpected", data: { name: "y" }, - type: "ObjectExpression", }, ], }, @@ -145,7 +143,6 @@ ruleTester.run("no-dupe-keys", rule, { { messageId: "unexpected", data: { name: "" }, - type: "ObjectExpression", }, ], }, @@ -156,7 +153,6 @@ ruleTester.run("no-dupe-keys", rule, { { messageId: "unexpected", data: { name: "" }, - type: "ObjectExpression", }, ], }, @@ -166,7 +162,6 @@ ruleTester.run("no-dupe-keys", rule, { { messageId: "unexpected", data: { name: "1" }, - type: "ObjectExpression", }, ], }, @@ -176,7 +171,6 @@ ruleTester.run("no-dupe-keys", rule, { { messageId: "unexpected", data: { name: "10" }, - type: "ObjectExpression", }, ], }, @@ -187,7 +181,6 @@ ruleTester.run("no-dupe-keys", rule, { { messageId: "unexpected", data: { name: "1" }, - type: "ObjectExpression", }, ], }, @@ -198,7 +191,6 @@ ruleTester.run("no-dupe-keys", rule, { { messageId: "unexpected", data: { name: "1" }, - type: "ObjectExpression", }, ], }, @@ -209,7 +201,6 @@ ruleTester.run("no-dupe-keys", rule, { { messageId: "unexpected", data: { name: "1" }, - type: "ObjectExpression", }, ], }, @@ -220,7 +211,6 @@ ruleTester.run("no-dupe-keys", rule, { { messageId: "unexpected", data: { name: "10" }, - type: "ObjectExpression", }, ], }, @@ -230,7 +220,6 @@ ruleTester.run("no-dupe-keys", rule, { { messageId: "unexpected", data: { name: "z" }, - type: "ObjectExpression", }, ], }, @@ -252,7 +241,6 @@ ruleTester.run("no-dupe-keys", rule, { { messageId: "unexpected", data: { name: "a" }, - type: "ObjectExpression", }, ], }, @@ -263,7 +251,6 @@ ruleTester.run("no-dupe-keys", rule, { { messageId: "unexpected", data: { name: "a" }, - type: "ObjectExpression", }, ], }, @@ -274,7 +261,6 @@ ruleTester.run("no-dupe-keys", rule, { { messageId: "unexpected", data: { name: "b" }, - type: "ObjectExpression", }, ], }, @@ -285,7 +271,6 @@ ruleTester.run("no-dupe-keys", rule, { { messageId: "unexpected", data: { name: "/(?0)/" }, - type: "ObjectExpression", }, ], }, @@ -296,7 +281,6 @@ ruleTester.run("no-dupe-keys", rule, { { messageId: "unexpected", data: { name: "__proto__" }, - type: "ObjectExpression", }, ], }, @@ -307,7 +291,6 @@ ruleTester.run("no-dupe-keys", rule, { { messageId: "unexpected", data: { name: "__proto__" }, - type: "ObjectExpression", }, ], }, @@ -318,7 +301,6 @@ ruleTester.run("no-dupe-keys", rule, { { messageId: "unexpected", data: { name: "__proto__" }, - type: "ObjectExpression", }, ], }, @@ -329,7 +311,6 @@ ruleTester.run("no-dupe-keys", rule, { { messageId: "unexpected", data: { name: "__proto__" }, - type: "ObjectExpression", }, ], }, @@ -340,7 +321,6 @@ ruleTester.run("no-dupe-keys", rule, { { messageId: "unexpected", data: { name: "__proto__" }, - type: "ObjectExpression", }, ], }, @@ -351,7 +331,6 @@ ruleTester.run("no-dupe-keys", rule, { { messageId: "unexpected", data: { name: "a" }, - type: "ObjectExpression", }, ], }, diff --git a/tests/lib/rules/no-duplicate-case.js b/tests/lib/rules/no-duplicate-case.js index 891c6dc3c26e..47b54cfc9d9c 100644 --- a/tests/lib/rules/no-duplicate-case.js +++ b/tests/lib/rules/no-duplicate-case.js @@ -39,7 +39,6 @@ ruleTester.run("no-duplicate-case", rule, { errors: [ { messageId: "unexpected", - type: "SwitchCase", column: 39, }, ], @@ -49,7 +48,6 @@ ruleTester.run("no-duplicate-case", rule, { errors: [ { messageId: "unexpected", - type: "SwitchCase", column: 43, }, ], @@ -59,7 +57,6 @@ ruleTester.run("no-duplicate-case", rule, { errors: [ { messageId: "unexpected", - type: "SwitchCase", column: 50, }, ], @@ -69,7 +66,6 @@ ruleTester.run("no-duplicate-case", rule, { errors: [ { messageId: "unexpected", - type: "SwitchCase", column: 69, }, ], @@ -79,7 +75,6 @@ ruleTester.run("no-duplicate-case", rule, { errors: [ { messageId: "unexpected", - type: "SwitchCase", column: 103, }, ], @@ -89,7 +84,6 @@ ruleTester.run("no-duplicate-case", rule, { errors: [ { messageId: "unexpected", - type: "SwitchCase", column: 87, }, ], @@ -99,7 +93,6 @@ ruleTester.run("no-duplicate-case", rule, { errors: [ { messageId: "unexpected", - type: "SwitchCase", column: 97, }, ], @@ -109,7 +102,6 @@ ruleTester.run("no-duplicate-case", rule, { errors: [ { messageId: "unexpected", - type: "SwitchCase", column: 83, }, ], @@ -119,7 +111,6 @@ ruleTester.run("no-duplicate-case", rule, { errors: [ { messageId: "unexpected", - type: "SwitchCase", column: 70, }, ], @@ -129,7 +120,6 @@ ruleTester.run("no-duplicate-case", rule, { errors: [ { messageId: "unexpected", - type: "SwitchCase", column: 22, }, ], @@ -139,12 +129,10 @@ ruleTester.run("no-duplicate-case", rule, { errors: [ { messageId: "unexpected", - type: "SwitchCase", column: 44, }, { messageId: "unexpected", - type: "SwitchCase", column: 74, }, ], @@ -154,7 +142,6 @@ ruleTester.run("no-duplicate-case", rule, { errors: [ { messageId: "unexpected", - type: "SwitchCase", column: 69, }, ], @@ -164,7 +151,6 @@ ruleTester.run("no-duplicate-case", rule, { errors: [ { messageId: "unexpected", - type: "SwitchCase", line: 3, column: 13, }, @@ -175,7 +161,6 @@ ruleTester.run("no-duplicate-case", rule, { errors: [ { messageId: "unexpected", - type: "SwitchCase", line: 3, column: 13, }, @@ -186,13 +171,11 @@ ruleTester.run("no-duplicate-case", rule, { errors: [ { messageId: "unexpected", - type: "SwitchCase", line: 1, column: 69, }, { messageId: "unexpected", - type: "SwitchCase", line: 2, column: 14, }, @@ -203,7 +186,6 @@ ruleTester.run("no-duplicate-case", rule, { errors: [ { messageId: "unexpected", - type: "SwitchCase", column: 87, }, ], @@ -213,7 +195,6 @@ ruleTester.run("no-duplicate-case", rule, { errors: [ { messageId: "unexpected", - type: "SwitchCase", line: 3, column: 14, }, diff --git a/tests/lib/rules/no-duplicate-imports.js b/tests/lib/rules/no-duplicate-imports.js index f212da0669df..976fec366238 100644 --- a/tests/lib/rules/no-duplicate-imports.js +++ b/tests/lib/rules/no-duplicate-imports.js @@ -79,7 +79,6 @@ ruleTester.run("no-duplicate-imports", rule, { { messageId: "import", data: { module: "fs" }, - type: "ImportDeclaration", }, ], }, @@ -89,7 +88,6 @@ ruleTester.run("no-duplicate-imports", rule, { { messageId: "import", data: { module: "lodash-es" }, - type: "ImportDeclaration", }, ], }, @@ -99,7 +97,6 @@ ruleTester.run("no-duplicate-imports", rule, { { messageId: "import", data: { module: "lodash-es" }, - type: "ImportDeclaration", }, ], }, @@ -109,12 +106,10 @@ ruleTester.run("no-duplicate-imports", rule, { { messageId: "import", data: { module: "os" }, - type: "ImportDeclaration", }, { messageId: "import", data: { module: "os" }, - type: "ImportDeclaration", }, ], }, @@ -124,7 +119,6 @@ ruleTester.run("no-duplicate-imports", rule, { { messageId: "import", data: { module: "lodash-es" }, - type: "ImportDeclaration", }, ], }, @@ -135,7 +129,6 @@ ruleTester.run("no-duplicate-imports", rule, { { messageId: "export", data: { module: "os" }, - type: "ExportNamedDeclaration", }, ], }, @@ -146,17 +139,14 @@ ruleTester.run("no-duplicate-imports", rule, { { messageId: "exportAs", data: { module: "os" }, - type: "ExportNamedDeclaration", }, { messageId: "export", data: { module: "os" }, - type: "ExportNamedDeclaration", }, { messageId: "exportAs", data: { module: "os" }, - type: "ExportNamedDeclaration", }, ], }, @@ -167,7 +157,6 @@ ruleTester.run("no-duplicate-imports", rule, { { messageId: "exportAs", data: { module: "os" }, - type: "ExportNamedDeclaration", }, ], }, @@ -178,7 +167,6 @@ ruleTester.run("no-duplicate-imports", rule, { { messageId: "exportAs", data: { module: "os" }, - type: "ExportAllDeclaration", }, ], }, @@ -189,7 +177,6 @@ ruleTester.run("no-duplicate-imports", rule, { { messageId: "importAs", data: { module: "os" }, - type: "ImportDeclaration", }, ], }, @@ -200,7 +187,6 @@ ruleTester.run("no-duplicate-imports", rule, { { messageId: "exportAs", data: { module: "mod" }, - type: "ExportAllDeclaration", }, ], }, @@ -211,7 +197,6 @@ ruleTester.run("no-duplicate-imports", rule, { { messageId: "export", data: { module: "os" }, - type: "ExportAllDeclaration", }, ], }, @@ -222,7 +207,6 @@ ruleTester.run("no-duplicate-imports", rule, { { messageId: "exportAs", data: { module: "os" }, - type: "ExportAllDeclaration", }, ], }, @@ -332,7 +316,6 @@ ruleTesterTypeScript.run("no-duplicate-imports", rule, { { messageId: "import", data: { module: "fs" }, - type: "ImportDeclaration", }, ], }, @@ -342,7 +325,6 @@ ruleTesterTypeScript.run("no-duplicate-imports", rule, { { messageId: "import", data: { module: "lodash-es" }, - type: "ImportDeclaration", }, ], }, @@ -352,7 +334,6 @@ ruleTesterTypeScript.run("no-duplicate-imports", rule, { { messageId: "import", data: { module: "lodash-es" }, - type: "ImportDeclaration", }, ], }, @@ -362,7 +343,6 @@ ruleTesterTypeScript.run("no-duplicate-imports", rule, { { messageId: "import", data: { module: "lodash-es" }, - type: "ImportDeclaration", }, ], }, @@ -372,7 +352,6 @@ ruleTesterTypeScript.run("no-duplicate-imports", rule, { { messageId: "import", data: { module: "os" }, - type: "ImportDeclaration", }, ], }, @@ -382,7 +361,6 @@ ruleTesterTypeScript.run("no-duplicate-imports", rule, { { messageId: "import", data: { module: "lodash-es" }, - type: "ImportDeclaration", }, ], }, @@ -393,7 +371,6 @@ ruleTesterTypeScript.run("no-duplicate-imports", rule, { { messageId: "exportAs", data: { module: "module" }, - type: "ExportNamedDeclaration", }, ], }, @@ -404,7 +381,6 @@ ruleTesterTypeScript.run("no-duplicate-imports", rule, { { messageId: "export", data: { module: "os" }, - type: "ExportNamedDeclaration", }, ], }, @@ -415,7 +391,6 @@ ruleTesterTypeScript.run("no-duplicate-imports", rule, { { messageId: "export", data: { module: "os" }, - type: "ExportNamedDeclaration", }, ], }, @@ -426,17 +401,14 @@ ruleTesterTypeScript.run("no-duplicate-imports", rule, { { messageId: "exportAs", data: { module: "os" }, - type: "ExportNamedDeclaration", }, { messageId: "export", data: { module: "os" }, - type: "ExportNamedDeclaration", }, { messageId: "exportAs", data: { module: "os" }, - type: "ExportNamedDeclaration", }, ], }, @@ -447,7 +419,6 @@ ruleTesterTypeScript.run("no-duplicate-imports", rule, { { messageId: "exportAs", data: { module: "os" }, - type: "ExportNamedDeclaration", }, ], }, @@ -458,7 +429,6 @@ ruleTesterTypeScript.run("no-duplicate-imports", rule, { { messageId: "exportAs", data: { module: "os" }, - type: "ExportAllDeclaration", }, ], }, @@ -469,7 +439,6 @@ ruleTesterTypeScript.run("no-duplicate-imports", rule, { { messageId: "exportAs", data: { module: "mod" }, - type: "ExportAllDeclaration", }, ], }, @@ -480,7 +449,6 @@ ruleTesterTypeScript.run("no-duplicate-imports", rule, { { messageId: "export", data: { module: "os" }, - type: "ExportAllDeclaration", }, ], }, @@ -491,7 +459,6 @@ ruleTesterTypeScript.run("no-duplicate-imports", rule, { { messageId: "exportAs", data: { module: "os" }, - type: "ExportNamedDeclaration", }, ], }, @@ -502,7 +469,6 @@ ruleTesterTypeScript.run("no-duplicate-imports", rule, { { messageId: "import", data: { module: "module" }, - type: "ImportDeclaration", }, ], }, @@ -513,7 +479,6 @@ ruleTesterTypeScript.run("no-duplicate-imports", rule, { { messageId: "import", data: { module: "lodash-es" }, - type: "ImportDeclaration", }, ], }, @@ -524,7 +489,6 @@ ruleTesterTypeScript.run("no-duplicate-imports", rule, { { messageId: "import", data: { module: "module" }, - type: "ImportDeclaration", }, ], }, @@ -535,7 +499,6 @@ ruleTesterTypeScript.run("no-duplicate-imports", rule, { { messageId: "import", data: { module: "module" }, - type: "ImportDeclaration", }, ], }, @@ -546,7 +509,6 @@ ruleTesterTypeScript.run("no-duplicate-imports", rule, { { messageId: "export", data: { module: "module" }, - type: "ExportNamedDeclaration", }, ], }, @@ -557,17 +519,14 @@ ruleTesterTypeScript.run("no-duplicate-imports", rule, { { messageId: "exportAs", data: { module: "module" }, - type: "ExportNamedDeclaration", }, { messageId: "export", data: { module: "module" }, - type: "ExportNamedDeclaration", }, { messageId: "exportAs", data: { module: "module" }, - type: "ExportNamedDeclaration", }, ], }, @@ -578,17 +537,14 @@ ruleTesterTypeScript.run("no-duplicate-imports", rule, { { messageId: "exportAs", data: { module: "module" }, - type: "ExportNamedDeclaration", }, { messageId: "export", data: { module: "module" }, - type: "ExportNamedDeclaration", }, { messageId: "exportAs", data: { module: "module" }, - type: "ExportNamedDeclaration", }, ], }, @@ -599,22 +555,18 @@ ruleTesterTypeScript.run("no-duplicate-imports", rule, { { messageId: "import", data: { module: "module" }, - type: "ImportDeclaration", }, { messageId: "exportAs", data: { module: "module" }, - type: "ExportNamedDeclaration", }, { messageId: "export", data: { module: "module" }, - type: "ExportNamedDeclaration", }, { messageId: "exportAs", data: { module: "module" }, - type: "ExportNamedDeclaration", }, ], }, diff --git a/tests/lib/rules/no-else-return.js b/tests/lib/rules/no-else-return.js index 6d3a90453279..82b754a08beb 100644 --- a/tests/lib/rules/no-else-return.js +++ b/tests/lib/rules/no-else-return.js @@ -65,463 +65,775 @@ ruleTester.run("no-else-return", rule, { { code: "function foo1() { if (true) { return x; } else { return y; } }", output: "function foo1() { if (true) { return x; } return y; }", - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo2() { if (true) { var x = bar; return x; } else { var y = baz; return y; } }", output: "function foo2() { if (true) { var x = bar; return x; } var y = baz; return y; }", - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo3() { if (true) return x; else return y; }", output: "function foo3() { if (true) return x; return y; }", - errors: [{ messageId: "unexpected", type: "ReturnStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo4() { if (true) { if (false) return x; else return y; } else { return z; } }", output: "function foo4() { if (true) { if (false) return x; return y; } else { return z; } }", // Other case is fixed in the second pass. errors: [ - { messageId: "unexpected", type: "ReturnStatement" }, - { messageId: "unexpected", type: "BlockStatement" }, + { + messageId: "unexpected", + }, + { + messageId: "unexpected", + }, ], }, { code: "function foo5() { if (true) { if (false) { if (true) return x; else { w = y; } } else { w = x; } } else { return z; } }", output: "function foo5() { if (true) { if (false) { if (true) return x; w = y; } else { w = x; } } else { return z; } }", - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo6() { if (true) { if (false) { if (true) return x; else return y; } } else { return z; } }", output: "function foo6() { if (true) { if (false) { if (true) return x; return y; } } else { return z; } }", - errors: [{ messageId: "unexpected", type: "ReturnStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo7() { if (true) { if (false) { if (true) return x; else return y; } return w; } else { return z; } }", output: "function foo7() { if (true) { if (false) { if (true) return x; return y; } return w; } else { return z; } }", // Other case is fixed in the second pass. errors: [ - { messageId: "unexpected", type: "ReturnStatement" }, - { messageId: "unexpected", type: "BlockStatement" }, + { + messageId: "unexpected", + }, + { + messageId: "unexpected", + }, ], }, { code: "function foo8() { if (true) { if (false) { if (true) return x; else return y; } else { w = x; } } else { return z; } }", output: "function foo8() { if (true) { if (false) { if (true) return x; return y; } else { w = x; } } else { return z; } }", // Other case is fixed in the second pass. errors: [ - { messageId: "unexpected", type: "ReturnStatement" }, - { messageId: "unexpected", type: "BlockStatement" }, + { + messageId: "unexpected", + }, + { + messageId: "unexpected", + }, ], }, { code: "function foo9() {if (x) { return true; } else if (y) { return true; } else { notAReturn(); } }", output: "function foo9() {if (x) { return true; } else if (y) { return true; } notAReturn(); }", - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo9a() {if (x) { return true; } else if (y) { return true; } else { notAReturn(); } }", output: "function foo9a() {if (x) { return true; } if (y) { return true; } else { notAReturn(); } }", options: [{ allowElseIf: false }], - errors: [{ messageId: "unexpected", type: "IfStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo9b() {if (x) { return true; } if (y) { return true; } else { notAReturn(); } }", output: "function foo9b() {if (x) { return true; } if (y) { return true; } notAReturn(); }", options: [{ allowElseIf: false }], - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo10() { if (foo) return bar; else (foo).bar(); }", output: "function foo10() { if (foo) return bar; (foo).bar(); }", - errors: [{ messageId: "unexpected", type: "ExpressionStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo11() { if (foo) return bar \nelse { [1, 2, 3].map(foo) } }", output: null, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo12() { if (foo) return bar \nelse { baz() } \n[1, 2, 3].map(foo) }", output: null, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo13() { if (foo) return bar; \nelse { [1, 2, 3].map(foo) } }", output: "function foo13() { if (foo) return bar; \n [1, 2, 3].map(foo) }", - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo14() { if (foo) return bar \nelse { baz(); } \n[1, 2, 3].map(foo) }", output: "function foo14() { if (foo) return bar \n baz(); \n[1, 2, 3].map(foo) }", - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo15() { if (foo) return bar; else { baz() } qaz() }", output: null, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo16() { if (foo) return bar \nelse { baz() } qaz() }", output: null, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo17() { if (foo) return bar \nelse { baz() } \nqaz() }", output: "function foo17() { if (foo) return bar \n baz() \nqaz() }", - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo18() { if (foo) return function() {} \nelse [1, 2, 3].map(bar) }", output: null, - errors: [{ messageId: "unexpected", type: "ExpressionStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo19() { if (true) { return x; } else if (false) { return y; } }", output: "function foo19() { if (true) { return x; } if (false) { return y; } }", options: [{ allowElseIf: false }], - errors: [{ messageId: "unexpected", type: "IfStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo20() {if (x) { return true; } else if (y) { notAReturn() } else { notAReturn(); } }", output: "function foo20() {if (x) { return true; } if (y) { notAReturn() } else { notAReturn(); } }", options: [{ allowElseIf: false }], - errors: [{ messageId: "unexpected", type: "IfStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo21() { var x = true; if (x) { return x; } else if (x === false) { return false; } }", output: "function foo21() { var x = true; if (x) { return x; } if (x === false) { return false; } }", options: [{ allowElseIf: false }], - errors: [{ messageId: "unexpected", type: "IfStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, // https://github.com/eslint/eslint/issues/11069 { code: "function foo() { var a; if (bar) { return true; } else { var a; } }", output: "function foo() { var a; if (bar) { return true; } var a; }", - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (bar) { var a; if (baz) { return true; } else { var a; } } }", output: "function foo() { if (bar) { var a; if (baz) { return true; } var a; } }", - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { var a; if (bar) { return true; } else { var a; } }", output: "function foo() { var a; if (bar) { return true; } var a; }", languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (bar) { var a; if (baz) { return true; } else { var a; } } }", output: "function foo() { if (bar) { var a; if (baz) { return true; } var a; } }", languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { let a; if (bar) { return true; } else { let a; } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "class foo { bar() { let a; if (baz) { return true; } else { let a; } } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (bar) { let a; if (baz) { return true; } else { let a; } } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() {let a; if (bar) { if (baz) { return true; } else { let a; } } }", output: "function foo() {let a; if (bar) { if (baz) { return true; } let a; } }", languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { const a = 1; if (bar) { return true; } else { let a; } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (bar) { const a = 1; if (baz) { return true; } else { let a; } } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { let a; if (bar) { return true; } else { const a = 1 } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (bar) { let a; if (baz) { return true; } else { const a = 1; } } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { class a {}; if (bar) { return true; } else { const a = 1; } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (bar) { class a {}; if (baz) { return true; } else { const a = 1; } } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { const a = 1; if (bar) { return true; } else { class a {} } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (bar) { const a = 1; if (baz) { return true; } else { class a {} } } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { var a; if (bar) { return true; } else { let a; } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (bar) { var a; return true; } else { let a; } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (bar) { return true; } else { let a; } while (baz) { var a; } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo(a) { if (bar) { return true; } else { let a; } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo(a = 1) { if (bar) { return true; } else { let a; } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo(a, b = a) { if (bar) { return true; } else { let a; } if (bar) { return true; } else { let b; }}", output: null, languageOptions: { ecmaVersion: 6 }, errors: [ - { messageId: "unexpected", type: "BlockStatement" }, - { messageId: "unexpected", type: "BlockStatement" }, + { + messageId: "unexpected", + }, + { + messageId: "unexpected", + }, ], }, { code: "function foo(...args) { if (bar) { return true; } else { let args; } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { try {} catch (a) { if (bar) { return true; } else { let a; } } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { try {} catch (a) { if (bar) { if (baz) { return true; } else { let a; } } } }", output: "function foo() { try {} catch (a) { if (bar) { if (baz) { return true; } let a; } } }", languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { try {} catch ({bar, a = 1}) { if (baz) { return true; } else { let a; } } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (bar) { return true; } else { let arguments; } }", output: "function foo() { if (bar) { return true; } let arguments; }", languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (bar) { return true; } else { let arguments; } return arguments[0]; }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (bar) { return true; } else { let arguments; } if (baz) { return arguments[0]; } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (bar) { if (baz) { return true; } else { let arguments; } } }", output: "function foo() { if (bar) { if (baz) { return true; } let arguments; } }", languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (bar) { return true; } else { let a; } a; }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (bar) { return true; } else { let a; } if (baz) { a; } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (bar) { if (baz) { return true; } else { let a; } } a; }", output: "function foo() { if (bar) { if (baz) { return true; } let a; } a; }", languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (bar) { if (baz) { return true; } else { let a; } a; } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (bar) { if (baz) { return true; } else { let a; } if (quux) { a; } } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function a() { if (foo) { return true; } else { let a; } a(); }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function a() { if (a) { return true; } else { let a; } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function a() { if (foo) { return a; } else { let a; } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (bar) { return true; } else { let a; } function baz() { a; } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (bar) { if (baz) { return true; } else { let a; } (() => a) } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (bar) { return true; } else { let a; } var a; }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (bar) { if (baz) { return true; } else { let a; } var a; } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (bar) { if (baz) { return true; } else { let a; } var { a } = {}; } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (bar) { if (baz) { return true; } else { let a; } if (quux) { var a; } } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (bar) { if (baz) { return true; } else { let a; } } if (quux) { var a; } }", output: "function foo() { if (bar) { if (baz) { return true; } let a; } if (quux) { var a; } }", languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (quux) { var a; } if (bar) { if (baz) { return true; } else { let a; } } }", output: "function foo() { if (quux) { var a; } if (bar) { if (baz) { return true; } let a; } }", languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (bar) { return true; } else { let a; } function a(){} }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (baz) { if (bar) { return true; } else { let a; } function a(){} } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (bar) { if (baz) { return true; } else { let a; } } if (quux) { function a(){} } }", output: "function foo() { if (bar) { if (baz) { return true; } let a; } if (quux) { function a(){} } }", languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (bar) { if (baz) { return true; } else { let a; } } function a(){} }", output: "function foo() { if (bar) { if (baz) { return true; } let a; } function a(){} }", languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { let a; if (bar) { return true; } else { function a(){} } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { var a; if (bar) { return true; } else { function a(){} } }", output: null, languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo() { if (bar) { return true; } else function baz() {} };", output: null, - errors: [{ messageId: "unexpected", type: "FunctionDeclaration" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if (foo) { return true; } else { let a; }", output: "if (foo) { return true; } let a; ", languageOptions: { ecmaVersion: 6, sourceType: "commonjs" }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "let a; if (foo) { return true; } else { let a; }", output: null, languageOptions: { ecmaVersion: 6, sourceType: "commonjs" }, - errors: [{ messageId: "unexpected", type: "BlockStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, ], }); diff --git a/tests/lib/rules/no-empty-character-class.js b/tests/lib/rules/no-empty-character-class.js index 1aa91b47adb2..1e89dd7a1af7 100644 --- a/tests/lib/rules/no-empty-character-class.js +++ b/tests/lib/rules/no-empty-character-class.js @@ -70,81 +70,149 @@ ruleTester.run("no-empty-character-class", rule, { invalid: [ { code: "var foo = /^abc[]/;", - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "var foo = /foo[]bar/;", - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if (foo.match(/^abc[]/)) {}", - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if (/^abc[]/.test(foo)) {}", - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "var foo = /[]]/;", - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "var foo = /\\[[]/;", - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "var foo = /\\[\\[\\]a-z[]/;", - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "var foo = /[]]/d;", languageOptions: { ecmaVersion: 2022 }, - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "var foo = /[(]\\u{0}*[]/u;", languageOptions: { ecmaVersion: 2015 }, - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "var foo = /[]/v;", languageOptions: { ecmaVersion: 2024 }, - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "var foo = /[[]]/v;", languageOptions: { ecmaVersion: 2024 }, - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "var foo = /[[a][]]/v;", languageOptions: { ecmaVersion: 2024 }, - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "var foo = /[a[[b[]c]]d]/v;", languageOptions: { ecmaVersion: 2024 }, - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "var foo = /[a--[]]/v;", languageOptions: { ecmaVersion: 2024 }, - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "var foo = /[[]--b]/v;", languageOptions: { ecmaVersion: 2024 }, - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "var foo = /[a&&[]]/v;", languageOptions: { ecmaVersion: 2024 }, - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "var foo = /[[]&&b]/v;", languageOptions: { ecmaVersion: 2024 }, - errors: [{ messageId: "unexpected", type: "Literal" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, ], }); diff --git a/tests/lib/rules/no-empty-pattern.js b/tests/lib/rules/no-empty-pattern.js index fe976c8e546f..4ec3a412b7b0 100644 --- a/tests/lib/rules/no-empty-pattern.js +++ b/tests/lib/rules/no-empty-pattern.js @@ -73,7 +73,6 @@ ruleTester.run("no-empty-pattern", rule, { { messageId: "unexpected", data: { type: "object" }, - type: "ObjectPattern", }, ], }, @@ -84,7 +83,6 @@ ruleTester.run("no-empty-pattern", rule, { { messageId: "unexpected", data: { type: "array" }, - type: "ArrayPattern", }, ], }, @@ -95,7 +93,6 @@ ruleTester.run("no-empty-pattern", rule, { { messageId: "unexpected", data: { type: "object" }, - type: "ObjectPattern", }, ], }, @@ -106,7 +103,6 @@ ruleTester.run("no-empty-pattern", rule, { { messageId: "unexpected", data: { type: "object" }, - type: "ObjectPattern", }, ], }, @@ -117,7 +113,6 @@ ruleTester.run("no-empty-pattern", rule, { { messageId: "unexpected", data: { type: "array" }, - type: "ArrayPattern", }, ], }, @@ -128,7 +123,6 @@ ruleTester.run("no-empty-pattern", rule, { { messageId: "unexpected", data: { type: "object" }, - type: "ObjectPattern", }, ], }, @@ -139,7 +133,6 @@ ruleTester.run("no-empty-pattern", rule, { { messageId: "unexpected", data: { type: "array" }, - type: "ArrayPattern", }, ], }, @@ -150,7 +143,6 @@ ruleTester.run("no-empty-pattern", rule, { { messageId: "unexpected", data: { type: "object" }, - type: "ObjectPattern", }, ], }, @@ -161,7 +153,6 @@ ruleTester.run("no-empty-pattern", rule, { { messageId: "unexpected", data: { type: "array" }, - type: "ArrayPattern", }, ], }, @@ -173,7 +164,6 @@ ruleTester.run("no-empty-pattern", rule, { { messageId: "unexpected", data: { type: "object" }, - type: "ObjectPattern", }, ], }, @@ -185,7 +175,6 @@ ruleTester.run("no-empty-pattern", rule, { { messageId: "unexpected", data: { type: "object" }, - type: "ObjectPattern", }, ], }, @@ -197,7 +186,6 @@ ruleTester.run("no-empty-pattern", rule, { { messageId: "unexpected", data: { type: "object" }, - type: "ObjectPattern", }, ], }, @@ -209,7 +197,6 @@ ruleTester.run("no-empty-pattern", rule, { { messageId: "unexpected", data: { type: "object" }, - type: "ObjectPattern", }, ], }, @@ -221,7 +208,6 @@ ruleTester.run("no-empty-pattern", rule, { { messageId: "unexpected", data: { type: "object" }, - type: "ObjectPattern", }, ], }, @@ -233,7 +219,6 @@ ruleTester.run("no-empty-pattern", rule, { { messageId: "unexpected", data: { type: "object" }, - type: "ObjectPattern", }, ], }, @@ -245,7 +230,6 @@ ruleTester.run("no-empty-pattern", rule, { { messageId: "unexpected", data: { type: "object" }, - type: "ObjectPattern", }, ], }, @@ -257,7 +241,6 @@ ruleTester.run("no-empty-pattern", rule, { { messageId: "unexpected", data: { type: "object" }, - type: "ObjectPattern", }, ], }, @@ -269,7 +252,6 @@ ruleTester.run("no-empty-pattern", rule, { { messageId: "unexpected", data: { type: "object" }, - type: "ObjectPattern", }, ], }, @@ -281,7 +263,6 @@ ruleTester.run("no-empty-pattern", rule, { { messageId: "unexpected", data: { type: "array" }, - type: "ArrayPattern", }, ], }, diff --git a/tests/lib/rules/no-empty.js b/tests/lib/rules/no-empty.js index c5efda818e14..ccd1b8425f9d 100644 --- a/tests/lib/rules/no-empty.js +++ b/tests/lib/rules/no-empty.js @@ -57,7 +57,6 @@ ruleTester.run("no-empty", rule, { { messageId: "unexpected", data: { type: "block" }, - type: "BlockStatement", suggestions: [ { messageId: "suggestComment", @@ -74,7 +73,6 @@ ruleTester.run("no-empty", rule, { { messageId: "unexpected", data: { type: "block" }, - type: "BlockStatement", suggestions: [ { messageId: "suggestComment", @@ -91,7 +89,6 @@ ruleTester.run("no-empty", rule, { { messageId: "unexpected", data: { type: "block" }, - type: "BlockStatement", suggestions: [ { messageId: "suggestComment", @@ -108,7 +105,6 @@ ruleTester.run("no-empty", rule, { { messageId: "unexpected", data: { type: "block" }, - type: "BlockStatement", suggestions: [ { messageId: "suggestComment", @@ -125,7 +121,6 @@ ruleTester.run("no-empty", rule, { { messageId: "unexpected", data: { type: "block" }, - type: "BlockStatement", suggestions: [ { messageId: "suggestComment", @@ -142,7 +137,6 @@ ruleTester.run("no-empty", rule, { { messageId: "unexpected", data: { type: "block" }, - type: "BlockStatement", suggestions: [ { messageId: "suggestComment", @@ -159,7 +153,6 @@ ruleTester.run("no-empty", rule, { { messageId: "unexpected", data: { type: "switch" }, - type: "SwitchStatement", line: 1, column: 13, endLine: 1, @@ -180,7 +173,6 @@ ruleTester.run("no-empty", rule, { { messageId: "unexpected", data: { type: "switch" }, - type: "SwitchStatement", line: 1, column: 62, endLine: 1, @@ -202,7 +194,6 @@ ruleTester.run("no-empty", rule, { { messageId: "unexpected", data: { type: "block" }, - type: "BlockStatement", suggestions: [ { messageId: "suggestComment", @@ -220,7 +211,6 @@ ruleTester.run("no-empty", rule, { { messageId: "unexpected", data: { type: "block" }, - type: "BlockStatement", suggestions: [ { messageId: "suggestComment", @@ -238,7 +228,6 @@ ruleTester.run("no-empty", rule, { { messageId: "unexpected", data: { type: "block" }, - type: "BlockStatement", suggestions: [ { messageId: "suggestComment", @@ -250,7 +239,6 @@ ruleTester.run("no-empty", rule, { { messageId: "unexpected", data: { type: "block" }, - type: "BlockStatement", suggestions: [ { messageId: "suggestComment", @@ -267,7 +255,6 @@ ruleTester.run("no-empty", rule, { { messageId: "unexpected", data: { type: "block" }, - type: "BlockStatement", suggestions: [ { messageId: "suggestComment", @@ -279,7 +266,6 @@ ruleTester.run("no-empty", rule, { { messageId: "unexpected", data: { type: "block" }, - type: "BlockStatement", suggestions: [ { messageId: "suggestComment", diff --git a/tests/lib/rules/no-eq-null.js b/tests/lib/rules/no-eq-null.js index f30c3edef548..9598e52b5cc4 100644 --- a/tests/lib/rules/no-eq-null.js +++ b/tests/lib/rules/no-eq-null.js @@ -23,15 +23,27 @@ ruleTester.run("no-eq-null", rule, { invalid: [ { code: "if (x == null) { }", - errors: [{ messageId: "unexpected", type: "BinaryExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if (x != null) { }", - errors: [{ messageId: "unexpected", type: "BinaryExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "do {} while (null == x)", - errors: [{ messageId: "unexpected", type: "BinaryExpression" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, ], }); diff --git a/tests/lib/rules/no-eval.js b/tests/lib/rules/no-eval.js index 327aa0c3497b..679cb626bcd5 100644 --- a/tests/lib/rules/no-eval.js +++ b/tests/lib/rules/no-eval.js @@ -244,7 +244,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", column: 1, endColumn: 5, }, @@ -255,7 +254,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", column: 1, endColumn: 5, }, @@ -266,7 +264,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", column: 22, endColumn: 26, }, @@ -278,7 +275,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", column: 1, endColumn: 5, }, @@ -290,7 +286,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", column: 1, endColumn: 5, }, @@ -302,7 +297,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", column: 22, endColumn: 26, }, @@ -315,7 +309,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "Identifier", column: 5, endColumn: 9, }, @@ -327,7 +320,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "MemberExpression", column: 12, endColumn: 16, }, @@ -339,7 +331,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "MemberExpression", column: 12, endColumn: 18, }, @@ -350,7 +341,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "Identifier", column: 12, endColumn: 16, }, @@ -361,7 +351,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "MemberExpression", column: 17, endColumn: 21, }, @@ -372,7 +361,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "MemberExpression", column: 31, endColumn: 35, }, @@ -383,7 +371,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "MemberExpression", column: 39, endColumn: 43, }, @@ -395,7 +382,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", column: 14, endColumn: 18, }, @@ -407,7 +393,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", column: 28, endColumn: 32, }, @@ -419,7 +404,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", column: 28, endColumn: 32, }, @@ -431,7 +415,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", column: 36, endColumn: 40, }, @@ -442,7 +425,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "Identifier", column: 31, endColumn: 35, }, @@ -454,7 +436,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", column: 8, endColumn: 12, }, @@ -466,7 +447,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", column: 15, endColumn: 19, }, @@ -478,7 +458,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", column: 15, endColumn: 21, }, @@ -490,7 +469,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", column: 8, endColumn: 12, }, @@ -502,7 +480,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", column: 15, endColumn: 19, }, @@ -514,7 +491,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", column: 15, endColumn: 21, }, @@ -525,7 +501,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", column: 6, endColumn: 10, }, @@ -536,7 +511,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", column: 20, endColumn: 24, }, @@ -547,7 +521,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", column: 23, endColumn: 27, }, @@ -559,7 +532,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "MemberExpression", column: 23, endColumn: 27, }, @@ -571,7 +543,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", column: 12, endColumn: 16, }, @@ -583,7 +554,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", column: 23, endColumn: 27, }, @@ -595,7 +565,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", column: 23, endColumn: 29, }, @@ -607,7 +576,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "MemberExpression", column: 16, endColumn: 20, }, @@ -619,7 +587,6 @@ ruleTester.run("no-eval", rule, { errors: [ { messageId: "unexpected", - type: "MemberExpression", column: 16, endColumn: 22, }, diff --git a/tests/lib/rules/no-ex-assign.js b/tests/lib/rules/no-ex-assign.js index 699aead46611..2d55e5b0f52c 100644 --- a/tests/lib/rules/no-ex-assign.js +++ b/tests/lib/rules/no-ex-assign.js @@ -30,26 +30,46 @@ ruleTester.run("no-ex-assign", rule, { invalid: [ { code: "try { } catch (e) { e = 10; }", - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "try { } catch (ex) { ex = 10; }", - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "try { } catch (ex) { [ex] = []; }", languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "try { } catch (ex) { ({x: ex = 0} = {}); }", languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "try { } catch ({message}) { message = 10; }", languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "Identifier" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, ], }); diff --git a/tests/lib/rules/no-extend-native.js b/tests/lib/rules/no-extend-native.js index e64912b02dab..10f7a174cc23 100644 --- a/tests/lib/rules/no-extend-native.js +++ b/tests/lib/rules/no-extend-native.js @@ -62,7 +62,6 @@ ruleTester.run("no-extend-native", rule, { { messageId: "unexpected", data: { builtin: "Object" }, - type: "AssignmentExpression", }, ], }, @@ -73,7 +72,6 @@ ruleTester.run("no-extend-native", rule, { { messageId: "unexpected", data: { builtin: "BigInt" }, - type: "AssignmentExpression", }, ], }, @@ -84,7 +82,6 @@ ruleTester.run("no-extend-native", rule, { { messageId: "unexpected", data: { builtin: "WeakRef" }, - type: "AssignmentExpression", }, ], }, @@ -95,7 +92,6 @@ ruleTester.run("no-extend-native", rule, { { messageId: "unexpected", data: { builtin: "FinalizationRegistry" }, - type: "AssignmentExpression", }, ], }, @@ -106,7 +102,6 @@ ruleTester.run("no-extend-native", rule, { { messageId: "unexpected", data: { builtin: "AggregateError" }, - type: "AssignmentExpression", }, ], }, @@ -116,7 +111,6 @@ ruleTester.run("no-extend-native", rule, { { messageId: "unexpected", data: { builtin: "Function" }, - type: "AssignmentExpression", }, ], }, @@ -126,7 +120,6 @@ ruleTester.run("no-extend-native", rule, { { messageId: "unexpected", data: { builtin: "String" }, - type: "AssignmentExpression", }, ], }, @@ -136,7 +129,6 @@ ruleTester.run("no-extend-native", rule, { { messageId: "unexpected", data: { builtin: "Number" }, - type: "AssignmentExpression", }, ], }, @@ -146,7 +138,6 @@ ruleTester.run("no-extend-native", rule, { { messageId: "unexpected", data: { builtin: "Array" }, - type: "CallExpression", }, ], }, @@ -156,7 +147,6 @@ ruleTester.run("no-extend-native", rule, { { messageId: "unexpected", data: { builtin: "Array" }, - type: "CallExpression", }, ], }, @@ -166,7 +156,6 @@ ruleTester.run("no-extend-native", rule, { { messageId: "unexpected", data: { builtin: "Array" }, - type: "CallExpression", }, ], }, @@ -177,7 +166,6 @@ ruleTester.run("no-extend-native", rule, { { messageId: "unexpected", data: { builtin: "Number" }, - type: "AssignmentExpression", }, ], }, @@ -187,13 +175,11 @@ ruleTester.run("no-extend-native", rule, { { messageId: "unexpected", data: { builtin: "Object" }, - type: "AssignmentExpression", column: 1, }, { messageId: "unexpected", data: { builtin: "Object" }, - type: "AssignmentExpression", column: 25, }, ], @@ -204,7 +190,6 @@ ruleTester.run("no-extend-native", rule, { { messageId: "unexpected", data: { builtin: "Object" }, - type: "AssignmentExpression", }, ], }, diff --git a/tests/lib/rules/no-extra-bind.js b/tests/lib/rules/no-extra-bind.js index a51e84e88fd6..45ee906a793a 100644 --- a/tests/lib/rules/no-extra-bind.js +++ b/tests/lib/rules/no-extra-bind.js @@ -16,7 +16,11 @@ const rule = require("../../../lib/rules/no-extra-bind"), //------------------------------------------------------------------------------ const ruleTester = new RuleTester(); -const errors = [{ messageId: "unexpected", type: "CallExpression" }]; +const errors = [ + { + messageId: "unexpected", + }, +]; ruleTester.run("no-extra-bind", rule, { valid: [ @@ -51,7 +55,6 @@ ruleTester.run("no-extra-bind", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", line: 1, column: 34, endLine: 1, @@ -65,7 +68,6 @@ ruleTester.run("no-extra-bind", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", line: 1, column: 34, endLine: 1, @@ -80,7 +82,6 @@ ruleTester.run("no-extra-bind", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", line: 1, column: 34, endLine: 1, @@ -119,7 +120,10 @@ ruleTester.run("no-extra-bind", rule, { code: "var a = function() { (function(){ (function(){ this.d }.bind(c)) }) }.bind(b)", output: "var a = function() { (function(){ (function(){ this.d }.bind(c)) }) }", errors: [ - { messageId: "unexpected", type: "CallExpression", column: 71 }, + { + messageId: "unexpected", + column: 71, + }, ], }, { diff --git a/tests/lib/rules/no-extra-boolean-cast.js b/tests/lib/rules/no-extra-boolean-cast.js index e7d1e007e8aa..d80e6322f2ed 100644 --- a/tests/lib/rules/no-extra-boolean-cast.js +++ b/tests/lib/rules/no-extra-boolean-cast.js @@ -218,7 +218,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 5, endColumn: 10, }, @@ -230,7 +229,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 14, }, ], @@ -241,7 +239,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 8, }, ], @@ -252,7 +249,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 1, }, ], @@ -263,7 +259,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 8, }, ], @@ -274,7 +269,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 2, }, ], @@ -285,7 +279,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 9, }, ], @@ -296,7 +289,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 13, }, ], @@ -307,7 +299,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -317,7 +308,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -327,7 +317,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -337,7 +326,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -347,7 +335,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -357,7 +344,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -367,7 +353,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -377,7 +362,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -387,7 +371,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -397,7 +380,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -407,7 +389,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -418,7 +399,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -428,7 +408,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -438,7 +417,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -448,7 +426,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -458,7 +435,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -468,7 +444,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -478,7 +453,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -488,7 +462,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -498,7 +471,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -508,7 +480,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -518,7 +489,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -528,7 +498,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -541,7 +510,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -552,7 +520,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -563,7 +530,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -574,7 +540,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -585,7 +550,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -596,7 +560,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -606,7 +569,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -616,7 +578,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -626,7 +587,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -636,7 +596,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -646,7 +605,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -656,7 +614,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -666,7 +623,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -676,7 +632,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -686,7 +641,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -698,7 +652,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -708,7 +661,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -718,7 +670,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -728,7 +679,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -738,7 +688,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -748,7 +697,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -758,7 +706,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -768,7 +715,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -778,7 +724,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -788,7 +733,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -798,7 +742,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -808,7 +751,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -818,7 +760,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -828,7 +769,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -838,7 +778,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -848,7 +787,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -858,7 +796,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -868,7 +805,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -878,7 +814,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -888,7 +823,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -898,7 +832,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -908,7 +841,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -918,7 +850,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -928,7 +859,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -938,7 +868,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -951,7 +880,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 5, endColumn: 10, }, @@ -964,7 +892,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 5, endColumn: 10, }, @@ -978,7 +905,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 6, endColumn: 11, }, @@ -991,7 +917,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 12, endColumn: 17, }, @@ -1004,7 +929,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 14, }, ], @@ -1016,7 +940,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 8, }, ], @@ -1028,7 +951,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 1, }, ], @@ -1040,7 +962,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 8, }, ], @@ -1052,7 +973,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 2, }, ], @@ -1064,7 +984,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 9, }, ], @@ -1076,7 +995,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 13, }, ], @@ -1088,7 +1006,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1099,7 +1016,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1110,7 +1026,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1121,7 +1036,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1132,7 +1046,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1143,7 +1056,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1154,7 +1066,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1165,7 +1076,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1176,7 +1086,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1187,7 +1096,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1198,7 +1106,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1209,7 +1116,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1221,7 +1127,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1232,7 +1137,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1243,7 +1147,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1254,7 +1157,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1265,7 +1167,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1276,7 +1177,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1287,7 +1187,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1298,7 +1197,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1309,7 +1207,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1320,7 +1217,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1334,7 +1230,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -1346,7 +1241,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -1358,7 +1252,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -1370,7 +1263,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -1382,7 +1274,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -1393,7 +1284,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -1404,7 +1294,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1415,7 +1304,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1426,7 +1314,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1437,7 +1324,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1448,7 +1334,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1461,7 +1346,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -1472,7 +1356,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -1483,7 +1366,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -1494,7 +1376,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -1505,7 +1386,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -1516,7 +1396,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -1527,7 +1406,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1538,7 +1416,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1549,7 +1426,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1560,7 +1436,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1571,7 +1446,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1582,7 +1456,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1593,7 +1466,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1604,7 +1476,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1615,7 +1486,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1626,7 +1496,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1637,7 +1506,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1648,7 +1516,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1659,7 +1526,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1670,7 +1536,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1681,7 +1546,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1692,7 +1556,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1703,7 +1566,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1714,7 +1576,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1725,7 +1586,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1737,7 +1597,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 10, endColumn: 23, }, @@ -1751,7 +1610,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 24, endColumn: 27, }, @@ -1766,7 +1624,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 5, endColumn: 10, }, @@ -1779,7 +1636,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 5, endColumn: 10, }, @@ -1793,7 +1649,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 6, endColumn: 11, }, @@ -1806,7 +1661,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 12, endColumn: 17, }, @@ -1819,7 +1673,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 14, }, ], @@ -1831,7 +1684,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 8, }, ], @@ -1843,7 +1695,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 1, }, ], @@ -1855,7 +1706,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 8, }, ], @@ -1867,7 +1717,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 2, }, ], @@ -1879,7 +1728,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 9, }, ], @@ -1891,7 +1739,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 13, }, ], @@ -1903,7 +1750,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1914,7 +1760,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1925,7 +1770,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1936,7 +1780,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1947,7 +1790,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1958,7 +1800,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1969,7 +1810,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1980,7 +1820,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -1991,7 +1830,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2002,7 +1840,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2013,7 +1850,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2024,7 +1860,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2036,7 +1871,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2047,7 +1881,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2058,7 +1891,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2069,7 +1901,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2080,7 +1911,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2091,7 +1921,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2102,7 +1931,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2113,7 +1941,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2124,7 +1951,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2135,7 +1961,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2149,7 +1974,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -2161,7 +1985,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -2173,7 +1996,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -2185,7 +2007,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -2197,7 +2018,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -2208,7 +2028,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -2219,7 +2038,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2230,7 +2048,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2241,7 +2058,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2252,7 +2068,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2263,7 +2078,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2276,7 +2090,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -2287,7 +2100,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -2298,7 +2110,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -2309,7 +2120,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -2320,7 +2130,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -2331,7 +2140,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", }, ], }, @@ -2342,7 +2150,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2353,7 +2160,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2364,7 +2170,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2375,7 +2180,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2386,7 +2190,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2397,7 +2200,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2408,7 +2210,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2419,7 +2220,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2430,7 +2230,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2441,7 +2240,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2452,7 +2250,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2463,7 +2260,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2474,7 +2270,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2485,7 +2280,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2496,7 +2290,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2507,7 +2300,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2518,7 +2310,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2529,7 +2320,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2540,7 +2330,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedCall", - type: "CallExpression", }, ], }, @@ -2552,7 +2341,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 10, endColumn: 23, }, @@ -2566,7 +2354,6 @@ ruleTester.run("no-extra-boolean-cast", rule, { errors: [ { messageId: "unexpectedNegation", - type: "UnaryExpression", column: 24, endColumn: 27, }, @@ -2578,95 +2365,135 @@ ruleTester.run("no-extra-boolean-cast", rule, { code: "Boolean(!!(a, b))", output: "Boolean((a, b))", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "Boolean(Boolean((a, b)))", output: "Boolean((a, b))", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "Boolean((!!(a, b)))", output: "Boolean((a, b))", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "Boolean((Boolean((a, b))))", output: "Boolean((a, b))", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "Boolean(!(!(a, b)))", output: "Boolean((a, b))", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "Boolean((!(!(a, b))))", output: "Boolean((a, b))", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "Boolean(!!(a = b))", output: "Boolean(a = b)", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "Boolean((!!(a = b)))", output: "Boolean((a = b))", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "Boolean(Boolean(a = b))", output: "Boolean(a = b)", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "Boolean(Boolean((a += b)))", output: "Boolean(a += b)", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "Boolean(!!(a === b))", output: "Boolean(a === b)", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "Boolean(!!((a !== b)))", output: "Boolean(a !== b)", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "Boolean(!!a.b)", output: "Boolean(a.b)", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "Boolean(Boolean((a)))", output: "Boolean(a)", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "Boolean((!!(a)))", output: "Boolean((a))", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, @@ -2674,671 +2501,981 @@ ruleTester.run("no-extra-boolean-cast", rule, { code: "new Boolean(!!(a, b))", output: "new Boolean((a, b))", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "new Boolean(Boolean((a, b)))", output: "new Boolean((a, b))", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "new Boolean((!!(a, b)))", output: "new Boolean((a, b))", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "new Boolean((Boolean((a, b))))", output: "new Boolean((a, b))", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "new Boolean(!(!(a, b)))", output: "new Boolean((a, b))", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "new Boolean((!(!(a, b))))", output: "new Boolean((a, b))", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "new Boolean(!!(a = b))", output: "new Boolean(a = b)", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "new Boolean((!!(a = b)))", output: "new Boolean((a = b))", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "new Boolean(Boolean(a = b))", output: "new Boolean(a = b)", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "new Boolean(Boolean((a += b)))", output: "new Boolean(a += b)", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "new Boolean(!!(a === b))", output: "new Boolean(a === b)", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "new Boolean(!!((a !== b)))", output: "new Boolean(a !== b)", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "new Boolean(!!a.b)", output: "new Boolean(a.b)", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "new Boolean(Boolean((a)))", output: "new Boolean(a)", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "new Boolean((!!(a)))", output: "new Boolean((a))", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "if (!!(a, b));", output: "if (a, b);", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "if (Boolean((a, b)));", output: "if (a, b);", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "if (!(!(a, b)));", output: "if (a, b);", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "if (!!(a = b));", output: "if (a = b);", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "if (Boolean(a = b));", output: "if (a = b);", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "if (!!(a > b));", output: "if (a > b);", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "if (Boolean(a === b));", output: "if (a === b);", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "if (!!f(a));", output: "if (f(a));", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "if (Boolean(f(a)));", output: "if (f(a));", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "if (!!(f(a)));", output: "if (f(a));", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "if ((!!f(a)));", output: "if ((f(a)));", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "if ((Boolean(f(a))));", output: "if ((f(a)));", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "if (!!a);", output: "if (a);", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "if (Boolean(a));", output: "if (a);", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "while (!!(a, b));", output: "while (a, b);", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "while (Boolean((a, b)));", output: "while (a, b);", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "while (!(!(a, b)));", output: "while (a, b);", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "while (!!(a = b));", output: "while (a = b);", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "while (Boolean(a = b));", output: "while (a = b);", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "while (!!(a > b));", output: "while (a > b);", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "while (Boolean(a === b));", output: "while (a === b);", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "while (!!f(a));", output: "while (f(a));", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "while (Boolean(f(a)));", output: "while (f(a));", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "while (!!(f(a)));", output: "while (f(a));", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "while ((!!f(a)));", output: "while ((f(a)));", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "while ((Boolean(f(a))));", output: "while ((f(a)));", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "while (!!a);", output: "while (a);", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "while (Boolean(a));", output: "while (a);", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "do {} while (!!(a, b));", output: "do {} while (a, b);", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "do {} while (Boolean((a, b)));", output: "do {} while (a, b);", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "do {} while (!(!(a, b)));", output: "do {} while (a, b);", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "do {} while (!!(a = b));", output: "do {} while (a = b);", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "do {} while (Boolean(a = b));", output: "do {} while (a = b);", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "do {} while (!!(a > b));", output: "do {} while (a > b);", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "do {} while (Boolean(a === b));", output: "do {} while (a === b);", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "do {} while (!!f(a));", output: "do {} while (f(a));", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "do {} while (Boolean(f(a)));", output: "do {} while (f(a));", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "do {} while (!!(f(a)));", output: "do {} while (f(a));", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "do {} while ((!!f(a)));", output: "do {} while ((f(a)));", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "do {} while ((Boolean(f(a))));", output: "do {} while ((f(a)));", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "do {} while (!!a);", output: "do {} while (a);", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "do {} while (Boolean(a));", output: "do {} while (a);", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "for (; !!(a, b););", output: "for (; a, b;);", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "for (; Boolean((a, b)););", output: "for (; a, b;);", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "for (; !(!(a, b)););", output: "for (; a, b;);", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "for (; !!(a = b););", output: "for (; a = b;);", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "for (; Boolean(a = b););", output: "for (; a = b;);", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "for (; !!(a > b););", output: "for (; a > b;);", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "for (; Boolean(a === b););", output: "for (; a === b;);", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "for (; !!f(a););", output: "for (; f(a););", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "for (; Boolean(f(a)););", output: "for (; f(a););", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "for (; !!(f(a)););", output: "for (; f(a););", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "for (; (!!f(a)););", output: "for (; (f(a)););", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "for (; (Boolean(f(a))););", output: "for (; (f(a)););", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "for (; !!a;);", output: "for (; a;);", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "for (; Boolean(a););", output: "for (; a;);", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "!!(a, b) ? c : d", output: "(a, b) ? c : d", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "(!!(a, b)) ? c : d", output: "(a, b) ? c : d", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "Boolean((a, b)) ? c : d", output: "(a, b) ? c : d", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "!!(a = b) ? c : d", output: "(a = b) ? c : d", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "Boolean(a -= b) ? c : d", output: "(a -= b) ? c : d", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "(Boolean((a *= b))) ? c : d", output: "(a *= b) ? c : d", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "!!(a ? b : c) ? d : e", output: "(a ? b : c) ? d : e", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "Boolean(a ? b : c) ? d : e", output: "(a ? b : c) ? d : e", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "!!(a || b) ? c : d", output: "a || b ? c : d", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "Boolean(a && b) ? c : d", output: "a && b ? c : d", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "!!(a === b) ? c : d", output: "a === b ? c : d", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "Boolean(a < b) ? c : d", output: "a < b ? c : d", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "!!((a !== b)) ? c : d", output: "a !== b ? c : d", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "Boolean((a >= b)) ? c : d", output: "a >= b ? c : d", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "!!+a ? b : c", output: "+a ? b : c", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "!!+(a) ? b : c", output: "+(a) ? b : c", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "Boolean(!a) ? b : c", output: "!a ? b : c", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "!!f(a) ? b : c", output: "f(a) ? b : c", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "(!!f(a)) ? b : c", output: "(f(a)) ? b : c", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "Boolean(a.b) ? c : d", output: "a.b ? c : d", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "!!a ? b : c", output: "a ? b : c", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "Boolean(a) ? b : c", output: "a ? b : c", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "!!!(a, b)", output: "!(a, b)", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "!Boolean((a, b))", output: "!(a, b)", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "!!!(a = b)", output: "!(a = b)", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "!!(!(a += b))", output: "!(a += b)", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "!(!!(a += b))", output: "!(a += b)", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "!Boolean(a -= b)", output: "!(a -= b)", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "!Boolean((a -= b))", output: "!(a -= b)", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "!(Boolean(a -= b))", output: "!(a -= b)", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "!!!(a || b)", output: "!(a || b)", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "!Boolean(a || b)", output: "!(a || b)", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "!!!(a && b)", output: "!(a && b)", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "!Boolean(a && b)", output: "!(a && b)", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "!!!(a != b)", output: "!(a != b)", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "!!!(a === b)", output: "!(a === b)", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "var x = !Boolean(a > b)", output: "var x = !(a > b)", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "!!!(a - b)", output: "!(a - b)", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -3346,148 +3483,220 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "!(a ** b)", languageOptions: { ecmaVersion: 2016 }, errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "!Boolean(a ** b)", output: "!(a ** b)", languageOptions: { ecmaVersion: 2016 }, - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "async function f() { !!!(await a) }", output: "async function f() { !await a }", languageOptions: { ecmaVersion: 2017 }, errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "async function f() { !Boolean(await a) }", output: "async function f() { !await a }", languageOptions: { ecmaVersion: 2017 }, - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "!!!!a", output: "!!a", // Reports 2 errors. After the first fix, the second error will disappear. errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "!!(!(!a))", output: "!!a", // Reports 2 errors. After the first fix, the second error will disappear. errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "!Boolean(!a)", output: "!!a", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "!Boolean((!a))", output: "!!a", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "!Boolean(!(a))", output: "!!(a)", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "!(Boolean(!a))", output: "!(!a)", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "!!!+a", output: "!+a", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "!!!(+a)", output: "!+a", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "!!(!+a)", output: "!+a", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "!(!!+a)", output: "!(+a)", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "!Boolean((-a))", output: "!-a", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "!Boolean(-(a))", output: "!-(a)", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "!!!(--a)", output: "!--a", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "!Boolean(a++)", output: "!a++", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "!!!f(a)", output: "!f(a)", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "!!!(f(a))", output: "!f(a)", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "!!!a", output: "!a", errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, ], }, { code: "!Boolean(a)", output: "!a", - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "if (!!(a, b) || !!(c, d)) {}", output: "if ((a, b) || (c, d)) {}", options: [{ enforceForLogicalOperands: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -3495,8 +3704,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a, b) || (c, d)) {}", options: [{ enforceForLogicalOperands: true }], errors: [ - { messageId: "unexpectedCall", type: "CallExpression" }, - { messageId: "unexpectedCall", type: "CallExpression" }, + { + messageId: "unexpectedCall", + }, + { + messageId: "unexpectedCall", + }, ], }, { @@ -3504,8 +3717,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a, b) || (c, d)) {}", options: [{ enforceForLogicalOperands: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -3513,8 +3730,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a, b) && (c, d)) {}", options: [{ enforceForLogicalOperands: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -3522,8 +3743,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a, b) && (c, d)) {}", options: [{ enforceForLogicalOperands: true }], errors: [ - { messageId: "unexpectedCall", type: "CallExpression" }, - { messageId: "unexpectedCall", type: "CallExpression" }, + { + messageId: "unexpectedCall", + }, + { + messageId: "unexpectedCall", + }, ], }, { @@ -3531,8 +3756,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a, b) && (c, d)) {}", options: [{ enforceForLogicalOperands: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -3540,8 +3769,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a = b) || (c = d)) {}", options: [{ enforceForLogicalOperands: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -3549,8 +3782,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a /= b) || (c /= d)) {}", options: [{ enforceForLogicalOperands: true }], errors: [ - { messageId: "unexpectedCall", type: "CallExpression" }, - { messageId: "unexpectedCall", type: "CallExpression" }, + { + messageId: "unexpectedCall", + }, + { + messageId: "unexpectedCall", + }, ], }, { @@ -3558,8 +3795,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a >>= b) && (c >>= d)) {}", options: [{ enforceForLogicalOperands: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -3568,8 +3809,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { options: [{ enforceForLogicalOperands: true }], languageOptions: { ecmaVersion: 2016 }, errors: [ - { messageId: "unexpectedCall", type: "CallExpression" }, - { messageId: "unexpectedCall", type: "CallExpression" }, + { + messageId: "unexpectedCall", + }, + { + messageId: "unexpectedCall", + }, ], }, { @@ -3577,8 +3822,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a ? b : c) || (d ? e : f)) {}", options: [{ enforceForLogicalOperands: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -3586,8 +3835,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a ? b : c) || (d ? e : f)) {}", options: [{ enforceForLogicalOperands: true }], errors: [ - { messageId: "unexpectedCall", type: "CallExpression" }, - { messageId: "unexpectedCall", type: "CallExpression" }, + { + messageId: "unexpectedCall", + }, + { + messageId: "unexpectedCall", + }, ], }, { @@ -3595,8 +3848,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a ? b : c) && (d ? e : f)) {}", options: [{ enforceForLogicalOperands: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -3604,8 +3861,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a ? b : c) && (d ? e : f)) {}", options: [{ enforceForLogicalOperands: true }], errors: [ - { messageId: "unexpectedCall", type: "CallExpression" }, - { messageId: "unexpectedCall", type: "CallExpression" }, + { + messageId: "unexpectedCall", + }, + { + messageId: "unexpectedCall", + }, ], }, { @@ -3613,8 +3874,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if (a || b || (c || d)) {}", options: [{ enforceForLogicalOperands: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -3622,8 +3887,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if (a || b || (c || d)) {}", options: [{ enforceForLogicalOperands: true }], errors: [ - { messageId: "unexpectedCall", type: "CallExpression" }, - { messageId: "unexpectedCall", type: "CallExpression" }, + { + messageId: "unexpectedCall", + }, + { + messageId: "unexpectedCall", + }, ], }, { @@ -3631,8 +3900,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a || b) && (c || d)) {}", options: [{ enforceForLogicalOperands: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -3640,8 +3913,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a || b) && (c || d)) {}", options: [{ enforceForLogicalOperands: true }], errors: [ - { messageId: "unexpectedCall", type: "CallExpression" }, - { messageId: "unexpectedCall", type: "CallExpression" }, + { + messageId: "unexpectedCall", + }, + { + messageId: "unexpectedCall", + }, ], }, { @@ -3649,8 +3926,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if (a && b || c && d) {}", options: [{ enforceForLogicalOperands: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -3658,8 +3939,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if (a && b || c && d) {}", options: [{ enforceForLogicalOperands: true }], errors: [ - { messageId: "unexpectedCall", type: "CallExpression" }, - { messageId: "unexpectedCall", type: "CallExpression" }, + { + messageId: "unexpectedCall", + }, + { + messageId: "unexpectedCall", + }, ], }, { @@ -3667,8 +3952,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if (a && b && (c && d)) {}", options: [{ enforceForLogicalOperands: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -3676,8 +3965,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if (a && b && (c && d)) {}", options: [{ enforceForLogicalOperands: true }], errors: [ - { messageId: "unexpectedCall", type: "CallExpression" }, - { messageId: "unexpectedCall", type: "CallExpression" }, + { + messageId: "unexpectedCall", + }, + { + messageId: "unexpectedCall", + }, ], }, { @@ -3685,8 +3978,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if (a !== b || c !== d) {}", options: [{ enforceForLogicalOperands: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -3694,8 +3991,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if (a != b || c != d) {}", options: [{ enforceForLogicalOperands: true }], errors: [ - { messageId: "unexpectedCall", type: "CallExpression" }, - { messageId: "unexpectedCall", type: "CallExpression" }, + { + messageId: "unexpectedCall", + }, + { + messageId: "unexpectedCall", + }, ], }, { @@ -3703,8 +4004,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if (a === b && c === d) {}", options: [{ enforceForLogicalOperands: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -3712,8 +4017,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if (a > b || c < d) {}", options: [{ enforceForLogicalOperands: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -3721,8 +4030,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if (!a || +b) {}", options: [{ enforceForLogicalOperands: true }], errors: [ - { messageId: "unexpectedCall", type: "CallExpression" }, - { messageId: "unexpectedCall", type: "CallExpression" }, + { + messageId: "unexpectedCall", + }, + { + messageId: "unexpectedCall", + }, ], }, { @@ -3730,8 +4043,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if (f(a) && b.c) {}", options: [{ enforceForLogicalOperands: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -3739,8 +4056,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if (a || b) {}", options: [{ enforceForLogicalOperands: true }], errors: [ - { messageId: "unexpectedCall", type: "CallExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedCall", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -3748,8 +4069,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if (a && b) {}", options: [{ enforceForLogicalOperands: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedCall", type: "CallExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedCall", + }, ], }, { @@ -3757,8 +4082,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a) || (b)) {}", options: [{ enforceForLogicalOperands: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedCall", type: "CallExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedCall", + }, ], }, @@ -3767,7 +4096,11 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a ?? b) || c) {}", options: [{ enforceForLogicalOperands: true }], languageOptions: { ecmaVersion: 2020 }, - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, // Optional chaining @@ -3820,8 +4153,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a, b) || (c, d)) {}", options: [{ enforceForInnerExpressions: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -3829,8 +4166,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a, b) || (c, d)) {}", options: [{ enforceForInnerExpressions: true }], errors: [ - { messageId: "unexpectedCall", type: "CallExpression" }, - { messageId: "unexpectedCall", type: "CallExpression" }, + { + messageId: "unexpectedCall", + }, + { + messageId: "unexpectedCall", + }, ], }, { @@ -3838,8 +4179,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a, b) || (c, d)) {}", options: [{ enforceForInnerExpressions: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -3847,8 +4192,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a, b) && (c, d)) {}", options: [{ enforceForInnerExpressions: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -3856,8 +4205,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a, b) && (c, d)) {}", options: [{ enforceForInnerExpressions: true }], errors: [ - { messageId: "unexpectedCall", type: "CallExpression" }, - { messageId: "unexpectedCall", type: "CallExpression" }, + { + messageId: "unexpectedCall", + }, + { + messageId: "unexpectedCall", + }, ], }, { @@ -3865,8 +4218,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a, b) && (c, d)) {}", options: [{ enforceForInnerExpressions: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -3874,8 +4231,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a = b) || (c = d)) {}", options: [{ enforceForInnerExpressions: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -3883,8 +4244,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a /= b) || (c /= d)) {}", options: [{ enforceForInnerExpressions: true }], errors: [ - { messageId: "unexpectedCall", type: "CallExpression" }, - { messageId: "unexpectedCall", type: "CallExpression" }, + { + messageId: "unexpectedCall", + }, + { + messageId: "unexpectedCall", + }, ], }, { @@ -3892,8 +4257,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a >>= b) && (c >>= d)) {}", options: [{ enforceForInnerExpressions: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -3902,8 +4271,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { options: [{ enforceForInnerExpressions: true }], languageOptions: { ecmaVersion: 2016 }, errors: [ - { messageId: "unexpectedCall", type: "CallExpression" }, - { messageId: "unexpectedCall", type: "CallExpression" }, + { + messageId: "unexpectedCall", + }, + { + messageId: "unexpectedCall", + }, ], }, { @@ -3911,8 +4284,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a ? b : c) || (d ? e : f)) {}", options: [{ enforceForInnerExpressions: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -3920,8 +4297,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a ? b : c) || (d ? e : f)) {}", options: [{ enforceForInnerExpressions: true }], errors: [ - { messageId: "unexpectedCall", type: "CallExpression" }, - { messageId: "unexpectedCall", type: "CallExpression" }, + { + messageId: "unexpectedCall", + }, + { + messageId: "unexpectedCall", + }, ], }, { @@ -3929,8 +4310,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a ? b : c) && (d ? e : f)) {}", options: [{ enforceForInnerExpressions: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -3938,8 +4323,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a ? b : c) && (d ? e : f)) {}", options: [{ enforceForInnerExpressions: true }], errors: [ - { messageId: "unexpectedCall", type: "CallExpression" }, - { messageId: "unexpectedCall", type: "CallExpression" }, + { + messageId: "unexpectedCall", + }, + { + messageId: "unexpectedCall", + }, ], }, { @@ -3947,8 +4336,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if (a || b || (c || d)) {}", options: [{ enforceForInnerExpressions: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -3956,8 +4349,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if (a || b || (c || d)) {}", options: [{ enforceForInnerExpressions: true }], errors: [ - { messageId: "unexpectedCall", type: "CallExpression" }, - { messageId: "unexpectedCall", type: "CallExpression" }, + { + messageId: "unexpectedCall", + }, + { + messageId: "unexpectedCall", + }, ], }, { @@ -3965,8 +4362,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a || b) && (c || d)) {}", options: [{ enforceForInnerExpressions: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -3974,8 +4375,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a || b) && (c || d)) {}", options: [{ enforceForInnerExpressions: true }], errors: [ - { messageId: "unexpectedCall", type: "CallExpression" }, - { messageId: "unexpectedCall", type: "CallExpression" }, + { + messageId: "unexpectedCall", + }, + { + messageId: "unexpectedCall", + }, ], }, { @@ -3983,8 +4388,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if (a && b || c && d) {}", options: [{ enforceForInnerExpressions: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -3992,8 +4401,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if (a && b || c && d) {}", options: [{ enforceForInnerExpressions: true }], errors: [ - { messageId: "unexpectedCall", type: "CallExpression" }, - { messageId: "unexpectedCall", type: "CallExpression" }, + { + messageId: "unexpectedCall", + }, + { + messageId: "unexpectedCall", + }, ], }, { @@ -4001,8 +4414,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if (a && b && (c && d)) {}", options: [{ enforceForInnerExpressions: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -4010,8 +4427,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if (a && b && (c && d)) {}", options: [{ enforceForInnerExpressions: true }], errors: [ - { messageId: "unexpectedCall", type: "CallExpression" }, - { messageId: "unexpectedCall", type: "CallExpression" }, + { + messageId: "unexpectedCall", + }, + { + messageId: "unexpectedCall", + }, ], }, { @@ -4019,8 +4440,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if (a !== b || c !== d) {}", options: [{ enforceForInnerExpressions: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -4028,8 +4453,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if (a != b || c != d) {}", options: [{ enforceForInnerExpressions: true }], errors: [ - { messageId: "unexpectedCall", type: "CallExpression" }, - { messageId: "unexpectedCall", type: "CallExpression" }, + { + messageId: "unexpectedCall", + }, + { + messageId: "unexpectedCall", + }, ], }, { @@ -4037,8 +4466,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if (a === b && c === d) {}", options: [{ enforceForInnerExpressions: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -4046,8 +4479,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if (a > b || c < d) {}", options: [{ enforceForInnerExpressions: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -4055,8 +4492,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if (!a || +b) {}", options: [{ enforceForInnerExpressions: true }], errors: [ - { messageId: "unexpectedCall", type: "CallExpression" }, - { messageId: "unexpectedCall", type: "CallExpression" }, + { + messageId: "unexpectedCall", + }, + { + messageId: "unexpectedCall", + }, ], }, { @@ -4064,8 +4505,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if (f(a) && b.c) {}", options: [{ enforceForInnerExpressions: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -4073,8 +4518,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if (a || b) {}", options: [{ enforceForInnerExpressions: true }], errors: [ - { messageId: "unexpectedCall", type: "CallExpression" }, - { messageId: "unexpectedNegation", type: "UnaryExpression" }, + { + messageId: "unexpectedCall", + }, + { + messageId: "unexpectedNegation", + }, ], }, { @@ -4082,8 +4531,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if (a && b) {}", options: [{ enforceForInnerExpressions: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedCall", type: "CallExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedCall", + }, ], }, { @@ -4091,8 +4544,12 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a) || (b)) {}", options: [{ enforceForInnerExpressions: true }], errors: [ - { messageId: "unexpectedNegation", type: "UnaryExpression" }, - { messageId: "unexpectedCall", type: "CallExpression" }, + { + messageId: "unexpectedNegation", + }, + { + messageId: "unexpectedCall", + }, ], }, @@ -4101,7 +4558,11 @@ ruleTester.run("no-extra-boolean-cast", rule, { output: "if ((a ?? b) || c) {}", options: [{ enforceForInnerExpressions: true }], languageOptions: { ecmaVersion: 2020 }, - errors: [{ messageId: "unexpectedCall", type: "CallExpression" }], + errors: [ + { + messageId: "unexpectedCall", + }, + ], }, { code: "if (Boolean?.(a ?? b) || c) {}", diff --git a/tests/lib/rules/no-extra-label.js b/tests/lib/rules/no-extra-label.js index 58598efa62df..2d0f54205dc0 100644 --- a/tests/lib/rules/no-extra-label.js +++ b/tests/lib/rules/no-extra-label.js @@ -112,7 +112,6 @@ ruleTester.run("no-extra-label", rule, { { messageId: "unexpected", data: { name: "A" }, - type: "Identifier", line: 2, }, ], diff --git a/tests/lib/rules/no-extra-parens.js b/tests/lib/rules/no-extra-parens.js index 2071ab04337f..816c87026d58 100644 --- a/tests/lib/rules/no-extra-parens.js +++ b/tests/lib/rules/no-extra-parens.js @@ -35,7 +35,6 @@ function invalid(code, output, type, line, config) { errors: [ { messageId: "unexpected", - type, }, ], options: (config && config.options) || [], @@ -1948,7 +1947,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", }, ], }, @@ -1958,7 +1956,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", }, ], }, @@ -1968,7 +1965,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", }, ], }, @@ -1978,11 +1974,9 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", }, { messageId: "unexpected", - type: "AssignmentExpression", }, ], }, @@ -1994,7 +1988,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", }, ], }, @@ -2004,7 +1997,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", }, ], }, @@ -2014,7 +2006,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", }, ], }, @@ -2024,11 +2015,9 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", }, { messageId: "unexpected", - type: "AssignmentExpression", }, ], }, @@ -2039,7 +2028,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", }, ], }, @@ -2049,7 +2037,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "LogicalExpression", }, ], }, @@ -2059,7 +2046,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", }, ], }, @@ -2069,11 +2055,9 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", }, { messageId: "unexpected", - type: "AssignmentExpression", }, ], }, @@ -2085,11 +2069,9 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "AwaitExpression", }, { messageId: "unexpected", - type: "AwaitExpression", }, ], }, @@ -2265,7 +2247,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "SequenceExpression", }, ], }, @@ -2276,7 +2257,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "SequenceExpression", }, ], }, @@ -2287,7 +2267,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "SequenceExpression", }, ], }, @@ -2298,7 +2277,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "SequenceExpression", }, ], }, @@ -2309,7 +2287,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "SequenceExpression", }, ], }, @@ -2320,7 +2297,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "SequenceExpression", }, ], }, @@ -2333,7 +2309,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "NewExpression", }, ], }, @@ -2344,7 +2319,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "NewExpression", }, ], }, @@ -2355,7 +2329,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "NewExpression", }, ], }, @@ -2366,7 +2339,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "NewExpression", }, ], }, @@ -2377,7 +2349,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "NewExpression", }, ], }, @@ -2390,7 +2361,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "FunctionExpression", }, ], }, @@ -2401,7 +2371,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", }, ], }, @@ -2412,7 +2381,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "FunctionExpression", }, ], }, @@ -2423,7 +2391,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", }, ], }, @@ -2434,7 +2401,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "FunctionExpression", }, ], }, @@ -2445,7 +2411,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "FunctionExpression", }, ], }, @@ -2456,7 +2421,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", }, ], }, @@ -2467,7 +2431,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", }, ], }, @@ -2478,7 +2441,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "MemberExpression", }, ], }, @@ -2489,7 +2451,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "MemberExpression", }, ], }, @@ -2500,7 +2461,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "FunctionExpression", }, ], }, @@ -2511,7 +2471,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "MemberExpression", }, ], }, @@ -2522,7 +2481,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "FunctionExpression", }, ], }, @@ -2533,7 +2491,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "NewExpression", }, ], }, @@ -2544,7 +2501,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "FunctionExpression", }, ], }, @@ -2555,7 +2511,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", }, ], }, @@ -2566,7 +2521,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "FunctionExpression", }, ], }, @@ -2577,7 +2531,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", }, ], }, @@ -2588,7 +2541,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "FunctionExpression", }, ], }, @@ -2599,7 +2551,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", }, ], }, @@ -2610,7 +2561,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", }, ], }, @@ -2621,7 +2571,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", }, ], }, @@ -2632,7 +2581,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "Identifier", }, ], }, @@ -2643,7 +2591,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", }, ], }, @@ -2654,7 +2601,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "CallExpression", }, ], }, @@ -2665,7 +2611,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "MemberExpression", }, ], }, @@ -2676,7 +2621,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "Identifier", }, ], }, @@ -2687,7 +2631,6 @@ ruleTester.run("no-extra-parens", rule, { errors: [ { messageId: "unexpected", - type: "Literal", }, ], }, @@ -4133,8 +4076,12 @@ ruleTester.run("no-extra-parens", rule, { code: "(newClass) = [(one)] = class { static * [Symbol.iterator]() { yield 1; } };", output: "newClass = [one] = class { static * [Symbol.iterator]() { yield 1; } };", errors: [ - { messageId: "unexpected", type: "Identifier" }, - { messageId: "unexpected", type: "Identifier" }, + { + messageId: "unexpected", + }, + { + messageId: "unexpected", + }, ], }, invalid("((a)) = () => {};", "(a) = () => {};", "Identifier"), diff --git a/tests/lib/rules/no-extra-semi.js b/tests/lib/rules/no-extra-semi.js index dbf6f0b05625..9b4d198f2f4a 100644 --- a/tests/lib/rules/no-extra-semi.js +++ b/tests/lib/rules/no-extra-semi.js @@ -73,78 +73,133 @@ ruleTester.run("no-extra-semi", rule, { { code: "var x = 5;;", output: "var x = 5;", - errors: [{ messageId: "unexpected", type: "EmptyStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "function foo(){};", output: "function foo(){}", - errors: [{ messageId: "unexpected", type: "EmptyStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "for(;;);;", output: "for(;;);", - errors: [{ messageId: "unexpected", type: "EmptyStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "while(0);;", output: "while(0);", - errors: [{ messageId: "unexpected", type: "EmptyStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "do;while(0);;", output: "do;while(0);", - errors: [{ messageId: "unexpected", type: "EmptyStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "for(a in b);;", output: "for(a in b);", - errors: [{ messageId: "unexpected", type: "EmptyStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "for(a of b);;", output: "for(a of b);", languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "unexpected", type: "EmptyStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(true);;", output: "if(true);", - errors: [{ messageId: "unexpected", type: "EmptyStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(true){} else;;", output: "if(true){} else;", - errors: [{ messageId: "unexpected", type: "EmptyStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "if(true){;} else {;}", output: "if(true){} else {}", errors: [ - { messageId: "unexpected", type: "EmptyStatement" }, - { messageId: "unexpected", type: "EmptyStatement" }, + { + messageId: "unexpected", + }, + { + messageId: "unexpected", + }, ], }, { code: "foo:;;", output: "foo:;", - errors: [{ messageId: "unexpected", type: "EmptyStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "with(foo);;", output: "with(foo);", - errors: [{ messageId: "unexpected", type: "EmptyStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "with(foo){;}", output: "with(foo){}", - errors: [{ messageId: "unexpected", type: "EmptyStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "class A { static { ; } }", output: "class A { static { } }", languageOptions: { ecmaVersion: 2022 }, errors: [ - { messageId: "unexpected", type: "EmptyStatement", column: 20 }, + { + messageId: "unexpected", + column: 20, + }, ], }, { @@ -152,7 +207,10 @@ ruleTester.run("no-extra-semi", rule, { output: "class A { static { a; } }", languageOptions: { ecmaVersion: 2022 }, errors: [ - { messageId: "unexpected", type: "EmptyStatement", column: 22 }, + { + messageId: "unexpected", + column: 22, + }, ], }, @@ -162,7 +220,10 @@ ruleTester.run("no-extra-semi", rule, { output: "class A { }", languageOptions: { ecmaVersion: 6 }, errors: [ - { messageId: "unexpected", type: "Punctuator", column: 11 }, + { + messageId: "unexpected", + column: 11, + }, ], }, { @@ -170,7 +231,10 @@ ruleTester.run("no-extra-semi", rule, { output: "class A { /*a*/ }", languageOptions: { ecmaVersion: 6 }, errors: [ - { messageId: "unexpected", type: "Punctuator", column: 16 }, + { + messageId: "unexpected", + column: 16, + }, ], }, { @@ -178,7 +242,10 @@ ruleTester.run("no-extra-semi", rule, { output: "class A { a() {} }", languageOptions: { ecmaVersion: 6 }, errors: [ - { messageId: "unexpected", type: "Punctuator", column: 11 }, + { + messageId: "unexpected", + column: 11, + }, ], }, { @@ -186,7 +253,10 @@ ruleTester.run("no-extra-semi", rule, { output: "class A { a() {} }", languageOptions: { ecmaVersion: 6 }, errors: [ - { messageId: "unexpected", type: "Punctuator", column: 17 }, + { + messageId: "unexpected", + column: 17, + }, ], }, { @@ -194,7 +264,10 @@ ruleTester.run("no-extra-semi", rule, { output: "class A { a() {} b() {} }", languageOptions: { ecmaVersion: 6 }, errors: [ - { messageId: "unexpected", type: "Punctuator", column: 17 }, + { + messageId: "unexpected", + column: 17, + }, ], }, { @@ -202,9 +275,18 @@ ruleTester.run("no-extra-semi", rule, { output: "class A { a() {} b() {} }", languageOptions: { ecmaVersion: 6 }, errors: [ - { messageId: "unexpected", type: "Punctuator", column: 10 }, - { messageId: "unexpected", type: "Punctuator", column: 18 }, - { messageId: "unexpected", type: "Punctuator", column: 26 }, + { + messageId: "unexpected", + column: 10, + }, + { + messageId: "unexpected", + column: 18, + }, + { + messageId: "unexpected", + column: 26, + }, ], }, { @@ -212,7 +294,10 @@ ruleTester.run("no-extra-semi", rule, { output: "class A { a() {} get b() {} }", languageOptions: { ecmaVersion: 6 }, errors: [ - { messageId: "unexpected", type: "Punctuator", column: 17 }, + { + messageId: "unexpected", + column: 17, + }, ], }, { @@ -220,7 +305,10 @@ ruleTester.run("no-extra-semi", rule, { output: "class A { field; }", languageOptions: { ecmaVersion: 2022 }, errors: [ - { messageId: "unexpected", type: "Punctuator", column: 17 }, + { + messageId: "unexpected", + column: 17, + }, ], }, { @@ -228,7 +316,10 @@ ruleTester.run("no-extra-semi", rule, { output: "class A { static {} }", languageOptions: { ecmaVersion: 2022 }, errors: [ - { messageId: "unexpected", type: "Punctuator", column: 20 }, + { + messageId: "unexpected", + column: 20, + }, ], }, { @@ -236,7 +327,10 @@ ruleTester.run("no-extra-semi", rule, { output: "class A { static { a; } foo(){} }", languageOptions: { ecmaVersion: 2022 }, errors: [ - { messageId: "unexpected", type: "Punctuator", column: 24 }, + { + messageId: "unexpected", + column: 24, + }, ], }, @@ -244,42 +338,69 @@ ruleTester.run("no-extra-semi", rule, { { code: "; 'use strict'", output: null, - errors: [{ messageId: "unexpected", type: "EmptyStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "; ; 'use strict'", output: " ; 'use strict'", errors: [ - { messageId: "unexpected", type: "EmptyStatement" }, - { messageId: "unexpected", type: "EmptyStatement" }, + { + messageId: "unexpected", + }, + { + messageId: "unexpected", + }, ], }, { code: "debugger;\n;\n'use strict'", output: null, errors: [ - { messageId: "unexpected", type: "EmptyStatement", line: 2 }, + { + messageId: "unexpected", + line: 2, + }, ], }, { code: "function foo() { ; 'bar'; }", output: null, - errors: [{ messageId: "unexpected", type: "EmptyStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "{ ; 'foo'; }", output: "{ 'foo'; }", - errors: [{ messageId: "unexpected", type: "EmptyStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "; ('use strict');", output: " ('use strict');", - errors: [{ messageId: "unexpected", type: "EmptyStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, { code: "; 1;", output: " 1;", - errors: [{ messageId: "unexpected", type: "EmptyStatement" }], + errors: [ + { + messageId: "unexpected", + }, + ], }, ], }); diff --git a/tests/lib/rules/no-fallthrough.js b/tests/lib/rules/no-fallthrough.js index 76d48a0faf28..954cd3d7f2a3 100644 --- a/tests/lib/rules/no-fallthrough.js +++ b/tests/lib/rules/no-fallthrough.js @@ -19,7 +19,6 @@ const rule = require("../../../lib/rules/no-fallthrough"), const errorsDefault = [ { messageId: "default", - type: "SwitchCase", }, ]; @@ -266,7 +265,6 @@ switch(foo){ errors: [ { messageId: "case", - type: "SwitchCase", line: 2, column: 1, }, @@ -277,7 +275,6 @@ switch(foo){ errors: [ { messageId: "default", - type: "SwitchCase", line: 2, column: 1, }, @@ -349,7 +346,6 @@ switch(foo){ errors: [ { messageId: "case", - type: "SwitchCase", line: 3, column: 1, }, @@ -365,7 +361,6 @@ switch(foo){ errors: [ { messageId: "default", - type: "SwitchCase", line: 4, column: 1, }, @@ -381,7 +376,6 @@ switch(foo){ errors: [ { messageId: "default", - type: "SwitchCase", line: 4, column: 1, }, @@ -392,7 +386,6 @@ switch(foo){ errors: [ { messageId: "case", - type: "SwitchCase", line: 3, column: 1, }, @@ -408,7 +401,6 @@ switch(foo){ errors: [ { messageId: "case", - type: "SwitchCase", line: 3, column: 1, }, @@ -420,7 +412,6 @@ switch(foo){ errors: [ { messageId: "case", - type: "SwitchCase", line: 3, column: 1, }, @@ -432,7 +423,6 @@ switch(foo){ errors: [ { messageId: "case", - type: "SwitchCase", line: 2, column: 4, }, @@ -444,13 +434,11 @@ switch(foo){ errors: [ { messageId: "case", - type: "SwitchCase", line: 1, column: 24, }, { messageId: "case", - type: "SwitchCase", line: 1, column: 34, }, @@ -462,7 +450,6 @@ switch(foo){ errors: [ { messageId: "case", - type: "SwitchCase", line: 3, column: 2, }, diff --git a/tests/lib/rules/no-floating-decimal.js b/tests/lib/rules/no-floating-decimal.js index dba12a486d35..78d943b5543a 100644 --- a/tests/lib/rules/no-floating-decimal.js +++ b/tests/lib/rules/no-floating-decimal.js @@ -17,8 +17,12 @@ const rule = require("../../../lib/rules/no-floating-decimal"), //------------------------------------------------------------------------------ const ruleTester = new RuleTester(); -const leadingError = { messageId: "leading", type: "Literal" }; -const trailingError = { messageId: "trailing", type: "Literal" }; +const leadingError = { + messageId: "leading", +}; +const trailingError = { + messageId: "trailing", +}; ruleTester.run("no-floating-decimal", rule, { valid: ["var x = 2.5;", 'var x = "2.5";'], diff --git a/tests/lib/rules/no-func-assign.js b/tests/lib/rules/no-func-assign.js index e7f4db961479..eafd79000c49 100644 --- a/tests/lib/rules/no-func-assign.js +++ b/tests/lib/rules/no-func-assign.js @@ -41,7 +41,6 @@ ruleTester.run("no-func-assign", rule, { { messageId: "isAFunction", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -51,7 +50,6 @@ ruleTester.run("no-func-assign", rule, { { messageId: "isAFunction", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -61,7 +59,6 @@ ruleTester.run("no-func-assign", rule, { { messageId: "isAFunction", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -72,7 +69,6 @@ ruleTester.run("no-func-assign", rule, { { messageId: "isAFunction", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -83,7 +79,6 @@ ruleTester.run("no-func-assign", rule, { { messageId: "isAFunction", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -94,7 +89,6 @@ ruleTester.run("no-func-assign", rule, { { messageId: "isAFunction", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -105,7 +99,6 @@ ruleTester.run("no-func-assign", rule, { { messageId: "isAFunction", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -115,7 +108,6 @@ ruleTester.run("no-func-assign", rule, { { messageId: "isAFunction", data: { name: "foo" }, - type: "Identifier", }, ], }, diff --git a/tests/lib/rules/no-global-assign.js b/tests/lib/rules/no-global-assign.js index 5b72c7c1bb53..7e6d83b02011 100644 --- a/tests/lib/rules/no-global-assign.js +++ b/tests/lib/rules/no-global-assign.js @@ -42,7 +42,6 @@ ruleTester.run("no-global-assign", rule, { { messageId: "globalShouldNotBeModified", data: { name: "String" }, - type: "Identifier", }, ], }, @@ -52,7 +51,6 @@ ruleTester.run("no-global-assign", rule, { { messageId: "globalShouldNotBeModified", data: { name: "String" }, - type: "Identifier", }, ], }, @@ -63,12 +61,10 @@ ruleTester.run("no-global-assign", rule, { { messageId: "globalShouldNotBeModified", data: { name: "Object" }, - type: "Identifier", }, { messageId: "globalShouldNotBeModified", data: { name: "String" }, - type: "Identifier", }, ], }, @@ -79,7 +75,6 @@ ruleTester.run("no-global-assign", rule, { { messageId: "globalShouldNotBeModified", data: { name: "top" }, - type: "Identifier", }, ], }, @@ -90,7 +85,6 @@ ruleTester.run("no-global-assign", rule, { { messageId: "globalShouldNotBeModified", data: { name: "require" }, - type: "Identifier", }, ], }, @@ -102,7 +96,6 @@ ruleTester.run("no-global-assign", rule, { { messageId: "globalShouldNotBeModified", data: { name: "b" }, - type: "Identifier", }, ], }, @@ -113,7 +106,6 @@ ruleTester.run("no-global-assign", rule, { { messageId: "globalShouldNotBeModified", data: { name: "b" }, - type: "Identifier", }, ], }, @@ -123,7 +115,6 @@ ruleTester.run("no-global-assign", rule, { { messageId: "globalShouldNotBeModified", data: { name: "b" }, - type: "Identifier", }, ], }, @@ -133,7 +124,6 @@ ruleTester.run("no-global-assign", rule, { { messageId: "globalShouldNotBeModified", data: { name: "b" }, - type: "Identifier", }, ], }, @@ -143,7 +133,6 @@ ruleTester.run("no-global-assign", rule, { { messageId: "globalShouldNotBeModified", data: { name: "Array" }, - type: "Identifier", }, ], }, diff --git a/tests/lib/rules/no-implicit-coercion.js b/tests/lib/rules/no-implicit-coercion.js index 19dfb75cfe29..0fc4e75dce23 100644 --- a/tests/lib/rules/no-implicit-coercion.js +++ b/tests/lib/rules/no-implicit-coercion.js @@ -171,7 +171,6 @@ ruleTester.run("no-implicit-coercion", rule, { { messageId: "implicitCoercion", data: { recommendation: "Boolean(foo)" }, - type: "UnaryExpression", }, ], }, @@ -182,7 +181,6 @@ ruleTester.run("no-implicit-coercion", rule, { { messageId: "implicitCoercion", data: { recommendation: "Boolean(foo + bar)" }, - type: "UnaryExpression", }, ], }, @@ -200,7 +198,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "Boolean(foo + bar); var Boolean = null", }, ], - type: "UnaryExpression", }, ], }, @@ -223,7 +220,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "Boolean(foo + bar)", }, ], - type: "UnaryExpression", }, ], }, @@ -234,7 +230,6 @@ ruleTester.run("no-implicit-coercion", rule, { { messageId: "implicitCoercion", data: { recommendation: "foo.indexOf(1) !== -1" }, - type: "UnaryExpression", }, ], }, @@ -245,7 +240,6 @@ ruleTester.run("no-implicit-coercion", rule, { { messageId: "implicitCoercion", data: { recommendation: "foo.bar.indexOf(2) !== -1" }, - type: "UnaryExpression", }, ], }, @@ -263,7 +257,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "Number(foo)", }, ], - type: "UnaryExpression", }, ], }, @@ -281,7 +274,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "Number(foo)", }, ], - type: "UnaryExpression", }, ], }, @@ -299,7 +291,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "Number(foo.bar)", }, ], - type: "UnaryExpression", }, ], }, @@ -317,7 +308,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "Number(foo)", }, ], - type: "BinaryExpression", }, ], }, @@ -335,7 +325,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "Number(foo)", }, ], - type: "BinaryExpression", }, ], }, @@ -353,7 +342,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "Number(foo.bar)", }, ], - type: "BinaryExpression", }, ], }, @@ -371,7 +359,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "Number(foo.bar)", }, ], - type: "BinaryExpression", }, ], }, @@ -389,7 +376,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "String(foo)", }, ], - type: "BinaryExpression", }, ], }, @@ -408,7 +394,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "String(foo)", }, ], - type: "BinaryExpression", }, ], }, @@ -426,7 +411,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "String(foo)", }, ], - type: "BinaryExpression", }, ], }, @@ -445,7 +429,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "String(foo)", }, ], - type: "BinaryExpression", }, ], }, @@ -463,7 +446,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "String(foo.bar)", }, ], - type: "BinaryExpression", }, ], }, @@ -482,7 +464,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "String(foo.bar)", }, ], - type: "BinaryExpression", }, ], }, @@ -500,7 +481,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "String(foo.bar)", }, ], - type: "BinaryExpression", }, ], }, @@ -519,7 +499,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "String(foo.bar)", }, ], - type: "BinaryExpression", }, ], }, @@ -539,7 +518,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "String(foo)", }, ], - type: "TemplateLiteral", }, ], }, @@ -559,7 +537,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "String(foo)", }, ], - type: "TemplateLiteral", }, ], }, @@ -579,7 +556,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "String(foo)", }, ], - type: "TemplateLiteral", }, ], }, @@ -597,7 +573,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "foo = String(foo)", }, ], - type: "AssignmentExpression", }, ], }, @@ -616,7 +591,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "foo = String(foo)", }, ], - type: "AssignmentExpression", }, ], }, @@ -628,7 +602,6 @@ ruleTester.run("no-implicit-coercion", rule, { { messageId: "implicitCoercion", data: { recommendation: "Boolean(foo)" }, - type: "UnaryExpression", }, ], }, @@ -640,7 +613,6 @@ ruleTester.run("no-implicit-coercion", rule, { { messageId: "implicitCoercion", data: { recommendation: "foo.indexOf(1) !== -1" }, - type: "UnaryExpression", }, ], }, @@ -659,7 +631,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "var a = Number(foo)", }, ], - type: "BinaryExpression", }, ], }, @@ -678,7 +649,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "var a = Number(foo)", }, ], - type: "UnaryExpression", }, ], }, @@ -697,7 +667,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "var a = String(foo)", }, ], - type: "BinaryExpression", }, ], }, @@ -717,7 +686,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "var a = String(foo)", }, ], - type: "BinaryExpression", }, ], }, @@ -735,7 +703,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "typeof Number(foo)", }, ], - type: "UnaryExpression", }, ], }, @@ -753,7 +720,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "typeof Number(foo)", }, ], - type: "UnaryExpression", }, ], }, @@ -772,7 +738,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "let x =String(1n);", }, ], - type: "BinaryExpression", }, ], }, @@ -786,7 +751,6 @@ ruleTester.run("no-implicit-coercion", rule, { { messageId: "implicitCoercion", data: { recommendation: "foo?.indexOf(1) >= 0" }, - type: "UnaryExpression", }, ], }, @@ -798,7 +762,6 @@ ruleTester.run("no-implicit-coercion", rule, { { messageId: "implicitCoercion", data: { recommendation: "(foo?.indexOf)(1) !== -1" }, - type: "UnaryExpression", }, ], }, @@ -818,7 +781,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "Number(a) / 2", }, ], - type: "BinaryExpression", }, ], }, @@ -836,7 +798,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "(Number(a)) / 2", }, ], - type: "BinaryExpression", }, ], }, @@ -854,7 +815,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "a * 1 / (Number(b))", }, ], - type: "BinaryExpression", }, ], }, @@ -872,7 +832,6 @@ ruleTester.run("no-implicit-coercion", rule, { output: "Number(a) + 2", }, ], - type: "BinaryExpression", }, ], }, diff --git a/tests/lib/rules/no-implicit-globals.js b/tests/lib/rules/no-implicit-globals.js index e35fc9974974..ce43b286ebb8 100644 --- a/tests/lib/rules/no-implicit-globals.js +++ b/tests/lib/rules/no-implicit-globals.js @@ -570,7 +570,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: varMessage, - type: "VariableDeclarator", }, ], }, @@ -579,7 +578,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: functionMessage, - type: "FunctionDeclaration", }, ], }, @@ -589,7 +587,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: functionMessage, - type: "FunctionDeclaration", }, ], }, @@ -599,7 +596,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: functionMessage, - type: "FunctionDeclaration", }, ], }, @@ -609,7 +605,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: functionMessage, - type: "FunctionDeclaration", }, ], }, @@ -618,7 +613,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: varMessage, - type: "VariableDeclarator", }, ], }, @@ -627,7 +621,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: varMessage, - type: "VariableDeclarator", }, ], }, @@ -637,7 +630,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: varMessage, - type: "VariableDeclarator", }, ], }, @@ -647,7 +639,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: varMessage, - type: "VariableDeclarator", }, ], }, @@ -656,11 +647,9 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: varMessage, - type: "VariableDeclarator", }, { message: varMessage, - type: "VariableDeclarator", }, ], }, @@ -771,7 +760,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: leakMessage, - type: "AssignmentExpression", }, ], }, @@ -780,7 +768,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: leakMessage, - type: "AssignmentExpression", }, ], }, @@ -790,7 +777,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: leakMessage, - type: "AssignmentExpression", }, ], }, @@ -800,7 +786,6 @@ ruleTester.run("no-implicit-globals", rule, { { message: leakMessage, column: 27, - type: "AssignmentExpression", }, ], }, @@ -809,7 +794,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: leakMessage, - type: "AssignmentExpression", }, ], }, @@ -818,7 +802,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: leakMessage, - type: "ForInStatement", }, ], }, @@ -828,7 +811,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: leakMessage, - type: "ForOfStatement", }, ], }, @@ -841,7 +823,6 @@ ruleTester.run("no-implicit-globals", rule, { { message: leakMessage, column: 24, - type: "AssignmentExpression", }, ], }, @@ -851,7 +832,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: leakMessage, - type: "AssignmentExpression", }, ], }, @@ -863,7 +843,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: leakMessage, - type: "AssignmentExpression", }, ], }, @@ -875,12 +854,10 @@ ruleTester.run("no-implicit-globals", rule, { { message: leakMessage, column: 1, - type: "AssignmentExpression", }, { message: leakMessage, column: 10, - type: "AssignmentExpression", }, ], }, @@ -890,12 +867,10 @@ ruleTester.run("no-implicit-globals", rule, { { message: leakMessage, column: 1, - type: "AssignmentExpression", }, { message: leakMessage, column: 7, - type: "AssignmentExpression", }, ], }, @@ -905,7 +880,6 @@ ruleTester.run("no-implicit-globals", rule, { { message: leakMessage, column: 31, - type: "AssignmentExpression", }, ], }, @@ -915,7 +889,6 @@ ruleTester.run("no-implicit-globals", rule, { { message: leakMessage, column: 25, - type: "AssignmentExpression", }, ], }, @@ -924,11 +897,9 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: leakMessage, - type: "AssignmentExpression", }, { message: varMessage, - type: "VariableDeclarator", }, ], }, @@ -937,12 +908,10 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: varMessage, - type: "VariableDeclarator", }, { message: leakMessage, column: 11, - type: "AssignmentExpression", }, ], }, @@ -952,7 +921,6 @@ ruleTester.run("no-implicit-globals", rule, { { message: leakMessage, column: 35, - type: "AssignmentExpression", }, ], }, @@ -961,7 +929,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: varMessage, - type: "VariableDeclarator", }, ], }, @@ -972,12 +939,10 @@ ruleTester.run("no-implicit-globals", rule, { { message: leakMessage, column: 1, - type: "AssignmentExpression", }, { message: leakMessage, column: 1, - type: "AssignmentExpression", }, ], }, @@ -988,7 +953,6 @@ ruleTester.run("no-implicit-globals", rule, { { message: leakMessage, column: 25, - type: "AssignmentExpression", }, ], }, @@ -999,7 +963,6 @@ ruleTester.run("no-implicit-globals", rule, { { message: leakMessage, column: 25, - type: "AssignmentExpression", }, ], }, @@ -1014,7 +977,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyAssignmentMessage, - type: "AssignmentExpression", }, ], }, @@ -1024,7 +986,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyAssignmentMessage, - type: "AssignmentExpression", }, ], }, @@ -1033,7 +994,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyAssignmentMessage, - type: "AssignmentExpression", }, ], }, @@ -1043,7 +1003,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyAssignmentMessage, - type: "AssignmentExpression", }, ], }, @@ -1052,7 +1011,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyAssignmentMessage, - type: "ForInStatement", }, ], }, @@ -1062,7 +1020,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyAssignmentMessage, - type: "ForOfStatement", }, ], }, @@ -1073,7 +1030,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, ], }, @@ -1082,7 +1038,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, ], }, @@ -1091,7 +1046,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, ], }, @@ -1100,7 +1054,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, ], }, @@ -1109,7 +1062,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, ], }, @@ -1118,7 +1070,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, ], }, @@ -1127,7 +1078,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, ], }, @@ -1137,7 +1087,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, ], }, @@ -1147,7 +1096,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, ], }, @@ -1156,7 +1104,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyRedeclarationMessage, - type: "FunctionDeclaration", }, ], }, @@ -1167,7 +1114,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, ], }, @@ -1178,7 +1124,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, ], }, @@ -1189,7 +1134,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, ], }, @@ -1200,7 +1144,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, ], }, @@ -1211,7 +1154,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, ], }, @@ -1222,7 +1164,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyRedeclarationMessage, - type: "ClassDeclaration", }, ], }, @@ -1234,12 +1175,10 @@ ruleTester.run("no-implicit-globals", rule, { { message: readonlyAssignmentMessage, column: 40, - type: "AssignmentExpression", }, { message: readonlyAssignmentMessage, column: 46, - type: "AssignmentExpression", }, ], }, @@ -1249,7 +1188,6 @@ ruleTester.run("no-implicit-globals", rule, { { message: readonlyAssignmentMessage, column: 46, - type: "AssignmentExpression", }, ], }, @@ -1259,7 +1197,6 @@ ruleTester.run("no-implicit-globals", rule, { { message: readonlyAssignmentMessage, column: 40, - type: "AssignmentExpression", }, ], }, @@ -1269,12 +1206,10 @@ ruleTester.run("no-implicit-globals", rule, { { message: readonlyAssignmentMessage, column: 26, - type: "AssignmentExpression", }, { message: leakMessage, column: 32, - type: "AssignmentExpression", }, ], }, @@ -1284,12 +1219,10 @@ ruleTester.run("no-implicit-globals", rule, { { message: leakMessage, column: 26, - type: "AssignmentExpression", }, { message: readonlyAssignmentMessage, column: 32, - type: "AssignmentExpression", }, ], }, @@ -1300,7 +1233,6 @@ ruleTester.run("no-implicit-globals", rule, { { message: readonlyAssignmentMessage, column: 16, - type: "AssignmentExpression", }, ], }, @@ -1311,12 +1243,10 @@ ruleTester.run("no-implicit-globals", rule, { { message: readonlyAssignmentMessage, column: 31, - type: "AssignmentExpression", }, { message: readonlyAssignmentMessage, column: 31, - type: "AssignmentExpression", }, ], }, @@ -1327,7 +1257,6 @@ ruleTester.run("no-implicit-globals", rule, { { message: readonlyAssignmentMessage, column: 27, - type: "AssignmentExpression", }, ], }, @@ -1338,7 +1267,6 @@ ruleTester.run("no-implicit-globals", rule, { { message: readonlyAssignmentMessage, column: 27, - type: "AssignmentExpression", }, ], }, @@ -1349,7 +1277,6 @@ ruleTester.run("no-implicit-globals", rule, { { message: readonlyAssignmentMessage, column: 27, - type: "AssignmentExpression", }, ], }, @@ -1360,12 +1287,10 @@ ruleTester.run("no-implicit-globals", rule, { { message: readonlyAssignmentMessage, column: 32, - type: "AssignmentExpression", }, { message: readonlyAssignmentMessage, column: 32, - type: "AssignmentExpression", }, ], }, @@ -1376,11 +1301,9 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, ], }, @@ -1389,7 +1312,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, ], }, @@ -1398,7 +1320,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, ], }, @@ -1407,11 +1328,9 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, { message: varMessage, - type: "VariableDeclarator", }, ], }, @@ -1420,11 +1339,9 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: varMessage, - type: "VariableDeclarator", }, { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, ], }, @@ -1435,11 +1352,9 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, ], }, @@ -1450,7 +1365,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, ], }, @@ -1461,7 +1375,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, ], }, @@ -1472,11 +1385,9 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, { message: constMessage, - type: "VariableDeclarator", }, ], }, @@ -1487,11 +1398,9 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: constMessage, - type: "VariableDeclarator", }, { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, ], }, @@ -1502,11 +1411,9 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, ], }, @@ -1517,7 +1424,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, ], }, @@ -1528,7 +1434,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, ], }, @@ -1539,11 +1444,9 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, { message: letMessage, - type: "VariableDeclarator", }, ], }, @@ -1554,11 +1457,9 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: letMessage, - type: "VariableDeclarator", }, { message: readonlyRedeclarationMessage, - type: "VariableDeclarator", }, ], }, @@ -1573,7 +1474,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: varMessage, - type: "VariableDeclarator", }, ], }, @@ -1582,7 +1482,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: functionMessage, - type: "FunctionDeclaration", }, ], }, @@ -1592,7 +1491,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: functionMessage, - type: "FunctionDeclaration", }, ], }, @@ -1602,7 +1500,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: functionMessage, - type: "FunctionDeclaration", }, ], }, @@ -1612,7 +1509,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: functionMessage, - type: "FunctionDeclaration", }, ], }, @@ -1621,7 +1517,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: varMessage, - type: "VariableDeclarator", }, ], }, @@ -1630,7 +1525,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: varMessage, - type: "VariableDeclarator", }, ], }, @@ -1640,7 +1534,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: varMessage, - type: "VariableDeclarator", }, ], }, @@ -1650,7 +1543,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: varMessage, - type: "VariableDeclarator", }, ], }, @@ -1659,7 +1551,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: varMessage, - type: "VariableDeclarator", }, ], }, @@ -1672,7 +1563,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: constMessage, - type: "VariableDeclarator", }, ], }, @@ -1683,7 +1573,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: letMessage, - type: "VariableDeclarator", }, ], }, @@ -1694,7 +1583,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: letMessage, - type: "VariableDeclarator", }, ], }, @@ -1705,7 +1593,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: classMessage, - type: "ClassDeclaration", }, ], }, @@ -1716,7 +1603,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: constMessage, - type: "VariableDeclarator", }, ], }, @@ -1727,7 +1613,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: constMessage, - type: "VariableDeclarator", }, ], }, @@ -1738,7 +1623,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: letMessage, - type: "VariableDeclarator", }, ], }, @@ -1749,11 +1633,9 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: letMessage, - type: "VariableDeclarator", }, { message: classMessage, - type: "ClassDeclaration", }, ], }, @@ -1764,11 +1646,9 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: constMessage, - type: "VariableDeclarator", }, { message: constMessage, - type: "VariableDeclarator", }, ], }, @@ -1779,11 +1659,9 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: letMessage, - type: "VariableDeclarator", }, { message: letMessage, - type: "VariableDeclarator", }, ], }, @@ -1794,7 +1672,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: leakMessage, - type: "AssignmentExpression", }, ], }, @@ -1803,7 +1680,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: leakMessage, - type: "AssignmentExpression", }, ], }, @@ -1813,7 +1689,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: leakMessage, - type: "AssignmentExpression", }, ], }, @@ -1823,7 +1698,6 @@ ruleTester.run("no-implicit-globals", rule, { { message: leakMessage, column: 46, - type: "AssignmentExpression", }, ], }, @@ -1832,7 +1706,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: leakMessage, - type: "AssignmentExpression", }, ], }, @@ -1841,7 +1714,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: leakMessage, - type: "ForInStatement", }, ], }, @@ -1851,7 +1723,6 @@ ruleTester.run("no-implicit-globals", rule, { errors: [ { message: leakMessage, - type: "ForOfStatement", }, ], }, diff --git a/tests/lib/rules/no-implied-eval.js b/tests/lib/rules/no-implied-eval.js index bf06ef2b5f9f..db1649c302a1 100644 --- a/tests/lib/rules/no-implied-eval.js +++ b/tests/lib/rules/no-implied-eval.js @@ -23,7 +23,9 @@ const ruleTester = new RuleTester({ sourceType: "script", }, }); -const expectedError = { messageId: "impliedEval", type: "CallExpression" }; +const expectedError = { + messageId: "impliedEval", +}; ruleTester.run("no-implied-eval", rule, { valid: [ @@ -504,7 +506,11 @@ ruleTester.run("no-implied-eval", rule, { { code: 'execScript("x = 1;");', languageOptions: { globals: { execScript: false } }, - errors: [{ messageId: "execScript", type: "CallExpression" }], + errors: [ + { + messageId: "execScript", + }, + ], }, { @@ -532,7 +538,11 @@ ruleTester.run("no-implied-eval", rule, { { code: "window.execScript('foo')", languageOptions: { globals: globals.browser }, - errors: [{ messageId: "execScript", type: "CallExpression" }], + errors: [ + { + messageId: "execScript", + }, + ], }, { code: "window['setTimeout']('foo')", @@ -552,12 +562,20 @@ ruleTester.run("no-implied-eval", rule, { { code: "window['execScript']('foo')", languageOptions: { globals: globals.browser }, - errors: [{ messageId: "execScript", type: "CallExpression" }], + errors: [ + { + messageId: "execScript", + }, + ], }, { code: "window[`execScript`]('foo')", languageOptions: { ecmaVersion: 6, globals: globals.browser }, - errors: [{ messageId: "execScript", type: "CallExpression" }], + errors: [ + { + messageId: "execScript", + }, + ], }, { code: "window.window['setInterval']('foo')", @@ -567,7 +585,11 @@ ruleTester.run("no-implied-eval", rule, { { code: "window.window['execScript']('foo')", languageOptions: { globals: globals.browser }, - errors: [{ messageId: "execScript", type: "CallExpression" }], + errors: [ + { + messageId: "execScript", + }, + ], }, { code: "global.setTimeout('foo')", @@ -582,7 +604,11 @@ ruleTester.run("no-implied-eval", rule, { { code: "global.execScript('foo')", languageOptions: { sourceType: "commonjs" }, - errors: [{ messageId: "execScript", type: "CallExpression" }], + errors: [ + { + messageId: "execScript", + }, + ], }, { code: "global['setTimeout']('foo')", @@ -602,12 +628,20 @@ ruleTester.run("no-implied-eval", rule, { { code: "global['execScript']('foo')", languageOptions: { sourceType: "commonjs" }, - errors: [{ messageId: "execScript", type: "CallExpression" }], + errors: [ + { + messageId: "execScript", + }, + ], }, { code: "global[`execScript`]('foo')", languageOptions: { ecmaVersion: 6, sourceType: "commonjs" }, - errors: [{ messageId: "execScript", type: "CallExpression" }], + errors: [ + { + messageId: "execScript", + }, + ], }, { code: "global.global['setInterval']('foo')", @@ -617,7 +651,11 @@ ruleTester.run("no-implied-eval", rule, { { code: "global.global['execScript']('foo')", languageOptions: { sourceType: "commonjs" }, - errors: [{ messageId: "execScript", type: "CallExpression" }], + errors: [ + { + messageId: "execScript", + }, + ], }, { code: "globalThis.setTimeout('foo')", @@ -632,7 +670,11 @@ ruleTester.run("no-implied-eval", rule, { { code: "globalThis.execScript('foo')", languageOptions: { ecmaVersion: 2020 }, - errors: [{ messageId: "execScript", type: "CallExpression" }], + errors: [ + { + messageId: "execScript", + }, + ], }, // template literals @@ -748,14 +790,12 @@ ruleTester.run("no-implied-eval", rule, { errors: [ { messageId: "impliedEval", - type: "CallExpression", line: 1, }, // no error on line 2 { messageId: "execScript", - type: "CallExpression", line: 3, }, ], @@ -771,14 +811,12 @@ ruleTester.run("no-implied-eval", rule, { errors: [ { messageId: "impliedEval", - type: "CallExpression", line: 1, }, // no error on line 2 { messageId: "execScript", - type: "CallExpression", line: 3, }, ], @@ -797,14 +835,12 @@ ruleTester.run("no-implied-eval", rule, { errors: [ { messageId: "impliedEval", - type: "CallExpression", line: 1, }, // no error on line 2 { messageId: "execScript", - type: "CallExpression", line: 3, }, ], diff --git a/tests/lib/rules/no-inline-comments.js b/tests/lib/rules/no-inline-comments.js index 8f792983f196..f7fb8fe283ec 100644 --- a/tests/lib/rules/no-inline-comments.js +++ b/tests/lib/rules/no-inline-comments.js @@ -28,11 +28,9 @@ const ruleTester = new RuleTester({ }), lineError = { messageId: "unexpectedInlineComment", - type: "Line", }, blockError = { messageId: "unexpectedInlineComment", - type: "Block", }; ruleTester.run("no-inline-comments", rule, { diff --git a/tests/lib/rules/no-inner-declarations.js b/tests/lib/rules/no-inner-declarations.js index af3b5cf2f330..35236742fd5d 100644 --- a/tests/lib/rules/no-inner-declarations.js +++ b/tests/lib/rules/no-inner-declarations.js @@ -179,7 +179,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "function", body: "program", }, - type: "FunctionDeclaration", }, ], }, @@ -193,7 +192,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "variable", body: "program", }, - type: "VariableDeclaration", }, ], }, @@ -207,7 +205,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "variable", body: "program", }, - type: "VariableDeclaration", }, ], }, @@ -221,7 +218,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "function", body: "program", }, - type: "FunctionDeclaration", }, { messageId: "moveDeclToRoot", @@ -229,7 +225,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "variable", body: "function body", }, - type: "VariableDeclaration", }, ], }, @@ -243,7 +238,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "function", body: "program", }, - type: "FunctionDeclaration", }, { messageId: "moveDeclToRoot", @@ -251,7 +245,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "variable", body: "function body", }, - type: "VariableDeclaration", }, ], }, @@ -265,7 +258,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "variable", body: "program", }, - type: "VariableDeclaration", }, ], }, @@ -278,7 +270,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "function", body: "program", }, - type: "FunctionDeclaration", }, ], }, @@ -292,7 +283,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "function", body: "function body", }, - type: "FunctionDeclaration", }, ], }, @@ -306,7 +296,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "variable", body: "function body", }, - type: "VariableDeclaration", }, ], }, @@ -320,7 +309,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "variable", body: "program", }, - type: "VariableDeclaration", }, ], }, @@ -333,7 +321,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "function", body: "function body", }, - type: "FunctionDeclaration", }, ], }, @@ -346,7 +333,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "function", body: "function body", }, - type: "FunctionDeclaration", }, ], }, @@ -360,7 +346,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "variable", body: "program", }, - type: "VariableDeclaration", }, ], }, @@ -374,7 +359,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "variable", body: "function body", }, - type: "VariableDeclaration", }, ], }, @@ -388,7 +372,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "variable", body: "function body", }, - type: "VariableDeclaration", }, ], }, @@ -403,7 +386,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "variable", body: "function body", }, - type: "VariableDeclaration", }, ], }, @@ -418,7 +400,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "variable", body: "function body", }, - type: "VariableDeclaration", }, ], }, @@ -433,7 +414,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "variable", body: "class static block body", }, - type: "VariableDeclaration", }, ], }, @@ -448,7 +428,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "function", body: "class static block body", }, - type: "FunctionDeclaration", }, ], }, @@ -463,7 +442,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "variable", body: "class static block body", }, - type: "VariableDeclaration", }, ], }, @@ -478,7 +456,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "function", body: "program", }, - type: "FunctionDeclaration", }, ], }, @@ -493,7 +470,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "function", body: "program", }, - type: "FunctionDeclaration", }, ], }, @@ -508,7 +484,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "function", body: "program", }, - type: "FunctionDeclaration", }, ], }, @@ -523,7 +498,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "function", body: "program", }, - type: "FunctionDeclaration", }, ], }, @@ -538,7 +512,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "function", body: "program", }, - type: "FunctionDeclaration", }, ], }, @@ -553,7 +526,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "function", body: "function body", }, - type: "FunctionDeclaration", }, ], }, @@ -568,7 +540,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "function", body: "function body", }, - type: "FunctionDeclaration", }, ], }, @@ -583,7 +554,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "function", body: "function body", }, - type: "FunctionDeclaration", }, ], }, @@ -598,7 +568,6 @@ ruleTester.run("no-inner-declarations", rule, { type: "function", body: "program", }, - type: "FunctionDeclaration", }, ], }, diff --git a/tests/lib/rules/no-invalid-regexp.js b/tests/lib/rules/no-invalid-regexp.js index 18acfb603183..87477c8a119a 100644 --- a/tests/lib/rules/no-invalid-regexp.js +++ b/tests/lib/rules/no-invalid-regexp.js @@ -156,7 +156,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid regular expression: /[/: Unterminated character class", }, - type: "CallExpression", }, ], }, @@ -169,7 +168,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid flags supplied to RegExp constructor 'z'", }, - type: "CallExpression", }, ], }, @@ -183,7 +181,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid flags supplied to RegExp constructor 'a'", }, - type: "CallExpression", }, ], }, @@ -197,7 +194,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid flags supplied to RegExp constructor 'a'", }, - type: "NewExpression", }, ], }, @@ -211,7 +207,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid flags supplied to RegExp constructor 'z'", }, - type: "NewExpression", }, ], }, @@ -225,7 +220,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid flags supplied to RegExp constructor 'a'", }, - type: "CallExpression", }, ], }, @@ -239,7 +233,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid flags supplied to RegExp constructor 'A'", }, - type: "CallExpression", }, ], }, @@ -253,7 +246,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid flags supplied to RegExp constructor 'a'", }, - type: "NewExpression", }, ], }, @@ -267,7 +259,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Duplicate flags ('a') supplied to RegExp constructor", }, - type: "NewExpression", }, ], }, @@ -281,7 +272,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Duplicate flags ('a') supplied to RegExp constructor", }, - type: "NewExpression", }, ], }, @@ -295,7 +285,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid flags supplied to RegExp constructor 'A'", }, - type: "NewExpression", }, ], }, @@ -309,7 +298,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Duplicate flags ('a') supplied to RegExp constructor", }, - type: "NewExpression", }, ], }, @@ -323,7 +311,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Duplicate flags ('z') supplied to RegExp constructor", }, - type: "NewExpression", }, ], }, @@ -337,7 +324,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Duplicate flags ('a') supplied to RegExp constructor", }, - type: "NewExpression", }, ], }, @@ -351,7 +337,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Duplicate flags ('u') supplied to RegExp constructor", }, - type: "NewExpression", }, ], }, @@ -365,7 +350,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid flags supplied to RegExp constructor 'oo'", }, - type: "NewExpression", }, ], }, @@ -378,7 +362,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid regular expression: /)/: Unmatched ')'", }, - type: "NewExpression", }, ], }, @@ -391,7 +374,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid regular expression: /\\a/u: Invalid escape", }, - type: "NewExpression", }, ], }, @@ -405,7 +387,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid regular expression: /\\a/u: Invalid escape", }, - type: "NewExpression", }, ], }, @@ -418,7 +399,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid regular expression: /\\u{0}*/: Nothing to repeat", }, - type: "CallExpression", }, ], }, @@ -431,7 +411,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid regular expression: /\\u{0}*/: Nothing to repeat", }, - type: "NewExpression", }, ], }, @@ -444,7 +423,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid regular expression: /\\u{0}*/: Nothing to repeat", }, - type: "NewExpression", }, ], }, @@ -458,7 +436,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid regular expression: /\\u{0}*/: Nothing to repeat", }, - type: "NewExpression", }, ], }, @@ -472,7 +449,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid regular expression: /\\u{0}*/: Nothing to repeat", }, - type: "CallExpression", }, ], }, @@ -487,7 +463,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid regular expression: /\\/: \\ at end of pattern", }, - type: "NewExpression", }, ], }, @@ -502,7 +477,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid flags supplied to RegExp constructor 'a'", }, - type: "CallExpression", }, ], }, @@ -516,7 +490,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid flags supplied to RegExp constructor 'a'", }, - type: "NewExpression", }, ], }, @@ -530,7 +503,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid flags supplied to RegExp constructor 'z'", }, - type: "NewExpression", }, ], }, @@ -545,7 +517,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid regular expression: /[[]/v: Unterminated character class", }, - type: "NewExpression", }, ], }, @@ -558,7 +529,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Regex 'u' and 'v' flags cannot be used together", }, - type: "NewExpression", }, ], }, @@ -571,7 +541,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Regex 'u' and 'v' flags cannot be used together", }, - type: "NewExpression", }, ], }, @@ -584,7 +553,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid regular expression: /[A--B]/u: Range out of order in character class", }, - type: "NewExpression", }, ], }, @@ -597,7 +565,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid regular expression: /[[]\\u{0}*/v: Unterminated character class", }, - type: "NewExpression", }, ], }, @@ -612,7 +579,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid regular expression: /(?a)(?b)/: Duplicate capture group name", }, - type: "NewExpression", }, ], }, @@ -625,7 +591,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid regular expression: /(?ii:foo)/: Duplicated flag 'i'", }, - type: "NewExpression", }, ], }, @@ -638,7 +603,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid regular expression: /(?-ii:foo)/: Duplicated flag 'i'", }, - type: "NewExpression", }, ], }, @@ -651,7 +615,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid regular expression: /(?i-i:foo)/: Duplicated flag 'i'", }, - type: "NewExpression", }, ], }, @@ -664,7 +627,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid regular expression: /(?-:foo)/: Invalid empty flags", }, - type: "NewExpression", }, ], }, @@ -677,7 +639,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid regular expression: /(?g:foo)/: Invalid group", }, - type: "NewExpression", }, ], }, @@ -690,7 +651,6 @@ ruleTester.run("no-invalid-regexp", rule, { message: "Invalid regular expression: /(?-u:foo)/: Invalid group", }, - type: "NewExpression", }, ], }, diff --git a/tests/lib/rules/no-invalid-this.js b/tests/lib/rules/no-invalid-this.js index 321169d5f756..3859519c81ed 100644 --- a/tests/lib/rules/no-invalid-this.js +++ b/tests/lib/rules/no-invalid-this.js @@ -94,8 +94,12 @@ function extractPatterns(patterns, type) { //------------------------------------------------------------------------------ const errors = [ - { messageId: "unexpectedThis", type: "ThisExpression" }, - { messageId: "unexpectedThis", type: "ThisExpression" }, + { + messageId: "unexpectedThis", + }, + { + messageId: "unexpectedThis", + }, ]; const patterns = [ @@ -133,7 +137,11 @@ const patterns = [ languageOptions: { ecmaVersion: 6, }, - errors: [{ messageId: "unexpectedThis", type: "ThisExpression" }], + errors: [ + { + messageId: "unexpectedThis", + }, + ], valid: [NORMAL, USE_STRICT, IMPLIED_STRICT], invalid: [MODULES], }, @@ -744,21 +752,33 @@ const patterns = [ languageOptions: { ecmaVersion: 2022 }, valid: [NORMAL, USE_STRICT, IMPLIED_STRICT], // `this` is the top-level `this` invalid: [MODULES], - errors: [{ messageId: "unexpectedThis", type: "ThisExpression" }], + errors: [ + { + messageId: "unexpectedThis", + }, + ], }, { code: "class C { foo = () => this; }", languageOptions: { ecmaVersion: 2022 }, valid: [NORMAL, USE_STRICT, IMPLIED_STRICT, MODULES], invalid: [], - errors: [{ messageId: "unexpectedThis", type: "ThisExpression" }], + errors: [ + { + messageId: "unexpectedThis", + }, + ], }, { code: "class C { foo = () => { this }; }", languageOptions: { ecmaVersion: 2022 }, valid: [NORMAL, USE_STRICT, IMPLIED_STRICT, MODULES], invalid: [], - errors: [{ messageId: "unexpectedThis", type: "ThisExpression" }], + errors: [ + { + messageId: "unexpectedThis", + }, + ], }, // Class static blocks @@ -785,35 +805,55 @@ const patterns = [ languageOptions: { ecmaVersion: 2022 }, valid: [], invalid: [NORMAL, USE_STRICT, IMPLIED_STRICT, MODULES], - errors: [{ messageId: "unexpectedThis", type: "ThisExpression" }], + errors: [ + { + messageId: "unexpectedThis", + }, + ], }, { code: "class C { static { (function() { this.x; }); } }", languageOptions: { ecmaVersion: 2022 }, valid: [], invalid: [NORMAL, USE_STRICT, IMPLIED_STRICT, MODULES], - errors: [{ messageId: "unexpectedThis", type: "ThisExpression" }], + errors: [ + { + messageId: "unexpectedThis", + }, + ], }, { code: "class C { static { (function() { this.x; })(); } }", languageOptions: { ecmaVersion: 2022 }, valid: [], invalid: [NORMAL, USE_STRICT, IMPLIED_STRICT, MODULES], - errors: [{ messageId: "unexpectedThis", type: "ThisExpression" }], + errors: [ + { + messageId: "unexpectedThis", + }, + ], }, { code: "class C { static {} [this]; }", languageOptions: { ecmaVersion: 2022 }, valid: [NORMAL, USE_STRICT, IMPLIED_STRICT], invalid: [MODULES], - errors: [{ messageId: "unexpectedThis", type: "ThisExpression" }], + errors: [ + { + messageId: "unexpectedThis", + }, + ], }, { code: "class C { static {} [this.x]; }", languageOptions: { ecmaVersion: 2022 }, valid: [NORMAL, USE_STRICT, IMPLIED_STRICT], invalid: [MODULES], - errors: [{ messageId: "unexpectedThis", type: "ThisExpression" }], + errors: [ + { + messageId: "unexpectedThis", + }, + ], }, // in es3, "use strict" directives do not apply @@ -1750,7 +1790,11 @@ ruleTesterTypeScript.run("no-invalid-this", rule, { } } `, - errors: [{ messageId: "unexpectedThis", type: "ThisExpression" }], + errors: [ + { + messageId: "unexpectedThis", + }, + ], }, { code: ` @@ -1760,7 +1804,11 @@ ruleTesterTypeScript.run("no-invalid-this", rule, { } } `, - errors: [{ messageId: "unexpectedThis", type: "ThisExpression" }], + errors: [ + { + messageId: "unexpectedThis", + }, + ], }, { code: ` @@ -1771,7 +1819,11 @@ ruleTesterTypeScript.run("no-invalid-this", rule, { } } `, - errors: [{ messageId: "unexpectedThis", type: "ThisExpression" }], + errors: [ + { + messageId: "unexpectedThis", + }, + ], }, ], }); diff --git a/tests/lib/rules/no-irregular-whitespace.js b/tests/lib/rules/no-irregular-whitespace.js index 03f05c08d1cf..ef80d516cb58 100644 --- a/tests/lib/rules/no-irregular-whitespace.js +++ b/tests/lib/rules/no-irregular-whitespace.js @@ -21,13 +21,11 @@ const ruleTester = new RuleTester(); const expectedErrors = [ { messageId: "noIrregularWhitespace", - type: "Program", }, ]; const expectedCommentErrors = [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 4, }, @@ -488,13 +486,11 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 13, }, { messageId: "noIrregularWhitespace", - type: "Program", line: 3, column: 8, }, @@ -505,19 +501,16 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 9, }, { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 28, }, { messageId: "noIrregularWhitespace", - type: "Program", line: 2, column: 11, }, @@ -704,13 +697,11 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 12, }, { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 25, }, @@ -722,13 +713,11 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 12, }, { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 25, }, @@ -740,13 +729,11 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 12, }, { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 25, }, @@ -759,13 +746,11 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 12, }, { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 25, }, @@ -778,7 +763,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 14, }, @@ -791,7 +775,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 16, }, @@ -804,7 +787,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 1, }, @@ -817,7 +799,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 1, }, @@ -830,7 +811,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 1, }, @@ -843,7 +823,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 1, }, @@ -856,7 +835,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 12, }, @@ -869,7 +847,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 2, column: 10, }, @@ -882,7 +859,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 2, column: 1, }, @@ -895,7 +871,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 3, column: 1, }, @@ -908,7 +883,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 11, endLine: 1, @@ -921,7 +895,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 10, endLine: 1, @@ -934,7 +907,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 11, endLine: 1, @@ -947,7 +919,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 11, endLine: 1, @@ -960,7 +931,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 11, endLine: 1, @@ -968,7 +938,6 @@ ruleTester.run("no-irregular-whitespace", rule, { }, { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 13, endLine: 1, @@ -981,7 +950,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 11, endLine: 1, @@ -989,7 +957,6 @@ ruleTester.run("no-irregular-whitespace", rule, { }, { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 15, endLine: 1, @@ -1002,7 +969,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 1, endLine: 1, @@ -1015,7 +981,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 1, endLine: 1, @@ -1028,7 +993,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 11, endLine: 1, @@ -1041,7 +1005,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 10, endLine: 1, @@ -1049,7 +1012,6 @@ ruleTester.run("no-irregular-whitespace", rule, { }, { messageId: "noIrregularWhitespace", - type: "Program", line: 2, column: 1, endLine: 2, @@ -1062,7 +1024,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 11, endLine: 1, @@ -1070,7 +1031,6 @@ ruleTester.run("no-irregular-whitespace", rule, { }, { messageId: "noIrregularWhitespace", - type: "Program", line: 2, column: 1, endLine: 2, @@ -1078,7 +1038,6 @@ ruleTester.run("no-irregular-whitespace", rule, { }, { messageId: "noIrregularWhitespace", - type: "Program", line: 3, column: 2, endLine: 3, @@ -1091,7 +1050,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 11, endLine: 2, @@ -1104,7 +1062,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 10, endLine: 2, @@ -1117,7 +1074,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 15, endLine: 2, @@ -1130,7 +1086,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 1, endLine: 2, @@ -1143,7 +1098,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 4, endLine: 2, @@ -1151,7 +1105,6 @@ ruleTester.run("no-irregular-whitespace", rule, { }, { messageId: "noIrregularWhitespace", - type: "Program", line: 2, column: 1, endLine: 3, @@ -1164,7 +1117,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 4, endLine: 2, @@ -1172,7 +1124,6 @@ ruleTester.run("no-irregular-whitespace", rule, { }, { messageId: "noIrregularWhitespace", - type: "Program", line: 2, column: 1, endLine: 3, @@ -1185,7 +1136,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 4, endLine: 2, @@ -1193,7 +1143,6 @@ ruleTester.run("no-irregular-whitespace", rule, { }, { messageId: "noIrregularWhitespace", - type: "Program", line: 3, column: 1, endLine: 4, @@ -1206,7 +1155,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 4, endLine: 1, @@ -1214,7 +1162,6 @@ ruleTester.run("no-irregular-whitespace", rule, { }, { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 5, endLine: 2, @@ -1222,7 +1169,6 @@ ruleTester.run("no-irregular-whitespace", rule, { }, { messageId: "noIrregularWhitespace", - type: "Program", line: 2, column: 1, endLine: 2, @@ -1242,7 +1188,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 6, }, @@ -1260,7 +1205,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 6, }, @@ -1278,7 +1222,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 6, }, @@ -1296,7 +1239,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 6, }, @@ -1314,7 +1256,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 6, }, @@ -1332,7 +1273,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 6, }, @@ -1350,7 +1290,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 6, }, @@ -1368,7 +1307,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 6, }, @@ -1386,7 +1324,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 6, }, @@ -1404,7 +1341,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 6, }, @@ -1422,7 +1358,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 6, }, @@ -1440,7 +1375,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 6, }, @@ -1458,7 +1392,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 6, }, @@ -1476,7 +1409,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 6, }, @@ -1494,7 +1426,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 6, }, @@ -1512,7 +1443,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 6, }, @@ -1530,7 +1460,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 6, }, @@ -1548,7 +1477,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 6, }, @@ -1566,7 +1494,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 6, }, @@ -1584,7 +1511,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 6, }, @@ -1602,7 +1528,6 @@ ruleTester.run("no-irregular-whitespace", rule, { errors: [ { messageId: "noIrregularWhitespace", - type: "Program", line: 1, column: 6, }, diff --git a/tests/lib/rules/no-iterator.js b/tests/lib/rules/no-iterator.js index 02ba4199af44..c4fcfe4bf5c2 100644 --- a/tests/lib/rules/no-iterator.js +++ b/tests/lib/rules/no-iterator.js @@ -37,7 +37,6 @@ ruleTester.run("no-iterator", rule, { errors: [ { messageId: "noIterator", - type: "MemberExpression", }, ], }, @@ -46,7 +45,6 @@ ruleTester.run("no-iterator", rule, { errors: [ { messageId: "noIterator", - type: "MemberExpression", }, ], }, @@ -55,7 +53,6 @@ ruleTester.run("no-iterator", rule, { errors: [ { messageId: "noIterator", - type: "MemberExpression", }, ], }, @@ -65,7 +62,6 @@ ruleTester.run("no-iterator", rule, { errors: [ { messageId: "noIterator", - type: "MemberExpression", }, ], }, @@ -75,7 +71,6 @@ ruleTester.run("no-iterator", rule, { errors: [ { messageId: "noIterator", - type: "MemberExpression", }, ], }, diff --git a/tests/lib/rules/no-label-var.js b/tests/lib/rules/no-label-var.js index d74813239ab3..94767a3dc9c4 100644 --- a/tests/lib/rules/no-label-var.js +++ b/tests/lib/rules/no-label-var.js @@ -29,7 +29,6 @@ ruleTester.run("no-label-var", rule, { errors: [ { messageId: "identifierClashWithLabel", - type: "LabeledStatement", }, ], }, @@ -38,7 +37,6 @@ ruleTester.run("no-label-var", rule, { errors: [ { messageId: "identifierClashWithLabel", - type: "LabeledStatement", }, ], }, @@ -47,7 +45,6 @@ ruleTester.run("no-label-var", rule, { errors: [ { messageId: "identifierClashWithLabel", - type: "LabeledStatement", }, ], }, diff --git a/tests/lib/rules/no-labels.js b/tests/lib/rules/no-labels.js index c4c3531c0811..e339425432c6 100644 --- a/tests/lib/rules/no-labels.js +++ b/tests/lib/rules/no-labels.js @@ -48,7 +48,6 @@ ruleTester.run("no-labels", rule, { errors: [ { messageId: "unexpectedLabel", - type: "LabeledStatement", }, ], }, @@ -57,11 +56,9 @@ ruleTester.run("no-labels", rule, { errors: [ { messageId: "unexpectedLabel", - type: "LabeledStatement", }, { messageId: "unexpectedLabelInBreak", - type: "BreakStatement", }, ], }, @@ -70,11 +67,9 @@ ruleTester.run("no-labels", rule, { errors: [ { messageId: "unexpectedLabel", - type: "LabeledStatement", }, { messageId: "unexpectedLabelInContinue", - type: "ContinueStatement", }, ], }, @@ -84,7 +79,6 @@ ruleTester.run("no-labels", rule, { errors: [ { messageId: "unexpectedLabel", - type: "LabeledStatement", }, ], }, @@ -93,11 +87,9 @@ ruleTester.run("no-labels", rule, { errors: [ { messageId: "unexpectedLabel", - type: "LabeledStatement", }, { messageId: "unexpectedLabelInBreak", - type: "BreakStatement", }, ], }, @@ -106,11 +98,9 @@ ruleTester.run("no-labels", rule, { errors: [ { messageId: "unexpectedLabel", - type: "LabeledStatement", }, { messageId: "unexpectedLabelInBreak", - type: "BreakStatement", }, ], }, @@ -119,11 +109,9 @@ ruleTester.run("no-labels", rule, { errors: [ { messageId: "unexpectedLabel", - type: "LabeledStatement", }, { messageId: "unexpectedLabelInBreak", - type: "BreakStatement", }, ], }, @@ -132,11 +120,9 @@ ruleTester.run("no-labels", rule, { errors: [ { messageId: "unexpectedLabel", - type: "LabeledStatement", }, { messageId: "unexpectedLabelInBreak", - type: "BreakStatement", }, ], }, @@ -145,15 +131,12 @@ ruleTester.run("no-labels", rule, { errors: [ { messageId: "unexpectedLabel", - type: "LabeledStatement", }, { messageId: "unexpectedLabel", - type: "LabeledStatement", }, { messageId: "unexpectedLabelInBreak", - type: "BreakStatement", }, ], }, @@ -165,7 +148,6 @@ ruleTester.run("no-labels", rule, { errors: [ { messageId: "unexpectedLabel", - type: "LabeledStatement", }, ], }, @@ -175,11 +157,9 @@ ruleTester.run("no-labels", rule, { errors: [ { messageId: "unexpectedLabel", - type: "LabeledStatement", }, { messageId: "unexpectedLabelInBreak", - type: "BreakStatement", }, ], }, @@ -189,11 +169,9 @@ ruleTester.run("no-labels", rule, { errors: [ { messageId: "unexpectedLabel", - type: "LabeledStatement", }, { messageId: "unexpectedLabelInBreak", - type: "BreakStatement", }, ], }, @@ -203,11 +181,9 @@ ruleTester.run("no-labels", rule, { errors: [ { messageId: "unexpectedLabel", - type: "LabeledStatement", }, { messageId: "unexpectedLabelInBreak", - type: "BreakStatement", }, ], }, @@ -217,11 +193,9 @@ ruleTester.run("no-labels", rule, { errors: [ { messageId: "unexpectedLabel", - type: "LabeledStatement", }, { messageId: "unexpectedLabelInBreak", - type: "BreakStatement", }, ], }, @@ -233,7 +207,6 @@ ruleTester.run("no-labels", rule, { errors: [ { messageId: "unexpectedLabel", - type: "LabeledStatement", }, ], }, @@ -243,11 +216,9 @@ ruleTester.run("no-labels", rule, { errors: [ { messageId: "unexpectedLabel", - type: "LabeledStatement", }, { messageId: "unexpectedLabelInBreak", - type: "BreakStatement", }, ], }, @@ -257,11 +228,9 @@ ruleTester.run("no-labels", rule, { errors: [ { messageId: "unexpectedLabel", - type: "LabeledStatement", }, { messageId: "unexpectedLabelInBreak", - type: "BreakStatement", }, ], }, @@ -271,11 +240,9 @@ ruleTester.run("no-labels", rule, { errors: [ { messageId: "unexpectedLabel", - type: "LabeledStatement", }, { messageId: "unexpectedLabelInBreak", - type: "BreakStatement", }, ], }, @@ -285,11 +252,9 @@ ruleTester.run("no-labels", rule, { errors: [ { messageId: "unexpectedLabel", - type: "LabeledStatement", }, { messageId: "unexpectedLabelInBreak", - type: "BreakStatement", }, ], }, @@ -299,11 +264,9 @@ ruleTester.run("no-labels", rule, { errors: [ { messageId: "unexpectedLabel", - type: "LabeledStatement", }, { messageId: "unexpectedLabelInBreak", - type: "BreakStatement", }, ], }, @@ -313,11 +276,9 @@ ruleTester.run("no-labels", rule, { errors: [ { messageId: "unexpectedLabel", - type: "LabeledStatement", }, { messageId: "unexpectedLabelInBreak", - type: "BreakStatement", }, ], }, diff --git a/tests/lib/rules/no-lone-blocks.js b/tests/lib/rules/no-lone-blocks.js index 2855b236d046..72e659114fba 100644 --- a/tests/lib/rules/no-lone-blocks.js +++ b/tests/lib/rules/no-lone-blocks.js @@ -155,7 +155,6 @@ ruleTester.run("no-lone-blocks", rule, { errors: [ { messageId: "redundantBlock", - type: "BlockStatement", }, ], }, @@ -164,7 +163,6 @@ ruleTester.run("no-lone-blocks", rule, { errors: [ { messageId: "redundantBlock", - type: "BlockStatement", }, ], }, @@ -173,7 +171,6 @@ ruleTester.run("no-lone-blocks", rule, { errors: [ { messageId: "redundantBlock", - type: "BlockStatement", }, ], }, @@ -182,7 +179,6 @@ ruleTester.run("no-lone-blocks", rule, { errors: [ { messageId: "redundantNestedBlock", - type: "BlockStatement", }, ], }, @@ -191,12 +187,10 @@ ruleTester.run("no-lone-blocks", rule, { errors: [ { messageId: "redundantBlock", - type: "BlockStatement", line: 1, }, { messageId: "redundantNestedBlock", - type: "BlockStatement", line: 2, }, ], @@ -206,7 +200,6 @@ ruleTester.run("no-lone-blocks", rule, { errors: [ { messageId: "redundantNestedBlock", - type: "BlockStatement", }, ], }, @@ -215,7 +208,6 @@ ruleTester.run("no-lone-blocks", rule, { errors: [ { messageId: "redundantNestedBlock", - type: "BlockStatement", }, ], }, @@ -227,7 +219,6 @@ ruleTester.run("no-lone-blocks", rule, { errors: [ { messageId: "redundantBlock", - type: "BlockStatement", }, ], }, @@ -237,7 +228,6 @@ ruleTester.run("no-lone-blocks", rule, { errors: [ { messageId: "redundantBlock", - type: "BlockStatement", }, ], }, @@ -248,7 +238,6 @@ ruleTester.run("no-lone-blocks", rule, { errors: [ { messageId: "redundantNestedBlock", - type: "BlockStatement", line: 2, }, ], @@ -259,7 +248,6 @@ ruleTester.run("no-lone-blocks", rule, { errors: [ { messageId: "redundantBlock", - type: "BlockStatement", line: 1, }, ], @@ -270,17 +258,14 @@ ruleTester.run("no-lone-blocks", rule, { errors: [ { messageId: "redundantBlock", - type: "BlockStatement", line: 1, }, { messageId: "redundantNestedBlock", - type: "BlockStatement", line: 2, }, { messageId: "redundantBlock", - type: "BlockStatement", line: 4, }, ], @@ -298,7 +283,6 @@ ruleTester.run("no-lone-blocks", rule, { errors: [ { messageId: "redundantBlock", - type: "BlockStatement", line: 5, }, ], @@ -316,7 +300,6 @@ ruleTester.run("no-lone-blocks", rule, { errors: [ { messageId: "redundantBlock", - type: "BlockStatement", line: 4, }, ], @@ -333,7 +316,6 @@ ruleTester.run("no-lone-blocks", rule, { errors: [ { messageId: "redundantNestedBlock", - type: "BlockStatement", line: 3, }, ], @@ -349,7 +331,6 @@ ruleTester.run("no-lone-blocks", rule, { errors: [ { messageId: "redundantNestedBlock", - type: "BlockStatement", line: 3, }, ], @@ -370,7 +351,6 @@ ruleTester.run("no-lone-blocks", rule, { errors: [ { messageId: "redundantNestedBlock", - type: "BlockStatement", line: 5, }, ], @@ -392,7 +372,6 @@ ruleTester.run("no-lone-blocks", rule, { errors: [ { messageId: "redundantNestedBlock", - type: "BlockStatement", line: 5, }, ], @@ -411,7 +390,6 @@ ruleTester.run("no-lone-blocks", rule, { errors: [ { messageId: "redundantNestedBlock", - type: "BlockStatement", line: 4, }, ], @@ -430,7 +408,6 @@ ruleTester.run("no-lone-blocks", rule, { errors: [ { messageId: "redundantNestedBlock", - type: "BlockStatement", line: 4, }, ], @@ -449,7 +426,6 @@ ruleTester.run("no-lone-blocks", rule, { errors: [ { messageId: "redundantNestedBlock", - type: "BlockStatement", line: 4, }, ], @@ -468,7 +444,6 @@ ruleTester.run("no-lone-blocks", rule, { errors: [ { messageId: "redundantNestedBlock", - type: "BlockStatement", line: 4, }, ], @@ -487,7 +462,6 @@ ruleTester.run("no-lone-blocks", rule, { errors: [ { messageId: "redundantNestedBlock", - type: "BlockStatement", line: 4, }, ], @@ -507,7 +481,6 @@ ruleTester.run("no-lone-blocks", rule, { errors: [ { messageId: "redundantNestedBlock", - type: "BlockStatement", line: 4, }, ], @@ -527,7 +500,6 @@ ruleTester.run("no-lone-blocks", rule, { errors: [ { messageId: "redundantNestedBlock", - type: "BlockStatement", line: 5, }, ], @@ -547,7 +519,6 @@ ruleTester.run("no-lone-blocks", rule, { errors: [ { messageId: "redundantNestedBlock", - type: "BlockStatement", line: 4, }, ], @@ -567,7 +538,6 @@ ruleTester.run("no-lone-blocks", rule, { errors: [ { messageId: "redundantNestedBlock", - type: "BlockStatement", line: 5, }, ], diff --git a/tests/lib/rules/no-lonely-if.js b/tests/lib/rules/no-lonely-if.js index 7ab4631ad2cf..addf51467cd8 100644 --- a/tests/lib/rules/no-lonely-if.js +++ b/tests/lib/rules/no-lonely-if.js @@ -16,7 +16,11 @@ const rule = require("../../../lib/rules/no-lonely-if"), //------------------------------------------------------------------------------ const ruleTester = new RuleTester(); -const errors = [{ messageId: "unexpectedLonelyIf", type: "IfStatement" }]; +const errors = [ + { + messageId: "unexpectedLonelyIf", + }, +]; ruleTester.run("no-lonely-if", rule, { // Examples of code that should not trigger the rule diff --git a/tests/lib/rules/no-loop-func.js b/tests/lib/rules/no-loop-func.js index 0c9a7ccff42f..501e66685bc1 100644 --- a/tests/lib/rules/no-loop-func.js +++ b/tests/lib/rules/no-loop-func.js @@ -268,7 +268,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'i'" }, - type: "FunctionExpression", }, ], }, @@ -278,7 +277,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'i', 'j'" }, - type: "FunctionExpression", }, ], }, @@ -288,7 +286,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'i'" }, - type: "FunctionExpression", }, ], }, @@ -299,7 +296,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'i'" }, - type: "FunctionExpression", }, ], }, @@ -310,7 +306,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'i'" }, - type: "ArrowFunctionExpression", }, ], }, @@ -320,7 +315,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'i'" }, - type: "FunctionExpression", }, ], }, @@ -330,7 +324,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'i'" }, - type: "FunctionDeclaration", }, ], }, @@ -343,7 +336,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'a'" }, - type: "FunctionExpression", }, ], }, @@ -354,7 +346,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'a'" }, - type: "FunctionExpression", }, ], }, @@ -365,7 +356,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'a'" }, - type: "FunctionExpression", }, ], }, @@ -376,7 +366,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'a'" }, - type: "FunctionExpression", }, ], }, @@ -387,7 +376,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'a'" }, - type: "FunctionDeclaration", }, ], }, @@ -398,7 +386,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'a'" }, - type: "ArrowFunctionExpression", }, ], }, @@ -409,7 +396,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'i'" }, - type: "ArrowFunctionExpression", }, ], }, @@ -420,7 +406,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'a'" }, - type: "FunctionExpression", }, ], }, @@ -431,7 +416,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'x'" }, - type: "FunctionExpression", }, ], }, @@ -442,7 +426,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'x'" }, - type: "FunctionExpression", }, ], }, @@ -453,7 +436,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'a'" }, - type: "FunctionExpression", }, ], }, @@ -464,7 +446,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'a'" }, - type: "FunctionExpression", }, ], }, @@ -475,7 +456,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'a'" }, - type: "FunctionExpression", }, ], }, @@ -486,7 +466,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'a'" }, - type: "FunctionExpression", }, ], }, @@ -499,7 +478,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'i'" }, - type: "FunctionExpression", }, ], }, @@ -510,7 +488,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'i'" }, - type: "FunctionExpression", }, ], }, @@ -532,7 +509,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'current'" }, - type: "FunctionExpression", }, ], }, @@ -552,7 +528,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'i'" }, - type: "FunctionExpression", }, ], }, @@ -575,7 +550,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'current'" }, - type: "ArrowFunctionExpression", }, ], }, @@ -594,7 +568,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'i'" }, - type: "ArrowFunctionExpression", line: 6, }, ], @@ -614,7 +587,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'i'" }, - type: "ArrowFunctionExpression", line: 6, }, ], @@ -634,7 +606,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'i'" }, - type: "ArrowFunctionExpression", line: 6, }, ], @@ -656,7 +627,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'i'" }, - type: "ArrowFunctionExpression", line: 6, }, ], @@ -677,7 +647,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'i'" }, - type: "ArrowFunctionExpression", line: 6, }, ], @@ -700,7 +669,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'i'" }, - type: "ArrowFunctionExpression", line: 6, }, ], @@ -726,7 +694,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'i'" }, - type: "FunctionExpression", }, ], }, @@ -746,7 +713,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'j'" }, - type: "ArrowFunctionExpression", line: 7, }, ], @@ -769,7 +735,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'i'" }, - type: "ArrowFunctionExpression", line: 7, }, ], @@ -787,7 +752,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'i'" }, - type: "ArrowFunctionExpression", line: 3, }, ], @@ -810,7 +774,6 @@ ruleTester.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'i'" }, - type: "FunctionExpression", line: 8, }, ], @@ -918,7 +881,6 @@ ruleTesterTypeScript.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'i'" }, - type: "FunctionDeclaration", }, ], }, @@ -934,7 +896,6 @@ ruleTesterTypeScript.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'i'" }, - type: "ArrowFunctionExpression", }, ], }, @@ -961,7 +922,6 @@ ruleTesterTypeScript.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'i'" }, - type: "FunctionExpression", }, ], }, @@ -979,7 +939,6 @@ ruleTesterTypeScript.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'i'" }, - type: "ArrowFunctionExpression", }, ], }, @@ -998,7 +957,6 @@ ruleTesterTypeScript.run("no-loop-func", rule, { { messageId: "unsafeRefs", data: { varNames: "'i'" }, - type: "ArrowFunctionExpression", }, ], }, diff --git a/tests/lib/rules/no-mixed-requires.js b/tests/lib/rules/no-mixed-requires.js index 3d2d48faa2e3..da6e6cfb1717 100644 --- a/tests/lib/rules/no-mixed-requires.js +++ b/tests/lib/rules/no-mixed-requires.js @@ -74,7 +74,6 @@ ruleTester.run("no-mixed-requires", rule, { errors: [ { messageId: "noMixRequire", - type: "VariableDeclaration", }, ], }, @@ -84,7 +83,6 @@ ruleTester.run("no-mixed-requires", rule, { errors: [ { messageId: "noMixRequire", - type: "VariableDeclaration", }, ], }, @@ -94,7 +92,6 @@ ruleTester.run("no-mixed-requires", rule, { errors: [ { messageId: "noMixCoreModuleFileComputed", - type: "VariableDeclaration", }, ], }, @@ -104,7 +101,6 @@ ruleTester.run("no-mixed-requires", rule, { errors: [ { messageId: "noMixCoreModuleFileComputed", - type: "VariableDeclaration", }, ], }, @@ -114,7 +110,6 @@ ruleTester.run("no-mixed-requires", rule, { errors: [ { messageId: "noMixCoreModuleFileComputed", - type: "VariableDeclaration", }, ], }, @@ -124,7 +119,6 @@ ruleTester.run("no-mixed-requires", rule, { errors: [ { messageId: "noMixCoreModuleFileComputed", - type: "VariableDeclaration", }, ], }, @@ -134,7 +128,6 @@ ruleTester.run("no-mixed-requires", rule, { errors: [ { messageId: "noMixCoreModuleFileComputed", - type: "VariableDeclaration", }, ], }, @@ -144,7 +137,6 @@ ruleTester.run("no-mixed-requires", rule, { errors: [ { messageId: "noMixCoreModuleFileComputed", - type: "VariableDeclaration", }, ], }, @@ -154,7 +146,6 @@ ruleTester.run("no-mixed-requires", rule, { errors: [ { messageId: "noMixCoreModuleFileComputed", - type: "VariableDeclaration", }, ], }, @@ -164,7 +155,6 @@ ruleTester.run("no-mixed-requires", rule, { errors: [ { messageId: "noMixRequire", - type: "VariableDeclaration", }, ], }, diff --git a/tests/lib/rules/no-mixed-spaces-and-tabs.js b/tests/lib/rules/no-mixed-spaces-and-tabs.js index 10b08810c37d..1a9528273de1 100644 --- a/tests/lib/rules/no-mixed-spaces-and-tabs.js +++ b/tests/lib/rules/no-mixed-spaces-and-tabs.js @@ -139,7 +139,6 @@ ruleTester.run("no-mixed-spaces-and-tabs", rule, { errors: [ { messageId: "mixedSpacesAndTabs", - type: "Program", line: 2, column: 1, endLine: 2, @@ -152,7 +151,6 @@ ruleTester.run("no-mixed-spaces-and-tabs", rule, { errors: [ { messageId: "mixedSpacesAndTabs", - type: "Program", line: 1, column: 1, endLine: 1, @@ -165,7 +163,6 @@ ruleTester.run("no-mixed-spaces-and-tabs", rule, { errors: [ { messageId: "mixedSpacesAndTabs", - type: "Program", line: 1, column: 1, endLine: 1, @@ -178,7 +175,6 @@ ruleTester.run("no-mixed-spaces-and-tabs", rule, { errors: [ { messageId: "mixedSpacesAndTabs", - type: "Program", line: 1, column: 1, endLine: 1, @@ -191,7 +187,6 @@ ruleTester.run("no-mixed-spaces-and-tabs", rule, { errors: [ { messageId: "mixedSpacesAndTabs", - type: "Program", line: 1, column: 1, endLine: 1, @@ -204,7 +199,6 @@ ruleTester.run("no-mixed-spaces-and-tabs", rule, { errors: [ { messageId: "mixedSpacesAndTabs", - type: "Program", line: 1, column: 1, endLine: 1, @@ -217,7 +211,6 @@ ruleTester.run("no-mixed-spaces-and-tabs", rule, { errors: [ { messageId: "mixedSpacesAndTabs", - type: "Program", line: 2, column: 1, endLine: 2, @@ -230,7 +223,6 @@ ruleTester.run("no-mixed-spaces-and-tabs", rule, { errors: [ { messageId: "mixedSpacesAndTabs", - type: "Program", line: 1, column: 1, endLine: 1, @@ -238,7 +230,6 @@ ruleTester.run("no-mixed-spaces-and-tabs", rule, { }, { messageId: "mixedSpacesAndTabs", - type: "Program", line: 3, column: 1, endLine: 3, @@ -252,7 +243,6 @@ ruleTester.run("no-mixed-spaces-and-tabs", rule, { errors: [ { messageId: "mixedSpacesAndTabs", - type: "Program", line: 2, column: 2, endLine: 2, @@ -266,7 +256,6 @@ ruleTester.run("no-mixed-spaces-and-tabs", rule, { errors: [ { messageId: "mixedSpacesAndTabs", - type: "Program", line: 2, column: 2, endLine: 2, @@ -281,7 +270,6 @@ ruleTester.run("no-mixed-spaces-and-tabs", rule, { errors: [ { messageId: "mixedSpacesAndTabs", - type: "Program", line: 2, column: 1, endLine: 2, @@ -295,7 +283,6 @@ ruleTester.run("no-mixed-spaces-and-tabs", rule, { errors: [ { messageId: "mixedSpacesAndTabs", - type: "Program", line: 2, column: 1, endLine: 2, @@ -308,7 +295,6 @@ ruleTester.run("no-mixed-spaces-and-tabs", rule, { errors: [ { messageId: "mixedSpacesAndTabs", - type: "Program", line: 1, column: 2, endLine: 1, @@ -321,7 +307,6 @@ ruleTester.run("no-mixed-spaces-and-tabs", rule, { errors: [ { messageId: "mixedSpacesAndTabs", - type: "Program", line: 2, column: 1, endLine: 2, @@ -334,7 +319,6 @@ ruleTester.run("no-mixed-spaces-and-tabs", rule, { errors: [ { messageId: "mixedSpacesAndTabs", - type: "Program", line: 1, column: 3, endLine: 1, @@ -347,7 +331,6 @@ ruleTester.run("no-mixed-spaces-and-tabs", rule, { errors: [ { messageId: "mixedSpacesAndTabs", - type: "Program", line: 1, column: 3, endLine: 1, @@ -361,7 +344,6 @@ ruleTester.run("no-mixed-spaces-and-tabs", rule, { errors: [ { messageId: "mixedSpacesAndTabs", - type: "Program", line: 1, column: 2, endLine: 1, @@ -375,7 +357,6 @@ ruleTester.run("no-mixed-spaces-and-tabs", rule, { errors: [ { messageId: "mixedSpacesAndTabs", - type: "Program", line: 1, column: 6, endLine: 1, diff --git a/tests/lib/rules/no-multi-assign.js b/tests/lib/rules/no-multi-assign.js index b6a552c6a1a1..9a7d8b11d531 100644 --- a/tests/lib/rules/no-multi-assign.js +++ b/tests/lib/rules/no-multi-assign.js @@ -21,13 +21,11 @@ const rule = require("../../../lib/rules/no-multi-assign"), * @private * @param {number} line line number * @param {number} column column number - * @param {string} type Type of node * @returns {Object} Error object */ -function errorAt(line, column, type) { +function errorAt(line, column) { return { messageId: "unexpectedChain", - type, line, column, }; @@ -88,103 +86,93 @@ ruleTester.run("no-multi-assign", rule, { invalid: [ { code: "var a = b = c;", - errors: [errorAt(1, 9, "AssignmentExpression")], + errors: [errorAt(1, 9)], }, { code: "var a = b = c = d;", - errors: [ - errorAt(1, 9, "AssignmentExpression"), - errorAt(1, 13, "AssignmentExpression"), - ], + errors: [errorAt(1, 9), errorAt(1, 13)], }, { code: "let foo = bar = cee = 100;", languageOptions: { ecmaVersion: 6 }, - errors: [ - errorAt(1, 11, "AssignmentExpression"), - errorAt(1, 17, "AssignmentExpression"), - ], + errors: [errorAt(1, 11), errorAt(1, 17)], }, { code: "a=b=c=d=e", - errors: [ - errorAt(1, 3, "AssignmentExpression"), - errorAt(1, 5, "AssignmentExpression"), - errorAt(1, 7, "AssignmentExpression"), - ], + errors: [errorAt(1, 3), errorAt(1, 5), errorAt(1, 7)], }, { code: "a=b=c", - errors: [errorAt(1, 3, "AssignmentExpression")], + errors: [errorAt(1, 3)], }, { code: "a\n=b\n=c", - errors: [errorAt(2, 2, "AssignmentExpression")], + errors: [errorAt(2, 2)], }, { code: "var a = (b) = (((c)))", - errors: [errorAt(1, 9, "AssignmentExpression")], + errors: [errorAt(1, 9)], }, { code: "var a = ((b)) = (c)", - errors: [errorAt(1, 9, "AssignmentExpression")], + errors: [errorAt(1, 9)], }, { code: "var a = b = ( (c * 12) + 2)", - errors: [errorAt(1, 9, "AssignmentExpression")], + errors: [errorAt(1, 9)], }, { code: "var a =\n((b))\n = (c)", - errors: [errorAt(2, 1, "AssignmentExpression")], + errors: [errorAt(2, 1)], }, { code: "a = b = '=' + c + 'foo';", - errors: [errorAt(1, 5, "AssignmentExpression")], + errors: [errorAt(1, 5)], }, { code: "a = b = 7 * 12 + 5;", - errors: [errorAt(1, 5, "AssignmentExpression")], + errors: [errorAt(1, 5)], }, { code: "const x = {};\nconst y = x.one = 1;", options: [{ ignoreNonDeclaration: true }], languageOptions: { ecmaVersion: 6 }, - errors: [errorAt(2, 11, "AssignmentExpression")], + errors: [errorAt(2, 11)], }, { code: "let a, b;a = b = 1", options: [{}], languageOptions: { ecmaVersion: 6 }, - errors: [errorAt(1, 14, "AssignmentExpression")], + errors: [errorAt(1, 14)], }, { code: "let x, y;x = y = 'baz'", options: [{ ignoreNonDeclaration: false }], languageOptions: { ecmaVersion: 6 }, - errors: [errorAt(1, 14, "AssignmentExpression")], + errors: [errorAt(1, 14)], }, { code: "const a = b = 1", options: [{ ignoreNonDeclaration: true }], languageOptions: { ecmaVersion: 6 }, - errors: [errorAt(1, 11, "AssignmentExpression")], + errors: [errorAt(1, 11)], }, { code: "class C { field = foo = 0 }", languageOptions: { ecmaVersion: 2022 }, - errors: [errorAt(1, 19, "AssignmentExpression")], + errors: [errorAt(1, 19)], }, { code: "class C { field = foo = 0 }", options: [{ ignoreNonDeclaration: true }], languageOptions: { ecmaVersion: 2022 }, - errors: [errorAt(1, 19, "AssignmentExpression")], + errors: [errorAt(1, 19)], }, ], }); diff --git a/tests/lib/rules/no-multi-spaces.js b/tests/lib/rules/no-multi-spaces.js index 0330f7597666..279fc32f5e34 100644 --- a/tests/lib/rules/no-multi-spaces.js +++ b/tests/lib/rules/no-multi-spaces.js @@ -159,7 +159,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "b" }, - type: "Identifier", column: 16, endColumn: 18, }, @@ -173,7 +172,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "b" }, - type: "Identifier", column: 14, endColumn: 16, }, @@ -186,7 +184,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "1" }, - type: "Numeric", column: 8, endColumn: 10, }, @@ -199,7 +196,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "b" }, - type: "Identifier", }, ], }, @@ -210,7 +206,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "b" }, - type: "Identifier", }, ], }, @@ -221,7 +216,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "'b'" }, - type: "String", column: 19, endColumn: 21, }, @@ -234,7 +228,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "b" }, - type: "Identifier", }, ], }, @@ -245,12 +238,10 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "&&" }, - type: "Punctuator", }, { messageId: "multipleSpaces", data: { displayValue: "b" }, - type: "Identifier", }, ], }, @@ -261,12 +252,10 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "2" }, - type: "Numeric", }, { messageId: "multipleSpaces", data: { displayValue: "3" }, - type: "Numeric", }, ], }, @@ -277,17 +266,14 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "2" }, - type: "Numeric", }, { messageId: "multipleSpaces", data: { displayValue: "3" }, - type: "Numeric", }, { messageId: "multipleSpaces", data: { displayValue: "4" }, - type: "Numeric", }, ], }, @@ -298,7 +284,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "2" }, - type: "Numeric", }, ], }, @@ -309,28 +294,24 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "," }, - type: "Punctuator", column: 2, endColumn: 4, }, { messageId: "multipleSpaces", data: { displayValue: "," }, - type: "Punctuator", column: 8, endColumn: 10, }, { messageId: "multipleSpaces", data: { displayValue: "," }, - type: "Punctuator", column: 14, endColumn: 16, }, { messageId: "multipleSpaces", data: { displayValue: "]" }, - type: "Punctuator", column: 17, endColumn: 19, }, @@ -343,7 +324,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "b" }, - type: "Identifier", }, ], }, @@ -354,12 +334,10 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "b" }, - type: "Identifier", }, { messageId: "multipleSpaces", data: { displayValue: "2" }, - type: "Numeric", }, ], }, @@ -370,7 +348,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "b" }, - type: "Identifier", }, ], }, @@ -381,7 +358,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "b" }, - type: "Identifier", }, ], }, @@ -392,7 +368,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "(" }, - type: "Punctuator", }, ], }, @@ -403,7 +378,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "(" }, - type: "Punctuator", column: 13, endColumn: 19, }, @@ -416,7 +390,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "{" }, - type: "Punctuator", }, ], }, @@ -427,7 +400,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "foo" }, - type: "Identifier", }, ], }, @@ -438,7 +410,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "(" }, - type: "Punctuator", }, ], }, @@ -449,7 +420,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "{" }, - type: "Punctuator", }, ], }, @@ -460,7 +430,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "(" }, - type: "Punctuator", }, ], }, @@ -471,7 +440,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "error" }, - type: "Identifier", }, ], }, @@ -482,7 +450,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "bar" }, - type: "Identifier", }, ], }, @@ -493,7 +460,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "(" }, - type: "Punctuator", }, ], }, @@ -504,12 +470,10 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "answer" }, - type: "Identifier", }, { messageId: "multipleSpaces", data: { displayValue: "7" }, - type: "Numeric", }, ], }, @@ -520,7 +484,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "*" }, - type: "Punctuator", }, ], }, @@ -532,7 +495,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "b" }, - type: "Identifier", }, ], }, @@ -543,7 +505,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "+" }, - type: "Punctuator", }, ], }, @@ -554,7 +515,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "2" }, - type: "Numeric", }, ], }, @@ -565,7 +525,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "5" }, - type: "Numeric", column: 8, endColumn: 11, }, @@ -580,7 +539,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "/* comment */" }, - type: "Block", }, ], }, @@ -591,7 +549,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "5" }, - type: "Numeric", }, ], }, @@ -602,7 +559,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "// comment" }, - type: "Line", column: 11, endColumn: 13, }, @@ -615,7 +571,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "// comment" }, - type: "Line", }, ], }, @@ -626,7 +581,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "/* multiline...*/" }, - type: "Block", }, ], }, @@ -637,7 +591,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "/* multiline...*/" }, - type: "Block", }, ], }, @@ -648,7 +601,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "// this is a l..." }, - type: "Line", }, ], }, @@ -660,7 +612,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "/* comment */" }, - type: "Block", }, ], }, @@ -672,7 +623,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "5" }, - type: "Numeric", }, ], }, @@ -684,7 +634,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "// comment" }, - type: "Line", }, ], }, @@ -696,7 +645,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "// comment" }, - type: "Line", }, ], }, @@ -708,7 +656,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "/* multiline...*/" }, - type: "Block", }, ], }, @@ -720,7 +667,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "/* multiline...*/" }, - type: "Block", }, ], }, @@ -732,7 +678,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "// this is a l..." }, - type: "Line", }, ], }, @@ -744,7 +689,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "/* comment */" }, - type: "Block", }, ], }, @@ -756,7 +700,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "/* comment */" }, - type: "Block", }, ], }, @@ -768,7 +711,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "5" }, - type: "Numeric", }, ], }, @@ -780,7 +722,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "5" }, - type: "Numeric", }, ], }, @@ -792,7 +733,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "/*comment with...*/" }, - type: "Block", }, ], }, @@ -804,7 +744,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "//comment with..." }, - type: "Line", }, ], }, @@ -816,7 +755,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "/*comment with...*/" }, - type: "Block", }, ], }, @@ -828,7 +766,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "/*comment...*/" }, - type: "Block", column: 11, endColumn: 13, }, @@ -841,7 +778,6 @@ ruleTester.run("no-multi-spaces", rule, { { messageId: "multipleSpaces", data: { displayValue: "+" }, - type: "Punctuator", }, ], }, diff --git a/tests/lib/rules/no-multi-str.js b/tests/lib/rules/no-multi-str.js index 36eb14e0d9e0..fde521b1d2e1 100644 --- a/tests/lib/rules/no-multi-str.js +++ b/tests/lib/rules/no-multi-str.js @@ -37,7 +37,6 @@ ruleTester.run("no-multi-str", rule, { errors: [ { messageId: "multilineString", - type: "Literal", }, ], }, @@ -46,7 +45,6 @@ ruleTester.run("no-multi-str", rule, { errors: [ { messageId: "multilineString", - type: "Literal", }, ], }, @@ -55,7 +53,6 @@ ruleTester.run("no-multi-str", rule, { errors: [ { messageId: "multilineString", - type: "Literal", }, ], }, @@ -64,7 +61,6 @@ ruleTester.run("no-multi-str", rule, { errors: [ { messageId: "multilineString", - type: "Literal", }, ], }, @@ -73,7 +69,6 @@ ruleTester.run("no-multi-str", rule, { errors: [ { messageId: "multilineString", - type: "Literal", }, ], }, diff --git a/tests/lib/rules/no-multiple-empty-lines.js b/tests/lib/rules/no-multiple-empty-lines.js index a18a0dd8c529..5d943b8e6ae8 100644 --- a/tests/lib/rules/no-multiple-empty-lines.js +++ b/tests/lib/rules/no-multiple-empty-lines.js @@ -28,7 +28,6 @@ function getExpectedError(lines) { max: lines, pluralizedLines: lines === 1 ? "line" : "lines", }, - type: "Program", column: 1, }; } @@ -45,7 +44,6 @@ function getExpectedErrorEOF(lines) { data: { max: lines, }, - type: "Program", column: 1, }; } @@ -62,7 +60,6 @@ function getExpectedErrorBOF(lines) { data: { max: lines, }, - type: "Program", column: 1, }; } @@ -325,7 +322,6 @@ ruleTester.run("no-multiple-empty-lines", rule, { max: 1, pluralizedLines: "line", }, - type: "Program", line: 3, column: 1, }, @@ -343,7 +339,6 @@ ruleTester.run("no-multiple-empty-lines", rule, { max: 2, pluralizedLines: "lines", }, - type: "Program", line: 4, column: 1, }, diff --git a/tests/lib/rules/no-native-reassign.js b/tests/lib/rules/no-native-reassign.js index b2c59378fb06..b12dc1949ff8 100644 --- a/tests/lib/rules/no-native-reassign.js +++ b/tests/lib/rules/no-native-reassign.js @@ -38,7 +38,6 @@ ruleTester.run("no-native-reassign", rule, { { messageId: "nativeReassign", data: { name: "String" }, - type: "Identifier", }, ], }, @@ -48,7 +47,6 @@ ruleTester.run("no-native-reassign", rule, { { messageId: "nativeReassign", data: { name: "String" }, - type: "Identifier", }, ], }, @@ -59,12 +57,10 @@ ruleTester.run("no-native-reassign", rule, { { messageId: "nativeReassign", data: { name: "Object" }, - type: "Identifier", }, { messageId: "nativeReassign", data: { name: "String" }, - type: "Identifier", }, ], }, @@ -75,7 +71,6 @@ ruleTester.run("no-native-reassign", rule, { { messageId: "nativeReassign", data: { name: "top" }, - type: "Identifier", }, ], }, @@ -86,7 +81,6 @@ ruleTester.run("no-native-reassign", rule, { { messageId: "nativeReassign", data: { name: "require" }, - type: "Identifier", }, ], }, @@ -98,7 +92,6 @@ ruleTester.run("no-native-reassign", rule, { { messageId: "nativeReassign", data: { name: "b" }, - type: "Identifier", }, ], }, @@ -109,7 +102,6 @@ ruleTester.run("no-native-reassign", rule, { { messageId: "nativeReassign", data: { name: "b" }, - type: "Identifier", }, ], }, @@ -119,7 +111,6 @@ ruleTester.run("no-native-reassign", rule, { { messageId: "nativeReassign", data: { name: "b" }, - type: "Identifier", }, ], }, @@ -129,7 +120,6 @@ ruleTester.run("no-native-reassign", rule, { { messageId: "nativeReassign", data: { name: "b" }, - type: "Identifier", }, ], }, @@ -139,7 +129,6 @@ ruleTester.run("no-native-reassign", rule, { { messageId: "nativeReassign", data: { name: "Array" }, - type: "Identifier", }, ], }, diff --git a/tests/lib/rules/no-negated-condition.js b/tests/lib/rules/no-negated-condition.js index 7bb28e3f0fd9..b51eac6d7ca1 100644 --- a/tests/lib/rules/no-negated-condition.js +++ b/tests/lib/rules/no-negated-condition.js @@ -42,7 +42,6 @@ ruleTester.run("no-negated-condition", rule, { errors: [ { messageId: "unexpectedNegated", - type: "IfStatement", }, ], }, @@ -51,7 +50,6 @@ ruleTester.run("no-negated-condition", rule, { errors: [ { messageId: "unexpectedNegated", - type: "IfStatement", }, ], }, @@ -60,7 +58,6 @@ ruleTester.run("no-negated-condition", rule, { errors: [ { messageId: "unexpectedNegated", - type: "IfStatement", }, ], }, @@ -69,7 +66,6 @@ ruleTester.run("no-negated-condition", rule, { errors: [ { messageId: "unexpectedNegated", - type: "ConditionalExpression", }, ], }, @@ -78,7 +74,6 @@ ruleTester.run("no-negated-condition", rule, { errors: [ { messageId: "unexpectedNegated", - type: "ConditionalExpression", }, ], }, @@ -87,7 +82,6 @@ ruleTester.run("no-negated-condition", rule, { errors: [ { messageId: "unexpectedNegated", - type: "ConditionalExpression", }, ], }, diff --git a/tests/lib/rules/no-negated-in-lhs.js b/tests/lib/rules/no-negated-in-lhs.js index af44d330fb56..64e262c3236e 100644 --- a/tests/lib/rules/no-negated-in-lhs.js +++ b/tests/lib/rules/no-negated-in-lhs.js @@ -24,7 +24,11 @@ ruleTester.run("no-negated-in-lhs", rule, { invalid: [ { code: "!a in b", - errors: [{ messageId: "negatedLHS", type: "BinaryExpression" }], + errors: [ + { + messageId: "negatedLHS", + }, + ], }, ], }); diff --git a/tests/lib/rules/no-nested-ternary.js b/tests/lib/rules/no-nested-ternary.js index 1aa2ccaeca41..6ef9fe95f55b 100644 --- a/tests/lib/rules/no-nested-ternary.js +++ b/tests/lib/rules/no-nested-ternary.js @@ -26,7 +26,6 @@ ruleTester.run("no-nested-ternary", rule, { errors: [ { messageId: "noNestedTernary", - type: "ConditionalExpression", }, ], }, @@ -35,7 +34,6 @@ ruleTester.run("no-nested-ternary", rule, { errors: [ { messageId: "noNestedTernary", - type: "ConditionalExpression", }, ], }, diff --git a/tests/lib/rules/no-new-func.js b/tests/lib/rules/no-new-func.js index f9f34a857afc..ea16e00728d3 100644 --- a/tests/lib/rules/no-new-func.js +++ b/tests/lib/rules/no-new-func.js @@ -50,7 +50,6 @@ ruleTester.run("no-new-func", rule, { errors: [ { messageId: "noFunctionConstructor", - type: "NewExpression", }, ], }, @@ -59,7 +58,6 @@ ruleTester.run("no-new-func", rule, { errors: [ { messageId: "noFunctionConstructor", - type: "CallExpression", }, ], }, @@ -68,7 +66,6 @@ ruleTester.run("no-new-func", rule, { errors: [ { messageId: "noFunctionConstructor", - type: "CallExpression", }, ], }, @@ -77,7 +74,6 @@ ruleTester.run("no-new-func", rule, { errors: [ { messageId: "noFunctionConstructor", - type: "CallExpression", }, ], }, @@ -86,7 +82,6 @@ ruleTester.run("no-new-func", rule, { errors: [ { messageId: "noFunctionConstructor", - type: "CallExpression", }, ], }, @@ -95,7 +90,6 @@ ruleTester.run("no-new-func", rule, { errors: [ { messageId: "noFunctionConstructor", - type: "CallExpression", }, ], }, @@ -104,7 +98,6 @@ ruleTester.run("no-new-func", rule, { errors: [ { messageId: "noFunctionConstructor", - type: "CallExpression", }, ], }, @@ -114,7 +107,6 @@ ruleTester.run("no-new-func", rule, { errors: [ { messageId: "noFunctionConstructor", - type: "CallExpression", }, ], }, @@ -126,7 +118,6 @@ ruleTester.run("no-new-func", rule, { errors: [ { messageId: "noFunctionConstructor", - type: "NewExpression", }, ], }, @@ -135,7 +126,6 @@ ruleTester.run("no-new-func", rule, { errors: [ { messageId: "noFunctionConstructor", - type: "CallExpression", }, ], }, diff --git a/tests/lib/rules/no-new-object.js b/tests/lib/rules/no-new-object.js index c5ca987ce60d..7ef9c2f635d9 100644 --- a/tests/lib/rules/no-new-object.js +++ b/tests/lib/rules/no-new-object.js @@ -52,18 +52,25 @@ ruleTester.run("no-new-object", rule, { errors: [ { messageId: "preferLiteral", - type: "NewExpression", }, ], }, { code: "new Object();", - errors: [{ messageId: "preferLiteral", type: "NewExpression" }], + errors: [ + { + messageId: "preferLiteral", + }, + ], }, { code: "const a = new Object()", languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "preferLiteral", type: "NewExpression" }], + errors: [ + { + messageId: "preferLiteral", + }, + ], }, ], }); diff --git a/tests/lib/rules/no-new-require.js b/tests/lib/rules/no-new-require.js index be4b11d286a7..2311cdb34616 100644 --- a/tests/lib/rules/no-new-require.js +++ b/tests/lib/rules/no-new-require.js @@ -30,7 +30,6 @@ ruleTester.run("no-new-require", rule, { errors: [ { messageId: "noNewRequire", - type: "NewExpression", }, ], }, @@ -39,7 +38,6 @@ ruleTester.run("no-new-require", rule, { errors: [ { messageId: "noNewRequire", - type: "NewExpression", }, ], }, diff --git a/tests/lib/rules/no-new-wrappers.js b/tests/lib/rules/no-new-wrappers.js index 55c3cef02d2e..07123228f2df 100644 --- a/tests/lib/rules/no-new-wrappers.js +++ b/tests/lib/rules/no-new-wrappers.js @@ -63,7 +63,6 @@ ruleTester.run("no-new-wrappers", rule, { data: { fn: "String", }, - type: "NewExpression", }, ], }, @@ -75,7 +74,6 @@ ruleTester.run("no-new-wrappers", rule, { data: { fn: "Number", }, - type: "NewExpression", }, ], }, @@ -87,7 +85,6 @@ ruleTester.run("no-new-wrappers", rule, { data: { fn: "Boolean", }, - type: "NewExpression", }, ], }, @@ -106,7 +103,6 @@ ruleTester.run("no-new-wrappers", rule, { data: { fn: "String", }, - type: "NewExpression", line: 2, }, ], diff --git a/tests/lib/rules/no-new.js b/tests/lib/rules/no-new.js index c6e5c68ea3ca..ab024d3cdc57 100644 --- a/tests/lib/rules/no-new.js +++ b/tests/lib/rules/no-new.js @@ -29,7 +29,6 @@ ruleTester.run("no-new", rule, { errors: [ { messageId: "noNewStatement", - type: "ExpressionStatement", }, ], }, diff --git a/tests/lib/rules/no-nonoctal-decimal-escape.js b/tests/lib/rules/no-nonoctal-decimal-escape.js index 34400ffe6801..7e4e653ec0d0 100644 --- a/tests/lib/rules/no-nonoctal-decimal-escape.js +++ b/tests/lib/rules/no-nonoctal-decimal-escape.js @@ -28,7 +28,6 @@ function error(decimalEscape, column, refactorOutput, escapeBackslashOutput) { return { messageId: "decimalEscape", data: { decimalEscape }, - type: "Literal", line: 1, column, endLine: 1, diff --git a/tests/lib/rules/no-obj-calls.js b/tests/lib/rules/no-obj-calls.js index 2d588bb131d6..374f08979540 100644 --- a/tests/lib/rules/no-obj-calls.js +++ b/tests/lib/rules/no-obj-calls.js @@ -188,7 +188,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Math" }, - type: "CallExpression", }, ], }, @@ -198,7 +197,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Math" }, - type: "CallExpression", }, ], }, @@ -208,7 +206,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Math" }, - type: "CallExpression", column: 3, endColumn: 9, }, @@ -220,7 +217,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Math" }, - type: "CallExpression", column: 1, endColumn: 7, }, @@ -232,7 +228,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Math" }, - type: "NewExpression", }, ], }, @@ -242,7 +237,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Math" }, - type: "NewExpression", }, ], }, @@ -252,7 +246,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Math" }, - type: "NewExpression", }, ], }, @@ -262,7 +255,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Math" }, - type: "NewExpression", }, ], }, @@ -272,7 +264,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Math" }, - type: "NewExpression", }, ], }, @@ -282,7 +273,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "JSON" }, - type: "CallExpression", }, ], }, @@ -292,7 +282,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "JSON" }, - type: "CallExpression", }, ], }, @@ -302,7 +291,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "JSON" }, - type: "NewExpression", }, ], }, @@ -312,14 +300,12 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Math" }, - type: "CallExpression", column: 1, endColumn: 15, }, { messageId: "unexpectedCall", data: { name: "JSON" }, - type: "CallExpression", column: 7, endColumn: 13, }, @@ -332,7 +318,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Reflect" }, - type: "CallExpression", }, ], }, @@ -343,7 +328,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Reflect" }, - type: "NewExpression", }, ], }, @@ -354,7 +338,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Reflect" }, - type: "CallExpression", }, ], }, @@ -364,7 +347,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Reflect" }, - type: "CallExpression", }, ], }, @@ -374,7 +356,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Reflect" }, - type: "NewExpression", }, ], }, @@ -385,7 +366,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Atomics" }, - type: "CallExpression", }, ], }, @@ -396,7 +376,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Atomics" }, - type: "NewExpression", }, ], }, @@ -407,7 +386,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Atomics" }, - type: "CallExpression", }, ], }, @@ -418,7 +396,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Atomics" }, - type: "CallExpression", }, ], }, @@ -429,7 +406,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Atomics" }, - type: "NewExpression", }, ], }, @@ -440,7 +416,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Intl" }, - type: "CallExpression", }, ], }, @@ -451,7 +426,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Intl" }, - type: "NewExpression", }, ], }, @@ -461,7 +435,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Intl" }, - type: "CallExpression", }, ], }, @@ -471,7 +444,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Intl" }, - type: "NewExpression", }, ], }, @@ -482,7 +454,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Math" }, - type: "CallExpression", }, ], }, @@ -493,7 +464,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Math" }, - type: "NewExpression", }, ], }, @@ -504,7 +474,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Math" }, - type: "CallExpression", column: 3, endColumn: 20, }, @@ -517,7 +486,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Math" }, - type: "CallExpression", column: 1, endColumn: 18, }, @@ -530,7 +498,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Math" }, - type: "NewExpression", column: 1, endColumn: 22, }, @@ -543,7 +510,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "JSON" }, - type: "CallExpression", }, ], }, @@ -554,7 +520,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "JSON" }, - type: "CallExpression", }, ], }, @@ -565,14 +530,12 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Math" }, - type: "CallExpression", column: 1, endColumn: 37, }, { messageId: "unexpectedCall", data: { name: "JSON" }, - type: "CallExpression", column: 18, endColumn: 35, }, @@ -585,7 +548,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Reflect" }, - type: "CallExpression", }, ], }, @@ -596,7 +558,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Reflect" }, - type: "NewExpression", }, ], }, @@ -607,7 +568,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Reflect" }, - type: "CallExpression", }, ], }, @@ -618,7 +578,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Atomics" }, - type: "CallExpression", }, ], }, @@ -629,7 +588,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Intl" }, - type: "CallExpression", }, ], }, @@ -640,7 +598,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Intl" }, - type: "NewExpression", }, ], }, @@ -651,7 +608,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Intl" }, - type: "CallExpression", }, ], }, @@ -661,7 +617,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedRefCall", data: { name: "foo", ref: "JSON" }, - type: "CallExpression", }, ], }, @@ -671,7 +626,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedRefCall", data: { name: "foo", ref: "JSON" }, - type: "NewExpression", }, ], }, @@ -682,7 +636,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedRefCall", data: { name: "foo", ref: "JSON" }, - type: "CallExpression", }, ], }, @@ -693,7 +646,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedRefCall", data: { name: "foo", ref: "JSON" }, - type: "NewExpression", }, ], }, @@ -704,7 +656,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedRefCall", data: { name: "foo", ref: "Atomics" }, - type: "CallExpression", }, ], }, @@ -715,7 +666,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedRefCall", data: { name: "foo", ref: "Atomics" }, - type: "NewExpression", }, ], }, @@ -726,7 +676,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedRefCall", data: { name: "foo", ref: "Intl" }, - type: "CallExpression", }, ], }, @@ -737,7 +686,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedRefCall", data: { name: "foo", ref: "Intl" }, - type: "NewExpression", }, ], }, @@ -750,7 +698,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Reflect" }, - type: "CallExpression", }, ], }, @@ -761,7 +708,6 @@ ruleTester.run("no-obj-calls", rule, { { messageId: "unexpectedCall", data: { name: "Reflect" }, - type: "CallExpression", }, ], }, diff --git a/tests/lib/rules/no-object-constructor.js b/tests/lib/rules/no-object-constructor.js index 95e4912734b8..f5704d99f262 100644 --- a/tests/lib/rules/no-object-constructor.js +++ b/tests/lib/rules/no-object-constructor.js @@ -42,7 +42,6 @@ ruleTester.run("no-object-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "NewExpression", suggestions: [ { messageId: "useLiteral", @@ -57,7 +56,6 @@ ruleTester.run("no-object-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "CallExpression", suggestions: [ { messageId: "useLiteral", @@ -72,7 +70,6 @@ ruleTester.run("no-object-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "CallExpression", suggestions: [ { messageId: "useLiteral", @@ -87,7 +84,6 @@ ruleTester.run("no-object-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "CallExpression", suggestions: [ { messageId: "useLiteral", @@ -102,7 +98,6 @@ ruleTester.run("no-object-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "CallExpression", suggestions: [ { messageId: "useLiteral", @@ -117,7 +112,6 @@ ruleTester.run("no-object-constructor", rule, { errors: [ { messageId: "preferLiteral", - type: "NewExpression", suggestions: [ { messageId: "useLiteral", diff --git a/tests/lib/rules/no-octal-escape.js b/tests/lib/rules/no-octal-escape.js index 9f813fc11f48..0f702e827498 100644 --- a/tests/lib/rules/no-octal-escape.js +++ b/tests/lib/rules/no-octal-escape.js @@ -67,7 +67,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "01" }, - type: "Literal", }, ], }, @@ -77,7 +76,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "000" }, - type: "Literal", }, ], }, @@ -87,7 +85,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "377" }, - type: "Literal", }, ], }, @@ -97,7 +94,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "37" }, - type: "Literal", }, ], }, @@ -107,7 +103,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "37" }, - type: "Literal", }, ], }, @@ -117,7 +112,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "3" }, - type: "Literal", }, ], }, @@ -127,7 +121,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "3" }, - type: "Literal", }, ], }, @@ -137,7 +130,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "251" }, - type: "Literal", }, ], }, @@ -147,7 +139,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "25" }, - type: "Literal", }, ], }, @@ -157,7 +148,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "25" }, - type: "Literal", }, ], }, @@ -167,7 +157,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "3" }, - type: "Literal", }, ], }, @@ -177,7 +166,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "77" }, - type: "Literal", }, ], }, @@ -187,7 +175,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "7" }, - type: "Literal", }, ], }, @@ -197,7 +184,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "5" }, - type: "Literal", }, ], }, @@ -207,7 +193,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "75" }, - type: "Literal", }, ], }, @@ -217,7 +202,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "40" }, - type: "Literal", }, ], }, @@ -228,7 +212,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "1" }, - type: "Literal", }, ], }, @@ -238,7 +221,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "75" }, - type: "Literal", }, ], }, @@ -249,7 +231,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "1" }, - type: "Literal", }, ], }, @@ -259,7 +240,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "1" }, - type: "Literal", }, ], }, @@ -269,7 +249,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "01" }, - type: "Literal", }, ], }, @@ -279,7 +258,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "01" }, - type: "Literal", }, ], }, @@ -289,7 +267,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "1" }, - type: "Literal", }, ], }, @@ -299,7 +276,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "01" }, - type: "Literal", }, ], }, @@ -309,7 +285,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "0" }, - type: "Literal", }, ], }, @@ -320,7 +295,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "1" }, - type: "Literal", }, ], }, @@ -330,7 +304,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "2" }, - type: "Literal", }, ], }, @@ -340,7 +313,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "7" }, - type: "Literal", }, ], }, @@ -350,7 +322,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "00" }, - type: "Literal", }, ], }, @@ -360,7 +331,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "01" }, - type: "Literal", }, ], }, @@ -370,7 +340,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "02" }, - type: "Literal", }, ], }, @@ -380,7 +349,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "07" }, - type: "Literal", }, ], }, @@ -390,7 +358,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "0" }, - type: "Literal", }, ], }, @@ -400,7 +367,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "0" }, - type: "Literal", }, ], }, @@ -410,7 +376,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "10" }, - type: "Literal", }, ], }, @@ -420,7 +385,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "12" }, - type: "Literal", }, ], }, @@ -430,7 +394,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "1" }, - type: "Literal", }, ], }, @@ -440,7 +403,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "1" }, - type: "Literal", }, ], }, @@ -450,7 +412,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "1" }, - type: "Literal", }, ], }, @@ -460,7 +421,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "1" }, - type: "Literal", }, ], }, @@ -470,7 +430,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "1" }, - type: "Literal", }, ], }, @@ -480,7 +439,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "01" }, - type: "Literal", }, ], }, @@ -490,7 +448,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "01" }, - type: "Literal", }, ], }, @@ -500,7 +457,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "01" }, - type: "Literal", }, ], }, @@ -510,7 +466,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "01" }, - type: "Literal", }, ], }, @@ -520,7 +475,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "01" }, - type: "Literal", }, ], }, @@ -530,7 +484,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "0" }, - type: "Literal", }, ], }, @@ -540,7 +493,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "1" }, - type: "Literal", }, ], }, @@ -550,7 +502,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "01" }, - type: "Literal", }, ], }, @@ -560,7 +511,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "0" }, - type: "Literal", }, ], }, @@ -570,7 +520,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "1" }, - type: "Literal", }, ], }, @@ -580,7 +529,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "01" }, - type: "Literal", }, ], }, @@ -590,7 +538,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "0" }, - type: "Literal", }, ], }, @@ -602,7 +549,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "1" }, - type: "Literal", }, ], }, @@ -614,7 +560,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "01" }, - type: "Literal", }, ], }, @@ -624,7 +569,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "02" }, - type: "Literal", }, ], }, @@ -634,7 +578,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "01" }, - type: "Literal", }, ], }, @@ -644,7 +587,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "2" }, - type: "Literal", }, ], }, @@ -654,7 +596,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "0" }, - type: "Literal", }, ], }, @@ -664,7 +605,6 @@ ruleTester.run("no-octal-escape", rule, { { messageId: "octalEscapeSequence", data: { sequence: "1" }, - type: "Literal", }, ], }, diff --git a/tests/lib/rules/no-octal.js b/tests/lib/rules/no-octal.js index b17aa706dd1c..1ad4c1705c65 100644 --- a/tests/lib/rules/no-octal.js +++ b/tests/lib/rules/no-octal.js @@ -38,7 +38,6 @@ ruleTester.run("no-octal", rule, { errors: [ { messageId: "noOctal", - type: "Literal", }, ], }, @@ -47,7 +46,6 @@ ruleTester.run("no-octal", rule, { errors: [ { messageId: "noOctal", - type: "Literal", }, ], }, @@ -56,7 +54,6 @@ ruleTester.run("no-octal", rule, { errors: [ { messageId: "noOctal", - type: "Literal", }, ], }, @@ -65,7 +62,6 @@ ruleTester.run("no-octal", rule, { errors: [ { messageId: "noOctal", - type: "Literal", }, ], }, @@ -74,7 +70,6 @@ ruleTester.run("no-octal", rule, { errors: [ { messageId: "noOctal", - type: "Literal", }, ], }, @@ -83,7 +78,6 @@ ruleTester.run("no-octal", rule, { errors: [ { messageId: "noOctal", - type: "Literal", }, ], }, @@ -92,7 +86,6 @@ ruleTester.run("no-octal", rule, { errors: [ { messageId: "noOctal", - type: "Literal", }, ], }, @@ -101,7 +94,6 @@ ruleTester.run("no-octal", rule, { errors: [ { messageId: "noOctal", - type: "Literal", }, ], }, @@ -110,7 +102,6 @@ ruleTester.run("no-octal", rule, { errors: [ { messageId: "noOctal", - type: "Literal", }, ], }, @@ -119,7 +110,6 @@ ruleTester.run("no-octal", rule, { errors: [ { messageId: "noOctal", - type: "Literal", }, ], }, @@ -128,7 +118,6 @@ ruleTester.run("no-octal", rule, { errors: [ { messageId: "noOctal", - type: "Literal", }, ], }, diff --git a/tests/lib/rules/no-path-concat.js b/tests/lib/rules/no-path-concat.js index 30b9c8f18be0..f93d75a61fb3 100644 --- a/tests/lib/rules/no-path-concat.js +++ b/tests/lib/rules/no-path-concat.js @@ -31,7 +31,6 @@ ruleTester.run("no-path-concat", rule, { errors: [ { messageId: "usePathFunctions", - type: "BinaryExpression", }, ], }, @@ -40,7 +39,6 @@ ruleTester.run("no-path-concat", rule, { errors: [ { messageId: "usePathFunctions", - type: "BinaryExpression", }, ], }, @@ -49,7 +47,6 @@ ruleTester.run("no-path-concat", rule, { errors: [ { messageId: "usePathFunctions", - type: "BinaryExpression", }, ], }, @@ -58,7 +55,6 @@ ruleTester.run("no-path-concat", rule, { errors: [ { messageId: "usePathFunctions", - type: "BinaryExpression", }, ], }, diff --git a/tests/lib/rules/no-plusplus.js b/tests/lib/rules/no-plusplus.js index 34022043b102..25343db3c9b3 100644 --- a/tests/lib/rules/no-plusplus.js +++ b/tests/lib/rules/no-plusplus.js @@ -74,7 +74,6 @@ ruleTester.run("no-plusplus", rule, { data: { operator: "++", }, - type: "UpdateExpression", }, ], }, @@ -86,7 +85,6 @@ ruleTester.run("no-plusplus", rule, { data: { operator: "--", }, - type: "UpdateExpression", }, ], }, @@ -98,7 +96,6 @@ ruleTester.run("no-plusplus", rule, { data: { operator: "++", }, - type: "UpdateExpression", }, ], }, @@ -110,7 +107,6 @@ ruleTester.run("no-plusplus", rule, { data: { operator: "++", }, - type: "UpdateExpression", }, ], }, @@ -125,7 +121,6 @@ ruleTester.run("no-plusplus", rule, { data: { operator: "++", }, - type: "UpdateExpression", }, ], }, @@ -138,7 +133,6 @@ ruleTester.run("no-plusplus", rule, { data: { operator: "++", }, - type: "UpdateExpression", }, ], }, @@ -151,7 +145,6 @@ ruleTester.run("no-plusplus", rule, { data: { operator: "++", }, - type: "UpdateExpression", }, ], }, @@ -164,7 +157,6 @@ ruleTester.run("no-plusplus", rule, { data: { operator: "--", }, - type: "UpdateExpression", }, ], }, @@ -177,7 +169,6 @@ ruleTester.run("no-plusplus", rule, { data: { operator: "++", }, - type: "UpdateExpression", }, ], }, @@ -190,7 +181,6 @@ ruleTester.run("no-plusplus", rule, { data: { operator: "++", }, - type: "UpdateExpression", }, ], }, @@ -203,7 +193,6 @@ ruleTester.run("no-plusplus", rule, { data: { operator: "--", }, - type: "UpdateExpression", }, ], }, @@ -216,7 +205,6 @@ ruleTester.run("no-plusplus", rule, { data: { operator: "++", }, - type: "UpdateExpression", }, ], }, diff --git a/tests/lib/rules/no-process-env.js b/tests/lib/rules/no-process-env.js index a9587879034f..de661de2eee1 100644 --- a/tests/lib/rules/no-process-env.js +++ b/tests/lib/rules/no-process-env.js @@ -31,7 +31,6 @@ ruleTester.run("no-process-env", rule, { errors: [ { messageId: "unexpectedProcessEnv", - type: "MemberExpression", }, ], }, @@ -40,7 +39,6 @@ ruleTester.run("no-process-env", rule, { errors: [ { messageId: "unexpectedProcessEnv", - type: "MemberExpression", }, ], }, @@ -49,7 +47,6 @@ ruleTester.run("no-process-env", rule, { errors: [ { messageId: "unexpectedProcessEnv", - type: "MemberExpression", }, ], }, diff --git a/tests/lib/rules/no-process-exit.js b/tests/lib/rules/no-process-exit.js index e21f08d74378..6821ae45d19c 100644 --- a/tests/lib/rules/no-process-exit.js +++ b/tests/lib/rules/no-process-exit.js @@ -26,7 +26,6 @@ ruleTester.run("no-process-exit", rule, { errors: [ { messageId: "noProcessExit", - type: "CallExpression", }, ], }, @@ -35,7 +34,6 @@ ruleTester.run("no-process-exit", rule, { errors: [ { messageId: "noProcessExit", - type: "CallExpression", }, ], }, @@ -44,7 +42,6 @@ ruleTester.run("no-process-exit", rule, { errors: [ { messageId: "noProcessExit", - type: "CallExpression", }, ], }, diff --git a/tests/lib/rules/no-promise-executor-return.js b/tests/lib/rules/no-promise-executor-return.js index 4032cf046ad0..8d786d1e2cc0 100644 --- a/tests/lib/rules/no-promise-executor-return.js +++ b/tests/lib/rules/no-promise-executor-return.js @@ -175,7 +175,6 @@ ruleTester.run("no-promise-executor-return", rule, { { message: "Return values from promise executor functions cannot be read.", - type: "ReturnStatement", column: 42, endColumn: 51, suggestions: null, @@ -193,7 +192,6 @@ ruleTester.run("no-promise-executor-return", rule, { { message: "Return values from promise executor functions cannot be read.", - type: "CallExpression", column: 34, endColumn: 44, suggestions: [ @@ -220,7 +218,6 @@ ruleTester.run("no-promise-executor-return", rule, { { message: "Return values from promise executor functions cannot be read.", - type: "ReturnStatement", column: 36, endColumn: 44, suggestions: [ @@ -244,7 +241,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "Literal", suggestions: [ { messageId: "prependVoid", @@ -268,7 +264,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ConditionalExpression", suggestions: [ { messageId: "prependVoid", @@ -292,7 +287,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ConditionalExpression", suggestions: [ { messageId: "prependVoid", @@ -316,7 +310,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "Literal", suggestions: [ { messageId: "prependVoid", @@ -340,7 +333,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ArrowFunctionExpression", suggestions: [ { messageId: "prependVoid", @@ -366,7 +358,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "Literal", suggestions: [ { messageId: "prependVoid", @@ -390,7 +381,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "Literal", suggestions: [ { messageId: "wrapBraces", @@ -412,7 +402,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "UnaryExpression", suggestions: [ { messageId: "prependVoid", @@ -436,7 +425,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "UnaryExpression", suggestions: [ { messageId: "wrapBraces", @@ -458,7 +446,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", suggestions: [ { messageId: "prependVoid", @@ -478,7 +465,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", suggestions: null, }, ], @@ -495,7 +481,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", suggestions: [ { messageId: "prependVoid", @@ -517,7 +502,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", suggestions: [ { messageId: "prependVoid", @@ -537,7 +521,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "AssignmentExpression", suggestions: [ { messageId: "prependVoid", @@ -563,7 +546,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", suggestions: [ { messageId: "prependVoid", @@ -583,7 +565,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "Literal", suggestions: [ { messageId: "prependVoid", @@ -609,7 +590,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "Literal", suggestions: [ { messageId: "prependVoid", @@ -630,7 +610,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", suggestions: null, }, ], @@ -640,7 +619,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", suggestions: null, }, ], @@ -652,7 +630,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", suggestions: null, }, ], @@ -662,7 +639,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", suggestions: null, }, ], @@ -672,7 +648,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", suggestions: null, }, ], @@ -682,7 +657,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "Identifier", column: 34, suggestions: [ { @@ -698,7 +672,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "Literal", column: 34, suggestions: [ { @@ -714,7 +687,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", suggestions: null, }, ], @@ -724,7 +696,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", suggestions: null, }, ], @@ -734,7 +705,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "BinaryExpression", column: 34, suggestions: [ { @@ -750,7 +720,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", suggestions: null, }, ], @@ -762,7 +731,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", suggestions: null, }, ], @@ -772,7 +740,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", suggestions: null, }, ], @@ -782,7 +749,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", suggestions: null, }, ], @@ -794,7 +760,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", suggestions: null, }, ], @@ -805,7 +770,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "Literal", column: 20, suggestions: [ { @@ -821,7 +785,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ObjectExpression", column: 26, suggestions: [ { @@ -839,7 +802,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", suggestions: null, }, ], @@ -849,7 +811,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", suggestions: null, }, ], @@ -859,7 +820,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "Literal", column: 19, suggestions: [ { @@ -877,7 +837,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", column: 45, suggestions: null, }, @@ -888,7 +847,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", column: 48, suggestions: null, }, @@ -899,7 +857,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", column: 50, suggestions: null, }, @@ -910,7 +867,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", column: 52, suggestions: null, }, @@ -921,7 +877,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", column: 71, suggestions: null, }, @@ -932,7 +887,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", column: 38, suggestions: null, }, @@ -943,7 +897,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", column: 62, suggestions: null, }, @@ -954,7 +907,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", column: 30, suggestions: null, }, @@ -965,7 +917,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", column: 27, suggestions: null, }, @@ -976,7 +927,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", column: 27, suggestions: null, }, @@ -987,7 +937,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "Literal", column: 25, suggestions: [ { @@ -1003,7 +952,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ArrowFunctionExpression", column: 25, suggestions: [ { @@ -1022,7 +970,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ArrowFunctionExpression", column: 25, suggestions: [ { @@ -1039,7 +986,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "FunctionExpression", column: 25, suggestions: [], }, @@ -1050,7 +996,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "FunctionExpression", column: 25, suggestions: [ { @@ -1066,7 +1011,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ArrayExpression", column: 25, suggestions: [ { @@ -1084,7 +1028,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", suggestions: null, }, ], @@ -1094,7 +1037,6 @@ ruleTester.run("no-promise-executor-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", suggestions: null, }, ], diff --git a/tests/lib/rules/no-proto.js b/tests/lib/rules/no-proto.js index 27fe80feab71..7392ad8b6145 100644 --- a/tests/lib/rules/no-proto.js +++ b/tests/lib/rules/no-proto.js @@ -36,27 +36,35 @@ ruleTester.run("no-proto", rule, { { code: "var a = test.__proto__;", errors: [ - { messageId: "unexpectedProto", type: "MemberExpression" }, + { + messageId: "unexpectedProto", + }, ], }, { code: "var a = test['__proto__'];", errors: [ - { messageId: "unexpectedProto", type: "MemberExpression" }, + { + messageId: "unexpectedProto", + }, ], }, { code: "var a = test[`__proto__`];", languageOptions: { ecmaVersion: 6 }, errors: [ - { messageId: "unexpectedProto", type: "MemberExpression" }, + { + messageId: "unexpectedProto", + }, ], }, { code: "test[`__proto__`] = function () {};", languageOptions: { ecmaVersion: 6 }, errors: [ - { messageId: "unexpectedProto", type: "MemberExpression" }, + { + messageId: "unexpectedProto", + }, ], }, ], diff --git a/tests/lib/rules/no-prototype-builtins.js b/tests/lib/rules/no-prototype-builtins.js index f1ce088b8606..7079f7bce2e6 100644 --- a/tests/lib/rules/no-prototype-builtins.js +++ b/tests/lib/rules/no-prototype-builtins.js @@ -80,7 +80,6 @@ ruleTester.run("no-prototype-builtins", rule, { output: "Object.prototype.hasOwnProperty.call(foo, 'bar')", }, ], - type: "CallExpression", }, ], }, @@ -100,7 +99,6 @@ ruleTester.run("no-prototype-builtins", rule, { output: "Object.prototype.isPrototypeOf.call(foo, 'bar')", }, ], - type: "CallExpression", }, ], }, @@ -139,7 +137,6 @@ ruleTester.run("no-prototype-builtins", rule, { output: "Object.prototype.hasOwnProperty.call(foo.bar, 'bar')", }, ], - type: "CallExpression", }, ], }, @@ -159,7 +156,6 @@ ruleTester.run("no-prototype-builtins", rule, { output: "Object.prototype.isPrototypeOf.call(foo.bar.baz, 'bar')", }, ], - type: "CallExpression", }, ], }, @@ -179,7 +175,6 @@ ruleTester.run("no-prototype-builtins", rule, { output: "Object.prototype.hasOwnProperty.call(foo, 'bar')", }, ], - type: "CallExpression", }, ], }, @@ -200,7 +195,6 @@ ruleTester.run("no-prototype-builtins", rule, { output: "Object.prototype.isPrototypeOf.call(foo, 'bar').baz", }, ], - type: "CallExpression", }, ], }, @@ -220,7 +214,6 @@ ruleTester.run("no-prototype-builtins", rule, { output: String.raw`Object.prototype.propertyIsEnumerable.call(foo.bar, 'baz')`, }, ], - type: "CallExpression", }, ], }, diff --git a/tests/lib/rules/no-redeclare.js b/tests/lib/rules/no-redeclare.js index 2f8d328feafe..79c2cb1903de 100644 --- a/tests/lib/rules/no-redeclare.js +++ b/tests/lib/rules/no-redeclare.js @@ -184,70 +184,94 @@ ruleTester.run("no-redeclare", rule, { code: "var a = 3; var a = 10;", languageOptions: { ecmaVersion: 6 }, errors: [ - { message: "'a' is already defined.", type: "Identifier" }, + { + message: "'a' is already defined.", + }, ], }, { code: "switch(foo) { case a: var b = 3;\ncase b: var b = 4}", errors: [ - { message: "'b' is already defined.", type: "Identifier" }, + { + message: "'b' is already defined.", + }, ], }, { code: "var a = 3; var a = 10;", errors: [ - { message: "'a' is already defined.", type: "Identifier" }, + { + message: "'a' is already defined.", + }, ], }, { code: "var a = {}; var a = [];", errors: [ - { message: "'a' is already defined.", type: "Identifier" }, + { + message: "'a' is already defined.", + }, ], }, { code: "var a; function a() {}", errors: [ - { message: "'a' is already defined.", type: "Identifier" }, + { + message: "'a' is already defined.", + }, ], }, { code: "function a() {} function a() {}", errors: [ - { message: "'a' is already defined.", type: "Identifier" }, + { + message: "'a' is already defined.", + }, ], }, { code: "var a = function() { }; var a = function() { }", errors: [ - { message: "'a' is already defined.", type: "Identifier" }, + { + message: "'a' is already defined.", + }, ], }, { code: "var a = function() { }; var a = new Date();", errors: [ - { message: "'a' is already defined.", type: "Identifier" }, + { + message: "'a' is already defined.", + }, ], }, { code: "var a = 3; var a = 10; var a = 15;", errors: [ - { message: "'a' is already defined.", type: "Identifier" }, - { message: "'a' is already defined.", type: "Identifier" }, + { + message: "'a' is already defined.", + }, + { + message: "'a' is already defined.", + }, ], }, { code: "var a; var a;", languageOptions: { ecmaVersion: 6, sourceType: "module" }, errors: [ - { message: "'a' is already defined.", type: "Identifier" }, + { + message: "'a' is already defined.", + }, ], }, { code: "export var a; var a;", languageOptions: { ecmaVersion: 6, sourceType: "module" }, errors: [ - { message: "'a' is already defined.", type: "Identifier" }, + { + message: "'a' is already defined.", + }, ], }, @@ -258,7 +282,9 @@ ruleTester.run("no-redeclare", rule, { ecmaVersion: 2022, }, errors: [ - { message: "'a' is already defined.", type: "Identifier" }, + { + message: "'a' is already defined.", + }, ], }, { @@ -267,7 +293,9 @@ ruleTester.run("no-redeclare", rule, { ecmaVersion: 2022, }, errors: [ - { message: "'a' is already defined.", type: "Identifier" }, + { + message: "'a' is already defined.", + }, ], }, { @@ -276,7 +304,9 @@ ruleTester.run("no-redeclare", rule, { ecmaVersion: 2022, }, errors: [ - { message: "'a' is already defined.", type: "Identifier" }, + { + message: "'a' is already defined.", + }, ], }, { @@ -285,7 +315,9 @@ ruleTester.run("no-redeclare", rule, { ecmaVersion: 2022, }, errors: [ - { message: "'a' is already defined.", type: "Identifier" }, + { + message: "'a' is already defined.", + }, ], }, @@ -296,7 +328,6 @@ ruleTester.run("no-redeclare", rule, { { message: "'Object' is already defined as a built-in global variable.", - type: "Identifier", }, ], }, @@ -308,7 +339,6 @@ ruleTester.run("no-redeclare", rule, { { message: "'top' is already defined as a built-in global variable.", - type: "Identifier", }, ], }, @@ -317,11 +347,12 @@ ruleTester.run("no-redeclare", rule, { options: [{ builtinGlobals: true }], languageOptions: { ecmaVersion: 6 }, errors: [ - { message: "'a' is already defined.", type: "Identifier" }, + { + message: "'a' is already defined.", + }, { message: "'Object' is already defined as a built-in global variable.", - type: "Identifier", }, ], }, @@ -330,7 +361,9 @@ ruleTester.run("no-redeclare", rule, { options: [{ builtinGlobals: true }], languageOptions: { ecmaVersion: 6, sourceType: "module" }, errors: [ - { message: "'a' is already defined.", type: "Identifier" }, + { + message: "'a' is already defined.", + }, ], }, { @@ -341,7 +374,9 @@ ruleTester.run("no-redeclare", rule, { parserOptions: { ecmaFeatures: { globalReturn: true } }, }, errors: [ - { message: "'a' is already defined.", type: "Identifier" }, + { + message: "'a' is already defined.", + }, ], }, { @@ -349,7 +384,9 @@ ruleTester.run("no-redeclare", rule, { options: [{ builtinGlobals: false }], languageOptions: { ecmaVersion: 6 }, errors: [ - { message: "'a' is already defined.", type: "Identifier" }, + { + message: "'a' is already defined.", + }, ], }, { @@ -360,7 +397,6 @@ ruleTester.run("no-redeclare", rule, { { message: "'globalThis' is already defined as a built-in global variable.", - type: "Identifier", }, ], }, @@ -369,11 +405,12 @@ ruleTester.run("no-redeclare", rule, { options: [{ builtinGlobals: true }], languageOptions: { ecmaVersion: 2020 }, errors: [ - { message: "'a' is already defined.", type: "Identifier" }, + { + message: "'a' is already defined.", + }, { message: "'globalThis' is already defined as a built-in global variable.", - type: "Identifier", }, ], }, @@ -384,7 +421,6 @@ ruleTester.run("no-redeclare", rule, { { message: "'b' is already defined by a variable declaration.", - type: "Block", line: 1, column: 10, endLine: 1, @@ -399,7 +435,6 @@ ruleTester.run("no-redeclare", rule, { { message: "'b' is already defined by a variable declaration.", - type: "Block", line: 1, column: 10, endLine: 1, @@ -410,25 +445,33 @@ ruleTester.run("no-redeclare", rule, { { code: "function f() { var a; var a; }", errors: [ - { message: "'a' is already defined.", type: "Identifier" }, + { + message: "'a' is already defined.", + }, ], }, { code: "function f(a) { var a; }", errors: [ - { message: "'a' is already defined.", type: "Identifier" }, + { + message: "'a' is already defined.", + }, ], }, { code: "function f() { var a; if (test) { var a; } }", errors: [ - { message: "'a' is already defined.", type: "Identifier" }, + { + message: "'a' is already defined.", + }, ], }, { code: "for (var a, a;;);", errors: [ - { message: "'a' is already defined.", type: "Identifier" }, + { + message: "'a' is already defined.", + }, ], }, @@ -438,7 +481,6 @@ ruleTester.run("no-redeclare", rule, { { message: "'Object' is already defined as a built-in global variable.", - type: "Identifier", }, ], }, @@ -449,7 +491,6 @@ ruleTester.run("no-redeclare", rule, { { message: "'top' is already defined as a built-in global variable.", - type: "Identifier", }, ], }, @@ -462,7 +503,6 @@ ruleTester.run("no-redeclare", rule, { { message: "'Array' is already defined as a built-in global variable.", - type: "Block", line: 1, column: 11, endLine: 1, @@ -477,7 +517,6 @@ ruleTester.run("no-redeclare", rule, { { message: "'parseInt' is already defined as a built-in global variable.", - type: "Block", line: 1, column: 11, endLine: 1, @@ -492,7 +531,6 @@ ruleTester.run("no-redeclare", rule, { { message: "'Array' is already defined as a built-in global variable.", - type: "Block", line: 1, column: 16, endLine: 1, @@ -507,7 +545,6 @@ ruleTester.run("no-redeclare", rule, { { message: "'Array' is already defined as a built-in global variable.", - type: "Block", line: 1, column: 17, endLine: 1, @@ -522,7 +559,6 @@ ruleTester.run("no-redeclare", rule, { { message: "'Array' is already defined as a built-in global variable.", - type: "Block", line: 1, column: 15, endLine: 1, @@ -537,7 +573,6 @@ ruleTester.run("no-redeclare", rule, { { message: "'Array' is already defined as a built-in global variable.", - type: "Block", line: 1, column: 17, endLine: 1, @@ -552,7 +587,6 @@ ruleTester.run("no-redeclare", rule, { { message: "'Array' is already defined as a built-in global variable.", - type: "Block", line: 1, column: 13, endLine: 1, @@ -567,7 +601,6 @@ ruleTester.run("no-redeclare", rule, { { message: "'Array' is already defined as a built-in global variable.", - type: "Block", line: 1, column: 23, endLine: 1, @@ -582,7 +615,6 @@ ruleTester.run("no-redeclare", rule, { { message: "'Array' is already defined as a built-in global variable.", - type: "Block", line: 2, column: 11, endLine: 2, @@ -597,7 +629,6 @@ ruleTester.run("no-redeclare", rule, { { message: "'Array' is already defined as a built-in global variable.", - type: "Block", line: 2, column: 1, endLine: 2, @@ -612,7 +643,6 @@ ruleTester.run("no-redeclare", rule, { { message: "'Array' is already defined as a built-in global variable.", - type: "Block", line: 4, column: 1, endLine: 4, @@ -627,7 +657,6 @@ ruleTester.run("no-redeclare", rule, { { message: "'Array' is already defined as a built-in global variable.", - type: "Block", line: 2, column: 5, endLine: 2, @@ -643,7 +672,6 @@ ruleTester.run("no-redeclare", rule, { { message: "'a' is already defined as a built-in global variable.", - type: "Block", line: 1, column: 11, endLine: 1, @@ -659,7 +687,6 @@ ruleTester.run("no-redeclare", rule, { { message: "'a' is already defined as a built-in global variable.", - type: "Block", line: 1, column: 11, endLine: 1, @@ -672,7 +699,6 @@ ruleTester.run("no-redeclare", rule, { errors: [ { message: "'a' is already defined.", - type: "Block", line: 1, column: 26, endLine: 1, @@ -688,7 +714,6 @@ ruleTester.run("no-redeclare", rule, { { message: "'a' is already defined as a built-in global variable.", - type: "Block", line: 1, column: 11, endLine: 1, @@ -697,7 +722,6 @@ ruleTester.run("no-redeclare", rule, { { message: "'a' is already defined as a built-in global variable.", - type: "Block", line: 1, column: 26, endLine: 1, @@ -706,7 +730,6 @@ ruleTester.run("no-redeclare", rule, { { message: "'a' is already defined as a built-in global variable.", - type: "Identifier", line: 1, column: 35, endLine: 1, diff --git a/tests/lib/rules/no-regex-spaces.js b/tests/lib/rules/no-regex-spaces.js index 48016032eaa7..8e214fca3f3f 100644 --- a/tests/lib/rules/no-regex-spaces.js +++ b/tests/lib/rules/no-regex-spaces.js @@ -87,7 +87,6 @@ ruleTester.run("no-regex-spaces", rule, { { messageId: "multipleSpaces", data: { length: "2" }, - type: "Literal", }, ], }, @@ -98,7 +97,6 @@ ruleTester.run("no-regex-spaces", rule, { { messageId: "multipleSpaces", data: { length: "4" }, - type: "Literal", }, ], }, @@ -109,7 +107,6 @@ ruleTester.run("no-regex-spaces", rule, { { messageId: "multipleSpaces", data: { length: "2" }, - type: "Literal", }, ], }, @@ -120,7 +117,6 @@ ruleTester.run("no-regex-spaces", rule, { { messageId: "multipleSpaces", data: { length: "2" }, - type: "CallExpression", }, ], }, @@ -131,7 +127,6 @@ ruleTester.run("no-regex-spaces", rule, { { messageId: "multipleSpaces", data: { length: "4" }, - type: "CallExpression", }, ], }, @@ -142,7 +137,6 @@ ruleTester.run("no-regex-spaces", rule, { { messageId: "multipleSpaces", data: { length: "4" }, - type: "NewExpression", }, ], }, @@ -155,7 +149,6 @@ ruleTester.run("no-regex-spaces", rule, { { messageId: "multipleSpaces", data: { length: "4" }, - type: "CallExpression", }, ], }, @@ -166,7 +159,6 @@ ruleTester.run("no-regex-spaces", rule, { { messageId: "multipleSpaces", data: { length: "2" }, - type: "Literal", }, ], }, @@ -177,7 +169,6 @@ ruleTester.run("no-regex-spaces", rule, { { messageId: "multipleSpaces", data: { length: "3" }, - type: "Literal", }, ], }, @@ -188,7 +179,6 @@ ruleTester.run("no-regex-spaces", rule, { { messageId: "multipleSpaces", data: { length: "2" }, - type: "NewExpression", }, ], }, @@ -199,7 +189,6 @@ ruleTester.run("no-regex-spaces", rule, { { messageId: "multipleSpaces", data: { length: "2" }, - type: "CallExpression", }, ], }, @@ -210,7 +199,6 @@ ruleTester.run("no-regex-spaces", rule, { { messageId: "multipleSpaces", data: { length: "4" }, - type: "NewExpression", }, ], }, @@ -221,7 +209,6 @@ ruleTester.run("no-regex-spaces", rule, { { messageId: "multipleSpaces", data: { length: "2" }, - type: "Literal", }, ], }, @@ -232,7 +219,6 @@ ruleTester.run("no-regex-spaces", rule, { { messageId: "multipleSpaces", data: { length: "2" }, - type: "Literal", }, ], }, @@ -243,7 +229,6 @@ ruleTester.run("no-regex-spaces", rule, { { messageId: "multipleSpaces", data: { length: "2" }, - type: "Literal", }, ], }, @@ -254,7 +239,6 @@ ruleTester.run("no-regex-spaces", rule, { { messageId: "multipleSpaces", data: { length: "2" }, - type: "NewExpression", }, ], }, @@ -265,7 +249,6 @@ ruleTester.run("no-regex-spaces", rule, { { messageId: "multipleSpaces", data: { length: "2" }, - type: "CallExpression", }, ], }, @@ -276,7 +259,6 @@ ruleTester.run("no-regex-spaces", rule, { { messageId: "multipleSpaces", data: { length: "2" }, - type: "Literal", }, ], }, @@ -287,7 +269,6 @@ ruleTester.run("no-regex-spaces", rule, { { messageId: "multipleSpaces", data: { length: "2" }, - type: "Literal", }, ], }, @@ -298,7 +279,6 @@ ruleTester.run("no-regex-spaces", rule, { { messageId: "multipleSpaces", data: { length: "2" }, - type: "Literal", }, ], }, @@ -309,7 +289,6 @@ ruleTester.run("no-regex-spaces", rule, { { messageId: "multipleSpaces", data: { length: "3" }, - type: "CallExpression", }, ], }, @@ -320,7 +299,6 @@ ruleTester.run("no-regex-spaces", rule, { { messageId: "multipleSpaces", data: { length: "2" }, - type: "Literal", }, ], }, @@ -331,7 +309,6 @@ ruleTester.run("no-regex-spaces", rule, { { messageId: "multipleSpaces", data: { length: "2" }, - type: "Literal", }, ], }, @@ -344,7 +321,6 @@ ruleTester.run("no-regex-spaces", rule, { { messageId: "multipleSpaces", data: { length: "2" }, - type: "Literal", }, ], }, @@ -357,7 +333,6 @@ ruleTester.run("no-regex-spaces", rule, { { messageId: "multipleSpaces", data: { length: "2" }, - type: "NewExpression", }, ], }, @@ -368,7 +343,6 @@ ruleTester.run("no-regex-spaces", rule, { { messageId: "multipleSpaces", data: { length: "3" }, - type: "CallExpression", }, ], }, @@ -379,7 +353,6 @@ ruleTester.run("no-regex-spaces", rule, { { messageId: "multipleSpaces", data: { length: "2" }, - type: "NewExpression", }, ], }, @@ -395,7 +368,6 @@ ruleTester.run("no-regex-spaces", rule, { { messageId: "multipleSpaces", data: { length: "4" }, - type: "Literal", }, ], }, @@ -406,7 +378,6 @@ ruleTester.run("no-regex-spaces", rule, { { messageId: "multipleSpaces", data: { length: "4" }, - type: "NewExpression", }, ], }, diff --git a/tests/lib/rules/no-restricted-exports.js b/tests/lib/rules/no-restricted-exports.js index eba6a2027c6e..b28a473158c2 100644 --- a/tests/lib/rules/no-restricted-exports.js +++ b/tests/lib/rules/no-restricted-exports.js @@ -385,7 +385,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "someFunction" }, - type: "Identifier", }, ], }, @@ -398,7 +397,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -409,7 +407,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -420,7 +417,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -431,7 +427,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -442,7 +437,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -453,7 +447,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -464,7 +457,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -475,7 +467,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -486,7 +477,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -497,7 +487,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "A" }, - type: "Identifier", }, ], }, @@ -508,7 +497,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", column: 17, }, ], @@ -520,7 +508,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", column: 10, }, ], @@ -532,7 +519,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -543,7 +529,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -554,7 +539,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -567,7 +551,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Literal", column: 22, }, ], @@ -579,7 +562,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "b" }, - type: "Literal", column: 22, }, ], @@ -591,7 +573,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: " b " }, - type: "Literal", column: 22, }, ], @@ -603,7 +584,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "👍" }, - type: "Literal", column: 22, }, ], @@ -615,7 +595,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Literal", }, ], }, @@ -626,7 +605,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "" }, - type: "Literal", }, ], }, @@ -637,7 +615,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: " " }, - type: "Literal", }, ], }, @@ -648,7 +625,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Literal", }, ], }, @@ -659,7 +635,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Literal", }, ], }, @@ -670,7 +645,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Literal", }, ], }, @@ -683,7 +657,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -694,7 +667,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -705,7 +677,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -716,7 +687,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -727,7 +697,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -740,7 +709,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", column: 19, }, ], @@ -752,7 +720,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", column: 12, }, ], @@ -766,7 +733,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", column: 12, }, ], @@ -778,7 +744,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", column: 19, }, ], @@ -790,7 +755,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", column: 14, }, ], @@ -802,7 +766,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", column: 13, }, ], @@ -814,7 +777,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", column: 17, }, ], @@ -826,7 +788,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", column: 25, }, ], @@ -838,7 +799,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", column: 17, }, ], @@ -850,7 +810,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", column: 12, }, ], @@ -862,7 +821,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", column: 29, }, ], @@ -874,7 +832,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", column: 13, }, ], @@ -886,7 +843,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", column: 17, }, ], @@ -898,7 +854,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", column: 14, }, ], @@ -910,7 +865,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", column: 17, }, ], @@ -922,7 +876,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "A" }, - type: "Identifier", column: 14, }, ], @@ -934,7 +887,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", column: 22, }, ], @@ -946,7 +898,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", column: 33, }, ], @@ -958,7 +909,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", column: 35, }, ], @@ -970,7 +920,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", column: 25, }, ], @@ -982,7 +931,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", column: 15, }, ], @@ -994,7 +942,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", column: 23, }, ], @@ -1006,7 +953,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", column: 15, }, ], @@ -1018,7 +964,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", column: 13, }, ], @@ -1034,7 +979,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -1045,7 +989,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -1056,12 +999,10 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "b" }, - type: "Identifier", }, { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -1072,12 +1013,10 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", }, { messageId: "restrictedNamed", data: { name: "c" }, - type: "Identifier", }, ], }, @@ -1088,12 +1027,10 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "b" }, - type: "Identifier", }, { messageId: "restrictedNamed", data: { name: "c" }, - type: "Identifier", }, ], }, @@ -1104,12 +1041,10 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "b" }, - type: "Identifier", }, { messageId: "restrictedNamed", data: { name: "c" }, - type: "Identifier", }, ], }, @@ -1132,22 +1067,18 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", }, { messageId: "restrictedNamed", data: { name: "b" }, - type: "Identifier", }, { messageId: "restrictedNamed", data: { name: "d" }, - type: "Identifier", }, { messageId: "restrictedNamed", data: { name: "e" }, - type: "Identifier", column: 42, }, ], @@ -1159,7 +1090,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -1170,7 +1100,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -1181,12 +1110,10 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", }, { messageId: "restrictedNamed", data: { name: "b" }, - type: "Identifier", }, ], }, @@ -1197,12 +1124,10 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", }, { messageId: "restrictedNamed", data: { name: "c" }, - type: "Identifier", }, ], }, @@ -1213,7 +1138,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -1224,7 +1148,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "b" }, - type: "Identifier", column: 18, }, ], @@ -1236,12 +1159,10 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", }, { messageId: "restrictedNamed", data: { name: "b" }, - type: "Identifier", column: 18, }, ], @@ -1265,22 +1186,18 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "b" }, - type: "Identifier", }, { messageId: "restrictedNamed", data: { name: "d" }, - type: "Identifier", }, { messageId: "restrictedNamed", data: { name: "e" }, - type: "Identifier", }, { messageId: "restrictedNamed", data: { name: "f" }, - type: "Identifier", }, ], }, @@ -1293,7 +1210,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "getSomething" }, - type: "Identifier", }, ], }, @@ -1304,7 +1220,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "getSomethingFromUser" }, - type: "Identifier", }, ], }, @@ -1315,12 +1230,10 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "ab" }, - type: "Identifier", }, { messageId: "restrictedNamed", data: { name: "xy" }, - type: "Identifier", }, ], }, @@ -1331,7 +1244,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "ab" }, - type: "Identifier", }, ], }, @@ -1342,7 +1254,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "privateUserEmail" }, - type: "Identifier", }, ], }, @@ -1353,7 +1264,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -1366,7 +1276,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "default" }, - type: "Identifier", column: 22, }, ], @@ -1378,7 +1287,6 @@ ruleTester.run("no-restricted-exports", rule, { { messageId: "restrictedNamed", data: { name: "default" }, - type: "Identifier", column: 10, }, ], @@ -1391,7 +1299,6 @@ ruleTester.run("no-restricted-exports", rule, { errors: [ { messageId: "restrictedDefault", - type: "ExportDefaultDeclaration", column: 1, }, ], @@ -1402,7 +1309,6 @@ ruleTester.run("no-restricted-exports", rule, { errors: [ { messageId: "restrictedDefault", - type: "ExportDefaultDeclaration", column: 1, }, ], @@ -1413,7 +1319,6 @@ ruleTester.run("no-restricted-exports", rule, { errors: [ { messageId: "restrictedDefault", - type: "ExportDefaultDeclaration", column: 1, }, ], @@ -1429,7 +1334,6 @@ ruleTester.run("no-restricted-exports", rule, { errors: [ { messageId: "restrictedDefault", - type: "ExportDefaultDeclaration", column: 1, }, ], @@ -1442,7 +1346,6 @@ ruleTester.run("no-restricted-exports", rule, { errors: [ { messageId: "restrictedDefault", - type: "Identifier", line: 2, column: 17, }, @@ -1456,7 +1359,6 @@ ruleTester.run("no-restricted-exports", rule, { errors: [ { messageId: "restrictedDefault", - type: "Identifier", line: 1, column: 10, }, @@ -1468,7 +1370,6 @@ ruleTester.run("no-restricted-exports", rule, { errors: [ { messageId: "restrictedDefault", - type: "Identifier", line: 1, column: 21, }, @@ -1480,7 +1381,6 @@ ruleTester.run("no-restricted-exports", rule, { errors: [ { messageId: "restrictedDefault", - type: "Literal", line: 1, column: 10, }, @@ -1494,7 +1394,6 @@ ruleTester.run("no-restricted-exports", rule, { errors: [ { messageId: "restrictedDefault", - type: "Identifier", line: 1, column: 17, }, @@ -1508,7 +1407,6 @@ ruleTester.run("no-restricted-exports", rule, { errors: [ { messageId: "restrictedDefault", - type: "Identifier", line: 1, column: 13, }, diff --git a/tests/lib/rules/no-restricted-globals.js b/tests/lib/rules/no-restricted-globals.js index 30be39e5bb51..a5d9078d2928 100644 --- a/tests/lib/rules/no-restricted-globals.js +++ b/tests/lib/rules/no-restricted-globals.js @@ -258,7 +258,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -269,7 +268,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -283,7 +281,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -295,7 +292,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "event" }, - type: "Identifier", }, ], }, @@ -309,7 +305,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -320,7 +315,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -331,7 +325,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -342,7 +335,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -353,7 +345,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -367,7 +358,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -379,7 +369,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "event" }, - type: "Identifier", }, ], }, @@ -393,7 +382,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -404,7 +392,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -415,7 +402,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -426,7 +412,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "customMessage", data: { name: "foo", customMessage }, - type: "Identifier", }, ], }, @@ -437,7 +422,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "customMessage", data: { name: "foo", customMessage }, - type: "Identifier", }, ], }, @@ -451,7 +435,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "customMessage", data: { name: "foo", customMessage }, - type: "Identifier", }, ], }, @@ -469,7 +452,6 @@ ruleTester.run("no-restricted-globals", rule, { name: "event", customMessage: "Use local event parameter.", }, - type: "Identifier", }, ], }, @@ -483,7 +465,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "customMessage", data: { name: "foo", customMessage }, - type: "Identifier", }, ], }, @@ -494,7 +475,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "customMessage", data: { name: "foo", customMessage }, - type: "Identifier", }, ], }, @@ -505,7 +485,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "customMessage", data: { name: "foo", customMessage }, - type: "Identifier", }, ], }, @@ -517,7 +496,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "hasOwnProperty" }, - type: "Identifier", }, ], }, @@ -528,7 +506,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -539,7 +516,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -553,7 +529,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -565,7 +540,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "event" }, - type: "Identifier", }, ], }, @@ -579,7 +553,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -590,7 +563,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -601,7 +573,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -612,7 +583,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -623,7 +593,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -637,7 +606,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -649,7 +617,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "event" }, - type: "Identifier", }, ], }, @@ -663,7 +630,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -674,7 +640,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -685,7 +650,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -696,7 +660,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "customMessage", data: { name: "foo", customMessage }, - type: "Identifier", }, ], }, @@ -707,7 +670,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "customMessage", data: { name: "foo", customMessage }, - type: "Identifier", }, ], }, @@ -721,7 +683,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "customMessage", data: { name: "foo", customMessage }, - type: "Identifier", }, ], }, @@ -746,7 +707,6 @@ ruleTester.run("no-restricted-globals", rule, { name: "event", customMessage: "Use local event parameter.", }, - type: "Identifier", }, ], }, @@ -760,7 +720,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "customMessage", data: { name: "foo", customMessage }, - type: "Identifier", }, ], }, @@ -771,7 +730,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "customMessage", data: { name: "foo", customMessage }, - type: "Identifier", }, ], }, @@ -782,7 +740,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "customMessage", data: { name: "foo", customMessage }, - type: "Identifier", }, ], }, @@ -794,7 +751,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "hasOwnProperty" }, - type: "Identifier", }, ], }, @@ -806,7 +762,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -818,7 +773,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -830,7 +784,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -842,7 +795,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -854,7 +806,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -866,7 +817,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -884,7 +834,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -902,7 +851,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -914,7 +862,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Literal", }, ], }, @@ -926,7 +873,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Literal", }, ], }, @@ -938,7 +884,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Literal", }, ], }, @@ -956,7 +901,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Literal", }, ], }, @@ -968,7 +912,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -980,7 +923,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -1000,12 +942,10 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -1025,12 +965,10 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, { messageId: "defaultMessage", data: { name: "bar" }, - type: "Identifier", }, ], }, @@ -1042,12 +980,10 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -1059,12 +995,10 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -1084,12 +1018,10 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -1106,7 +1038,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "event" }, - type: "Identifier", line: 1, column: 66, endLine: 1, @@ -1127,7 +1058,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "event" }, - type: "Identifier", line: 1, column: 64, endLine: 1, @@ -1148,7 +1078,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "event" }, - type: "Identifier", line: 1, column: 70, endLine: 1, @@ -1170,7 +1099,6 @@ ruleTester.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "event" }, - type: "Identifier", line: 1, column: 68, endLine: 1, @@ -1328,7 +1256,6 @@ ruleTesterTypeScript.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -1339,7 +1266,6 @@ ruleTesterTypeScript.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -1353,7 +1279,6 @@ ruleTesterTypeScript.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -1365,7 +1290,6 @@ ruleTesterTypeScript.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "event" }, - type: "Identifier", }, ], }, @@ -1379,7 +1303,6 @@ ruleTesterTypeScript.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -1390,7 +1313,6 @@ ruleTesterTypeScript.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -1401,7 +1323,6 @@ ruleTesterTypeScript.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -1412,7 +1333,6 @@ ruleTesterTypeScript.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -1423,7 +1343,6 @@ ruleTesterTypeScript.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -1437,7 +1356,6 @@ ruleTesterTypeScript.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -1449,7 +1367,6 @@ ruleTesterTypeScript.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "event" }, - type: "Identifier", }, ], }, @@ -1463,7 +1380,6 @@ ruleTesterTypeScript.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -1474,7 +1390,6 @@ ruleTesterTypeScript.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -1485,7 +1400,6 @@ ruleTesterTypeScript.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -1496,7 +1410,6 @@ ruleTesterTypeScript.run("no-restricted-globals", rule, { { messageId: "customMessage", data: { name: "foo", customMessage }, - type: "Identifier", }, ], }, @@ -1507,7 +1420,6 @@ ruleTesterTypeScript.run("no-restricted-globals", rule, { { messageId: "customMessage", data: { name: "foo", customMessage }, - type: "Identifier", }, ], }, @@ -1521,7 +1433,6 @@ ruleTesterTypeScript.run("no-restricted-globals", rule, { { messageId: "customMessage", data: { name: "foo", customMessage }, - type: "Identifier", }, ], }, @@ -1539,7 +1450,6 @@ ruleTesterTypeScript.run("no-restricted-globals", rule, { name: "event", customMessage: "Use local event parameter.", }, - type: "Identifier", }, ], }, @@ -1553,7 +1463,6 @@ ruleTesterTypeScript.run("no-restricted-globals", rule, { { messageId: "customMessage", data: { name: "foo", customMessage }, - type: "Identifier", }, ], }, @@ -1564,7 +1473,6 @@ ruleTesterTypeScript.run("no-restricted-globals", rule, { { messageId: "customMessage", data: { name: "foo", customMessage }, - type: "Identifier", }, ], }, @@ -1575,7 +1483,6 @@ ruleTesterTypeScript.run("no-restricted-globals", rule, { { messageId: "customMessage", data: { name: "foo", customMessage }, - type: "Identifier", }, ], }, @@ -1586,7 +1493,6 @@ ruleTesterTypeScript.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "hasOwnProperty" }, - type: "Identifier", }, ], }, @@ -1597,7 +1503,6 @@ ruleTesterTypeScript.run("no-restricted-globals", rule, { { messageId: "defaultMessage", data: { name: "Promise" }, - type: "Identifier", line: 1, column: 25, endLine: 1, diff --git a/tests/lib/rules/no-restricted-imports.js b/tests/lib/rules/no-restricted-imports.js index 76d6b8b25cd8..89154c62f282 100644 --- a/tests/lib/rules/no-restricted-imports.js +++ b/tests/lib/rules/no-restricted-imports.js @@ -699,7 +699,6 @@ ruleTester.run("no-restricted-imports", rule, { errors: [ { message: "'fs' import is restricted from being used.", - type: "ImportDeclaration", line: 1, column: 1, endColumn: 12, @@ -712,7 +711,6 @@ ruleTester.run("no-restricted-imports", rule, { errors: [ { message: "'os' import is restricted from being used.", - type: "ImportDeclaration", line: 1, column: 1, endColumn: 22, @@ -725,7 +723,6 @@ ruleTester.run("no-restricted-imports", rule, { errors: [ { message: "'foo/bar' import is restricted from being used.", - type: "ImportDeclaration", line: 1, column: 1, endColumn: 18, @@ -738,7 +735,6 @@ ruleTester.run("no-restricted-imports", rule, { errors: [ { message: "'foo/bar' import is restricted from being used.", - type: "ImportDeclaration", line: 1, column: 1, endColumn: 33, @@ -752,7 +748,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'foo/bar' import is restricted from being used by a pattern.", - type: "ImportDeclaration", line: 1, column: 1, endColumn: 36, @@ -766,7 +761,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'foo/bar' import is restricted from being used by a pattern.", - type: "ImportDeclaration", line: 1, column: 1, endColumn: 36, @@ -789,7 +783,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'foo/baz' import is restricted from being used by a pattern. foo is forbidden, use foo/bar instead", - type: "ImportDeclaration", line: 1, column: 1, endColumn: 36, @@ -812,7 +805,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'foo/baz' import is restricted from being used by a pattern. some foo subimports are restricted", - type: "ImportDeclaration", line: 1, column: 1, endColumn: 36, @@ -826,7 +818,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'foo/bar' import is restricted from being used by a pattern.", - type: "ImportDeclaration", line: 1, column: 1, endColumn: 36, @@ -840,7 +831,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'foo' import is restricted from being used by a pattern.", - type: "ImportDeclaration", line: 1, column: 1, endColumn: 47, @@ -854,7 +844,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'foo/bar' import is restricted from being used by a pattern.", - type: "ImportDeclaration", line: 1, column: 1, endColumn: 38, @@ -867,7 +856,6 @@ ruleTester.run("no-restricted-imports", rule, { errors: [ { message: "'fs' import is restricted from being used.", - type: "ExportAllDeclaration", line: 1, column: 1, endColumn: 20, @@ -880,7 +868,6 @@ ruleTester.run("no-restricted-imports", rule, { errors: [ { message: "'fs' import is restricted from being used.", - type: "ExportAllDeclaration", line: 1, column: 1, endColumn: 26, @@ -893,7 +880,6 @@ ruleTester.run("no-restricted-imports", rule, { errors: [ { message: "'fs' import is restricted from being used.", - type: "ExportNamedDeclaration", line: 1, column: 1, endColumn: 22, @@ -917,7 +903,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'foo' import from 'fs' is restricted. Don't import 'foo'.", - type: "ExportNamedDeclaration", line: 1, column: 9, endColumn: 17, @@ -941,7 +926,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'foo' import from 'fs' is restricted. Don't import 'foo'.", - type: "ExportNamedDeclaration", line: 1, column: 9, endColumn: 19, @@ -965,7 +949,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'foo' import from 'fs' is restricted. Don't import 'foo'.", - type: "ExportNamedDeclaration", line: 1, column: 9, endColumn: 14, @@ -989,7 +972,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'👍' import from 'fs' is restricted. Don't import '👍'.", - type: "ExportNamedDeclaration", line: 1, column: 9, endColumn: 13, @@ -1013,7 +995,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'' import from 'fs' is restricted. Don't import ''.", - type: "ExportNamedDeclaration", line: 1, column: 9, endColumn: 11, @@ -1037,7 +1018,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "* import is invalid because 'foo' from 'fs' is restricted. Don't import 'foo'.", - type: "ExportAllDeclaration", line: 1, column: 8, endColumn: 9, @@ -1056,7 +1036,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'foo' import is restricted from being used. Please import from 'bar' instead.", - type: "ImportDeclaration", line: 1, column: 1, endColumn: 34, @@ -1077,7 +1056,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'bar' import is restricted from being used. Please import from 'baz' instead.", - type: "ImportDeclaration", line: 1, column: 1, endColumn: 34, @@ -1100,7 +1078,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'foo' import is restricted from being used. Please import from 'bar' instead.", - type: "ImportDeclaration", line: 1, column: 1, endColumn: 34, @@ -1125,7 +1102,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'default' import from 'foo' is restricted. Please import the default import of 'foo' from /bar/ instead.", - type: "ImportDeclaration", line: 1, column: 8, endColumn: 24, @@ -1150,7 +1126,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "* import is invalid because 'DisallowedObject' from 'foo' is restricted. Please import 'DisallowedObject' from /bar/ instead.", - type: "ImportDeclaration", line: 1, column: 8, endColumn: 16, @@ -1175,7 +1150,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "* import is invalid because 'DisallowedObject' from 'foo' is restricted. Please import 'DisallowedObject' from /bar/ instead.", - type: "ExportAllDeclaration", line: 1, column: 8, endColumn: 9, @@ -1194,7 +1168,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "* import is invalid because 'DisallowedObject1, DisallowedObject2' from 'foo' is restricted.", - type: "ExportAllDeclaration", line: 1, column: 8, endColumn: 9, @@ -1219,7 +1192,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'DisallowedObject' import from 'foo' is restricted. Please import 'DisallowedObject' from /bar/ instead.", - type: "ImportDeclaration", line: 1, column: 10, endColumn: 26, @@ -1244,7 +1216,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'DisallowedObject' import from 'foo' is restricted. Please import 'DisallowedObject' from /bar/ instead.", - type: "ImportDeclaration", line: 1, column: 10, endColumn: 43, @@ -1269,7 +1240,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'DisallowedObject' import from 'foo' is restricted. Please import 'DisallowedObject' from /bar/ instead.", - type: "ImportDeclaration", line: 1, column: 10, endColumn: 45, @@ -1291,7 +1261,6 @@ ruleTester.run("no-restricted-imports", rule, { errors: [ { message: "'👍' import from 'foo' is restricted.", - type: "ImportDeclaration", line: 1, column: 10, endColumn: 21, @@ -1313,7 +1282,6 @@ ruleTester.run("no-restricted-imports", rule, { errors: [ { message: "'' import from 'foo' is restricted.", - type: "ImportDeclaration", line: 1, column: 10, endColumn: 19, @@ -1338,7 +1306,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'DisallowedObject' import from 'foo' is restricted. Please import 'DisallowedObject' from /bar/ instead.", - type: "ImportDeclaration", line: 1, column: 25, endColumn: 41, @@ -1363,7 +1330,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'DisallowedObject' import from 'foo' is restricted. Please import 'DisallowedObject' from /bar/ instead.", - type: "ImportDeclaration", line: 1, column: 25, endColumn: 61, @@ -1391,7 +1357,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'DisallowedObject' import from 'foo' is restricted. Please import 'DisallowedObject' and 'DisallowedObjectTwo' from /bar/ instead.", - type: "ImportDeclaration", line: 1, column: 25, endColumn: 61, @@ -1419,7 +1384,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'DisallowedObject' import from 'foo' is restricted. Please import 'DisallowedObject' and 'DisallowedObjectTwo' from /bar/ instead.", - type: "ImportDeclaration", line: 1, column: 25, endColumn: 61, @@ -1444,7 +1408,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'default' import from 'foo' is restricted. Please import the default import of 'foo' from /bar/ instead.", - type: "ImportDeclaration", line: 1, column: 8, endColumn: 24, @@ -1469,7 +1432,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'DisallowedObject' import from 'foo' is restricted. Please import 'DisallowedObject' from /bar/ instead.", - type: "ImportDeclaration", line: 1, column: 25, endColumn: 61, @@ -1494,7 +1456,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "* import is invalid because 'DisallowedObject' from 'foo' is restricted. Please import 'DisallowedObject' from /bar/ instead.", - type: "ImportDeclaration", line: 1, column: 23, endColumn: 44, @@ -1522,7 +1483,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "* import is invalid because 'DisallowedObject,DisallowedObjectTwo' from 'foo' is restricted. Please import 'DisallowedObject' and 'DisallowedObjectTwo' from /bar/ instead.", - type: "ImportDeclaration", line: 1, column: 23, endColumn: 44, @@ -1548,7 +1508,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'DisallowedObjectOne' import from 'foo' is restricted.", - type: "ImportDeclaration", line: 1, column: 10, endColumn: 29, @@ -1556,7 +1515,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'DisallowedObjectTwo' import from 'foo' is restricted.", - type: "ImportDeclaration", line: 1, column: 31, endColumn: 50, @@ -1584,7 +1542,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'DisallowedObjectOne' import from 'foo' is restricted. Please import this module from /bar/ instead.", - type: "ImportDeclaration", line: 1, column: 10, endColumn: 29, @@ -1592,7 +1549,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'DisallowedObjectTwo' import from 'foo' is restricted. Please import this module from /bar/ instead.", - type: "ImportDeclaration", line: 1, column: 31, endColumn: 50, @@ -1615,7 +1571,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'DisallowedObject' import from 'foo' is restricted.", - type: "ImportDeclaration", line: 1, column: 25, endColumn: 48, @@ -1637,7 +1592,6 @@ ruleTester.run("no-restricted-imports", rule, { errors: [ { message: "'bar' import from 'mod' is restricted.", - type: "ImportDeclaration", line: 1, column: 15, endColumn: 18, @@ -1697,7 +1651,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'Image' import from 'react-native' is restricted. import Image from ui/_components instead", - type: "ImportDeclaration", line: 1, column: 10, endColumn: 15, @@ -1705,7 +1658,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'Text' import from 'react-native' is restricted. import Text from ui/_components instead", - type: "ImportDeclaration", line: 1, column: 17, endColumn: 21, @@ -1713,7 +1665,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'ScrollView' import from 'react-native' is restricted. import ScrollView from ui/_components instead", - type: "ImportDeclaration", line: 1, column: 23, endColumn: 33, @@ -1742,7 +1693,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'foo' import from 'mod' is restricted. Import foo from qux instead.", - type: "ImportDeclaration", line: 1, column: 10, endColumn: 13, @@ -1750,7 +1700,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'baz' import from 'mod' is restricted. Import baz from qux instead.", - type: "ImportDeclaration", line: 1, column: 20, endColumn: 23, @@ -1779,7 +1728,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'foo' import from 'mod' is restricted. Don't use 'foo' and `qux` from 'mod'.", - type: "ImportDeclaration", line: 1, column: 10, endColumn: 13, @@ -1787,7 +1735,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'bar' import from 'mod' is restricted. Use `barbaz` instead of `bar`.", - type: "ImportDeclaration", line: 1, column: 15, endColumn: 18, @@ -1795,7 +1742,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'qux' import from 'mod' is restricted. Don't use 'foo' and `qux` from 'mod'.", - type: "ImportDeclaration", line: 1, column: 25, endColumn: 28, @@ -1830,7 +1776,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'foo' import from 'mod' is restricted. Don't use 'foo' or 'baz' from 'mod'.", - type: "ImportDeclaration", line: 1, column: 10, endColumn: 13, @@ -1838,7 +1783,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'bar' import from 'mod' is restricted. Use 'b' or `bar` from 'quux/mod' instead.", - type: "ImportDeclaration", line: 1, column: 15, endColumn: 18, @@ -1846,7 +1790,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'baz' import from 'mod' is restricted. Don't use 'foo' or 'baz' from 'mod'.", - type: "ImportDeclaration", line: 1, column: 20, endColumn: 23, @@ -1875,7 +1818,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "* import is invalid because 'foo' from 'mod' is restricted. Import foo from qux instead.", - type: "ImportDeclaration", line: 1, column: 8, endColumn: 16, @@ -1883,7 +1825,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "* import is invalid because 'bar' from 'mod' is restricted. Import bar from qux instead.", - type: "ImportDeclaration", line: 1, column: 8, endColumn: 16, @@ -1912,7 +1853,6 @@ ruleTester.run("no-restricted-imports", rule, { errors: [ { message: "'mod' import is restricted from being used.", - type: "ImportDeclaration", line: 1, column: 1, endColumn: 26, @@ -1941,7 +1881,6 @@ ruleTester.run("no-restricted-imports", rule, { errors: [ { message: "'mod' import is restricted from being used.", - type: "ImportDeclaration", line: 1, column: 1, endColumn: 26, @@ -1949,7 +1888,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'bar' import from 'mod' is restricted. Import bar from qux instead.", - type: "ImportDeclaration", line: 1, column: 10, endColumn: 13, @@ -1972,7 +1910,6 @@ ruleTester.run("no-restricted-imports", rule, { errors: [ { message: "'default' import from 'mod' is restricted.", - type: "ImportDeclaration", line: 1, column: 8, endColumn: 11, @@ -1994,7 +1931,6 @@ ruleTester.run("no-restricted-imports", rule, { errors: [ { message: "'default' import from 'mod' is restricted.", - type: "ImportDeclaration", line: 1, column: 8, endColumn: 11, @@ -2002,7 +1938,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "* import is invalid because 'default' from 'mod' is restricted.", - type: "ImportDeclaration", line: 1, column: 13, endColumn: 21, @@ -2015,7 +1950,6 @@ ruleTester.run("no-restricted-imports", rule, { errors: [ { message: "'foo' import is restricted from being used.", - type: "ImportDeclaration", line: 1, column: 1, endColumn: 28, @@ -2037,14 +1971,12 @@ ruleTester.run("no-restricted-imports", rule, { errors: [ { message: "'a' import from 'mod' is restricted.", - type: "ImportDeclaration", line: 1, column: 10, endColumn: 11, }, { message: "'a' import from 'mod' is restricted.", - type: "ImportDeclaration", line: 1, column: 13, endColumn: 19, @@ -2066,14 +1998,12 @@ ruleTester.run("no-restricted-imports", rule, { errors: [ { message: "'x' import from 'mod' is restricted.", - type: "ExportNamedDeclaration", line: 1, column: 10, endColumn: 16, }, { message: "'x' import from 'mod' is restricted.", - type: "ExportNamedDeclaration", line: 1, column: 18, endColumn: 24, @@ -2095,14 +2025,12 @@ ruleTester.run("no-restricted-imports", rule, { errors: [ { message: "'default' import from 'mod' is restricted.", - type: "ImportDeclaration", line: 1, column: 8, endColumn: 11, }, { message: "'default' import from 'mod' is restricted.", - type: "ImportDeclaration", line: 1, column: 15, endColumn: 29, @@ -2115,7 +2043,6 @@ ruleTester.run("no-restricted-imports", rule, { errors: [ { message: "'../foo' import is restricted from being used.", - type: "ImportDeclaration", line: 1, column: 1, endColumn: 31, @@ -2128,7 +2055,6 @@ ruleTester.run("no-restricted-imports", rule, { errors: [ { message: "'../foo' import is restricted from being used.", - type: "ImportDeclaration", line: 1, column: 1, endColumn: 40, @@ -2142,7 +2068,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'../foo' import is restricted from being used by a pattern.", - type: "ImportDeclaration", line: 1, column: 1, endColumn: 43, @@ -2155,7 +2080,6 @@ ruleTester.run("no-restricted-imports", rule, { errors: [ { message: "'/foo' import is restricted from being used.", - type: "ImportDeclaration", line: 1, column: 1, endColumn: 29, @@ -2168,7 +2092,6 @@ ruleTester.run("no-restricted-imports", rule, { errors: [ { message: "'/foo' import is restricted from being used.", - type: "ImportDeclaration", line: 1, column: 1, endColumn: 38, @@ -2182,7 +2105,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'/foo' import is restricted from being used by a pattern.", - type: "ImportDeclaration", line: 1, column: 1, endColumn: 41, @@ -2196,7 +2118,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'#foo/bar' import is restricted from being used by a pattern.", - type: "ImportDeclaration", line: 1, column: 1, endColumn: 45, @@ -2217,7 +2138,6 @@ ruleTester.run("no-restricted-imports", rule, { ], errors: [ { - type: "ImportDeclaration", line: 1, column: 10, endColumn: 13, @@ -2241,7 +2161,6 @@ ruleTester.run("no-restricted-imports", rule, { ], errors: [ { - type: "ImportDeclaration", line: 1, column: 10, endColumn: 13, @@ -2249,7 +2168,6 @@ ruleTester.run("no-restricted-imports", rule, { "'Foo' import from '../../my/relative-module' is restricted from being used by a pattern. Import from @/utils instead.", }, { - type: "ImportDeclaration", line: 1, column: 15, endColumn: 18, @@ -2278,7 +2196,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "* import is invalid because 'Foo' from '../../my/relative-module' is restricted from being used by a pattern.", - type: "ImportDeclaration", line: 1, column: 8, endColumn: 16, @@ -2306,7 +2223,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "* import is invalid because 'Foo' from '../../my/relative-module' is restricted from being used by a pattern. Import from @/utils instead.", - type: "ImportDeclaration", line: 1, column: 8, endColumn: 33, @@ -2327,7 +2243,6 @@ ruleTester.run("no-restricted-imports", rule, { ], errors: [ { - type: "ImportDeclaration", line: 1, column: 8, endColumn: 11, @@ -2335,7 +2250,6 @@ ruleTester.run("no-restricted-imports", rule, { "'default' import from 'mod' is restricted from being used by a pattern.", }, { - type: "ImportDeclaration", line: 1, column: 13, endColumn: 20, @@ -2358,7 +2272,6 @@ ruleTester.run("no-restricted-imports", rule, { ], errors: [ { - type: "ImportDeclaration", line: 1, column: 8, endColumn: 11, @@ -2381,7 +2294,6 @@ ruleTester.run("no-restricted-imports", rule, { ], errors: [ { - type: "ImportDeclaration", line: 1, column: 10, endColumn: 13, @@ -2404,7 +2316,6 @@ ruleTester.run("no-restricted-imports", rule, { ], errors: [ { - type: "ImportDeclaration", line: 1, column: 10, endColumn: 20, @@ -2427,7 +2338,6 @@ ruleTester.run("no-restricted-imports", rule, { ], errors: [ { - type: "ImportDeclaration", line: 1, column: 15, endColumn: 18, @@ -2450,7 +2360,6 @@ ruleTester.run("no-restricted-imports", rule, { ], errors: [ { - type: "ImportDeclaration", line: 1, column: 10, endColumn: 13, @@ -2473,7 +2382,6 @@ ruleTester.run("no-restricted-imports", rule, { ], errors: [ { - type: "ImportDeclaration", line: 1, column: 10, endColumn: 16, @@ -2496,7 +2404,6 @@ ruleTester.run("no-restricted-imports", rule, { ], errors: [ { - type: "ImportDeclaration", line: 1, column: 15, endColumn: 18, @@ -2519,7 +2426,6 @@ ruleTester.run("no-restricted-imports", rule, { ], errors: [ { - type: "ImportDeclaration", line: 1, column: 10, endColumn: 13, @@ -2527,7 +2433,6 @@ ruleTester.run("no-restricted-imports", rule, { "'Foo' import from '../../my/relative-module' is restricted from being used by a pattern.", }, { - type: "ImportDeclaration", line: 1, column: 15, endColumn: 18, @@ -2552,7 +2457,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "* import is invalid because import name matching '/^Foo/u' pattern from 'foo' is restricted from being used.", - type: "ImportDeclaration", line: 1, column: 8, endColumn: 16, @@ -2575,7 +2479,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "* import is invalid because import name matching '/^Foo/u' pattern from '../../my/relative-module' is restricted from being used.", - type: "ImportDeclaration", line: 1, column: 8, endColumn: 16, @@ -2599,7 +2502,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "* import is invalid because import name matching '/^Foo/u' pattern from '../../my/relative-module' is restricted from being used. Import from @/utils instead.", - type: "ImportDeclaration", line: 1, column: 8, endColumn: 33, @@ -2624,7 +2526,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "* import is invalid because 'Foo' from '../../my/relative-module' is restricted from being used by a pattern. Import from @/utils instead.", - type: "ImportDeclaration", line: 1, column: 8, endColumn: 33, @@ -2646,7 +2547,6 @@ ruleTester.run("no-restricted-imports", rule, { ], errors: [ { - type: "ImportDeclaration", line: 1, column: 10, endColumn: 13, @@ -2670,7 +2570,6 @@ ruleTester.run("no-restricted-imports", rule, { ], errors: [ { - type: "ImportDeclaration", line: 1, column: 10, endColumn: 13, @@ -2694,7 +2593,6 @@ ruleTester.run("no-restricted-imports", rule, { ], errors: [ { - type: "ImportDeclaration", line: 1, column: 10, endColumn: 13, @@ -2718,7 +2616,6 @@ ruleTester.run("no-restricted-imports", rule, { ], errors: [ { - type: "ImportDeclaration", line: 1, column: 10, endColumn: 13, @@ -2742,7 +2639,6 @@ ruleTester.run("no-restricted-imports", rule, { ], errors: [ { - type: "ImportDeclaration", line: 1, column: 10, endColumn: 13, @@ -2750,7 +2646,6 @@ ruleTester.run("no-restricted-imports", rule, { "'Foo' import from '../../my/relative-module' is restricted from being used by a pattern.", }, { - type: "ImportDeclaration", line: 1, column: 15, endColumn: 18, @@ -2773,7 +2668,6 @@ ruleTester.run("no-restricted-imports", rule, { ], errors: [ { - type: "ExportNamedDeclaration", line: 1, column: 10, endColumn: 13, @@ -2796,7 +2690,6 @@ ruleTester.run("no-restricted-imports", rule, { ], errors: [ { - type: "ExportNamedDeclaration", line: 1, column: 10, endColumn: 20, @@ -2820,7 +2713,6 @@ ruleTester.run("no-restricted-imports", rule, { ], errors: [ { - type: "ExportNamedDeclaration", line: 1, column: 10, endColumn: 13, @@ -2843,7 +2735,6 @@ ruleTester.run("no-restricted-imports", rule, { ], errors: [ { - type: "ExportAllDeclaration", line: 1, column: 8, endColumn: 9, @@ -2866,7 +2757,6 @@ ruleTester.run("no-restricted-imports", rule, { ], errors: [ { - type: "ExportNamedDeclaration", line: 1, column: 10, endColumn: 13, @@ -2891,7 +2781,6 @@ ruleTester.run("no-restricted-imports", rule, { ], errors: [ { - type: "ExportNamedDeclaration", line: 1, column: 10, endColumn: 13, @@ -2916,7 +2805,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'DisallowedObject' import from 'foo' is restricted because only 'AllowedObject' import(s) is/are allowed.", - type: "ImportDeclaration", line: 1, column: 25, endColumn: 41, @@ -2941,7 +2829,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'DisallowedObject' import from 'foo' is restricted because only 'AllowedObject' import(s) is/are allowed. Only 'AllowedObject' is allowed to be imported from 'foo'.", - type: "ImportDeclaration", line: 1, column: 25, endColumn: 41, @@ -2964,7 +2851,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'DisallowedObject' import from 'foo' is restricted because only 'AllowedObject' import(s) is/are allowed.", - type: "ImportDeclaration", line: 1, column: 25, endColumn: 41, @@ -2989,7 +2875,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'DisallowedObject' import from 'foo' is restricted because only 'AllowedObject' import(s) is/are allowed. Only 'AllowedObject' is allowed to be imported from 'foo'.", - type: "ImportDeclaration", line: 1, column: 25, endColumn: 41, @@ -3012,7 +2897,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "* import is invalid because only 'AllowedObject' from 'foo' is/are allowed.", - type: "ImportDeclaration", line: 1, column: 8, endColumn: 26, @@ -3037,7 +2921,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "* import is invalid because only 'AllowedObject' from 'foo' is/are allowed. Only 'AllowedObject' is allowed to be imported from 'foo'.", - type: "ImportDeclaration", line: 1, column: 8, endColumn: 26, @@ -3060,7 +2943,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "* import is invalid because only 'AllowedObject' from 'foo/bar' is/are allowed.", - type: "ImportDeclaration", line: 1, column: 8, endColumn: 26, @@ -3085,7 +2967,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "* import is invalid because only 'AllowedObject' from 'foo/bar' is/are allowed. Only 'AllowedObject' is allowed to be imported from 'foo'.", - type: "ImportDeclaration", line: 1, column: 8, endColumn: 26, @@ -3108,7 +2989,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "* import is invalid because only imports that match the pattern '/^Allow/u' from 'foo/bar' are allowed.", - type: "ImportDeclaration", line: 1, column: 8, endColumn: 26, @@ -3133,7 +3013,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "* import is invalid because only imports that match the pattern '/^Allow/u' from 'foo/bar' are allowed. Only import names starting with 'Allow' are allowed to be imported from 'foo'.", - type: "ImportDeclaration", line: 1, column: 8, endColumn: 26, @@ -3156,7 +3035,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'foo/baz' import is restricted from being used by a pattern. foo is forbidden, use bar instead", - type: "ImportDeclaration", line: 1, column: 1, endColumn: 36, @@ -3180,7 +3058,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'FOO' import is restricted from being used by a pattern. foo is forbidden, use bar instead", - type: "ImportDeclaration", line: 1, column: 1, endColumn: 45, @@ -3203,7 +3080,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'Foo' import from '../../my/relative-module' is restricted from being used by a pattern.", - type: "ImportDeclaration", line: 1, column: 10, endColumn: 13, @@ -3227,7 +3103,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'foo' import is restricted from being used by a pattern. foo is forbidden, use bar instead", - type: "ImportDeclaration", line: 1, column: 1, endColumn: 45, @@ -3259,7 +3134,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'Foo_Enum' import from '@app/api' is restricted from being used by a pattern.", - type: "ImportDeclaration", line: 3, column: 18, endColumn: 26, @@ -3267,7 +3141,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'Bar_Enum' import from '@app/api/bar' is restricted from being used by a pattern.", - type: "ImportDeclaration", line: 4, column: 18, endColumn: 26, @@ -3275,7 +3148,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'Baz_Enum' import from '@app/api/baz' is restricted from being used by a pattern.", - type: "ImportDeclaration", line: 5, column: 18, endColumn: 26, @@ -3283,7 +3155,6 @@ ruleTester.run("no-restricted-imports", rule, { { message: "'B_Enum' import from '@app/api/enums/foo' is restricted from being used by a pattern.", - type: "ImportDeclaration", line: 6, column: 18, endColumn: 24, diff --git a/tests/lib/rules/no-restricted-modules.js b/tests/lib/rules/no-restricted-modules.js index 828451963601..0ca672e835f5 100644 --- a/tests/lib/rules/no-restricted-modules.js +++ b/tests/lib/rules/no-restricted-modules.js @@ -90,7 +90,6 @@ ruleTester.run("no-restricted-modules", rule, { { messageId: "defaultMessage", data: { name: "fs" }, - type: "CallExpression", }, ], }, @@ -101,7 +100,6 @@ ruleTester.run("no-restricted-modules", rule, { { messageId: "defaultMessage", data: { name: "os" }, - type: "CallExpression", }, ], }, @@ -112,7 +110,6 @@ ruleTester.run("no-restricted-modules", rule, { { messageId: "defaultMessage", data: { name: "foo/bar" }, - type: "CallExpression", }, ], }, @@ -123,7 +120,6 @@ ruleTester.run("no-restricted-modules", rule, { { messageId: "defaultMessage", data: { name: "foo/bar" }, - type: "CallExpression", }, ], }, @@ -134,7 +130,6 @@ ruleTester.run("no-restricted-modules", rule, { { messageId: "patternMessage", data: { name: "foo/bar" }, - type: "CallExpression", }, ], }, @@ -145,7 +140,6 @@ ruleTester.run("no-restricted-modules", rule, { { messageId: "patternMessage", data: { name: "foo/bar" }, - type: "CallExpression", }, ], }, @@ -156,7 +150,6 @@ ruleTester.run("no-restricted-modules", rule, { { messageId: "patternMessage", data: { name: "foo/bar" }, - type: "CallExpression", }, ], }, @@ -175,7 +168,6 @@ ruleTester.run("no-restricted-modules", rule, { name: "foo", customMessage: "Please use 'bar' module instead.", }, - type: "CallExpression", }, ], }, @@ -196,7 +188,6 @@ ruleTester.run("no-restricted-modules", rule, { name: "bar", customMessage: "Please use 'baz' module instead.", }, - type: "CallExpression", }, ], }, @@ -219,7 +210,6 @@ ruleTester.run("no-restricted-modules", rule, { name: "foo", customMessage: "Please use 'bar' module instead.", }, - type: "CallExpression", }, ], }, @@ -231,7 +221,6 @@ ruleTester.run("no-restricted-modules", rule, { { messageId: "defaultMessage", data: { name: "fs" }, - type: "CallExpression", }, ], }, @@ -243,7 +232,6 @@ ruleTester.run("no-restricted-modules", rule, { { messageId: "defaultMessage", data: { name: "crypto" }, - type: "CallExpression", }, ], }, @@ -253,7 +241,6 @@ ruleTester.run("no-restricted-modules", rule, { errors: [ { message: "'../foo' module is restricted from being used.", - type: "CallExpression", line: 1, column: 16, endColumn: 33, @@ -266,7 +253,6 @@ ruleTester.run("no-restricted-modules", rule, { errors: [ { message: "'../foo' module is restricted from being used.", - type: "CallExpression", line: 1, column: 25, endColumn: 42, @@ -280,7 +266,6 @@ ruleTester.run("no-restricted-modules", rule, { { message: "'../foo' module is restricted from being used by a pattern.", - type: "CallExpression", line: 1, column: 28, endColumn: 45, @@ -293,7 +278,6 @@ ruleTester.run("no-restricted-modules", rule, { errors: [ { message: "'/foo' module is restricted from being used.", - type: "CallExpression", line: 1, column: 16, endColumn: 31, @@ -306,7 +290,6 @@ ruleTester.run("no-restricted-modules", rule, { errors: [ { message: "'/foo' module is restricted from being used.", - type: "CallExpression", line: 1, column: 25, endColumn: 40, @@ -320,7 +303,6 @@ ruleTester.run("no-restricted-modules", rule, { { message: "'/foo' module is restricted from being used by a pattern.", - type: "CallExpression", line: 1, column: 28, endColumn: 43, diff --git a/tests/lib/rules/no-restricted-properties.js b/tests/lib/rules/no-restricted-properties.js index b9395d8cd21d..4f4f6ab628b0 100644 --- a/tests/lib/rules/no-restricted-properties.js +++ b/tests/lib/rules/no-restricted-properties.js @@ -358,7 +358,6 @@ ruleTester.run("no-restricted-properties", rule, { message: "", allowedPropertiesMessage: "", }, - type: "MemberExpression", }, ], }, @@ -381,7 +380,6 @@ ruleTester.run("no-restricted-properties", rule, { " Please use someObject.allowedProperty instead.", allowedPropertiesMessage: "", }, - type: "MemberExpression", }, ], }, @@ -406,7 +404,6 @@ ruleTester.run("no-restricted-properties", rule, { message: "", allowedPropertiesMessage: "", }, - type: "MemberExpression", }, { messageId: "restrictedObjectProperty", @@ -416,7 +413,6 @@ ruleTester.run("no-restricted-properties", rule, { message: "", allowedPropertiesMessage: "", }, - type: "MemberExpression", }, ], }, @@ -437,7 +433,6 @@ ruleTester.run("no-restricted-properties", rule, { message: " Please use Object.getPrototypeOf instead.", allowedObjectsMessage: "", }, - type: "MemberExpression", }, ], }, @@ -458,7 +453,6 @@ ruleTester.run("no-restricted-properties", rule, { message: " Please use Object.getPrototypeOf instead.", allowedObjectsMessage: "", }, - type: "MemberExpression", }, ], }, @@ -474,7 +468,6 @@ ruleTester.run("no-restricted-properties", rule, { message: "", allowedPropertiesMessage: "", }, - type: "MemberExpression", }, ], }, @@ -490,7 +483,6 @@ ruleTester.run("no-restricted-properties", rule, { message: "", allowedPropertiesMessage: "", }, - type: "MemberExpression", }, ], }, @@ -506,7 +498,6 @@ ruleTester.run("no-restricted-properties", rule, { message: "", allowedPropertiesMessage: "", }, - type: "MemberExpression", }, ], }, @@ -522,7 +513,6 @@ ruleTester.run("no-restricted-properties", rule, { message: "", allowedObjectsMessage: "", }, - type: "MemberExpression", }, ], }, @@ -538,7 +528,6 @@ ruleTester.run("no-restricted-properties", rule, { message: "", allowedObjectsMessage: "", }, - type: "MemberExpression", }, ], }, @@ -554,7 +543,6 @@ ruleTester.run("no-restricted-properties", rule, { message: "", allowedObjectsMessage: "", }, - type: "MemberExpression", }, ], }, @@ -571,7 +559,6 @@ ruleTester.run("no-restricted-properties", rule, { message: "", allowedObjectsMessage: "", }, - type: "MemberExpression", }, ], }, @@ -592,7 +579,6 @@ ruleTester.run("no-restricted-properties", rule, { message: " Please call require() directly.", allowedPropertiesMessage: "", }, - type: "MemberExpression", }, ], }, @@ -612,7 +598,6 @@ ruleTester.run("no-restricted-properties", rule, { message: "", allowedPropertiesMessage: "", }, - type: "MemberExpression", }, ], }, @@ -629,7 +614,6 @@ ruleTester.run("no-restricted-properties", rule, { message: "", allowedPropertiesMessage: "", }, - type: "ObjectPattern", }, ], }, @@ -646,7 +630,6 @@ ruleTester.run("no-restricted-properties", rule, { message: "", allowedPropertiesMessage: "", }, - type: "ObjectPattern", }, ], }, @@ -663,7 +646,6 @@ ruleTester.run("no-restricted-properties", rule, { message: "", allowedPropertiesMessage: "", }, - type: "ObjectPattern", }, ], }, @@ -680,7 +662,6 @@ ruleTester.run("no-restricted-properties", rule, { message: "", allowedPropertiesMessage: "", }, - type: "ObjectPattern", }, ], }, @@ -697,7 +678,6 @@ ruleTester.run("no-restricted-properties", rule, { message: "", allowedPropertiesMessage: "", }, - type: "ObjectPattern", }, ], }, @@ -714,7 +694,6 @@ ruleTester.run("no-restricted-properties", rule, { message: "", allowedPropertiesMessage: "", }, - type: "ObjectPattern", }, ], }, @@ -731,7 +710,6 @@ ruleTester.run("no-restricted-properties", rule, { message: "", allowedObjectsMessage: "", }, - type: "ObjectPattern", }, ], }, @@ -748,7 +726,6 @@ ruleTester.run("no-restricted-properties", rule, { message: "", allowedPropertiesMessage: "", }, - type: "ObjectPattern", }, ], }, @@ -765,7 +742,6 @@ ruleTester.run("no-restricted-properties", rule, { message: "", allowedPropertiesMessage: "", }, - type: "ObjectPattern", }, ], }, @@ -782,7 +758,6 @@ ruleTester.run("no-restricted-properties", rule, { message: "", allowedPropertiesMessage: "", }, - type: "ObjectPattern", }, ], }, @@ -799,7 +774,6 @@ ruleTester.run("no-restricted-properties", rule, { message: "", allowedPropertiesMessage: "", }, - type: "ObjectPattern", }, ], }, @@ -816,7 +790,6 @@ ruleTester.run("no-restricted-properties", rule, { message: "", allowedPropertiesMessage: "", }, - type: "ObjectPattern", }, ], }, @@ -832,7 +805,6 @@ ruleTester.run("no-restricted-properties", rule, { message: "", allowedObjectsMessage: "", }, - type: "MemberExpression", }, ], }, @@ -1033,7 +1005,6 @@ ruleTester.run("no-restricted-properties", rule, { allowedObjectsMessage: " Property 'disallowedProperty' is only allowed on these objects: anotherObject.", }, - type: "MemberExpression", }, ], }, @@ -1056,7 +1027,6 @@ ruleTester.run("no-restricted-properties", rule, { allowedObjectsMessage: " Property 'disallowedProperty' is only allowed on these objects: anotherObject.", }, - type: "MemberExpression", }, ], }, @@ -1081,7 +1051,6 @@ ruleTester.run("no-restricted-properties", rule, { allowedObjectsMessage: " Property 'disallowedProperty' is only allowed on these objects: anotherObject.", }, - type: "MemberExpression", }, { messageId: "restrictedProperty", @@ -1091,7 +1060,6 @@ ruleTester.run("no-restricted-properties", rule, { allowedObjectsMessage: " Property 'anotherDisallowedProperty' is only allowed on these objects: someObject.", }, - type: "MemberExpression", }, ], }, @@ -1113,7 +1081,6 @@ ruleTester.run("no-restricted-properties", rule, { allowedPropertiesMessage: " Only these properties are allowed: allowedProperty.", }, - type: "MemberExpression", }, ], }, @@ -1137,7 +1104,6 @@ ruleTester.run("no-restricted-properties", rule, { allowedPropertiesMessage: " Only these properties are allowed: allowedProperty.", }, - type: "MemberExpression", }, ], }, @@ -1163,7 +1129,6 @@ ruleTester.run("no-restricted-properties", rule, { allowedPropertiesMessage: " Only these properties are allowed: anotherDisallowedProperty.", }, - type: "MemberExpression", }, { messageId: "restrictedObjectProperty", @@ -1174,7 +1139,6 @@ ruleTester.run("no-restricted-properties", rule, { allowedPropertiesMessage: " Only these properties are allowed: disallowedProperty.", }, - type: "MemberExpression", }, ], }, diff --git a/tests/lib/rules/no-restricted-syntax.js b/tests/lib/rules/no-restricted-syntax.js index 34ec38304dcf..04a3b5114a34 100644 --- a/tests/lib/rules/no-restricted-syntax.js +++ b/tests/lib/rules/no-restricted-syntax.js @@ -72,7 +72,6 @@ ruleTester.run("no-restricted-syntax", rule, { data: { message: "Using 'VariableDeclaration' is not allowed.", }, - type: "VariableDeclaration", }, ], }, @@ -83,7 +82,6 @@ ruleTester.run("no-restricted-syntax", rule, { { messageId: "restrictedSyntax", data: { message: "Using 'EmptyStatement' is not allowed." }, - type: "EmptyStatement", }, ], }, @@ -94,22 +92,18 @@ ruleTester.run("no-restricted-syntax", rule, { { messageId: "restrictedSyntax", data: { message: "Using 'TryStatement' is not allowed." }, - type: "TryStatement", }, { messageId: "restrictedSyntax", data: { message: "Using 'CallExpression' is not allowed." }, - type: "CallExpression", }, { messageId: "restrictedSyntax", data: { message: "Using 'CatchClause' is not allowed." }, - type: "CatchClause", }, { messageId: "restrictedSyntax", data: { message: "Using 'CallExpression' is not allowed." }, - type: "CallExpression", }, ], }, @@ -123,7 +117,6 @@ ruleTester.run("no-restricted-syntax", rule, { message: "Using 'Identifier[name=\"bar\"]' is not allowed.", }, - type: "Identifier", }, ], }, @@ -134,7 +127,6 @@ ruleTester.run("no-restricted-syntax", rule, { { messageId: "restrictedSyntax", data: { message: "Using 'Identifier' is not allowed." }, - type: "Identifier", }, { messageId: "restrictedSyntax", @@ -142,7 +134,6 @@ ruleTester.run("no-restricted-syntax", rule, { message: "Using 'Identifier[name=\"bar\"]' is not allowed.", }, - type: "Identifier", }, ], }, @@ -157,7 +148,6 @@ ruleTester.run("no-restricted-syntax", rule, { message: "Using 'ArrowFunctionExpression > BlockStatement' is not allowed.", }, - type: "BlockStatement", }, ], }, @@ -171,7 +161,6 @@ ruleTester.run("no-restricted-syntax", rule, { message: "Using 'Property > Literal.key' is not allowed.", }, - type: "Literal", }, ], }, @@ -185,7 +174,6 @@ ruleTester.run("no-restricted-syntax", rule, { message: "Using 'BreakStatement[label]' is not allowed.", }, - type: "BreakStatement", }, ], }, @@ -199,7 +187,6 @@ ruleTester.run("no-restricted-syntax", rule, { message: "Using 'FunctionDeclaration[params.length>2]' is not allowed.", }, - type: "FunctionDeclaration", }, ], }, @@ -214,7 +201,6 @@ ruleTester.run("no-restricted-syntax", rule, { data: { message: "Using 'VariableDeclaration' is not allowed.", }, - type: "VariableDeclaration", }, ], }, @@ -228,7 +214,6 @@ ruleTester.run("no-restricted-syntax", rule, { message: "Using 'FunctionDeclaration[params.length>2]' is not allowed.", }, - type: "FunctionDeclaration", }, ], }, @@ -244,7 +229,6 @@ ruleTester.run("no-restricted-syntax", rule, { { messageId: "restrictedSyntax", data: { message: "custom error message." }, - type: "FunctionDeclaration", }, ], }, @@ -262,7 +246,6 @@ ruleTester.run("no-restricted-syntax", rule, { { messageId: "restrictedSyntax", data: { message: "custom message with {{selector}}" }, - type: "FunctionDeclaration", }, ], }, @@ -278,7 +261,6 @@ ruleTester.run("no-restricted-syntax", rule, { message: "Using 'Literal[regex.flags=/./]' is not allowed.", }, - type: "Literal", }, ], }, @@ -294,7 +276,6 @@ ruleTester.run("no-restricted-syntax", rule, { data: { message: "Using 'ChainExpression' is not allowed.", }, - type: "ChainExpression", }, ], }, @@ -308,14 +289,12 @@ ruleTester.run("no-restricted-syntax", rule, { data: { message: "Using '[optional=true]' is not allowed.", }, - type: "CallExpression", }, { messageId: "restrictedSyntax", data: { message: "Using '[optional=true]' is not allowed.", }, - type: "MemberExpression", }, ], }, @@ -329,7 +308,6 @@ ruleTester.run("no-restricted-syntax", rule, { { messageId: "restrictedSyntax", data: { message: "Using ':nth-child(1)' is not allowed." }, - type: "ExpressionStatement", }, ], }, @@ -346,7 +324,6 @@ ruleTester.run("no-restricted-syntax", rule, { { messageId: "restrictedSyntax", data: { message: "Using '* ~ *' is not allowed." }, - type: "JSXElement", }, ], }, @@ -364,7 +341,6 @@ ruleTester.run("no-restricted-syntax", rule, { message: "Using 'VariableDeclaration[kind='using']' is not allowed.", }, - type: "VariableDeclaration", }, ], }, @@ -382,7 +358,6 @@ ruleTester.run("no-restricted-syntax", rule, { message: "Using 'VariableDeclaration[kind='await using']' is not allowed.", }, - type: "VariableDeclaration", }, ], }, diff --git a/tests/lib/rules/no-return-assign.js b/tests/lib/rules/no-return-assign.js index 0f57457b4eff..60306e62bf4c 100644 --- a/tests/lib/rules/no-return-assign.js +++ b/tests/lib/rules/no-return-assign.js @@ -71,33 +71,43 @@ ruleTester.run("no-return-assign", rule, { { code: "function x() { return result = a * b; };", errors: [ - { messageId: "returnAssignment", type: "ReturnStatement" }, + { + messageId: "returnAssignment", + }, ], }, { code: "function x() { return (result) = (a * b); };", errors: [ - { messageId: "returnAssignment", type: "ReturnStatement" }, + { + messageId: "returnAssignment", + }, ], }, { code: "function x() { return result = a * b; };", options: ["except-parens"], errors: [ - { messageId: "returnAssignment", type: "ReturnStatement" }, + { + messageId: "returnAssignment", + }, ], }, { code: "function x() { return (result) = (a * b); };", options: ["except-parens"], errors: [ - { messageId: "returnAssignment", type: "ReturnStatement" }, + { + messageId: "returnAssignment", + }, ], }, { code: "() => { return result = a * b; }", errors: [ - { messageId: "returnAssignment", type: "ReturnStatement" }, + { + messageId: "returnAssignment", + }, ], }, { @@ -105,7 +115,6 @@ ruleTester.run("no-return-assign", rule, { errors: [ { messageId: "arrowAssignment", - type: "ArrowFunctionExpression", }, ], }, @@ -113,21 +122,27 @@ ruleTester.run("no-return-assign", rule, { code: "function x() { return result = a * b; };", options: ["always"], errors: [ - { messageId: "returnAssignment", type: "ReturnStatement" }, + { + messageId: "returnAssignment", + }, ], }, { code: "function x() { return (result = a * b); };", options: ["always"], errors: [ - { messageId: "returnAssignment", type: "ReturnStatement" }, + { + messageId: "returnAssignment", + }, ], }, { code: "function x() { return result || (result = a * b); };", options: ["always"], errors: [ - { messageId: "returnAssignment", type: "ReturnStatement" }, + { + messageId: "returnAssignment", + }, ], }, { @@ -135,7 +150,9 @@ ruleTester.run("no-return-assign", rule, { return a = b }`, errors: [ - { messageId: "returnAssignment", type: "ReturnStatement" }, + { + messageId: "returnAssignment", + }, ], }, { @@ -143,7 +160,9 @@ ruleTester.run("no-return-assign", rule, { return foo = bar && foo > 0; }`, errors: [ - { messageId: "returnAssignment", type: "ReturnStatement" }, + { + messageId: "returnAssignment", + }, ], }, { @@ -153,7 +172,9 @@ ruleTester.run("no-return-assign", rule, { } }`, errors: [ - { messageId: "returnAssignment", type: "ReturnStatement" }, + { + messageId: "returnAssignment", + }, ], }, { @@ -164,7 +185,6 @@ ruleTester.run("no-return-assign", rule, { errors: [ { messageId: "returnAssignment", - type: "ReturnStatement", }, ], }, @@ -176,7 +196,6 @@ ruleTester.run("no-return-assign", rule, { errors: [ { messageId: "arrowAssignment", - type: "ArrowFunctionExpression", }, ], }, @@ -187,7 +206,9 @@ ruleTester.run("no-return-assign", rule, { } }`, errors: [ - { messageId: "returnAssignment", type: "ReturnStatement" }, + { + messageId: "returnAssignment", + }, ], }, { @@ -196,7 +217,6 @@ ruleTester.run("no-return-assign", rule, { errors: [ { messageId: "arrowAssignment", - type: "ArrowFunctionExpression", }, ], }, diff --git a/tests/lib/rules/no-return-await.js b/tests/lib/rules/no-return-await.js index 16f0cce26394..fe31ca634074 100644 --- a/tests/lib/rules/no-return-await.js +++ b/tests/lib/rules/no-return-await.js @@ -26,7 +26,6 @@ function createErrorList({ suggestionOutput: output } = {}) { return [ { messageId: "redundantUseOfAwait", - type: "Identifier", suggestions: output ? [ { diff --git a/tests/lib/rules/no-script-url.js b/tests/lib/rules/no-script-url.js index 606fed2f632d..a20ce259eb21 100644 --- a/tests/lib/rules/no-script-url.js +++ b/tests/lib/rules/no-script-url.js @@ -39,24 +39,36 @@ ruleTester.run("no-script-url", rule, { invalid: [ { code: "var a = 'javascript:void(0);';", - errors: [{ messageId: "unexpectedScriptURL", type: "Literal" }], + errors: [ + { + messageId: "unexpectedScriptURL", + }, + ], }, { code: "var a = 'javascript:';", - errors: [{ messageId: "unexpectedScriptURL", type: "Literal" }], + errors: [ + { + messageId: "unexpectedScriptURL", + }, + ], }, { code: "var a = `javascript:`;", languageOptions: { ecmaVersion: 6 }, errors: [ - { messageId: "unexpectedScriptURL", type: "TemplateLiteral" }, + { + messageId: "unexpectedScriptURL", + }, ], }, { code: "var a = `JavaScript:`;", languageOptions: { ecmaVersion: 6 }, errors: [ - { messageId: "unexpectedScriptURL", type: "TemplateLiteral" }, + { + messageId: "unexpectedScriptURL", + }, ], }, ], diff --git a/tests/lib/rules/no-self-compare.js b/tests/lib/rules/no-self-compare.js index f9bee5b9a6a3..2c6a0894e9b9 100644 --- a/tests/lib/rules/no-self-compare.js +++ b/tests/lib/rules/no-self-compare.js @@ -37,92 +37,122 @@ ruleTester.run("no-self-compare", rule, { { code: "if (x === x) { }", errors: [ - { messageId: "comparingToSelf", type: "BinaryExpression" }, + { + messageId: "comparingToSelf", + }, ], }, { code: "if (x !== x) { }", errors: [ - { messageId: "comparingToSelf", type: "BinaryExpression" }, + { + messageId: "comparingToSelf", + }, ], }, { code: "if (x > x) { }", errors: [ - { messageId: "comparingToSelf", type: "BinaryExpression" }, + { + messageId: "comparingToSelf", + }, ], }, { code: "if ('x' > 'x') { }", errors: [ - { messageId: "comparingToSelf", type: "BinaryExpression" }, + { + messageId: "comparingToSelf", + }, ], }, { code: "do {} while (x === x)", errors: [ - { messageId: "comparingToSelf", type: "BinaryExpression" }, + { + messageId: "comparingToSelf", + }, ], }, { code: "x === x", errors: [ - { messageId: "comparingToSelf", type: "BinaryExpression" }, + { + messageId: "comparingToSelf", + }, ], }, { code: "x !== x", errors: [ - { messageId: "comparingToSelf", type: "BinaryExpression" }, + { + messageId: "comparingToSelf", + }, ], }, { code: "x == x", errors: [ - { messageId: "comparingToSelf", type: "BinaryExpression" }, + { + messageId: "comparingToSelf", + }, ], }, { code: "x != x", errors: [ - { messageId: "comparingToSelf", type: "BinaryExpression" }, + { + messageId: "comparingToSelf", + }, ], }, { code: "x > x", errors: [ - { messageId: "comparingToSelf", type: "BinaryExpression" }, + { + messageId: "comparingToSelf", + }, ], }, { code: "x < x", errors: [ - { messageId: "comparingToSelf", type: "BinaryExpression" }, + { + messageId: "comparingToSelf", + }, ], }, { code: "x >= x", errors: [ - { messageId: "comparingToSelf", type: "BinaryExpression" }, + { + messageId: "comparingToSelf", + }, ], }, { code: "x <= x", errors: [ - { messageId: "comparingToSelf", type: "BinaryExpression" }, + { + messageId: "comparingToSelf", + }, ], }, { code: "foo.bar().baz.qux >= foo.bar ().baz .qux", errors: [ - { messageId: "comparingToSelf", type: "BinaryExpression" }, + { + messageId: "comparingToSelf", + }, ], }, { code: "class C { #field; foo() { this.#field === this.#field; } }", languageOptions: { ecmaVersion: 2022 }, errors: [ - { messageId: "comparingToSelf", type: "BinaryExpression" }, + { + messageId: "comparingToSelf", + }, ], }, ], diff --git a/tests/lib/rules/no-sequences.js b/tests/lib/rules/no-sequences.js index c996eed39184..33d1174b9d17 100644 --- a/tests/lib/rules/no-sequences.js +++ b/tests/lib/rules/no-sequences.js @@ -25,7 +25,6 @@ function errors(column) { return [ { messageId: "unexpectedCommaExpression", - type: "SequenceExpression", line: 1, column, }, @@ -94,7 +93,6 @@ ruleTester.run("no-sequences", rule, { errors: [ { messageId: "unexpectedCommaExpression", - type: "SequenceExpression", line: 1, column: 2, endLine: 1, diff --git a/tests/lib/rules/no-setter-return.js b/tests/lib/rules/no-setter-return.js index d39a4afdb430..75dd8a9f2823 100644 --- a/tests/lib/rules/no-setter-return.js +++ b/tests/lib/rules/no-setter-return.js @@ -19,13 +19,11 @@ const RuleTester = require("../../../lib/rule-tester/rule-tester"); /** * Creates an error object. * @param {number} [column] Reported column. - * @param {string} [type= "ReturnStatement"] Reported node type. * @returns {Object} The error object. */ -function error(column, type = "ReturnStatement") { +function error(column) { const errorObject = { messageId: "returnsValue", - type, }; if (column) { @@ -262,7 +260,6 @@ ruleTester.run("no-setter-return", rule, { errors: [ { messageId: "returnsValue", - type: "ReturnStatement", column: 16, endColumn: 31, }, @@ -444,20 +441,20 @@ ruleTester.run("no-setter-return", rule, { // arrow implicit return// basic tests { code: "Object.defineProperty(foo, 'bar', { set: val => val })", - errors: [error(49, "Identifier")], + errors: [error(49)], }, { code: "Reflect.defineProperty(foo, 'bar', { set: val => f(val) })", languageOptions: { ecmaVersion: 6 }, - errors: [error(50, "CallExpression")], + errors: [error(50)], }, { code: "Object.defineProperties(foo, { baz: { set: val => a + b } })", - errors: [error(51, "BinaryExpression")], + errors: [error(51)], }, { code: "Object.create({}, { baz: { set: val => this._val } })", - errors: [error(40, "MemberExpression")], + errors: [error(40)], }, // various locations, value types and multiple invalid/valid in same setter. @@ -486,7 +483,7 @@ ruleTester.run("no-setter-return", rule, { }, { code: "Object.create({}, { baz: { set(val) { return 1; } }, bar: { set: (val) => 1 } })", - errors: [error(39), error(75, "Literal")], + errors: [error(39), error(75)], }, // various syntax for properties diff --git a/tests/lib/rules/no-shadow-restricted-names.js b/tests/lib/rules/no-shadow-restricted-names.js index f280716d7d01..cb17251a7faf 100644 --- a/tests/lib/rules/no-shadow-restricted-names.js +++ b/tests/lib/rules/no-shadow-restricted-names.js @@ -94,37 +94,31 @@ ruleTester.run("no-shadow-restricted-names", rule, { { messageId: "shadowingRestrictedName", data: { name: "NaN" }, - type: "Identifier", column: 10, }, { messageId: "shadowingRestrictedName", data: { name: "NaN" }, - type: "Identifier", column: 14, }, { messageId: "shadowingRestrictedName", data: { name: "NaN" }, - type: "Identifier", column: 25, }, { messageId: "shadowingRestrictedName", data: { name: "NaN" }, - type: "Identifier", column: 40, }, { messageId: "shadowingRestrictedName", data: { name: "NaN" }, - type: "Identifier", column: 44, }, { messageId: "shadowingRestrictedName", data: { name: "NaN" }, - type: "Identifier", column: 64, }, ], @@ -135,31 +129,26 @@ ruleTester.run("no-shadow-restricted-names", rule, { { messageId: "shadowingRestrictedName", data: { name: "undefined" }, - type: "Identifier", column: 10, }, { messageId: "shadowingRestrictedName", data: { name: "undefined" }, - type: "Identifier", column: 20, }, { messageId: "shadowingRestrictedName", data: { name: "undefined" }, - type: "Identifier", column: 43, }, { messageId: "shadowingRestrictedName", data: { name: "undefined" }, - type: "Identifier", column: 53, }, { messageId: "shadowingRestrictedName", data: { name: "undefined" }, - type: "Identifier", column: 79, }, ], @@ -170,37 +159,31 @@ ruleTester.run("no-shadow-restricted-names", rule, { { messageId: "shadowingRestrictedName", data: { name: "Infinity" }, - type: "Identifier", column: 10, }, { messageId: "shadowingRestrictedName", data: { name: "Infinity" }, - type: "Identifier", column: 19, }, { messageId: "shadowingRestrictedName", data: { name: "Infinity" }, - type: "Identifier", column: 35, }, { messageId: "shadowingRestrictedName", data: { name: "Infinity" }, - type: "Identifier", column: 55, }, { messageId: "shadowingRestrictedName", data: { name: "Infinity" }, - type: "Identifier", column: 64, }, { messageId: "shadowingRestrictedName", data: { name: "Infinity" }, - type: "Identifier", column: 89, }, ], @@ -211,37 +194,31 @@ ruleTester.run("no-shadow-restricted-names", rule, { { messageId: "shadowingRestrictedName", data: { name: "arguments" }, - type: "Identifier", column: 10, }, { messageId: "shadowingRestrictedName", data: { name: "arguments" }, - type: "Identifier", column: 20, }, { messageId: "shadowingRestrictedName", data: { name: "arguments" }, - type: "Identifier", column: 37, }, { messageId: "shadowingRestrictedName", data: { name: "arguments" }, - type: "Identifier", column: 58, }, { messageId: "shadowingRestrictedName", data: { name: "arguments" }, - type: "Identifier", column: 68, }, { messageId: "shadowingRestrictedName", data: { name: "arguments" }, - type: "Identifier", column: 94, }, ], @@ -252,37 +229,31 @@ ruleTester.run("no-shadow-restricted-names", rule, { { messageId: "shadowingRestrictedName", data: { name: "eval" }, - type: "Identifier", column: 10, }, { messageId: "shadowingRestrictedName", data: { name: "eval" }, - type: "Identifier", column: 15, }, { messageId: "shadowingRestrictedName", data: { name: "eval" }, - type: "Identifier", column: 27, }, { messageId: "shadowingRestrictedName", data: { name: "eval" }, - type: "Identifier", column: 43, }, { messageId: "shadowingRestrictedName", data: { name: "eval" }, - type: "Identifier", column: 48, }, { messageId: "shadowingRestrictedName", data: { name: "eval" }, - type: "Identifier", column: 69, }, ], @@ -294,37 +265,31 @@ ruleTester.run("no-shadow-restricted-names", rule, { { messageId: "shadowingRestrictedName", data: { name: "eval" }, - type: "Identifier", column: 5, }, { messageId: "shadowingRestrictedName", data: { name: "eval" }, - type: "Identifier", column: 13, }, { messageId: "shadowingRestrictedName", data: { name: "eval" }, - type: "Identifier", column: 28, }, { messageId: "shadowingRestrictedName", data: { name: "eval" }, - type: "Identifier", column: 44, }, { messageId: "shadowingRestrictedName", data: { name: "eval" }, - type: "Identifier", column: 49, }, { messageId: "shadowingRestrictedName", data: { name: "eval" }, - type: "Identifier", column: 70, }, ], @@ -336,7 +301,6 @@ ruleTester.run("no-shadow-restricted-names", rule, { { messageId: "shadowingRestrictedName", data: { name: "undefined" }, - type: "Identifier", column: 6, }, ], @@ -348,25 +312,21 @@ ruleTester.run("no-shadow-restricted-names", rule, { { messageId: "shadowingRestrictedName", data: { name: "undefined" }, - type: "Identifier", column: 6, }, { messageId: "shadowingRestrictedName", data: { name: "undefined" }, - type: "Identifier", column: 32, }, { messageId: "shadowingRestrictedName", data: { name: "undefined" }, - type: "Identifier", column: 63, }, { messageId: "shadowingRestrictedName", data: { name: "undefined" }, - type: "Identifier", column: 94, }, ], @@ -377,7 +337,6 @@ ruleTester.run("no-shadow-restricted-names", rule, { { messageId: "shadowingRestrictedName", data: { name: "undefined" }, - type: "Identifier", column: 5, }, ], @@ -391,7 +350,6 @@ ruleTester.run("no-shadow-restricted-names", rule, { { messageId: "shadowingRestrictedName", data: { name: "undefined" }, - type: "Identifier", column: 7, }, ], @@ -405,7 +363,6 @@ ruleTester.run("no-shadow-restricted-names", rule, { { messageId: "shadowingRestrictedName", data: { name: "undefined" }, - type: "Identifier", column: 8, }, ], @@ -420,7 +377,6 @@ ruleTester.run("no-shadow-restricted-names", rule, { { messageId: "shadowingRestrictedName", data: { name: "undefined" }, - type: "Identifier", column: 8, }, ], @@ -435,7 +391,6 @@ ruleTester.run("no-shadow-restricted-names", rule, { { messageId: "shadowingRestrictedName", data: { name: "undefined" }, - type: "Identifier", column: 10, }, ], @@ -450,7 +405,6 @@ ruleTester.run("no-shadow-restricted-names", rule, { { messageId: "shadowingRestrictedName", data: { name: "undefined" }, - type: "Identifier", column: 17, }, ], @@ -465,7 +419,6 @@ ruleTester.run("no-shadow-restricted-names", rule, { { messageId: "shadowingRestrictedName", data: { name: "undefined" }, - type: "Identifier", column: 13, }, ], @@ -478,37 +431,31 @@ ruleTester.run("no-shadow-restricted-names", rule, { { messageId: "shadowingRestrictedName", data: { name: "globalThis" }, - type: "Identifier", column: 10, }, { messageId: "shadowingRestrictedName", data: { name: "globalThis" }, - type: "Identifier", column: 21, }, { messageId: "shadowingRestrictedName", data: { name: "globalThis" }, - type: "Identifier", column: 39, }, { messageId: "shadowingRestrictedName", data: { name: "globalThis" }, - type: "Identifier", column: 61, }, { messageId: "shadowingRestrictedName", data: { name: "globalThis" }, - type: "Identifier", column: 72, }, { messageId: "shadowingRestrictedName", data: { name: "globalThis" }, - type: "Identifier", column: 99, }, ], @@ -521,37 +468,31 @@ ruleTester.run("no-shadow-restricted-names", rule, { { messageId: "shadowingRestrictedName", data: { name: "globalThis" }, - type: "Identifier", column: 10, }, { messageId: "shadowingRestrictedName", data: { name: "globalThis" }, - type: "Identifier", column: 21, }, { messageId: "shadowingRestrictedName", data: { name: "globalThis" }, - type: "Identifier", column: 39, }, { messageId: "shadowingRestrictedName", data: { name: "globalThis" }, - type: "Identifier", column: 61, }, { messageId: "shadowingRestrictedName", data: { name: "globalThis" }, - type: "Identifier", column: 72, }, { messageId: "shadowingRestrictedName", data: { name: "globalThis" }, - type: "Identifier", column: 99, }, ], @@ -564,7 +505,6 @@ ruleTester.run("no-shadow-restricted-names", rule, { { messageId: "shadowingRestrictedName", data: { name: "globalThis" }, - type: "Identifier", column: 8, }, ], @@ -577,25 +517,21 @@ ruleTester.run("no-shadow-restricted-names", rule, { { messageId: "shadowingRestrictedName", data: { name: "globalThis" }, - type: "Identifier", column: 6, }, { messageId: "shadowingRestrictedName", data: { name: "globalThis" }, - type: "Identifier", column: 33, }, { messageId: "shadowingRestrictedName", data: { name: "globalThis" }, - type: "Identifier", column: 65, }, { messageId: "shadowingRestrictedName", data: { name: "globalThis" }, - type: "Identifier", column: 97, }, ], @@ -608,7 +544,6 @@ ruleTester.run("no-shadow-restricted-names", rule, { { messageId: "shadowingRestrictedName", data: { name: "globalThis" }, - type: "Identifier", column: 5, }, ], @@ -621,7 +556,6 @@ ruleTester.run("no-shadow-restricted-names", rule, { { messageId: "shadowingRestrictedName", data: { name: "globalThis" }, - type: "Identifier", column: 7, }, ], @@ -634,7 +568,6 @@ ruleTester.run("no-shadow-restricted-names", rule, { { messageId: "shadowingRestrictedName", data: { name: "globalThis" }, - type: "Identifier", column: 8, }, ], @@ -650,7 +583,6 @@ ruleTester.run("no-shadow-restricted-names", rule, { { messageId: "shadowingRestrictedName", data: { name: "globalThis" }, - type: "Identifier", column: 8, }, ], @@ -666,7 +598,6 @@ ruleTester.run("no-shadow-restricted-names", rule, { { messageId: "shadowingRestrictedName", data: { name: "globalThis" }, - type: "Identifier", column: 10, }, ], @@ -682,7 +613,6 @@ ruleTester.run("no-shadow-restricted-names", rule, { { messageId: "shadowingRestrictedName", data: { name: "globalThis" }, - type: "Identifier", column: 17, }, ], @@ -698,7 +628,6 @@ ruleTester.run("no-shadow-restricted-names", rule, { { messageId: "shadowingRestrictedName", data: { name: "globalThis" }, - type: "Identifier", column: 13, }, ], diff --git a/tests/lib/rules/no-shadow.js b/tests/lib/rules/no-shadow.js index 7b125a7325c5..986127ff674f 100644 --- a/tests/lib/rules/no-shadow.js +++ b/tests/lib/rules/no-shadow.js @@ -342,7 +342,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 12, }, - type: "Identifier", line: 1, column: 44, }, @@ -359,7 +358,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 10, }, - type: "Identifier", line: 1, column: 38, }, @@ -375,7 +373,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 12, }, - type: "Identifier", line: 1, column: 43, }, @@ -391,7 +388,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 5, }, - type: "Identifier", line: 1, column: 23, }, @@ -407,7 +403,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 5, }, - type: "Identifier", }, ], }, @@ -421,7 +416,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 5, }, - type: "Identifier", }, ], }, @@ -435,7 +429,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 5, }, - type: "Identifier", }, { messageId: "noShadow", @@ -444,7 +437,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 19, }, - type: "Identifier", }, ], }, @@ -459,7 +451,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 5, }, - type: "Identifier", }, ], }, @@ -474,7 +465,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 5, }, - type: "Identifier", }, ], }, @@ -489,7 +479,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 21, }, - type: "Identifier", }, ], }, @@ -504,7 +493,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 27, }, - type: "Identifier", }, ], }, @@ -519,7 +507,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 36, }, - type: "Identifier", }, ], }, @@ -534,7 +521,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 36, }, - type: "Identifier", }, ], }, @@ -549,7 +535,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 30, }, - type: "Identifier", }, ], }, @@ -565,7 +550,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 16, }, - type: "Identifier", }, ], }, @@ -581,7 +565,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 16, }, - type: "Identifier", }, ], }, @@ -597,7 +580,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 21, }, - type: "Identifier", }, ], }, @@ -613,7 +595,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 24, }, - type: "Identifier", }, ], }, @@ -629,7 +610,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 22, }, - type: "Identifier", }, ], }, @@ -645,7 +625,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 27, }, - type: "Identifier", }, ], }, @@ -661,7 +640,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 31, }, - type: "Identifier", }, ], }, @@ -677,7 +655,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 31, }, - type: "Identifier", }, ], }, @@ -693,7 +670,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 36, }, - type: "Identifier", }, ], }, @@ -709,7 +685,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 31, }, - type: "Identifier", }, ], }, @@ -725,7 +700,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 31, }, - type: "Identifier", }, ], }, @@ -741,7 +715,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 36, }, - type: "Identifier", }, ], }, @@ -757,7 +730,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 25, }, - type: "Identifier", }, ], }, @@ -773,7 +745,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 25, }, - type: "Identifier", }, ], }, @@ -789,7 +760,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 30, }, - type: "Identifier", }, ], }, @@ -803,7 +773,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 11, }, - type: "Identifier", }, ], }, @@ -818,7 +787,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 11, }, - type: "Identifier", }, ], }, @@ -832,7 +800,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 11, }, - type: "Identifier", }, ], }, @@ -847,7 +814,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 11, }, - type: "Identifier", }, ], }, @@ -861,7 +827,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 19, }, - type: "Identifier", }, ], }, @@ -875,7 +840,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 19, }, - type: "Identifier", }, ], }, @@ -890,7 +854,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 19, }, - type: "Identifier", }, ], }, @@ -904,7 +867,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 19, }, - type: "Identifier", }, ], }, @@ -919,7 +881,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 19, }, - type: "Identifier", }, ], }, @@ -934,7 +895,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 19, }, - type: "Identifier", }, ], }, @@ -949,7 +909,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 7, }, - type: "Identifier", }, ], }, @@ -963,7 +922,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 11, }, - type: "Identifier", line: 1, column: 26, }, @@ -974,7 +932,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 26, }, - type: "Identifier", line: 1, column: 40, }, @@ -989,7 +946,6 @@ ruleTester.run("no-shadow", rule, { data: { name: "Object", }, - type: "Identifier", }, ], }, @@ -1003,7 +959,6 @@ ruleTester.run("no-shadow", rule, { data: { name: "top", }, - type: "Identifier", }, ], }, @@ -1017,7 +972,6 @@ ruleTester.run("no-shadow", rule, { data: { name: "Object", }, - type: "Identifier", }, ], }, @@ -1035,7 +989,6 @@ ruleTester.run("no-shadow", rule, { data: { name: "top", }, - type: "Identifier", }, ], }, @@ -1051,7 +1004,6 @@ ruleTester.run("no-shadow", rule, { data: { name: "Object", }, - type: "Identifier", }, ], }, @@ -1068,7 +1020,6 @@ ruleTester.run("no-shadow", rule, { data: { name: "top", }, - type: "Identifier", }, ], }, @@ -1082,7 +1033,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 14, }, - type: "Identifier", line: 1, column: 31, }, @@ -1099,7 +1049,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 24, }, - type: "Identifier", line: 1, column: 33, }, @@ -1116,7 +1065,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 7, }, - type: "Identifier", line: 1, column: 24, }, @@ -1133,7 +1081,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 7, }, - type: "Identifier", line: 1, column: 24, }, @@ -1150,7 +1097,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 5, }, - type: "Identifier", line: 1, column: 31, }, @@ -1168,7 +1114,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 35, }, - type: "Identifier", line: 1, column: 24, }, @@ -1186,7 +1131,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 35, }, - type: "Identifier", line: 1, column: 24, }, @@ -1204,7 +1148,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 35, }, - type: "Identifier", line: 1, column: 24, }, @@ -1221,7 +1164,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 24, }, - type: "Identifier", line: 1, column: 50, }, @@ -1238,7 +1180,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 24, }, - type: "Identifier", line: 1, column: 50, }, @@ -1256,7 +1197,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 5, }, - type: "Identifier", }, { messageId: "noShadow", @@ -1265,7 +1205,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 2, shadowedColumn: 5, }, - type: "Identifier", }, ], }, @@ -1281,7 +1220,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 7, }, - type: "Identifier", line: 1, column: 44, }, @@ -1299,7 +1237,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 10, }, - type: "Identifier", line: 2, column: 5, }, @@ -1317,7 +1254,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 7, }, - type: "Identifier", line: 1, column: 62, }, @@ -1335,7 +1271,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 7, }, - type: "Identifier", line: 1, column: 50, }, @@ -1353,7 +1288,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 7, }, - type: "Identifier", line: 1, column: 36, }, @@ -1371,7 +1305,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 7, }, - type: "Identifier", line: 1, column: 23, }, @@ -1389,7 +1322,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 25, }, - type: "Identifier", line: 1, column: 32, }, @@ -1407,7 +1339,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 19, }, - type: "Identifier", line: 1, column: 23, }, @@ -1425,7 +1356,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 14, }, - type: "Identifier", line: 1, column: 26, }, @@ -1443,7 +1373,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 5, }, - type: "Identifier", }, { messageId: "noShadow", @@ -1452,7 +1381,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 2, shadowedColumn: 5, }, - type: "Identifier", }, ], }, @@ -1468,7 +1396,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 7, }, - type: "Identifier", line: 1, column: 42, }, @@ -1486,7 +1413,6 @@ ruleTester.run("no-shadow", rule, { shadowedLine: 1, shadowedColumn: 7, }, - type: "Identifier", line: 1, column: 20, }, @@ -1825,7 +1751,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 2, }, messageId: "noShadow", - type: "Identifier", }, ], }, @@ -1843,7 +1768,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 2, }, messageId: "noShadow", - type: "Identifier", }, ], }, @@ -1861,7 +1785,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 2, }, messageId: "noShadow", - type: "Identifier", }, ], }, @@ -1883,7 +1806,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 2, }, messageId: "noShadow", - type: "Identifier", }, ], }, @@ -1905,7 +1827,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 2, }, messageId: "noShadow", - type: "Identifier", }, ], }, @@ -1927,7 +1848,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 2, }, messageId: "noShadow", - type: "Identifier", }, ], }, @@ -1946,7 +1866,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 2, }, messageId: "noShadow", - type: "Identifier", }, { data: { @@ -1955,7 +1874,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 3, }, messageId: "noShadow", - type: "Identifier", }, ], }, @@ -1974,7 +1892,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 2, }, messageId: "noShadow", - type: "Identifier", }, ], }, @@ -1992,7 +1909,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 3, }, messageId: "noShadow", - type: "Identifier", }, ], }, @@ -2010,7 +1926,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 3, }, messageId: "noShadow", - type: "Identifier", }, ], }, @@ -2028,7 +1943,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 3, }, messageId: "noShadow", - type: "Identifier", }, ], }, @@ -2046,7 +1960,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 3, }, messageId: "noShadow", - type: "Identifier", }, ], }, @@ -2066,7 +1979,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 5, }, messageId: "noShadow", - type: "Identifier", }, ], }, @@ -2086,7 +1998,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 5, }, messageId: "noShadow", - type: "Identifier", }, ], }, @@ -2104,7 +2015,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 3, }, messageId: "noShadow", - type: "Identifier", }, ], }, @@ -2122,7 +2032,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 3, }, messageId: "noShadow", - type: "Identifier", }, ], }, @@ -2140,7 +2049,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 3, }, messageId: "noShadow", - type: "Identifier", }, ], }, @@ -2158,7 +2066,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 3, }, messageId: "noShadow", - type: "Identifier", }, ], }, @@ -2178,7 +2085,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 5, }, messageId: "noShadow", - type: "Identifier", }, ], }, @@ -2198,7 +2104,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 5, }, messageId: "noShadow", - type: "Identifier", }, ], }, @@ -2217,7 +2122,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 3, }, messageId: "noShadow", - type: "Identifier", }, ], }, @@ -2238,7 +2142,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 6, }, messageId: "noShadow", - type: "Identifier", }, ], }, @@ -2264,7 +2167,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 4, }, messageId: "noShadow", - type: "Identifier", }, { data: { @@ -2273,7 +2175,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 11, }, messageId: "noShadow", - type: "Identifier", }, ], }, @@ -2299,7 +2200,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 4, }, messageId: "noShadow", - type: "Identifier", }, ], }, @@ -2317,7 +2217,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 3, }, messageId: "noShadow", - type: "Identifier", }, ], }, @@ -2335,7 +2234,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 3, }, messageId: "noShadow", - type: "Identifier", }, ], }, @@ -2353,7 +2251,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 3, }, messageId: "noShadow", - type: "Identifier", }, ], }, @@ -2373,7 +2270,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 5, }, messageId: "noShadow", - type: "Identifier", }, ], }, @@ -2393,7 +2289,6 @@ ruleTesterTypeScript.run("no-shadow", rule, { shadowedLine: 5, }, messageId: "noShadow", - type: "Identifier", }, ], }, diff --git a/tests/lib/rules/no-spaced-func.js b/tests/lib/rules/no-spaced-func.js index df90f2f6e570..6603a43df811 100644 --- a/tests/lib/rules/no-spaced-func.js +++ b/tests/lib/rules/no-spaced-func.js @@ -42,17 +42,29 @@ ruleTester.run("no-spaced-func", rule, { { code: "f ();", output: "f();", - errors: [{ messageId: "noSpacedFunction", type: "CallExpression" }], + errors: [ + { + messageId: "noSpacedFunction", + }, + ], }, { code: "f (a, b);", output: "f(a, b);", - errors: [{ messageId: "noSpacedFunction", type: "CallExpression" }], + errors: [ + { + messageId: "noSpacedFunction", + }, + ], }, { code: "f\n();", output: "f();", - errors: [{ messageId: "noSpacedFunction", type: "CallExpression" }], + errors: [ + { + messageId: "noSpacedFunction", + }, + ], }, { code: "f.b ();", @@ -60,7 +72,6 @@ ruleTester.run("no-spaced-func", rule, { errors: [ { messageId: "noSpacedFunction", - type: "CallExpression", column: 3, }, ], @@ -71,7 +82,6 @@ ruleTester.run("no-spaced-func", rule, { errors: [ { messageId: "noSpacedFunction", - type: "CallExpression", column: 7, }, ], @@ -79,39 +89,67 @@ ruleTester.run("no-spaced-func", rule, { { code: "f() ()", output: "f()()", - errors: [{ messageId: "noSpacedFunction", type: "CallExpression" }], + errors: [ + { + messageId: "noSpacedFunction", + }, + ], }, { code: "(function() {} ())", output: "(function() {}())", - errors: [{ messageId: "noSpacedFunction", type: "CallExpression" }], + errors: [ + { + messageId: "noSpacedFunction", + }, + ], }, { code: "var f = new Foo ()", output: "var f = new Foo()", - errors: [{ messageId: "noSpacedFunction", type: "NewExpression" }], + errors: [ + { + messageId: "noSpacedFunction", + }, + ], }, { code: "f ( (0) )", output: "f( (0) )", - errors: [{ messageId: "noSpacedFunction", type: "CallExpression" }], + errors: [ + { + messageId: "noSpacedFunction", + }, + ], }, { code: "f(0) (1)", output: "f(0)(1)", - errors: [{ messageId: "noSpacedFunction", type: "CallExpression" }], + errors: [ + { + messageId: "noSpacedFunction", + }, + ], }, { code: "(f) (0)", output: "(f)(0)", - errors: [{ messageId: "noSpacedFunction", type: "CallExpression" }], + errors: [ + { + messageId: "noSpacedFunction", + }, + ], }, { code: "f ();\n t ();", output: "f();\n t();", errors: [ - { messageId: "noSpacedFunction", type: "CallExpression" }, - { messageId: "noSpacedFunction", type: "CallExpression" }, + { + messageId: "noSpacedFunction", + }, + { + messageId: "noSpacedFunction", + }, ], }, ], diff --git a/tests/lib/rules/no-sparse-arrays.js b/tests/lib/rules/no-sparse-arrays.js index b1778411c740..3c2051f0a3a8 100644 --- a/tests/lib/rules/no-sparse-arrays.js +++ b/tests/lib/rules/no-sparse-arrays.js @@ -26,7 +26,6 @@ ruleTester.run("no-sparse-arrays", rule, { errors: [ { messageId: "unexpectedSparseArray", - type: "ArrayExpression", line: 1, column: 10, endLine: 1, @@ -39,7 +38,6 @@ ruleTester.run("no-sparse-arrays", rule, { errors: [ { messageId: "unexpectedSparseArray", - type: "ArrayExpression", line: 1, column: 13, endLine: 1, @@ -52,7 +50,6 @@ ruleTester.run("no-sparse-arrays", rule, { errors: [ { messageId: "unexpectedSparseArray", - type: "ArrayExpression", line: 2, column: 15, endLine: 2, @@ -60,7 +57,6 @@ ruleTester.run("no-sparse-arrays", rule, { }, { messageId: "unexpectedSparseArray", - type: "ArrayExpression", line: 4, column: 2, endLine: 4, @@ -73,7 +69,6 @@ ruleTester.run("no-sparse-arrays", rule, { errors: [ { messageId: "unexpectedSparseArray", - type: "ArrayExpression", line: 1, column: 13, endLine: 1, @@ -81,7 +76,6 @@ ruleTester.run("no-sparse-arrays", rule, { }, { messageId: "unexpectedSparseArray", - type: "ArrayExpression", line: 1, column: 14, endLine: 1, @@ -94,7 +88,6 @@ ruleTester.run("no-sparse-arrays", rule, { errors: [ { messageId: "unexpectedSparseArray", - type: "ArrayExpression", line: 1, column: 2, endLine: 1, @@ -102,7 +95,6 @@ ruleTester.run("no-sparse-arrays", rule, { }, { messageId: "unexpectedSparseArray", - type: "ArrayExpression", line: 1, column: 14, endLine: 1, diff --git a/tests/lib/rules/no-sync.js b/tests/lib/rules/no-sync.js index ed915ba5522c..f904bc75e095 100644 --- a/tests/lib/rules/no-sync.js +++ b/tests/lib/rules/no-sync.js @@ -37,7 +37,6 @@ ruleTester.run("no-sync", rule, { { messageId: "noSync", data: { propertyName: "fooSync" }, - type: "MemberExpression", }, ], }, @@ -48,7 +47,6 @@ ruleTester.run("no-sync", rule, { { messageId: "noSync", data: { propertyName: "fooSync" }, - type: "MemberExpression", }, ], }, @@ -58,7 +56,6 @@ ruleTester.run("no-sync", rule, { { messageId: "noSync", data: { propertyName: "fooSync" }, - type: "MemberExpression", }, ], }, @@ -68,7 +65,6 @@ ruleTester.run("no-sync", rule, { { messageId: "noSync", data: { propertyName: "fooSync" }, - type: "MemberExpression", }, ], }, @@ -78,7 +74,6 @@ ruleTester.run("no-sync", rule, { { messageId: "noSync", data: { propertyName: "fooSync" }, - type: "MemberExpression", }, ], }, @@ -89,7 +84,6 @@ ruleTester.run("no-sync", rule, { { messageId: "noSync", data: { propertyName: "fooSync" }, - type: "MemberExpression", }, ], }, @@ -100,7 +94,6 @@ ruleTester.run("no-sync", rule, { { messageId: "noSync", data: { propertyName: "fooSync" }, - type: "MemberExpression", }, ], }, diff --git a/tests/lib/rules/no-ternary.js b/tests/lib/rules/no-ternary.js index 43496a7159dd..83ba7ccc6a46 100644 --- a/tests/lib/rules/no-ternary.js +++ b/tests/lib/rules/no-ternary.js @@ -26,7 +26,6 @@ ruleTester.run("no-ternary", rule, { errors: [ { messageId: "noTernaryOperator", - type: "ConditionalExpression", }, ], }, @@ -35,7 +34,6 @@ ruleTester.run("no-ternary", rule, { errors: [ { messageId: "noTernaryOperator", - type: "ConditionalExpression", }, ], }, @@ -44,7 +42,6 @@ ruleTester.run("no-ternary", rule, { errors: [ { messageId: "noTernaryOperator", - type: "ConditionalExpression", }, ], }, diff --git a/tests/lib/rules/no-this-before-super.js b/tests/lib/rules/no-this-before-super.js index e33ba78e3ed8..9f7c846688a9 100644 --- a/tests/lib/rules/no-this-before-super.js +++ b/tests/lib/rules/no-this-before-super.js @@ -130,7 +130,6 @@ ruleTester.run("no-this-before-super", rule, { { messageId: "noBeforeSuper", data: { kind: "this" }, - type: "ThisExpression", }, ], }, @@ -140,7 +139,6 @@ ruleTester.run("no-this-before-super", rule, { { messageId: "noBeforeSuper", data: { kind: "this" }, - type: "ThisExpression", }, ], }, @@ -150,7 +148,6 @@ ruleTester.run("no-this-before-super", rule, { { messageId: "noBeforeSuper", data: { kind: "super" }, - type: "Super", }, ], }, @@ -162,7 +159,6 @@ ruleTester.run("no-this-before-super", rule, { { messageId: "noBeforeSuper", data: { kind: "this" }, - type: "ThisExpression", }, ], }, @@ -172,7 +168,6 @@ ruleTester.run("no-this-before-super", rule, { { messageId: "noBeforeSuper", data: { kind: "this" }, - type: "ThisExpression", }, ], }, @@ -182,7 +177,6 @@ ruleTester.run("no-this-before-super", rule, { { messageId: "noBeforeSuper", data: { kind: "super" }, - type: "Super", }, ], }, @@ -194,7 +188,6 @@ ruleTester.run("no-this-before-super", rule, { { messageId: "noBeforeSuper", data: { kind: "this" }, - type: "ThisExpression", }, ], }, @@ -204,7 +197,6 @@ ruleTester.run("no-this-before-super", rule, { { messageId: "noBeforeSuper", data: { kind: "this" }, - type: "ThisExpression", }, ], }, @@ -214,7 +206,6 @@ ruleTester.run("no-this-before-super", rule, { { messageId: "noBeforeSuper", data: { kind: "super" }, - type: "Super", }, ], }, @@ -226,7 +217,6 @@ ruleTester.run("no-this-before-super", rule, { { messageId: "noBeforeSuper", data: { kind: "this" }, - type: "ThisExpression", column: 96, }, ], @@ -237,7 +227,6 @@ ruleTester.run("no-this-before-super", rule, { { messageId: "noBeforeSuper", data: { kind: "this" }, - type: "ThisExpression", column: 73, }, ], @@ -250,7 +239,6 @@ ruleTester.run("no-this-before-super", rule, { { messageId: "noBeforeSuper", data: { kind: "this" }, - type: "ThisExpression", }, ], }, @@ -260,7 +248,6 @@ ruleTester.run("no-this-before-super", rule, { { messageId: "noBeforeSuper", data: { kind: "this" }, - type: "ThisExpression", }, ], }, @@ -270,7 +257,6 @@ ruleTester.run("no-this-before-super", rule, { { messageId: "noBeforeSuper", data: { kind: "this" }, - type: "ThisExpression", }, ], }, @@ -281,7 +267,6 @@ ruleTester.run("no-this-before-super", rule, { { messageId: "noBeforeSuper", data: { kind: "this" }, - type: "ThisExpression", }, ], }, @@ -292,7 +277,6 @@ ruleTester.run("no-this-before-super", rule, { { messageId: "noBeforeSuper", data: { kind: "this" }, - type: "ThisExpression", }, ], }, @@ -303,7 +287,6 @@ ruleTester.run("no-this-before-super", rule, { { messageId: "noBeforeSuper", data: { kind: "this" }, - type: "ThisExpression", }, ], }, @@ -322,7 +305,6 @@ ruleTester.run("no-this-before-super", rule, { { messageId: "noBeforeSuper", data: { kind: "this" }, - type: "ThisExpression", }, ], }, @@ -341,7 +323,6 @@ ruleTester.run("no-this-before-super", rule, { { messageId: "noBeforeSuper", data: { kind: "this" }, - type: "ThisExpression", }, ], }, @@ -360,7 +341,6 @@ ruleTester.run("no-this-before-super", rule, { { messageId: "noBeforeSuper", data: { kind: "this" }, - type: "ThisExpression", }, ], }, @@ -378,7 +358,6 @@ ruleTester.run("no-this-before-super", rule, { { messageId: "noBeforeSuper", data: { kind: "this" }, - type: "ThisExpression", }, ], }, @@ -396,7 +375,6 @@ ruleTester.run("no-this-before-super", rule, { { messageId: "noBeforeSuper", data: { kind: "this" }, - type: "ThisExpression", }, ], }, @@ -416,7 +394,6 @@ ruleTester.run("no-this-before-super", rule, { { messageId: "noBeforeSuper", data: { kind: "this" }, - type: "ThisExpression", }, ], }, diff --git a/tests/lib/rules/no-throw-literal.js b/tests/lib/rules/no-throw-literal.js index de0c210fa16c..93a1a10087b7 100644 --- a/tests/lib/rules/no-throw-literal.js +++ b/tests/lib/rules/no-throw-literal.js @@ -66,7 +66,6 @@ ruleTester.run("no-throw-literal", rule, { errors: [ { messageId: "object", - type: "ThrowStatement", }, ], }, @@ -75,7 +74,6 @@ ruleTester.run("no-throw-literal", rule, { errors: [ { messageId: "object", - type: "ThrowStatement", }, ], }, @@ -84,7 +82,6 @@ ruleTester.run("no-throw-literal", rule, { errors: [ { messageId: "object", - type: "ThrowStatement", }, ], }, @@ -93,7 +90,6 @@ ruleTester.run("no-throw-literal", rule, { errors: [ { messageId: "object", - type: "ThrowStatement", }, ], }, @@ -102,7 +98,6 @@ ruleTester.run("no-throw-literal", rule, { errors: [ { messageId: "object", - type: "ThrowStatement", }, ], }, @@ -111,7 +106,6 @@ ruleTester.run("no-throw-literal", rule, { errors: [ { messageId: "undef", - type: "ThrowStatement", }, ], }, @@ -122,7 +116,6 @@ ruleTester.run("no-throw-literal", rule, { errors: [ { messageId: "object", - type: "ThrowStatement", }, ], }, @@ -131,7 +124,6 @@ ruleTester.run("no-throw-literal", rule, { errors: [ { messageId: "object", - type: "ThrowStatement", }, ], }, @@ -142,7 +134,6 @@ ruleTester.run("no-throw-literal", rule, { errors: [ { messageId: "object", - type: "ThrowStatement", }, ], }, @@ -151,7 +142,6 @@ ruleTester.run("no-throw-literal", rule, { errors: [ { messageId: "object", - type: "ThrowStatement", }, ], }, @@ -160,7 +150,6 @@ ruleTester.run("no-throw-literal", rule, { errors: [ { messageId: "object", - type: "ThrowStatement", }, ], }, @@ -170,7 +159,6 @@ ruleTester.run("no-throw-literal", rule, { errors: [ { messageId: "object", - type: "ThrowStatement", }, ], }, @@ -181,7 +169,6 @@ ruleTester.run("no-throw-literal", rule, { errors: [ { messageId: "object", - type: "ThrowStatement", }, ], }, @@ -192,7 +179,6 @@ ruleTester.run("no-throw-literal", rule, { errors: [ { messageId: "object", - type: "ThrowStatement", }, ], }, @@ -201,7 +187,6 @@ ruleTester.run("no-throw-literal", rule, { errors: [ { messageId: "object", - type: "ThrowStatement", }, ], }, @@ -212,7 +197,6 @@ ruleTester.run("no-throw-literal", rule, { errors: [ { messageId: "object", - type: "ThrowStatement", }, ], }, @@ -224,7 +208,6 @@ ruleTester.run("no-throw-literal", rule, { errors: [ { messageId: "object", - type: "ThrowStatement", }, ], }, diff --git a/tests/lib/rules/no-trailing-spaces.js b/tests/lib/rules/no-trailing-spaces.js index 08a44a231086..997ef19e85c7 100644 --- a/tests/lib/rules/no-trailing-spaces.js +++ b/tests/lib/rules/no-trailing-spaces.js @@ -115,7 +115,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", }, ], }, @@ -137,7 +136,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", }, ], }, @@ -159,7 +157,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", }, ], }, @@ -182,7 +179,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", }, ], }, @@ -198,7 +194,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", }, ], }, @@ -212,7 +207,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", }, ], }, @@ -222,7 +216,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", }, ], }, @@ -232,11 +225,9 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", }, { messageId: "trailingSpace", - type: "Program", }, ], }, @@ -246,11 +237,9 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", }, { messageId: "trailingSpace", - type: "Program", }, ], }, @@ -260,7 +249,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", }, ], }, @@ -270,7 +258,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", }, ], }, @@ -280,7 +267,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", }, ], }, @@ -291,7 +277,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", }, ], }, @@ -302,7 +287,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", line: 1, column: 11, endLine: 1, @@ -310,7 +294,6 @@ ruleTester.run("no-trailing-spaces", rule, { }, { messageId: "trailingSpace", - type: "Program", line: 2, column: 8, endLine: 2, @@ -325,7 +308,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", line: 1, column: 11, endLine: 1, @@ -340,7 +322,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", line: 1, column: 1, endLine: 1, @@ -355,7 +336,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", }, ], }, @@ -370,7 +350,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", line: 1, column: 15, // there are invalid spaces in columns 15 and 16 endLine: 1, @@ -389,7 +368,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", line: 1, column: 15, endLine: 1, @@ -397,7 +375,6 @@ ruleTester.run("no-trailing-spaces", rule, { }, { messageId: "trailingSpace", - type: "Program", line: 2, column: 15, endLine: 2, @@ -412,7 +389,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", line: 3, column: 7, endLine: 3, @@ -427,7 +403,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", line: 4, column: 7, endLine: 4, @@ -435,7 +410,6 @@ ruleTester.run("no-trailing-spaces", rule, { }, { messageId: "trailingSpace", - type: "Program", line: 5, column: 1, endLine: 5, @@ -450,7 +424,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", line: 4, column: 7, endLine: 4, @@ -470,7 +443,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", line: 3, column: 7, endLine: 3, @@ -487,7 +459,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", line: 2, column: 8, endLine: 2, @@ -501,7 +472,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", line: 1, column: 1, endLine: 1, @@ -509,7 +479,6 @@ ruleTester.run("no-trailing-spaces", rule, { }, { messageId: "trailingSpace", - type: "Program", line: 2, column: 8, endLine: 2, @@ -526,7 +495,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", line: 1, column: 17, endLine: 1, @@ -541,7 +509,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", line: 1, column: 6, }, @@ -554,7 +521,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", line: 1, column: 9, }, @@ -567,7 +533,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", line: 2, column: 4, }, @@ -580,7 +545,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", line: 2, column: 8, }, @@ -593,7 +557,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", line: 1, column: 26, endLine: 1, @@ -608,7 +571,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", line: 1, column: 3, endLine: 1, @@ -616,7 +578,6 @@ ruleTester.run("no-trailing-spaces", rule, { }, { messageId: "trailingSpace", - type: "Program", line: 2, column: 24, endLine: 2, @@ -631,7 +592,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", line: 1, column: 20, endLine: 1, @@ -646,7 +606,6 @@ ruleTester.run("no-trailing-spaces", rule, { errors: [ { messageId: "trailingSpace", - type: "Program", line: 1, column: 34, endLine: 1, diff --git a/tests/lib/rules/no-undef-init.js b/tests/lib/rules/no-undef-init.js index 614dbddcb645..8a7b965801c8 100644 --- a/tests/lib/rules/no-undef-init.js +++ b/tests/lib/rules/no-undef-init.js @@ -53,7 +53,6 @@ ruleTester.run("no-undef-init", rule, { { messageId: "unnecessaryUndefinedInit", data: { name: "a" }, - type: "VariableDeclarator", }, ], }, @@ -64,7 +63,6 @@ ruleTester.run("no-undef-init", rule, { { messageId: "unnecessaryUndefinedInit", data: { name: "a" }, - type: "VariableDeclarator", }, ], }, @@ -75,7 +73,6 @@ ruleTester.run("no-undef-init", rule, { { messageId: "unnecessaryUndefinedInit", data: { name: "b" }, - type: "VariableDeclarator", }, ], }, @@ -87,7 +84,6 @@ ruleTester.run("no-undef-init", rule, { { messageId: "unnecessaryUndefinedInit", data: { name: "[a]" }, - type: "VariableDeclarator", }, ], }, @@ -99,7 +95,6 @@ ruleTester.run("no-undef-init", rule, { { messageId: "unnecessaryUndefinedInit", data: { name: "{a}" }, - type: "VariableDeclarator", }, ], }, @@ -110,7 +105,6 @@ ruleTester.run("no-undef-init", rule, { { messageId: "unnecessaryUndefinedInit", data: { name: "a" }, - type: "VariableDeclarator", }, ], }, @@ -122,7 +116,6 @@ ruleTester.run("no-undef-init", rule, { { messageId: "unnecessaryUndefinedInit", data: { name: "a" }, - type: "VariableDeclarator", }, ], }, @@ -134,7 +127,6 @@ ruleTester.run("no-undef-init", rule, { { messageId: "unnecessaryUndefinedInit", data: { name: "a" }, - type: "VariableDeclarator", }, ], }, @@ -146,7 +138,6 @@ ruleTester.run("no-undef-init", rule, { { messageId: "unnecessaryUndefinedInit", data: { name: "b" }, - type: "VariableDeclarator", }, ], }, @@ -158,7 +149,6 @@ ruleTester.run("no-undef-init", rule, { { messageId: "unnecessaryUndefinedInit", data: { name: "[a]" }, - type: "VariableDeclarator", }, ], }, @@ -170,7 +160,6 @@ ruleTester.run("no-undef-init", rule, { { messageId: "unnecessaryUndefinedInit", data: { name: "{a}" }, - type: "VariableDeclarator", }, ], }, @@ -182,7 +171,6 @@ ruleTester.run("no-undef-init", rule, { { messageId: "unnecessaryUndefinedInit", data: { name: "a" }, - type: "VariableDeclarator", }, ], }, @@ -196,7 +184,6 @@ ruleTester.run("no-undef-init", rule, { { messageId: "unnecessaryUndefinedInit", data: { name: "a" }, - type: "VariableDeclarator", }, ], }, @@ -208,7 +195,6 @@ ruleTester.run("no-undef-init", rule, { { messageId: "unnecessaryUndefinedInit", data: { name: "a" }, - type: "VariableDeclarator", }, ], }, @@ -220,7 +206,6 @@ ruleTester.run("no-undef-init", rule, { { messageId: "unnecessaryUndefinedInit", data: { name: "a" }, - type: "VariableDeclarator", }, ], }, @@ -232,7 +217,6 @@ ruleTester.run("no-undef-init", rule, { { messageId: "unnecessaryUndefinedInit", data: { name: "a" }, - type: "VariableDeclarator", }, ], }, @@ -244,7 +228,6 @@ ruleTester.run("no-undef-init", rule, { { messageId: "unnecessaryUndefinedInit", data: { name: "a" }, - type: "VariableDeclarator", }, ], }, @@ -256,7 +239,6 @@ ruleTester.run("no-undef-init", rule, { { messageId: "unnecessaryUndefinedInit", data: { name: "a" }, - type: "VariableDeclarator", }, ], }, @@ -268,7 +250,6 @@ ruleTester.run("no-undef-init", rule, { { messageId: "unnecessaryUndefinedInit", data: { name: "a" }, - type: "VariableDeclarator", }, ], }, @@ -280,7 +261,6 @@ ruleTester.run("no-undef-init", rule, { { messageId: "unnecessaryUndefinedInit", data: { name: "a" }, - type: "VariableDeclarator", }, ], }, @@ -292,7 +272,6 @@ ruleTester.run("no-undef-init", rule, { { messageId: "unnecessaryUndefinedInit", data: { name: "a" }, - type: "VariableDeclarator", }, ], }, diff --git a/tests/lib/rules/no-undef.js b/tests/lib/rules/no-undef.js index 05b6489e7a5d..85714dbcad65 100644 --- a/tests/lib/rules/no-undef.js +++ b/tests/lib/rules/no-undef.js @@ -233,7 +233,10 @@ ruleTester.run("no-undef", rule, { { code: "a = 1;", errors: [ - { messageId: "undef", data: { name: "a" }, type: "Identifier" }, + { + messageId: "undef", + data: { name: "a" }, + }, ], }, { @@ -243,20 +246,25 @@ ruleTester.run("no-undef", rule, { { messageId: "undef", data: { name: "anUndefinedVar" }, - type: "Identifier", }, ], }, { code: "var a = b;", errors: [ - { messageId: "undef", data: { name: "b" }, type: "Identifier" }, + { + messageId: "undef", + data: { name: "b" }, + }, ], }, { code: "function f() { b; }", errors: [ - { messageId: "undef", data: { name: "b" }, type: "Identifier" }, + { + messageId: "undef", + data: { name: "b" }, + }, ], }, { @@ -265,7 +273,6 @@ ruleTester.run("no-undef", rule, { { messageId: "undef", data: { name: "window" }, - type: "Identifier", }, ], }, @@ -275,7 +282,6 @@ ruleTester.run("no-undef", rule, { { messageId: "undef", data: { name: "Intl" }, - type: "Identifier", }, ], }, @@ -285,7 +291,6 @@ ruleTester.run("no-undef", rule, { { messageId: "undef", data: { name: "require" }, - type: "Identifier", }, ], }, diff --git a/tests/lib/rules/no-undefined.js b/tests/lib/rules/no-undefined.js index 139b0018e1a3..a054a67bc7ea 100644 --- a/tests/lib/rules/no-undefined.js +++ b/tests/lib/rules/no-undefined.js @@ -23,7 +23,11 @@ const ES6_MODULE = { ecmaVersion: 6, sourceType: "module" }; // Tests //------------------------------------------------------------------------------ -const errors = [{ messageId: "unexpectedUndefined", type: "Identifier" }]; +const errors = [ + { + messageId: "unexpectedUndefined", + }, +]; const ruleTester = new RuleTester({ languageOptions: ES6_SCRIPT }); diff --git a/tests/lib/rules/no-underscore-dangle.js b/tests/lib/rules/no-underscore-dangle.js index 34c40d6fd9d1..c988079b34dd 100644 --- a/tests/lib/rules/no-underscore-dangle.js +++ b/tests/lib/rules/no-underscore-dangle.js @@ -294,7 +294,6 @@ ruleTester.run("no-underscore-dangle", rule, { { messageId: "unexpectedUnderscore", data: { identifier: "_foo" }, - type: "VariableDeclarator", }, ], }, @@ -304,7 +303,6 @@ ruleTester.run("no-underscore-dangle", rule, { { messageId: "unexpectedUnderscore", data: { identifier: "foo_" }, - type: "VariableDeclarator", }, ], }, @@ -314,7 +312,6 @@ ruleTester.run("no-underscore-dangle", rule, { { messageId: "unexpectedUnderscore", data: { identifier: "_foo" }, - type: "FunctionDeclaration", }, ], }, @@ -324,7 +321,6 @@ ruleTester.run("no-underscore-dangle", rule, { { messageId: "unexpectedUnderscore", data: { identifier: "foo_" }, - type: "FunctionDeclaration", }, ], }, @@ -334,7 +330,6 @@ ruleTester.run("no-underscore-dangle", rule, { { messageId: "unexpectedUnderscore", data: { identifier: "__proto__" }, - type: "VariableDeclarator", }, ], }, @@ -344,7 +339,6 @@ ruleTester.run("no-underscore-dangle", rule, { { messageId: "unexpectedUnderscore", data: { identifier: "_bar" }, - type: "MemberExpression", }, ], }, @@ -354,7 +348,6 @@ ruleTester.run("no-underscore-dangle", rule, { { messageId: "unexpectedUnderscore", data: { identifier: "_prop" }, - type: "MemberExpression", }, ], }, @@ -365,7 +358,6 @@ ruleTester.run("no-underscore-dangle", rule, { { messageId: "unexpectedUnderscore", data: { identifier: "_prop" }, - type: "MemberExpression", }, ], }, @@ -377,7 +369,6 @@ ruleTester.run("no-underscore-dangle", rule, { { messageId: "unexpectedUnderscore", data: { identifier: "_prop" }, - type: "MemberExpression", }, ], }, @@ -389,7 +380,6 @@ ruleTester.run("no-underscore-dangle", rule, { { messageId: "unexpectedUnderscore", data: { identifier: "_onClick" }, - type: "MethodDefinition", }, ], }, @@ -401,7 +391,6 @@ ruleTester.run("no-underscore-dangle", rule, { { messageId: "unexpectedUnderscore", data: { identifier: "onClick_" }, - type: "MethodDefinition", }, ], }, @@ -413,7 +402,6 @@ ruleTester.run("no-underscore-dangle", rule, { { messageId: "unexpectedUnderscore", data: { identifier: "_onClick" }, - type: "Property", }, ], }, @@ -425,7 +413,6 @@ ruleTester.run("no-underscore-dangle", rule, { { messageId: "unexpectedUnderscore", data: { identifier: "onClick_" }, - type: "Property", }, ], }, @@ -435,7 +422,6 @@ ruleTester.run("no-underscore-dangle", rule, { { messageId: "unexpectedUnderscore", data: { identifier: "_bar" }, - type: "MemberExpression", }, ], }, @@ -446,7 +432,6 @@ ruleTester.run("no-underscore-dangle", rule, { { messageId: "unexpectedUnderscore", data: { identifier: "_bar" }, - type: "Identifier", }, ], }, @@ -457,7 +442,6 @@ ruleTester.run("no-underscore-dangle", rule, { { messageId: "unexpectedUnderscore", data: { identifier: "_bar" }, - type: "Identifier", }, ], }, @@ -468,7 +452,6 @@ ruleTester.run("no-underscore-dangle", rule, { { messageId: "unexpectedUnderscore", data: { identifier: "_foo" }, - type: "Identifier", }, ], }, @@ -480,7 +463,6 @@ ruleTester.run("no-underscore-dangle", rule, { { messageId: "unexpectedUnderscore", data: { identifier: "_bar" }, - type: "Identifier", }, ], }, @@ -492,7 +474,6 @@ ruleTester.run("no-underscore-dangle", rule, { { messageId: "unexpectedUnderscore", data: { identifier: "_bar" }, - type: "Identifier", }, ], }, @@ -504,7 +485,6 @@ ruleTester.run("no-underscore-dangle", rule, { { messageId: "unexpectedUnderscore", data: { identifier: "_bar" }, - type: "AssignmentPattern", }, ], }, @@ -516,7 +496,6 @@ ruleTester.run("no-underscore-dangle", rule, { { messageId: "unexpectedUnderscore", data: { identifier: "_bar" }, - type: "AssignmentPattern", }, ], }, @@ -528,7 +507,6 @@ ruleTester.run("no-underscore-dangle", rule, { { messageId: "unexpectedUnderscore", data: { identifier: "_bar" }, - type: "AssignmentPattern", }, ], }, @@ -540,7 +518,6 @@ ruleTester.run("no-underscore-dangle", rule, { { messageId: "unexpectedUnderscore", data: { identifier: "_bar" }, - type: "RestElement", }, ], }, @@ -552,7 +529,6 @@ ruleTester.run("no-underscore-dangle", rule, { { messageId: "unexpectedUnderscore", data: { identifier: "_bar" }, - type: "RestElement", }, ], }, @@ -564,7 +540,6 @@ ruleTester.run("no-underscore-dangle", rule, { { messageId: "unexpectedUnderscore", data: { identifier: "_bar" }, - type: "RestElement", }, ], }, diff --git a/tests/lib/rules/no-unneeded-ternary.js b/tests/lib/rules/no-unneeded-ternary.js index 687ea26d4efb..6e43be541388 100644 --- a/tests/lib/rules/no-unneeded-ternary.js +++ b/tests/lib/rules/no-unneeded-ternary.js @@ -54,7 +54,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalExpression", - type: "ConditionalExpression", line: 1, column: 9, endLine: 1, @@ -68,7 +67,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalExpression", - type: "ConditionalExpression", line: 1, column: 9, endLine: 1, @@ -82,7 +80,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalExpression", - type: "ConditionalExpression", line: 1, column: 9, endLine: 1, @@ -96,7 +93,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalExpression", - type: "ConditionalExpression", line: 1, column: 9, endLine: 1, @@ -110,7 +106,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalExpression", - type: "ConditionalExpression", line: 1, column: 9, endLine: 1, @@ -124,7 +119,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalExpression", - type: "ConditionalExpression", line: 1, column: 9, endLine: 1, @@ -138,7 +132,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalExpression", - type: "ConditionalExpression", line: 1, column: 9, endLine: 1, @@ -152,7 +145,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalExpression", - type: "ConditionalExpression", line: 1, column: 9, endLine: 1, @@ -166,7 +158,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalExpression", - type: "ConditionalExpression", line: 1, column: 9, endLine: 1, @@ -180,7 +171,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalExpression", - type: "ConditionalExpression", line: 1, column: 9, endLine: 1, @@ -194,7 +184,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalExpression", - type: "ConditionalExpression", line: 1, column: 9, endLine: 1, @@ -208,7 +197,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalExpression", - type: "ConditionalExpression", line: 1, column: 9, endLine: 1, @@ -222,7 +210,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalExpression", - type: "ConditionalExpression", line: 1, column: 9, endLine: 1, @@ -245,7 +232,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalAssignment", - type: "ConditionalExpression", line: 4, column: 30, endLine: 4, @@ -260,7 +246,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalAssignment", - type: "ConditionalExpression", line: 1, column: 1, endLine: 1, @@ -276,7 +261,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalAssignment", - type: "ConditionalExpression", line: 1, column: 18, endLine: 1, @@ -291,7 +275,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalAssignment", - type: "ConditionalExpression", line: 1, column: 9, endLine: 1, @@ -306,7 +289,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalAssignment", - type: "ConditionalExpression", line: 1, column: 9, endLine: 1, @@ -322,7 +304,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalAssignment", - type: "ConditionalExpression", line: 1, column: 9, endLine: 1, @@ -338,7 +319,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalAssignment", - type: "ConditionalExpression", line: 1, column: 9, endLine: 1, @@ -354,7 +334,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalAssignment", - type: "ConditionalExpression", line: 1, column: 9, endLine: 1, @@ -370,7 +349,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalAssignment", - type: "ConditionalExpression", line: 1, column: 9, endLine: 1, @@ -386,7 +364,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalAssignment", - type: "ConditionalExpression", line: 1, column: 9, endLine: 1, @@ -402,7 +379,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalAssignment", - type: "ConditionalExpression", line: 1, column: 9, endLine: 1, @@ -418,7 +394,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalAssignment", - type: "ConditionalExpression", line: 1, column: 9, endLine: 1, @@ -433,7 +408,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalAssignment", - type: "ConditionalExpression", line: 1, column: 3, endLine: 1, @@ -448,7 +422,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalAssignment", - type: "ConditionalExpression", line: 1, column: 1, endLine: 1, @@ -463,7 +436,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalAssignment", - type: "ConditionalExpression", line: 1, column: 9, endLine: 1, @@ -479,7 +451,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalAssignment", - type: "ConditionalExpression", line: 1, column: 9, endLine: 1, @@ -501,7 +472,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalExpression", - type: "ConditionalExpression", }, ], }, @@ -518,7 +488,6 @@ ruleTester.run("no-unneeded-ternary", rule, { errors: [ { messageId: "unnecessaryConditionalAssignment", - type: "ConditionalExpression", }, ], }, diff --git a/tests/lib/rules/no-unreachable-loop.js b/tests/lib/rules/no-unreachable-loop.js index 32536c9f59f6..8bab699559b0 100644 --- a/tests/lib/rules/no-unreachable-loop.js +++ b/tests/lib/rules/no-unreachable-loop.js @@ -166,11 +166,15 @@ function* getBasicValidTests() { * @returns {IterableIterator} The list of objects for the invalid[] array. */ function* getBasicInvalidTests() { - for (const [type, templates] of Object.entries(loopTemplates)) { + for (const templates of Object.values(loopTemplates)) { for (const template of templates) { yield* invalidLoopBodies.map(body => ({ code: getSourceCode(template, body), - errors: [{ type, messageId: "invalid" }], + errors: [ + { + messageId: "invalid", + }, + ], })); } } @@ -230,7 +234,6 @@ ruleTester.run("no-unreachable-loop", rule, { errors: [ { messageId: "invalid", - type: "ForOfStatement", }, ], }, @@ -239,7 +242,6 @@ ruleTester.run("no-unreachable-loop", rule, { errors: [ { messageId: "invalid", - type: "WhileStatement", }, ], }, @@ -250,11 +252,9 @@ ruleTester.run("no-unreachable-loop", rule, { errors: [ { messageId: "invalid", - type: "ForInStatement", }, { messageId: "invalid", - type: "WhileStatement", }, ], }, @@ -265,11 +265,9 @@ ruleTester.run("no-unreachable-loop", rule, { errors: [ { messageId: "invalid", - type: "ForStatement", }, { messageId: "invalid", - type: "DoWhileStatement", }, ], }, @@ -278,11 +276,9 @@ ruleTester.run("no-unreachable-loop", rule, { errors: [ { messageId: "invalid", - type: "WhileStatement", }, { messageId: "invalid", - type: "DoWhileStatement", }, ], }, @@ -293,7 +289,6 @@ ruleTester.run("no-unreachable-loop", rule, { errors: [ { messageId: "invalid", - type: "WhileStatement", }, ], }, @@ -304,7 +299,6 @@ ruleTester.run("no-unreachable-loop", rule, { errors: [ { messageId: "invalid", - type: "ForOfStatement", }, ], }, @@ -313,7 +307,6 @@ ruleTester.run("no-unreachable-loop", rule, { errors: [ { messageId: "invalid", - type: "ForInStatement", }, ], }, @@ -324,7 +317,6 @@ ruleTester.run("no-unreachable-loop", rule, { errors: [ { messageId: "invalid", - type: "ForStatement", }, ], }, @@ -333,7 +325,6 @@ ruleTester.run("no-unreachable-loop", rule, { errors: [ { messageId: "invalid", - type: "DoWhileStatement", }, ], }, @@ -342,7 +333,6 @@ ruleTester.run("no-unreachable-loop", rule, { errors: [ { messageId: "invalid", - type: "ForStatement", column: 12, }, ], @@ -355,23 +345,18 @@ ruleTester.run("no-unreachable-loop", rule, { errors: [ { messageId: "invalid", - type: "WhileStatement", }, { messageId: "invalid", - type: "DoWhileStatement", }, { messageId: "invalid", - type: "ForStatement", }, { messageId: "invalid", - type: "ForInStatement", }, { messageId: "invalid", - type: "ForOfStatement", }, ], }, @@ -381,7 +366,6 @@ ruleTester.run("no-unreachable-loop", rule, { errors: [ { messageId: "invalid", - type: "WhileStatement", }, ], }, @@ -391,7 +375,6 @@ ruleTester.run("no-unreachable-loop", rule, { errors: [ { messageId: "invalid", - type: "DoWhileStatement", }, ], }, @@ -401,11 +384,9 @@ ruleTester.run("no-unreachable-loop", rule, { errors: [ { messageId: "invalid", - type: "ForInStatement", }, { messageId: "invalid", - type: "ForOfStatement", }, ], }, @@ -415,7 +396,6 @@ ruleTester.run("no-unreachable-loop", rule, { errors: [ { messageId: "invalid", - type: "ForStatement", }, ], }, diff --git a/tests/lib/rules/no-unreachable.js b/tests/lib/rules/no-unreachable.js index 14cd9ec573dd..f1b16e47b709 100644 --- a/tests/lib/rules/no-unreachable.js +++ b/tests/lib/rules/no-unreachable.js @@ -96,121 +96,161 @@ ruleTester.run("no-unreachable", rule, { { code: "function foo() { return x; var x = 1; }", errors: [ - { messageId: "unreachableCode", type: "VariableDeclaration" }, + { + messageId: "unreachableCode", + }, ], }, { code: "function foo() { return x; var x, y = 1; }", errors: [ - { messageId: "unreachableCode", type: "VariableDeclaration" }, + { + messageId: "unreachableCode", + }, ], }, { code: "while (true) { continue; var x = 1; }", errors: [ - { messageId: "unreachableCode", type: "VariableDeclaration" }, + { + messageId: "unreachableCode", + }, ], }, { code: "function foo() { return; x = 1; }", errors: [ - { messageId: "unreachableCode", type: "ExpressionStatement" }, + { + messageId: "unreachableCode", + }, ], }, { code: "function foo() { throw error; x = 1; }", errors: [ - { messageId: "unreachableCode", type: "ExpressionStatement" }, + { + messageId: "unreachableCode", + }, ], }, { code: "while (true) { break; x = 1; }", errors: [ - { messageId: "unreachableCode", type: "ExpressionStatement" }, + { + messageId: "unreachableCode", + }, ], }, { code: "while (true) { continue; x = 1; }", errors: [ - { messageId: "unreachableCode", type: "ExpressionStatement" }, + { + messageId: "unreachableCode", + }, ], }, { code: "function foo() { switch (foo) { case 1: return; x = 1; } }", errors: [ - { messageId: "unreachableCode", type: "ExpressionStatement" }, + { + messageId: "unreachableCode", + }, ], }, { code: "function foo() { switch (foo) { case 1: throw e; x = 1; } }", errors: [ - { messageId: "unreachableCode", type: "ExpressionStatement" }, + { + messageId: "unreachableCode", + }, ], }, { code: "while (true) { switch (foo) { case 1: break; x = 1; } }", errors: [ - { messageId: "unreachableCode", type: "ExpressionStatement" }, + { + messageId: "unreachableCode", + }, ], }, { code: "while (true) { switch (foo) { case 1: continue; x = 1; } }", errors: [ - { messageId: "unreachableCode", type: "ExpressionStatement" }, + { + messageId: "unreachableCode", + }, ], }, { code: "var x = 1; throw 'uh oh'; var y = 2;", errors: [ - { messageId: "unreachableCode", type: "VariableDeclaration" }, + { + messageId: "unreachableCode", + }, ], }, { code: "function foo() { var x = 1; if (x) { return; } else { throw e; } x = 2; }", errors: [ - { messageId: "unreachableCode", type: "ExpressionStatement" }, + { + messageId: "unreachableCode", + }, ], }, { code: "function foo() { var x = 1; if (x) return; else throw -1; x = 2; }", errors: [ - { messageId: "unreachableCode", type: "ExpressionStatement" }, + { + messageId: "unreachableCode", + }, ], }, { code: "function foo() { var x = 1; try { return; } finally {} x = 2; }", errors: [ - { messageId: "unreachableCode", type: "ExpressionStatement" }, + { + messageId: "unreachableCode", + }, ], }, { code: "function foo() { var x = 1; try { } finally { return; } x = 2; }", errors: [ - { messageId: "unreachableCode", type: "ExpressionStatement" }, + { + messageId: "unreachableCode", + }, ], }, { code: "function foo() { var x = 1; do { return; } while (x); x = 2; }", errors: [ - { messageId: "unreachableCode", type: "ExpressionStatement" }, + { + messageId: "unreachableCode", + }, ], }, { code: "function foo() { var x = 1; while (x) { if (x) break; else continue; x = 2; } }", errors: [ - { messageId: "unreachableCode", type: "ExpressionStatement" }, + { + messageId: "unreachableCode", + }, ], }, { code: "function foo() { var x = 1; for (;;) { if (x) continue; } x = 2; }", errors: [ - { messageId: "unreachableCode", type: "ExpressionStatement" }, + { + messageId: "unreachableCode", + }, ], }, { code: "function foo() { var x = 1; while (true) { } x = 2; }", errors: [ - { messageId: "unreachableCode", type: "ExpressionStatement" }, + { + messageId: "unreachableCode", + }, ], }, { @@ -219,7 +259,6 @@ ruleTester.run("no-unreachable", rule, { errors: [ { messageId: "unreachableCode", - type: "ExpressionStatement", line: 1, column: 86, endLine: 1, @@ -244,7 +283,6 @@ ruleTester.run("no-unreachable", rule, { errors: [ { messageId: "unreachableCode", - type: "ExpressionStatement", line: 5, column: 21, endLine: 9, @@ -269,7 +307,6 @@ ruleTester.run("no-unreachable", rule, { errors: [ { messageId: "unreachableCode", - type: "ExpressionStatement", line: 5, column: 21, endLine: 11, @@ -293,7 +330,6 @@ ruleTester.run("no-unreachable", rule, { errors: [ { messageId: "unreachableCode", - type: "ExpressionStatement", line: 5, column: 25, endLine: 6, @@ -301,7 +337,6 @@ ruleTester.run("no-unreachable", rule, { }, { messageId: "unreachableCode", - type: "ExpressionStatement", line: 9, column: 25, endLine: 9, @@ -326,7 +361,6 @@ ruleTester.run("no-unreachable", rule, { errors: [ { messageId: "unreachableCode", - type: "ExpressionStatement", line: 5, column: 25, endLine: 6, @@ -334,7 +368,6 @@ ruleTester.run("no-unreachable", rule, { }, { messageId: "unreachableCode", - type: "ExpressionStatement", line: 9, column: 25, endLine: 9, @@ -342,7 +375,6 @@ ruleTester.run("no-unreachable", rule, { }, { messageId: "unreachableCode", - type: "ExpressionStatement", line: 11, column: 21, endLine: 11, @@ -365,7 +397,6 @@ ruleTester.run("no-unreachable", rule, { errors: [ { messageId: "unreachableCode", - type: "BlockStatement", line: 5, column: 35, endLine: 7, @@ -388,7 +419,6 @@ ruleTester.run("no-unreachable", rule, { errors: [ { messageId: "unreachableCode", - type: "BlockStatement", line: 5, column: 35, endLine: 7, @@ -412,7 +442,6 @@ ruleTester.run("no-unreachable", rule, { errors: [ { messageId: "unreachableCode", - type: "VariableDeclaration", line: 5, column: 25, endLine: 5, @@ -420,7 +449,6 @@ ruleTester.run("no-unreachable", rule, { }, { messageId: "unreachableCode", - type: "BlockStatement", line: 6, column: 35, endLine: 8, diff --git a/tests/lib/rules/no-unsafe-finally.js b/tests/lib/rules/no-unsafe-finally.js index c635d72402d4..49abc608d6aa 100644 --- a/tests/lib/rules/no-unsafe-finally.js +++ b/tests/lib/rules/no-unsafe-finally.js @@ -50,7 +50,6 @@ ruleTester.run("no-unsafe-finally", rule, { { messageId: "unsafeUsage", data: { nodeType: "ReturnStatement" }, - type: "ReturnStatement", line: 7, column: 2, }, @@ -62,14 +61,12 @@ ruleTester.run("no-unsafe-finally", rule, { { messageId: "unsafeUsage", data: { nodeType: "ReturnStatement" }, - type: "ReturnStatement", line: 1, column: 86, }, { messageId: "unsafeUsage", data: { nodeType: "ReturnStatement" }, - type: "ReturnStatement", line: 1, column: 104, }, @@ -81,7 +78,6 @@ ruleTester.run("no-unsafe-finally", rule, { { messageId: "unsafeUsage", data: { nodeType: "ReturnStatement" }, - type: "ReturnStatement", line: 1, column: 75, }, @@ -93,7 +89,6 @@ ruleTester.run("no-unsafe-finally", rule, { { messageId: "unsafeUsage", data: { nodeType: "ReturnStatement" }, - type: "ReturnStatement", line: 1, column: 75, }, @@ -105,7 +100,6 @@ ruleTester.run("no-unsafe-finally", rule, { { messageId: "unsafeUsage", data: { nodeType: "ReturnStatement" }, - type: "ReturnStatement", line: 1, column: 75, }, @@ -117,7 +111,6 @@ ruleTester.run("no-unsafe-finally", rule, { { messageId: "unsafeUsage", data: { nodeType: "ThrowStatement" }, - type: "ThrowStatement", line: 1, column: 75, }, @@ -129,7 +122,6 @@ ruleTester.run("no-unsafe-finally", rule, { { messageId: "unsafeUsage", data: { nodeType: "ReturnStatement" }, - type: "ReturnStatement", line: 1, column: 74, }, @@ -141,7 +133,6 @@ ruleTester.run("no-unsafe-finally", rule, { { messageId: "unsafeUsage", data: { nodeType: "BreakStatement" }, - type: "BreakStatement", line: 1, column: 59, }, @@ -153,7 +144,6 @@ ruleTester.run("no-unsafe-finally", rule, { { messageId: "unsafeUsage", data: { nodeType: "BreakStatement" }, - type: "BreakStatement", line: 7, column: 2, }, @@ -165,7 +155,6 @@ ruleTester.run("no-unsafe-finally", rule, { { messageId: "unsafeUsage", data: { nodeType: "BreakStatement" }, - type: "BreakStatement", line: 1, column: 54, }, @@ -177,7 +166,6 @@ ruleTester.run("no-unsafe-finally", rule, { { messageId: "unsafeUsage", data: { nodeType: "ContinueStatement" }, - type: "ContinueStatement", line: 1, column: 54, }, @@ -189,7 +177,6 @@ ruleTester.run("no-unsafe-finally", rule, { { messageId: "unsafeUsage", data: { nodeType: "BreakStatement" }, - type: "BreakStatement", line: 1, column: 68, }, @@ -201,7 +188,6 @@ ruleTester.run("no-unsafe-finally", rule, { { messageId: "unsafeUsage", data: { nodeType: "BreakStatement" }, - type: "BreakStatement", line: 1, column: 84, }, @@ -213,7 +199,6 @@ ruleTester.run("no-unsafe-finally", rule, { { messageId: "unsafeUsage", data: { nodeType: "ContinueStatement" }, - type: "ContinueStatement", line: 1, column: 84, }, @@ -225,7 +210,6 @@ ruleTester.run("no-unsafe-finally", rule, { { messageId: "unsafeUsage", data: { nodeType: "BreakStatement" }, - type: "BreakStatement", line: 1, column: 98, }, diff --git a/tests/lib/rules/no-unsafe-optional-chaining.js b/tests/lib/rules/no-unsafe-optional-chaining.js index e0c54f4d2c4c..14f42c69aeed 100644 --- a/tests/lib/rules/no-unsafe-optional-chaining.js +++ b/tests/lib/rules/no-unsafe-optional-chaining.js @@ -280,7 +280,9 @@ ruleTester.run("no-unsafe-optional-chaining", rule, { ].map(code => ({ code, errors: [ - { messageId: "unsafeOptionalChain", type: "ChainExpression" }, + { + messageId: "unsafeOptionalChain", + }, ], })), { @@ -288,13 +290,11 @@ ruleTester.run("no-unsafe-optional-chaining", rule, { errors: [ { messageId: "unsafeOptionalChain", - type: "ChainExpression", line: 1, column: 2, }, { messageId: "unsafeOptionalChain", - type: "ChainExpression", line: 1, column: 14, }, @@ -308,7 +308,6 @@ ruleTester.run("no-unsafe-optional-chaining", rule, { errors: [ { messageId: "unsafeOptionalChain", - type: "ChainExpression", line: 1, column: 7, }, @@ -322,7 +321,6 @@ ruleTester.run("no-unsafe-optional-chaining", rule, { errors: [ { messageId: "unsafeOptionalChain", - type: "ChainExpression", line: 1, column: 37, }, @@ -333,13 +331,11 @@ ruleTester.run("no-unsafe-optional-chaining", rule, { errors: [ { messageId: "unsafeOptionalChain", - type: "ChainExpression", line: 1, column: 8, }, { messageId: "unsafeOptionalChain", - type: "ChainExpression", line: 1, column: 19, }, @@ -382,7 +378,9 @@ ruleTester.run("no-unsafe-optional-chaining", rule, { code, options: [{ disallowArithmeticOperators: true }], errors: [ - { messageId: "unsafeArithmetic", type: "ChainExpression" }, + { + messageId: "unsafeArithmetic", + }, ], })), ], diff --git a/tests/lib/rules/no-unused-expressions.js b/tests/lib/rules/no-unused-expressions.js index b143edf7d9b9..834ff6d17897 100644 --- a/tests/lib/rules/no-unused-expressions.js +++ b/tests/lib/rules/no-unused-expressions.js @@ -154,55 +154,73 @@ ruleTester.run("no-unused-expressions", rule, { { code: "0", errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, { code: "a", errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, { code: "f(), 0", errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, { code: "{0}", errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, { code: "[]", errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, { code: "a && b();", errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, { code: "a() || false", errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, { code: "a || (b = c)", errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, { code: "a ? b() || (c = d) : e", errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, { @@ -219,91 +237,119 @@ ruleTester.run("no-unused-expressions", rule, { code: "a && b()", options: [{ allowTernary: true }], errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, { code: "a ? b() : c()", options: [{ allowShortCircuit: true }], errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, { code: "a || b", options: [{ allowShortCircuit: true }], errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, { code: "a() && b", options: [{ allowShortCircuit: true }], errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, { code: "a ? b : 0", options: [{ allowTernary: true }], errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, { code: "a ? b : c()", options: [{ allowTernary: true }], errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, { code: "foo.bar;", errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, { code: "!a", errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, { code: "+a", errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, { code: '"directive one"; f(); "directive two";', errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, { code: 'function foo() {"directive one"; f(); "directive two"; }', errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, { code: 'if (0) { "not a directive"; f(); }', errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, { code: 'function foo() { var foo = true; "use strict"; }', errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, { code: 'var foo = () => { var foo = true; "use strict"; }', languageOptions: { ecmaVersion: 6 }, errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, { @@ -330,21 +376,27 @@ ruleTester.run("no-unused-expressions", rule, { code: "obj?.foo", languageOptions: { ecmaVersion: 2020 }, errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, { code: "obj?.foo.bar", languageOptions: { ecmaVersion: 2020 }, errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, { code: "obj?.foo().bar", languageOptions: { ecmaVersion: 2020 }, errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, @@ -354,7 +406,9 @@ ruleTester.run("no-unused-expressions", rule, { options: [{ enforceForJSX: true }], languageOptions: { parserOptions: { ecmaFeatures: { jsx: true } } }, errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, { @@ -362,7 +416,9 @@ ruleTester.run("no-unused-expressions", rule, { options: [{ enforceForJSX: true }], languageOptions: { parserOptions: { ecmaFeatures: { jsx: true } } }, errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, @@ -371,7 +427,9 @@ ruleTester.run("no-unused-expressions", rule, { code: "class C { static { 'use strict'; } }", languageOptions: { ecmaVersion: 2022 }, errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, { @@ -380,12 +438,10 @@ ruleTester.run("no-unused-expressions", rule, { errors: [ { messageId: "unusedExpression", - type: "ExpressionStatement", line: 2, }, { messageId: "unusedExpression", - type: "ExpressionStatement", line: 3, }, ], @@ -394,37 +450,51 @@ ruleTester.run("no-unused-expressions", rule, { code: "foo;", options: [{ ignoreDirectives: true }], errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, { code: '"use strict";', languageOptions: { ecmaVersion: 3, sourceType: "script" }, errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, { code: '"directive one"; "directive two"; f();', languageOptions: { ecmaVersion: 3, sourceType: "script" }, errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, + { + messageId: "unusedExpression", + }, ], }, { code: 'function foo() {"use strict"; return true; }', languageOptions: { ecmaVersion: 3, sourceType: "script" }, errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, ], }, { code: 'function foo() {"directive one"; "directive two"; f(); }', languageOptions: { ecmaVersion: 3, sourceType: "script" }, errors: [ - { messageId: "unusedExpression", type: "ExpressionStatement" }, - { messageId: "unusedExpression", type: "ExpressionStatement" }, + { + messageId: "unusedExpression", + }, + { + messageId: "unusedExpression", + }, ], }, ], diff --git a/tests/lib/rules/no-unused-vars.js b/tests/lib/rules/no-unused-vars.js index 2d8a24a41954..d0f1f7ad24c1 100644 --- a/tests/lib/rules/no-unused-vars.js +++ b/tests/lib/rules/no-unused-vars.js @@ -53,15 +53,9 @@ const ruleTester = new RuleTester({ * @param {string} varName The name of the variable * @param {Array} suggestions The suggestions for the unused variable * @param {string} [additional] The additional text for the message data - * @param {string} [type] The node type (defaults to "Identifier") * @returns {Object} An expected error object */ -function definedError( - varName, - suggestions = [], - additional = "", - type = "Identifier", -) { +function definedError(varName, suggestions = [], additional = "") { return { messageId: "unusedVar", data: { @@ -69,7 +63,6 @@ function definedError( action: "defined", additional, }, - type, suggestions, }; } @@ -79,15 +72,9 @@ function definedError( * @param {string} varName The name of the variable * @param {Array} suggestions The suggestions for the unused variable * @param {string} [additional] The additional text for the message data - * @param {string} [type] The node type (defaults to "Identifier") * @returns {Object} An expected error object */ -function assignedError( - varName, - suggestions = [], - additional = "", - type = "Identifier", -) { +function assignedError(varName, suggestions = [], additional = "") { return { messageId: "unusedVar", data: { @@ -95,7 +82,6 @@ function assignedError( action: "assigned a value", additional, }, - type, suggestions, }; } @@ -104,17 +90,15 @@ function assignedError( * Returns an expected error for used-but-ignored variables. * @param {string} varName The name of the variable * @param {string} [additional] The additional text for the message data - * @param {string} [type] The node type (defaults to "Identifier") * @returns {Object} An expected error object */ -function usedIgnoredError(varName, additional = "", type = "Identifier") { +function usedIgnoredError(varName, additional = "") { return { messageId: "usedIgnoredVar", data: { varName, additional, }, - type, }; } @@ -852,7 +836,7 @@ ruleTester.run("no-unused-vars", rule, { }, { code: "/*global a */", - errors: [definedError("a", [], "", "Program")], + errors: [definedError("a", [], "")], }, { code: "function foo(first, second) {\ndoStuff(function() {\nconsole.log(second);});}", @@ -976,7 +960,6 @@ ruleTester.run("no-unused-vars", rule, { messageId: "unusedVar", data: { varName: "foo", action: "defined", additional: "" }, line: 1, - type: "Identifier", suggestions: [ { output: "", diff --git a/tests/lib/rules/no-use-before-define.js b/tests/lib/rules/no-use-before-define.js index 3d6e0a65cbb1..e5e2531a0f9c 100644 --- a/tests/lib/rules/no-use-before-define.js +++ b/tests/lib/rules/no-use-before-define.js @@ -433,7 +433,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -444,7 +443,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -454,7 +452,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -464,7 +461,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -474,7 +470,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -484,12 +479,10 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "a" }, - type: "Identifier", }, { messageId: "usedBeforeDefined", data: { name: "b" }, - type: "Identifier", }, ], }, @@ -500,7 +493,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -511,7 +503,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -522,7 +513,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -532,7 +522,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -542,7 +531,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -553,7 +541,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -564,7 +551,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "A" }, - type: "Identifier", }, ], }, @@ -575,7 +561,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "A" }, - type: "Identifier", }, ], }, @@ -586,7 +571,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "A" }, - type: "Identifier", }, ], }, @@ -597,7 +581,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "A" }, - type: "Identifier", }, ], }, @@ -610,7 +593,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -621,7 +603,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -632,7 +613,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -643,7 +623,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -654,7 +633,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -667,7 +645,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -679,7 +656,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "A" }, - type: "Identifier", }, ], }, @@ -691,7 +667,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "A" }, - type: "Identifier", }, ], }, @@ -703,7 +678,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "A" }, - type: "Identifier", }, ], }, @@ -715,7 +689,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -726,7 +699,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -737,7 +709,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -748,7 +719,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -759,7 +729,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -770,7 +739,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -781,7 +749,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -792,7 +759,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -803,7 +769,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -814,7 +779,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -824,7 +788,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -835,7 +798,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -848,7 +810,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "bar" }, - type: "Identifier", }, ], }, @@ -859,7 +820,6 @@ ruleTester.run("no-use-before-define", rule, { { messageId: "usedBeforeDefined", data: { name: "foo" }, - type: "Identifier", }, ], }, @@ -2315,7 +2275,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "a" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2329,7 +2288,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "a" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2342,7 +2300,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "a" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2355,7 +2312,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "a" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2368,7 +2324,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "a" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2385,12 +2340,10 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "a" }, messageId: "usedBeforeDefined", - type: "Identifier", }, { data: { name: "b" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2404,7 +2357,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "a" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2420,7 +2372,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "a" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2434,7 +2385,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "a" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2451,7 +2401,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "a" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2465,7 +2414,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "a" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2479,7 +2427,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "A" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2495,7 +2442,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "A" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2509,7 +2455,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "A" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2525,7 +2470,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "A" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2543,7 +2487,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "a" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2560,7 +2503,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "a" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2576,7 +2518,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "a" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2594,7 +2535,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "a" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2612,7 +2552,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "a" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2628,7 +2567,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "a" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2643,7 +2581,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "A" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2660,7 +2597,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "A" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2672,7 +2608,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "a" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2683,7 +2618,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "a" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2694,7 +2628,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "a" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2705,7 +2638,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "a" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2716,7 +2648,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "a" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2727,7 +2658,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "a" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2738,7 +2668,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "a" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2749,7 +2678,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "a" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2760,7 +2688,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "a" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2771,7 +2698,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "a" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2784,7 +2710,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "a" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2798,7 +2723,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "a" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2817,7 +2741,6 @@ ruleTesterTypeScript.run("no-use-before-define", rule, { { data: { name: "Foo" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2832,7 +2755,6 @@ type StringOrNumber = string | number; { data: { name: "StringOrNumber" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2851,7 +2773,6 @@ type StringOrNumber = string | number; { data: { name: "Foo" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2872,7 +2793,6 @@ type StringOrNumber = string | number; { data: { name: "Foo" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2891,7 +2811,6 @@ type StringOrNumber = string | number; { data: { name: "baz" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, @@ -2911,7 +2830,6 @@ type StringOrNumber = string | number; { data: { name: "bar" }, messageId: "usedBeforeDefined", - type: "Identifier", }, ], }, diff --git a/tests/lib/rules/no-useless-backreference.js b/tests/lib/rules/no-useless-backreference.js index db45aa2351a6..05228b13c7ef 100644 --- a/tests/lib/rules/no-useless-backreference.js +++ b/tests/lib/rules/no-useless-backreference.js @@ -162,7 +162,6 @@ ruleTester.run("no-useless-backreference", rule, { errors: [ { message: String.raw`Backreference '\2' will be ignored. It references group '(\2a)' from within that group.`, - type: "Literal", }, ], }, @@ -171,7 +170,6 @@ ruleTester.run("no-useless-backreference", rule, { errors: [ { message: String.raw`Backreference '\k' will be ignored. It references group '(?bar)' which appears later in the pattern.`, - type: "Literal", }, ], }, @@ -180,7 +178,6 @@ ruleTester.run("no-useless-backreference", rule, { errors: [ { message: String.raw`Backreference '\1' will be ignored. It references group '(a|bc)' which is in another alternative.`, - type: "CallExpression", }, ], }, @@ -189,7 +186,6 @@ ruleTester.run("no-useless-backreference", rule, { errors: [ { message: String.raw`Backreference '\1' will be ignored. It references group '(?\n)' which is in a negative lookaround.`, - type: "NewExpression", }, ], }, @@ -198,7 +194,6 @@ ruleTester.run("no-useless-backreference", rule, { errors: [ { message: String.raw`Backreference '\1' will be ignored. It references group '(a)' which appears before in the same lookbehind.`, - type: "Literal", }, ], }, @@ -214,7 +209,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(\1)`, otherGroups: "", }, - type: "NewExpression", }, ], }, @@ -228,7 +222,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a\1)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -242,7 +235,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`((a)\1)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -256,7 +248,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a\1b)`, otherGroups: "", }, - type: "NewExpression", }, ], }, @@ -270,7 +261,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`((\1))`, otherGroups: "", }, - type: "CallExpression", }, ], }, @@ -284,7 +274,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(\2)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -298,7 +287,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(?(.)b\1)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -312,7 +300,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(?\k)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -326,7 +313,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(\1)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -340,7 +326,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`((?:\1))`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -354,7 +339,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(\1)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -368,7 +352,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(b\1c)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -382,7 +365,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a|(\1))`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -396,7 +378,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(\2)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -410,7 +391,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(\1)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -424,7 +404,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(\3)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -438,7 +417,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a\1)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -454,7 +432,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -468,7 +445,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -482,7 +458,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -496,7 +471,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`((a))`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -510,7 +484,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -524,7 +497,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`((?:a))`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -538,7 +510,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -552,7 +523,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(b)`, otherGroups: "", }, - type: "CallExpression", }, ], }, @@ -566,7 +536,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(c)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -580,7 +549,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(?a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -594,7 +562,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(c)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -608,7 +575,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(c)`, otherGroups: "", }, - type: "NewExpression", }, ], }, @@ -622,7 +588,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -636,7 +601,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -650,7 +614,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -664,7 +627,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -678,7 +640,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -692,7 +653,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -708,7 +668,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -722,7 +681,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -736,7 +694,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(b|c)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -750,7 +707,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -764,7 +720,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -778,7 +733,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -792,7 +746,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -806,7 +759,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -820,7 +772,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -834,7 +785,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -848,7 +798,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -862,7 +811,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -878,7 +826,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -892,7 +839,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -906,7 +852,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -920,7 +865,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(c)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -934,7 +878,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a(?!b))`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -948,7 +891,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -962,7 +904,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a(?=a))`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -976,7 +917,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -990,7 +930,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(b)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -1004,7 +943,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -1018,7 +956,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -1034,7 +971,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(b)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -1048,7 +984,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -1062,7 +997,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -1076,7 +1010,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(b)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -1090,7 +1023,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -1104,7 +1036,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -1118,7 +1049,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -1132,7 +1062,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -1148,7 +1077,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -1162,7 +1090,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -1178,7 +1105,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, { messageId: "forward", @@ -1187,7 +1113,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(b)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -1201,7 +1126,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, { messageId: "backward", @@ -1210,7 +1134,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -1224,7 +1147,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, { messageId: "intoNegativeLookaround", @@ -1233,7 +1155,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "Literal", }, ], }, @@ -1247,7 +1168,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(b)`, otherGroups: "", }, - type: "Literal", }, { messageId: "nested", @@ -1256,7 +1176,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(\1)`, otherGroups: "", }, - type: "CallExpression", }, ], }, @@ -1272,7 +1191,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "CallExpression", }, ], }, @@ -1288,7 +1206,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`(a)`, otherGroups: "", }, - type: "NewExpression", }, ], }, @@ -1304,7 +1221,6 @@ ruleTester.run("no-useless-backreference", rule, { group: String.raw`([[A--B]])`, otherGroups: "", }, - type: "NewExpression", }, ], }, @@ -1315,7 +1231,6 @@ ruleTester.run("no-useless-backreference", rule, { errors: [ { message: String.raw`Backreference '\k' will be ignored. It references group '(?bar)' and another group which appears later in the pattern.`, - type: "Literal", }, ], }, @@ -1324,7 +1239,6 @@ ruleTester.run("no-useless-backreference", rule, { errors: [ { message: String.raw`Backreference '\k' will be ignored. It references group '(?baz)' which appears later in the pattern.`, - type: "Literal", }, ], }, @@ -1333,7 +1247,6 @@ ruleTester.run("no-useless-backreference", rule, { errors: [ { message: String.raw`Backreference '\k' will be ignored. It references group '(?bar)' and other 2 groups which appears later in the pattern.`, - type: "Literal", }, ], }, @@ -1342,7 +1255,6 @@ ruleTester.run("no-useless-backreference", rule, { errors: [ { message: String.raw`Backreference '\k' will be ignored. It references group '(?baz)' which appears later in the pattern.`, - type: "Literal", }, ], }, @@ -1351,7 +1263,6 @@ ruleTester.run("no-useless-backreference", rule, { errors: [ { message: String.raw`Backreference '\k' will be ignored. It references group '(?bar)' and another group which is in another alternative.`, - type: "Literal", }, ], }, @@ -1360,7 +1271,6 @@ ruleTester.run("no-useless-backreference", rule, { errors: [ { message: String.raw`Backreference '\k' will be ignored. It references group '(?bar)' and other 2 groups which is in another alternative.`, - type: "Literal", }, ], }, @@ -1369,11 +1279,9 @@ ruleTester.run("no-useless-backreference", rule, { errors: [ { message: String.raw`Backreference '\k' will be ignored. It references group '(?baz\k)' from within that group.`, - type: "Literal", }, { message: String.raw`Backreference '\k' will be ignored. It references group '(?qux\k)' from within that group.`, - type: "Literal", }, ], }, @@ -1382,7 +1290,6 @@ ruleTester.run("no-useless-backreference", rule, { errors: [ { message: String.raw`Backreference '\k' will be ignored. It references group '(?bar)' and another group which appears before in the same lookbehind.`, - type: "Literal", }, ], }, @@ -1391,7 +1298,6 @@ ruleTester.run("no-useless-backreference", rule, { errors: [ { message: String.raw`Backreference '\k' will be ignored. It references group '(?bar)' and another group which is in a negative lookaround.`, - type: "Literal", }, ], }, diff --git a/tests/lib/rules/no-useless-call.js b/tests/lib/rules/no-useless-call.js index 9a38eddf74ef..538da19bc427 100644 --- a/tests/lib/rules/no-useless-call.js +++ b/tests/lib/rules/no-useless-call.js @@ -65,7 +65,6 @@ ruleTester.run("no-useless-call", rule, { { messageId: "unnecessaryCall", data: { name: "call" }, - type: "CallExpression", }, ], }, @@ -75,7 +74,6 @@ ruleTester.run("no-useless-call", rule, { { messageId: "unnecessaryCall", data: { name: "call" }, - type: "CallExpression", }, ], }, @@ -85,7 +83,6 @@ ruleTester.run("no-useless-call", rule, { { messageId: "unnecessaryCall", data: { name: "call" }, - type: "CallExpression", }, ], }, @@ -95,7 +92,6 @@ ruleTester.run("no-useless-call", rule, { { messageId: "unnecessaryCall", data: { name: "call" }, - type: "CallExpression", }, ], }, @@ -105,7 +101,6 @@ ruleTester.run("no-useless-call", rule, { { messageId: "unnecessaryCall", data: { name: "call" }, - type: "CallExpression", }, ], }, @@ -115,7 +110,6 @@ ruleTester.run("no-useless-call", rule, { { messageId: "unnecessaryCall", data: { name: "call" }, - type: "CallExpression", }, ], }, @@ -127,7 +121,6 @@ ruleTester.run("no-useless-call", rule, { { messageId: "unnecessaryCall", data: { name: "apply" }, - type: "CallExpression", }, ], }, @@ -137,7 +130,6 @@ ruleTester.run("no-useless-call", rule, { { messageId: "unnecessaryCall", data: { name: "apply" }, - type: "CallExpression", }, ], }, @@ -147,7 +139,6 @@ ruleTester.run("no-useless-call", rule, { { messageId: "unnecessaryCall", data: { name: "apply" }, - type: "CallExpression", }, ], }, @@ -157,7 +148,6 @@ ruleTester.run("no-useless-call", rule, { { messageId: "unnecessaryCall", data: { name: "apply" }, - type: "CallExpression", }, ], }, @@ -167,7 +157,6 @@ ruleTester.run("no-useless-call", rule, { { messageId: "unnecessaryCall", data: { name: "apply" }, - type: "CallExpression", }, ], }, @@ -177,7 +166,6 @@ ruleTester.run("no-useless-call", rule, { { messageId: "unnecessaryCall", data: { name: "apply" }, - type: "CallExpression", }, ], }, @@ -187,7 +175,6 @@ ruleTester.run("no-useless-call", rule, { { messageId: "unnecessaryCall", data: { name: "apply" }, - type: "CallExpression", }, ], }, @@ -197,7 +184,6 @@ ruleTester.run("no-useless-call", rule, { { messageId: "unnecessaryCall", data: { name: "apply" }, - type: "CallExpression", }, ], }, @@ -207,7 +193,6 @@ ruleTester.run("no-useless-call", rule, { { messageId: "unnecessaryCall", data: { name: "apply" }, - type: "CallExpression", }, ], }, @@ -235,7 +220,6 @@ ruleTester.run("no-useless-call", rule, { { messageId: "unnecessaryCall", data: { name: "call" }, - type: "CallExpression", }, ], }, @@ -246,7 +230,6 @@ ruleTester.run("no-useless-call", rule, { { messageId: "unnecessaryCall", data: { name: "call" }, - type: "CallExpression", }, ], }, @@ -257,7 +240,6 @@ ruleTester.run("no-useless-call", rule, { { messageId: "unnecessaryCall", data: { name: "call" }, - type: "CallExpression", }, ], }, @@ -268,7 +250,6 @@ ruleTester.run("no-useless-call", rule, { { messageId: "unnecessaryCall", data: { name: "call" }, - type: "CallExpression", }, ], }, @@ -279,7 +260,6 @@ ruleTester.run("no-useless-call", rule, { { messageId: "unnecessaryCall", data: { name: "call" }, - type: "CallExpression", }, ], }, @@ -290,7 +270,6 @@ ruleTester.run("no-useless-call", rule, { { messageId: "unnecessaryCall", data: { name: "call" }, - type: "CallExpression", }, ], }, @@ -301,7 +280,6 @@ ruleTester.run("no-useless-call", rule, { { messageId: "unnecessaryCall", data: { name: "call" }, - type: "CallExpression", }, ], }, diff --git a/tests/lib/rules/no-useless-catch.js b/tests/lib/rules/no-useless-catch.js index 0d10671dedb8..d1f7704e0633 100644 --- a/tests/lib/rules/no-useless-catch.js +++ b/tests/lib/rules/no-useless-catch.js @@ -127,7 +127,6 @@ ruleTester.run("no-useless-catch", rule, { errors: [ { messageId: "unnecessaryCatch", - type: "TryStatement", }, ], }, @@ -144,7 +143,6 @@ ruleTester.run("no-useless-catch", rule, { errors: [ { messageId: "unnecessaryCatchClause", - type: "CatchClause", }, ], }, @@ -160,7 +158,6 @@ ruleTester.run("no-useless-catch", rule, { errors: [ { messageId: "unnecessaryCatch", - type: "TryStatement", }, ], }, @@ -178,7 +175,6 @@ ruleTester.run("no-useless-catch", rule, { errors: [ { messageId: "unnecessaryCatchClause", - type: "CatchClause", }, ], }, @@ -196,7 +192,6 @@ ruleTester.run("no-useless-catch", rule, { errors: [ { messageId: "unnecessaryCatch", - type: "TryStatement", }, ], }, diff --git a/tests/lib/rules/no-useless-computed-key.js b/tests/lib/rules/no-useless-computed-key.js index a8fdcae25551..7d5b570df003 100644 --- a/tests/lib/rules/no-useless-computed-key.js +++ b/tests/lib/rules/no-useless-computed-key.js @@ -119,7 +119,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'0'" }, - type: "Property", }, ], }, @@ -130,7 +129,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'0'" }, - type: "Property", }, ], }, @@ -141,7 +139,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'0+1,234'" }, - type: "Property", }, ], }, @@ -152,7 +149,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "0" }, - type: "Property", }, ], }, @@ -163,7 +159,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "0" }, - type: "Property", }, ], }, @@ -174,7 +169,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'x'" }, - type: "Property", }, ], }, @@ -185,7 +179,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'x'" }, - type: "Property", }, ], }, @@ -196,7 +189,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'__proto__'" }, - type: "Property", }, ], }, @@ -207,7 +199,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'x'" }, - type: "Property", }, ], }, @@ -218,7 +209,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'x'" }, - type: "Property", }, ], }, @@ -229,7 +219,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'x'" }, - type: "Property", }, ], }, @@ -240,7 +229,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'x'" }, - type: "Property", }, ], }, @@ -251,7 +239,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'x'" }, - type: "Property", }, ], }, @@ -262,7 +249,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'x'" }, - type: "Property", }, ], }, @@ -274,7 +260,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'x'" }, - type: "Property", }, ], }, @@ -285,7 +270,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: ".2" }, - type: "Property", }, ], }, @@ -296,7 +280,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: ".2" }, - type: "Property", }, ], }, @@ -308,7 +291,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: ".2" }, - type: "Property", }, ], }, @@ -319,7 +301,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "2" }, - type: "Property", }, ], }, @@ -330,7 +311,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "2" }, - type: "Property", }, ], }, @@ -341,7 +321,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "2" }, - type: "Property", }, ], }, @@ -353,7 +332,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "2" }, - type: "Property", }, ], }, @@ -364,7 +342,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "2" }, - type: "Property", }, ], }, @@ -375,7 +352,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "2" }, - type: "Property", }, ], }, @@ -387,7 +363,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "2" }, - type: "Property", }, ], }, @@ -398,7 +373,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'foo'" }, - type: "Property", }, ], }, @@ -409,7 +383,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "2" }, - type: "Property", }, ], }, @@ -420,7 +393,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "2" }, - type: "Property", }, ], }, @@ -431,7 +403,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'constructor'" }, - type: "Property", }, ], }, @@ -442,7 +413,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'prototype'" }, - type: "Property", }, ], }, @@ -454,7 +424,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'0'" }, - type: "MethodDefinition", }, ], }, @@ -466,7 +435,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'0+1,234'" }, - type: "MethodDefinition", }, ], }, @@ -478,7 +446,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'x'" }, - type: "MethodDefinition", }, ], }, @@ -489,7 +456,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'x'" }, - type: "MethodDefinition", }, ], }, @@ -500,7 +466,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'x'" }, - type: "MethodDefinition", }, ], }, @@ -511,7 +476,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'x'" }, - type: "MethodDefinition", }, ], }, @@ -522,7 +486,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'x'" }, - type: "MethodDefinition", }, ], }, @@ -534,7 +497,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'x'" }, - type: "MethodDefinition", }, ], }, @@ -545,7 +507,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: ".2" }, - type: "MethodDefinition", }, ], }, @@ -556,7 +517,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: ".2" }, - type: "MethodDefinition", }, ], }, @@ -568,7 +528,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: ".2" }, - type: "MethodDefinition", }, ], }, @@ -579,7 +538,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "2" }, - type: "MethodDefinition", }, ], }, @@ -590,7 +548,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "2" }, - type: "MethodDefinition", }, ], }, @@ -601,7 +558,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "2" }, - type: "MethodDefinition", }, ], }, @@ -613,7 +569,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "2" }, - type: "MethodDefinition", }, ], }, @@ -624,7 +579,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "2" }, - type: "MethodDefinition", }, ], }, @@ -635,7 +589,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "2" }, - type: "MethodDefinition", }, ], }, @@ -647,7 +600,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "2" }, - type: "MethodDefinition", }, ], }, @@ -658,7 +610,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'foo'" }, - type: "MethodDefinition", }, ], }, @@ -669,7 +620,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "2" }, - type: "MethodDefinition", }, ], }, @@ -680,7 +630,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "2" }, - type: "MethodDefinition", }, ], }, @@ -691,7 +640,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'constructor'" }, - type: "MethodDefinition", }, ], }, @@ -702,7 +650,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'prototype'" }, - type: "MethodDefinition", }, ], }, @@ -713,7 +660,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'x'" }, - type: "MethodDefinition", }, ], }, @@ -724,7 +670,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'__proto__'" }, - type: "MethodDefinition", }, ], }, @@ -735,7 +680,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'__proto__'" }, - type: "MethodDefinition", }, ], }, @@ -746,7 +690,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'constructor'" }, - type: "MethodDefinition", }, ], }, @@ -757,7 +700,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'prototype'" }, - type: "MethodDefinition", }, ], }, @@ -768,7 +710,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'0'" }, - type: "PropertyDefinition", }, ], }, @@ -779,7 +720,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'0'" }, - type: "PropertyDefinition", }, ], }, @@ -790,7 +730,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "0" }, - type: "PropertyDefinition", }, ], }, @@ -801,7 +740,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'#foo'" }, - type: "PropertyDefinition", }, ], }, @@ -812,7 +750,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'__proto__'" }, - type: "PropertyDefinition", }, ], }, @@ -823,7 +760,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'__proto__'" }, - type: "PropertyDefinition", }, ], }, @@ -834,7 +770,6 @@ ruleTester.run("no-useless-computed-key", rule, { { messageId: "unnecessarilyComputedProperty", data: { property: "'prototype'" }, - type: "PropertyDefinition", }, ], }, diff --git a/tests/lib/rules/no-useless-constructor.js b/tests/lib/rules/no-useless-constructor.js index 7c768faa1f6b..45460e8c0d19 100644 --- a/tests/lib/rules/no-useless-constructor.js +++ b/tests/lib/rules/no-useless-constructor.js @@ -18,7 +18,9 @@ const { unIndent } = require("../../_utils"); //------------------------------------------------------------------------------ const ruleTester = new RuleTester({ languageOptions: { ecmaVersion: 6 } }); -const error = { messageId: "noUselessConstructor", type: "MethodDefinition" }; +const error = { + messageId: "noUselessConstructor", +}; ruleTester.run("no-useless-constructor", rule, { valid: [ @@ -336,7 +338,6 @@ ruleTesterTypeScript.run("no-useless-constructor", rule, { `, }, ], - type: "MethodDefinition", }, ], }, @@ -359,7 +360,6 @@ ruleTesterTypeScript.run("no-useless-constructor", rule, { `, }, ], - type: "MethodDefinition", }, ], }, diff --git a/tests/lib/rules/no-useless-escape.js b/tests/lib/rules/no-useless-escape.js index 1bdc7fbd64e8..c71ab237328a 100644 --- a/tests/lib/rules/no-useless-escape.js +++ b/tests/lib/rules/no-useless-escape.js @@ -514,7 +514,6 @@ ruleTester.run("no-useless-escape", rule, { column: 12, endColumn: 13, message: "Unnecessary escape character: \\#.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -536,7 +535,6 @@ ruleTester.run("no-useless-escape", rule, { column: 12, endColumn: 13, message: "Unnecessary escape character: \\;.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -558,7 +556,6 @@ ruleTester.run("no-useless-escape", rule, { column: 12, endColumn: 13, message: "Unnecessary escape character: \\'.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -580,7 +577,6 @@ ruleTester.run("no-useless-escape", rule, { column: 12, endColumn: 13, message: "Unnecessary escape character: \\#.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -602,7 +598,6 @@ ruleTester.run("no-useless-escape", rule, { column: 12, endColumn: 13, message: "Unnecessary escape character: \\a.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -624,7 +619,6 @@ ruleTester.run("no-useless-escape", rule, { column: 12, endColumn: 13, message: "Unnecessary escape character: \\B.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -646,7 +640,6 @@ ruleTester.run("no-useless-escape", rule, { column: 12, endColumn: 13, message: "Unnecessary escape character: \\@.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -668,7 +661,6 @@ ruleTester.run("no-useless-escape", rule, { column: 16, endColumn: 17, message: "Unnecessary escape character: \\a.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -690,7 +682,6 @@ ruleTester.run("no-useless-escape", rule, { column: 12, endColumn: 13, message: 'Unnecessary escape character: \\".', - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -712,7 +703,6 @@ ruleTester.run("no-useless-escape", rule, { column: 12, endColumn: 13, message: "Unnecessary escape character: \\#.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -734,7 +724,6 @@ ruleTester.run("no-useless-escape", rule, { column: 12, endColumn: 13, message: "Unnecessary escape character: \\$.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -756,7 +745,6 @@ ruleTester.run("no-useless-escape", rule, { column: 12, endColumn: 13, message: "Unnecessary escape character: \\p.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -778,7 +766,6 @@ ruleTester.run("no-useless-escape", rule, { column: 12, endColumn: 13, message: "Unnecessary escape character: \\p.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -795,7 +782,6 @@ ruleTester.run("no-useless-escape", rule, { column: 14, endColumn: 15, message: "Unnecessary escape character: \\a.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -812,7 +798,6 @@ ruleTester.run("no-useless-escape", rule, { column: 16, endColumn: 17, message: "Unnecessary escape character: \\@.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -835,7 +820,6 @@ ruleTester.run("no-useless-escape", rule, { column: 13, endColumn: 14, message: "Unnecessary escape character: \\d.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -857,7 +841,6 @@ ruleTester.run("no-useless-escape", rule, { column: 12, endColumn: 13, message: "Unnecessary escape character: \\`.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -880,7 +863,6 @@ ruleTester.run("no-useless-escape", rule, { column: 12, endColumn: 13, message: 'Unnecessary escape character: \\".', - type: "TemplateElement", suggestions: [ { messageId: "removeEscape", @@ -903,7 +885,6 @@ ruleTester.run("no-useless-escape", rule, { column: 12, endColumn: 13, message: "Unnecessary escape character: \\'.", - type: "TemplateElement", suggestions: [ { messageId: "removeEscape", @@ -926,7 +907,6 @@ ruleTester.run("no-useless-escape", rule, { column: 12, endColumn: 13, message: "Unnecessary escape character: \\#.", - type: "TemplateElement", suggestions: [ { messageId: "removeEscape", @@ -948,7 +928,6 @@ ruleTester.run("no-useless-escape", rule, { column: 12, endColumn: 13, message: "Unnecessary escape character: \\`.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -965,7 +944,6 @@ ruleTester.run("no-useless-escape", rule, { column: 17, endColumn: 18, message: "Unnecessary escape character: \\`.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -988,7 +966,6 @@ ruleTester.run("no-useless-escape", rule, { column: 12, endColumn: 13, message: 'Unnecessary escape character: \\".', - type: "TemplateElement", suggestions: [ { messageId: "removeEscape", @@ -1005,7 +982,6 @@ ruleTester.run("no-useless-escape", rule, { column: 20, endColumn: 21, message: 'Unnecessary escape character: \\".', - type: "TemplateElement", suggestions: [ { messageId: "removeEscape", @@ -1028,7 +1004,6 @@ ruleTester.run("no-useless-escape", rule, { column: 12, endColumn: 13, message: "Unnecessary escape character: \\'.", - type: "TemplateElement", suggestions: [ { messageId: "removeEscape", @@ -1045,7 +1020,6 @@ ruleTester.run("no-useless-escape", rule, { column: 20, endColumn: 21, message: "Unnecessary escape character: \\'.", - type: "TemplateElement", suggestions: [ { messageId: "removeEscape", @@ -1068,7 +1042,6 @@ ruleTester.run("no-useless-escape", rule, { column: 12, endColumn: 13, message: "Unnecessary escape character: \\#.", - type: "TemplateElement", suggestions: [ { messageId: "removeEscape", @@ -1091,7 +1064,6 @@ ruleTester.run("no-useless-escape", rule, { column: 12, endColumn: 13, message: "Unnecessary escape character: \\ .", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -1114,7 +1086,6 @@ ruleTester.run("no-useless-escape", rule, { column: 12, endColumn: 13, message: "Unnecessary escape character: \\ .", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -1137,7 +1108,6 @@ ruleTester.run("no-useless-escape", rule, { column: 12, endColumn: 13, message: "Unnecessary escape character: \\$.", - type: "TemplateElement", suggestions: [ { messageId: "removeEscape", @@ -1160,7 +1130,6 @@ ruleTester.run("no-useless-escape", rule, { column: 12, endColumn: 13, message: "Unnecessary escape character: \\$.", - type: "TemplateElement", suggestions: [ { messageId: "removeEscape", @@ -1183,7 +1152,6 @@ ruleTester.run("no-useless-escape", rule, { column: 13, endColumn: 14, message: "Unnecessary escape character: \\{.", - type: "TemplateElement", suggestions: [ { messageId: "removeEscape", @@ -1205,7 +1173,6 @@ ruleTester.run("no-useless-escape", rule, { column: 15, endColumn: 16, message: "Unnecessary escape character: \\-.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -1227,7 +1194,6 @@ ruleTester.run("no-useless-escape", rule, { column: 13, endColumn: 14, message: "Unnecessary escape character: \\-.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -1249,7 +1215,6 @@ ruleTester.run("no-useless-escape", rule, { column: 15, endColumn: 16, message: "Unnecessary escape character: \\?.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -1271,7 +1236,6 @@ ruleTester.run("no-useless-escape", rule, { column: 15, endColumn: 16, message: "Unnecessary escape character: \\..", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -1293,7 +1257,6 @@ ruleTester.run("no-useless-escape", rule, { column: 14, endColumn: 15, message: "Unnecessary escape character: \\|.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -1315,7 +1278,6 @@ ruleTester.run("no-useless-escape", rule, { column: 12, endColumn: 13, message: "Unnecessary escape character: \\-.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -1337,7 +1299,6 @@ ruleTester.run("no-useless-escape", rule, { column: 13, endColumn: 14, message: "Unnecessary escape character: \\-.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -1359,7 +1320,6 @@ ruleTester.run("no-useless-escape", rule, { column: 15, endColumn: 16, message: "Unnecessary escape character: \\$.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -1381,7 +1341,6 @@ ruleTester.run("no-useless-escape", rule, { column: 13, endColumn: 14, message: "Unnecessary escape character: \\(.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -1403,7 +1362,6 @@ ruleTester.run("no-useless-escape", rule, { column: 13, endColumn: 14, message: "Unnecessary escape character: \\[.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -1425,7 +1383,6 @@ ruleTester.run("no-useless-escape", rule, { column: 13, endColumn: 14, message: "Unnecessary escape character: \\/.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -1447,7 +1404,6 @@ ruleTester.run("no-useless-escape", rule, { column: 13, endColumn: 14, message: "Unnecessary escape character: \\B.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -1469,7 +1425,6 @@ ruleTester.run("no-useless-escape", rule, { column: 16, endColumn: 17, message: "Unnecessary escape character: \\-.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -1491,7 +1446,6 @@ ruleTester.run("no-useless-escape", rule, { column: 12, endColumn: 13, message: "Unnecessary escape character: \\-.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -1513,7 +1467,6 @@ ruleTester.run("no-useless-escape", rule, { column: 14, endColumn: 15, message: "Unnecessary escape character: \\^.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -1536,7 +1489,6 @@ ruleTester.run("no-useless-escape", rule, { column: 22, endColumn: 23, message: "Unnecessary escape character: \\e.", - type: "TemplateElement", suggestions: [ { messageId: "removeEscape", @@ -1559,7 +1511,6 @@ ruleTester.run("no-useless-escape", rule, { column: 22, endColumn: 23, message: "Unnecessary escape character: \\e.", - type: "TemplateElement", suggestions: [ { messageId: "removeEscape", @@ -1582,7 +1533,6 @@ ruleTester.run("no-useless-escape", rule, { column: 13, endColumn: 14, message: "Unnecessary escape character: \\e.", - type: "TemplateElement", suggestions: [ { messageId: "removeEscape", @@ -1605,7 +1555,6 @@ ruleTester.run("no-useless-escape", rule, { column: 13, endColumn: 14, message: "Unnecessary escape character: \\e.", - type: "TemplateElement", suggestions: [ { messageId: "removeEscape", @@ -1628,7 +1577,6 @@ ruleTester.run("no-useless-escape", rule, { column: 1, endColumn: 2, message: "Unnecessary escape character: \\a.", - type: "TemplateElement", suggestions: [ { messageId: "removeEscape", @@ -1651,7 +1599,6 @@ ruleTester.run("no-useless-escape", rule, { column: 1, endColumn: 2, message: "Unnecessary escape character: \\a.", - type: "TemplateElement", suggestions: [ { messageId: "removeEscape", @@ -1674,7 +1621,6 @@ ruleTester.run("no-useless-escape", rule, { column: 2, endColumn: 3, message: "Unnecessary escape character: \\a.", - type: "TemplateElement", suggestions: [ { messageId: "removeEscape", @@ -1698,7 +1644,6 @@ ruleTester.run("no-useless-escape", rule, { column: 5, endColumn: 6, message: "Unnecessary escape character: \\ .", - type: "Literal", suggestions: [ { messageId: "removeEscapeDoNotKeepSemantics", @@ -1721,7 +1666,6 @@ ruleTester.run("no-useless-escape", rule, { column: 29, endColumn: 30, message: "Unnecessary escape character: \\z.", - type: "Literal", suggestions: [ { messageId: "removeEscapeDoNotKeepSemantics", @@ -1744,7 +1688,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 4, message: "Unnecessary escape character: \\^.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -1766,7 +1709,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 4, message: "Unnecessary escape character: \\^.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -1791,7 +1733,6 @@ ruleTester.run("no-useless-escape", rule, { column: 3, endColumn: 4, message: "Unnecessary escape character: \\$.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -1813,7 +1754,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 3, message: "Unnecessary escape character: \\&.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -1835,7 +1775,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 3, message: "Unnecessary escape character: \\!.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -1857,7 +1796,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 3, message: "Unnecessary escape character: \\#.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -1879,7 +1817,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 3, message: "Unnecessary escape character: \\%.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -1901,7 +1838,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 3, message: "Unnecessary escape character: \\*.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -1923,7 +1859,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 3, message: "Unnecessary escape character: \\+.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -1945,7 +1880,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 3, message: "Unnecessary escape character: \\,.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -1967,7 +1901,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 3, message: "Unnecessary escape character: \\..", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -1989,7 +1922,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 3, message: "Unnecessary escape character: \\:.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -2011,7 +1943,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 3, message: "Unnecessary escape character: \\;.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -2033,7 +1964,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 3, message: "Unnecessary escape character: \\<.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -2055,7 +1985,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 3, message: "Unnecessary escape character: \\=.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -2077,7 +2006,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 3, message: "Unnecessary escape character: \\>.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -2099,7 +2027,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 3, message: "Unnecessary escape character: \\?.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -2121,7 +2048,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 3, message: "Unnecessary escape character: \\@.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -2143,7 +2069,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 3, message: "Unnecessary escape character: \\`.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -2165,7 +2090,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 3, message: "Unnecessary escape character: \\~.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -2187,7 +2111,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 4, message: "Unnecessary escape character: \\^.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -2209,7 +2132,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 4, message: "Unnecessary escape character: \\^.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -2231,7 +2153,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 3, message: "Unnecessary escape character: \\&.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -2253,7 +2174,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 14, message: "Unnecessary escape character: \\..", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -2271,7 +2191,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 14, message: "Unnecessary escape character: \\..", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -2289,7 +2208,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 3, message: "Unnecessary escape character: \\..", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -2307,7 +2225,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 3, message: "Unnecessary escape character: \\..", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -2325,7 +2242,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 3, message: "Unnecessary escape character: \\..", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -2337,7 +2253,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 7, message: "Unnecessary escape character: \\..", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -2349,7 +2264,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 11, message: "Unnecessary escape character: \\..", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -2367,7 +2281,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 3, message: "Unnecessary escape character: \\..", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -2379,7 +2292,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 7, message: "Unnecessary escape character: \\..", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -2391,7 +2303,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 11, message: "Unnecessary escape character: \\..", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -2409,7 +2320,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 4, message: "Unnecessary escape character: \\..", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -2425,7 +2335,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 11, message: "Unnecessary escape character: \\..", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -2447,7 +2356,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 4, message: "Unnecessary escape character: \\..", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -2463,7 +2371,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 11, message: "Unnecessary escape character: \\..", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -2486,7 +2393,6 @@ ruleTester.run("no-useless-escape", rule, { column: 12, endColumn: 13, message: "Unnecessary escape character: \\#.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -2509,7 +2415,6 @@ ruleTester.run("no-useless-escape", rule, { column: 14, endColumn: 15, message: "Unnecessary escape character: \\@.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -2532,7 +2437,6 @@ ruleTester.run("no-useless-escape", rule, { column: 14, endColumn: 15, message: "Unnecessary escape character: \\@.", - type: "Literal", suggestions: [ { messageId: "removeEscape", @@ -2555,7 +2459,6 @@ ruleTester.run("no-useless-escape", rule, { line: 1, column: 3, message: "Unnecessary escape character: \\@.", - type: "Literal", suggestions: [ { messageId: "removeEscape", diff --git a/tests/lib/rules/no-useless-return.js b/tests/lib/rules/no-useless-return.js index ea2abb199a25..e5c895caeef2 100644 --- a/tests/lib/rules/no-useless-return.js +++ b/tests/lib/rules/no-useless-return.js @@ -274,8 +274,12 @@ ruleTester.run("no-useless-return", rule, { } `, // Other case is fixed in the second pass. errors: [ - { messageId: "unnecessaryReturn", type: "ReturnStatement" }, - { messageId: "unnecessaryReturn", type: "ReturnStatement" }, + { + messageId: "unnecessaryReturn", + }, + { + messageId: "unnecessaryReturn", + }, ], }, { @@ -591,7 +595,6 @@ ruleTester.run("no-useless-return", rule, { errors: [ { messageId: "unnecessaryReturn", - type: "ReturnStatement", column: 18, }, ], @@ -600,7 +603,9 @@ ruleTester.run("no-useless-return", rule, { Object.assign( { errors: [ - { messageId: "unnecessaryReturn", type: "ReturnStatement" }, + { + messageId: "unnecessaryReturn", + }, ], }, invalidCase, diff --git a/tests/lib/rules/no-var.js b/tests/lib/rules/no-var.js index f8f395495d54..0cf87a59495d 100644 --- a/tests/lib/rules/no-var.js +++ b/tests/lib/rules/no-var.js @@ -62,7 +62,6 @@ ruleTester.run("no-var", rule, { errors: [ { messageId: "unexpectedVar", - type: "VariableDeclaration", }, ], }, @@ -75,7 +74,6 @@ ruleTester.run("no-var", rule, { errors: [ { messageId: "unexpectedVar", - type: "VariableDeclaration", }, ], }, @@ -88,7 +86,6 @@ ruleTester.run("no-var", rule, { errors: [ { messageId: "unexpectedVar", - type: "VariableDeclaration", }, ], }, @@ -101,7 +98,6 @@ ruleTester.run("no-var", rule, { errors: [ { messageId: "unexpectedVar", - type: "VariableDeclaration", }, ], }, @@ -114,7 +110,6 @@ ruleTester.run("no-var", rule, { errors: [ { messageId: "unexpectedVar", - type: "VariableDeclaration", }, ], }, @@ -127,7 +122,6 @@ ruleTester.run("no-var", rule, { errors: [ { messageId: "unexpectedVar", - type: "VariableDeclaration", }, ], }, @@ -138,7 +132,9 @@ ruleTester.run("no-var", rule, { parserOptions: { ecmaFeatures: { globalReturn: true } }, }, errors: [ - { messageId: "unexpectedVar", type: "VariableDeclaration" }, + { + messageId: "unexpectedVar", + }, ], }, { @@ -148,7 +144,9 @@ ruleTester.run("no-var", rule, { parserOptions: { ecmaFeatures: { globalReturn: true } }, }, errors: [ - { messageId: "unexpectedVar", type: "VariableDeclaration" }, + { + messageId: "unexpectedVar", + }, ], }, { @@ -158,8 +156,12 @@ ruleTester.run("no-var", rule, { parserOptions: { ecmaFeatures: { globalReturn: true } }, }, errors: [ - { messageId: "unexpectedVar", type: "VariableDeclaration" }, - { messageId: "unexpectedVar", type: "VariableDeclaration" }, + { + messageId: "unexpectedVar", + }, + { + messageId: "unexpectedVar", + }, ], }, @@ -325,7 +327,9 @@ ruleTester.run("no-var", rule, { parserOptions: { ecmaFeatures: { globalReturn: true } }, }, errors: [ - { messageId: "unexpectedVar", type: "VariableDeclaration" }, + { + messageId: "unexpectedVar", + }, ], }, diff --git a/tests/lib/rules/no-with.js b/tests/lib/rules/no-with.js index b3006fa62143..565ed89d804f 100644 --- a/tests/lib/rules/no-with.js +++ b/tests/lib/rules/no-with.js @@ -28,7 +28,11 @@ ruleTester.run("no-with", rule, { invalid: [ { code: "with(foo) { bar() }", - errors: [{ messageId: "unexpectedWith", type: "WithStatement" }], + errors: [ + { + messageId: "unexpectedWith", + }, + ], }, ], }); diff --git a/tests/lib/rules/object-curly-spacing.js b/tests/lib/rules/object-curly-spacing.js index 78fd4276be31..873898486943 100644 --- a/tests/lib/rules/object-curly-spacing.js +++ b/tests/lib/rules/object-curly-spacing.js @@ -573,7 +573,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceAfter", data: { token: "{" }, - type: "ImportDeclaration", line: 1, column: 8, endLine: 1, @@ -582,7 +581,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceBefore", data: { token: "}" }, - type: "ImportDeclaration", line: 1, column: 12, endLine: 1, @@ -599,7 +597,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceBefore", data: { token: "}" }, - type: "ImportDeclaration", line: 1, column: 18, endLine: 1, @@ -616,7 +613,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceAfter", data: { token: "{" }, - type: "ImportDeclaration", line: 1, column: 8, endLine: 1, @@ -625,7 +621,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceBefore", data: { token: "}" }, - type: "ImportDeclaration", line: 1, column: 17, endLine: 1, @@ -642,7 +637,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceBefore", data: { token: "}" }, - type: "ImportDeclaration", line: 1, column: 13, endLine: 1, @@ -659,7 +653,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceBefore", data: { token: "}" }, - type: "ImportDeclaration", line: 1, column: 16, endLine: 1, @@ -676,7 +669,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceBefore", data: { token: "}" }, - type: "ImportDeclaration", line: 1, column: 21, endLine: 1, @@ -693,7 +685,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceAfter", data: { token: "{" }, - type: "ImportDeclaration", line: 1, column: 11, endLine: 1, @@ -710,7 +701,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceAfter", data: { token: "{" }, - type: "ImportDeclaration", line: 1, column: 11, endLine: 1, @@ -727,7 +717,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceBefore", data: { token: "}" }, - type: "ImportDeclaration", line: 1, column: 21, endLine: 1, @@ -744,7 +733,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceAfter", data: { token: "{" }, - type: "ImportDeclaration", line: 1, column: 11, endLine: 1, @@ -753,7 +741,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceBefore", data: { token: "}" }, - type: "ImportDeclaration", line: 1, column: 15, endLine: 1, @@ -770,7 +757,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceAfter", data: { token: "{" }, - type: "ImportDeclaration", line: 1, column: 11, endLine: 1, @@ -779,7 +765,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceBefore", data: { token: "}" }, - type: "ImportDeclaration", line: 1, column: 20, endLine: 1, @@ -796,7 +781,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceAfter", data: { token: "{" }, - type: "ImportDeclaration", line: 1, column: 8, endLine: 1, @@ -805,7 +789,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceBefore", data: { token: "}" }, - type: "ImportDeclaration", line: 1, column: 13, endLine: 1, @@ -822,7 +805,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { token: "{" }, - type: "ImportDeclaration", line: 1, column: 9, endLine: 1, @@ -831,7 +813,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { token: "}" }, - type: "ImportDeclaration", line: 1, column: 14, endLine: 1, @@ -848,7 +829,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { token: "{" }, - type: "ImportDeclaration", line: 1, column: 9, endLine: 1, @@ -857,7 +837,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { token: "}" }, - type: "ImportDeclaration", line: 1, column: 26, endLine: 1, @@ -874,7 +853,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceAfter", data: { token: "{" }, - type: "ExportNamedDeclaration", line: 2, column: 8, endLine: 2, @@ -883,7 +861,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceBefore", data: { token: "}" }, - type: "ExportNamedDeclaration", line: 2, column: 12, }, @@ -898,7 +875,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceAfter", data: { token: "{" }, - type: "ExportNamedDeclaration", line: 2, column: 8, endLine: 2, @@ -907,7 +883,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceBefore", data: { token: "}" }, - type: "ExportNamedDeclaration", line: 2, column: 24, endLine: 2, @@ -924,7 +899,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceAfter", data: { token: "{" }, - type: "ExportNamedDeclaration", line: 2, column: 8, endLine: 2, @@ -941,7 +915,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { token: "{" }, - type: "ExportNamedDeclaration", line: 2, column: 9, endLine: 2, @@ -950,7 +923,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { token: "}" }, - type: "ExportNamedDeclaration", line: 2, column: 25, endLine: 2, @@ -968,7 +940,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { token: "}" }, - type: "ObjectExpression", line: 1, column: 28, endLine: 1, @@ -984,7 +955,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { token: "}" }, - type: "ObjectExpression", line: 1, column: 54, endLine: 1, @@ -1002,7 +972,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { token: "}" }, - type: "ObjectExpression", line: 1, column: 42, endLine: 1, @@ -1018,7 +987,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { token: "}" }, - type: "ObjectExpression", line: 1, column: 60, endLine: 1, @@ -1037,7 +1005,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceBefore", data: { token: "}" }, - type: "ObjectPattern", line: 1, column: 9, endLine: 1, @@ -1054,7 +1021,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { token: "}" }, - type: "ObjectPattern", line: 1, column: 8, endLine: 1, @@ -1071,7 +1037,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { token: "}" }, - type: "ObjectPattern", line: 1, column: 9, endLine: 1, @@ -1088,7 +1053,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { token: "{" }, - type: "ObjectPattern", line: 1, column: 6, endLine: 1, @@ -1097,7 +1061,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { token: "}" }, - type: "ObjectPattern", line: 1, column: 10, endLine: 1, @@ -1114,7 +1077,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { token: "{" }, - type: "ObjectPattern", line: 1, column: 6, endLine: 1, @@ -1123,7 +1085,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { token: "}" }, - type: "ObjectPattern", line: 1, column: 11, endLine: 1, @@ -1140,7 +1101,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { token: "{" }, - type: "ObjectPattern", line: 1, column: 6, endLine: 1, @@ -1149,7 +1109,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { token: "}" }, - type: "ObjectPattern", line: 1, column: 12, endLine: 1, @@ -1167,7 +1126,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceBefore", data: { token: "}" }, - type: "ObjectExpression", line: 1, column: 39, endLine: 1, @@ -1183,7 +1141,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceBefore", data: { token: "}" }, - type: "ObjectExpression", line: 1, column: 55, endLine: 1, @@ -1201,7 +1158,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceAfter", data: { token: "{" }, - type: "ObjectExpression", line: 1, column: 11, endLine: 1, @@ -1210,7 +1166,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceBefore", data: { token: "}" }, - type: "ObjectExpression", line: 1, column: 30, endLine: 1, @@ -1226,7 +1181,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceAfter", data: { token: "{" }, - type: "ObjectExpression", line: 1, column: 11, endLine: 1, @@ -1242,7 +1196,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceAfter", data: { token: "{" }, - type: "ObjectExpression", line: 1, column: 11, endLine: 1, @@ -1258,7 +1211,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceAfter", data: { token: "{" }, - type: "ObjectExpression", line: 1, column: 11, endLine: 1, @@ -1274,7 +1226,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceBefore", data: { token: "}" }, - type: "ObjectExpression", line: 1, column: 31, endLine: 1, @@ -1290,7 +1241,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceBefore", data: { token: "}" }, - type: "ObjectExpression", line: 1, column: 36, endLine: 1, @@ -1306,7 +1256,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { token: "{" }, - type: "ObjectExpression", line: 1, column: 12, endLine: 1, @@ -1315,7 +1264,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { token: "}" }, - type: "ObjectExpression", line: 1, column: 31, endLine: 1, @@ -1331,7 +1279,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { token: "{" }, - type: "ObjectExpression", line: 1, column: 12, endLine: 1, @@ -1340,7 +1287,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { token: "}" }, - type: "ObjectExpression", line: 1, column: 32, endLine: 1, @@ -1356,7 +1302,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { token: "}" }, - type: "ObjectExpression", line: 1, column: 30, endLine: 1, @@ -1372,7 +1317,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { token: "}" }, - type: "ObjectExpression", line: 1, column: 30, endLine: 1, @@ -1388,7 +1332,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { token: "}" }, - type: "ObjectExpression", line: 1, column: 36, endLine: 1, @@ -1404,7 +1347,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { token: "{" }, - type: "ObjectExpression", line: 1, column: 12, endLine: 1, @@ -1420,7 +1362,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { token: "{" }, - type: "ObjectExpression", line: 1, column: 12, endLine: 1, @@ -1436,7 +1377,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { token: "{" }, - type: "ObjectExpression", line: 1, column: 12, endLine: 1, @@ -1452,7 +1392,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { token: "}" }, - type: "ObjectExpression", line: 2, column: 10, endLine: 2, @@ -1468,7 +1407,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { token: "{" }, - type: "ObjectExpression", line: 1, column: 12, endLine: 1, @@ -1477,7 +1415,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { token: "{" }, - type: "ObjectExpression", line: 1, column: 19, endLine: 1, @@ -1493,7 +1430,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { token: "}" }, - type: "ObjectExpression", line: 1, column: 27, endLine: 1, @@ -1502,7 +1438,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { token: "}" }, - type: "ObjectExpression", line: 1, column: 39, endLine: 1, @@ -1519,7 +1454,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceAfter", data: { token: "{" }, - type: "ObjectExpression", line: 1, column: 22, endLine: 1, @@ -1538,7 +1472,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceAfter", data: { token: "{" }, - type: "ObjectPattern", line: 1, column: 5, endLine: 1, @@ -1547,7 +1480,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceBefore", data: { token: "}" }, - type: "ObjectPattern", line: 1, column: 10, endLine: 1, @@ -1564,7 +1496,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceBefore", data: { token: "}" }, - type: "ObjectPattern", line: 1, column: 11, endLine: 1, @@ -1581,7 +1512,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceBefore", data: { token: "}" }, - type: "ObjectPattern", line: 1, column: 16, endLine: 1, @@ -1598,7 +1528,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceAfter", data: { token: "{" }, - type: "ObjectPattern", line: 1, column: 5, endLine: 1, @@ -1615,7 +1544,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceAfter", data: { token: "{" }, - type: "ObjectPattern", line: 1, column: 5, endLine: 1, @@ -1632,7 +1560,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { token: "{" }, - type: "ObjectPattern", line: 1, column: 6, endLine: 1, @@ -1641,7 +1568,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { token: "}" }, - type: "ObjectPattern", line: 1, column: 11, endLine: 1, @@ -1658,7 +1584,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { token: "}" }, - type: "ObjectPattern", line: 1, column: 10, endLine: 1, @@ -1675,7 +1600,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { token: "}" }, - type: "ObjectPattern", line: 1, column: 15, endLine: 1, @@ -1692,7 +1616,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceAfter", data: { token: "{" }, - type: "ObjectPattern", line: 1, column: 6, endLine: 1, @@ -1709,7 +1632,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceBefore", data: { token: "}" }, - type: "ObjectPattern", line: 1, column: 11, endLine: 1, @@ -1726,7 +1648,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceAfter", data: { token: "{" }, - type: "ObjectPattern", line: 1, column: 5, endLine: 1, @@ -1744,7 +1665,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceBefore", data: { token: "}" }, - type: "ObjectExpression", line: 1, column: 25, endLine: 1, @@ -1760,7 +1680,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "requireSpaceBefore", data: { token: "}" }, - type: "ObjectExpression", line: 1, column: 49, endLine: 1, @@ -1786,7 +1705,6 @@ ruleTester.run("object-curly-spacing", rule, { { messageId: "unexpectedSpaceBefore", data: { token: "}" }, - type: "ObjectPattern", line: 1, column: 20, endLine: 1, diff --git a/tests/lib/rules/object-property-newline.js b/tests/lib/rules/object-property-newline.js index 6ecd221a136d..b23485f315df 100644 --- a/tests/lib/rules/object-property-newline.js +++ b/tests/lib/rules/object-property-newline.js @@ -158,7 +158,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewline", - type: "ObjectExpression", line: 1, column: 25, endLine: 1, @@ -166,7 +165,6 @@ ruleTester.run("object-property-newline", rule, { }, { messageId: "propertiesOnNewline", - type: "ObjectExpression", line: 1, column: 37, endLine: 1, @@ -180,7 +178,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewline", - type: "ObjectExpression", line: 1, column: 25, endLine: 1, @@ -194,7 +191,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewline", - type: "ObjectExpression", line: 2, column: 13, endLine: 2, @@ -208,7 +204,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewline", - type: "ObjectExpression", line: 2, column: 13, endLine: 2, @@ -216,7 +211,6 @@ ruleTester.run("object-property-newline", rule, { }, { messageId: "propertiesOnNewline", - type: "ObjectExpression", line: 3, column: 13, endLine: 3, @@ -230,7 +224,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewline", - type: "ObjectExpression", line: 1, column: 32, endLine: 1, @@ -244,7 +237,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewline", - type: "ObjectExpression", line: 3, column: 4, endLine: 3, @@ -258,7 +250,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewline", - type: "ObjectExpression", line: 2, column: 13, endLine: 2, @@ -266,7 +257,6 @@ ruleTester.run("object-property-newline", rule, { }, { messageId: "propertiesOnNewline", - type: "ObjectExpression", line: 2, column: 29, endLine: 2, @@ -274,7 +264,6 @@ ruleTester.run("object-property-newline", rule, { }, { messageId: "propertiesOnNewline", - type: "ObjectExpression", line: 2, column: 41, endLine: 2, @@ -288,7 +277,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewline", - type: "ObjectExpression", line: 3, column: 17, endLine: 3, @@ -302,7 +290,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewline", - type: "ObjectExpression", line: 4, column: 4, endLine: 4, @@ -317,7 +304,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewline", - type: "ObjectExpression", line: 1, column: 25, endLine: 1, @@ -332,7 +318,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewline", - type: "ObjectExpression", line: 1, column: 25, endLine: 1, @@ -347,7 +332,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewline", - type: "ObjectExpression", line: 2, column: 13, endLine: 2, @@ -361,7 +345,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewline", - type: "ObjectExpression", line: 1, column: 19, endLine: 1, @@ -375,7 +358,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewline", - type: "ObjectExpression", line: 2, column: 13, endLine: 2, @@ -390,7 +372,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewline", - type: "ObjectExpression", line: 1, column: 10, endLine: 1, @@ -405,7 +386,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewline", - type: "ObjectExpression", line: 2, column: 4, endLine: 2, @@ -420,7 +400,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewline", - type: "ObjectExpression", line: 2, column: 11, endLine: 2, @@ -435,7 +414,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewline", - type: "ObjectExpression", line: 2, column: 15, endLine: 2, @@ -450,7 +428,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewline", - type: "ObjectExpression", line: 1, column: 19, endLine: 1, @@ -465,7 +442,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewline", - type: "ObjectExpression", line: 1, column: 19, endLine: 1, @@ -480,7 +456,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewline", - type: "ObjectExpression", line: 2, column: 13, endLine: 2, @@ -494,7 +469,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewline", - type: "ObjectExpression", line: 5, column: 4, endLine: 5, @@ -508,7 +482,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewline", - type: "ObjectExpression", line: 1, column: 26, endLine: 1, @@ -522,7 +495,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewline", - type: "ObjectExpression", line: 1, column: 26, endLine: 1, @@ -539,7 +511,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewlineAll", - type: "ObjectExpression", line: 3, column: 13, endLine: 3, @@ -554,7 +525,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewlineAll", - type: "ObjectExpression", line: 3, column: 9, endLine: 3, @@ -562,7 +532,6 @@ ruleTester.run("object-property-newline", rule, { }, { messageId: "propertiesOnNewlineAll", - type: "ObjectExpression", line: 3, column: 21, endLine: 3, @@ -577,7 +546,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewlineAll", - type: "ObjectExpression", line: 4, column: 4, endLine: 4, @@ -592,7 +560,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewlineAll", - type: "ObjectExpression", line: 3, column: 4, endLine: 3, @@ -607,7 +574,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewlineAll", - type: "ObjectExpression", line: 2, column: 13, endLine: 2, @@ -615,7 +581,6 @@ ruleTester.run("object-property-newline", rule, { }, { messageId: "propertiesOnNewlineAll", - type: "ObjectExpression", line: 4, column: 4, endLine: 4, @@ -630,7 +595,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewlineAll", - type: "ObjectExpression", line: 4, column: 4, endLine: 4, @@ -646,7 +610,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewlineAll", - type: "ObjectExpression", line: 2, column: 14, endLine: 2, @@ -662,7 +625,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewlineAll", - type: "ObjectExpression", line: 3, column: 13, endLine: 3, @@ -678,7 +640,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewlineAll", - type: "ObjectExpression", line: 3, column: 13, endLine: 3, @@ -694,7 +655,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewlineAll", - type: "ObjectExpression", line: 2, column: 14, endLine: 2, @@ -710,7 +670,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewlineAll", - type: "ObjectExpression", line: 3, column: 13, endLine: 3, @@ -726,7 +685,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewlineAll", - type: "ObjectExpression", line: 3, column: 13, endLine: 3, @@ -743,7 +701,6 @@ ruleTester.run("object-property-newline", rule, { errors: [ { messageId: "propertiesOnNewlineAll", - type: "ObjectExpression", line: 3, column: 13, endLine: 3, diff --git a/tests/lib/rules/object-shorthand.js b/tests/lib/rules/object-shorthand.js index ec82b35a0219..798c1a7a0b8e 100644 --- a/tests/lib/rules/object-shorthand.js +++ b/tests/lib/rules/object-shorthand.js @@ -19,28 +19,24 @@ const { unIndent } = require("../../_utils"); const PROPERTY_ERROR = { messageId: "expectedPropertyShorthand", - type: "Property", }; -const METHOD_ERROR = { messageId: "expectedMethodShorthand", type: "Property" }; +const METHOD_ERROR = { + messageId: "expectedMethodShorthand", +}; const LONGFORM_PROPERTY_ERROR = { messageId: "expectedPropertyLongform", - type: "Property", }; const LONGFORM_METHOD_ERROR = { messageId: "expectedMethodLongform", - type: "Property", }; const LONGFORM_METHOD_STRING_LITERAL_ERROR = { messageId: "expectedLiteralMethodLongform", - type: "Property", }; const ALL_SHORTHAND_ERROR = { messageId: "expectedAllPropertiesShorthanded", - type: "ObjectExpression", }; const MIXED_SHORTHAND_ERROR = { messageId: "unexpectedMix", - type: "ObjectExpression", }; const ruleTester = new RuleTester({ languageOptions: { ecmaVersion: 2018 } }); diff --git a/tests/lib/rules/one-var-declaration-per-line.js b/tests/lib/rules/one-var-declaration-per-line.js index 3411377fcb55..406ad2204d2e 100644 --- a/tests/lib/rules/one-var-declaration-per-line.js +++ b/tests/lib/rules/one-var-declaration-per-line.js @@ -26,7 +26,6 @@ const rule = require("../../../lib/rules/one-var-declaration-per-line"), function errorAt(line, column) { return { messageId: "expectVarOnNewline", - type: "VariableDeclaration", line, column, }; diff --git a/tests/lib/rules/one-var.js b/tests/lib/rules/one-var.js index 106c9d0e8a83..de8c668a4a9f 100644 --- a/tests/lib/rules/one-var.js +++ b/tests/lib/rules/one-var.js @@ -764,7 +764,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -776,7 +775,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -788,7 +786,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -800,7 +797,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -812,7 +808,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -824,7 +819,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -836,7 +830,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -848,7 +841,6 @@ ruleTester.run("one-var", rule, { { messageId: "splitInitialized", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -860,7 +852,6 @@ ruleTester.run("one-var", rule, { { messageId: "splitUninitialized", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -872,7 +863,6 @@ ruleTester.run("one-var", rule, { { messageId: "combineUninitialized", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -884,8 +874,6 @@ ruleTester.run("one-var", rule, { { messageId: "combineInitialized", data: { type: "var" }, - - type: "VariableDeclaration", }, ], }, @@ -897,12 +885,10 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "var" }, - type: "VariableDeclaration", }, { messageId: "split", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -914,17 +900,14 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "var" }, - type: "VariableDeclaration", }, { messageId: "combine", data: { type: "var" }, - type: "VariableDeclaration", }, { messageId: "combine", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -936,7 +919,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -948,7 +930,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "let" }, - type: "VariableDeclaration", }, ], }, @@ -960,7 +941,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "const" }, - type: "VariableDeclaration", }, ], }, @@ -972,7 +952,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "let" }, - type: "VariableDeclaration", }, ], }, @@ -984,7 +963,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "const" }, - type: "VariableDeclaration", }, ], }, @@ -996,7 +974,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "let" }, - type: "VariableDeclaration", }, ], }, @@ -1008,7 +985,6 @@ ruleTester.run("one-var", rule, { { messageId: "splitInitialized", data: { type: "let" }, - type: "VariableDeclaration", }, ], }, @@ -1020,7 +996,6 @@ ruleTester.run("one-var", rule, { { messageId: "splitUninitialized", data: { type: "let" }, - type: "VariableDeclaration", }, ], }, @@ -1032,7 +1007,6 @@ ruleTester.run("one-var", rule, { { messageId: "splitInitialized", data: { type: "const" }, - type: "VariableDeclaration", }, ], }, @@ -1044,7 +1018,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "const" }, - type: "VariableDeclaration", }, ], }, @@ -1056,7 +1029,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "let" }, - type: "VariableDeclaration", line: 1, column: 74, }, @@ -1070,7 +1042,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "var" }, - type: "VariableDeclaration", line: 2, column: 1, }, @@ -1084,7 +1055,6 @@ ruleTester.run("one-var", rule, { { messageId: "splitInitialized", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -1096,7 +1066,6 @@ ruleTester.run("one-var", rule, { { messageId: "splitUninitialized", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -1108,7 +1077,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -1120,7 +1088,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -1131,7 +1098,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 40, }, @@ -1144,14 +1110,12 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 45, }, { messageId: "combine", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 71, }, @@ -1165,7 +1129,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 35, }, @@ -1178,7 +1141,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 51, }, @@ -1191,7 +1153,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 10, }, @@ -1205,7 +1166,6 @@ ruleTester.run("one-var", rule, { { messageId: "splitInitialized", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 1, }, @@ -1219,7 +1179,6 @@ ruleTester.run("one-var", rule, { { messageId: "splitInitialized", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 1, }, @@ -1233,7 +1192,6 @@ ruleTester.run("one-var", rule, { { messageId: "combineUninitialized", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 8, }, @@ -1247,7 +1205,6 @@ ruleTester.run("one-var", rule, { { messageId: "combineUninitialized", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 8, }, @@ -1261,7 +1218,6 @@ ruleTester.run("one-var", rule, { { messageId: "combineUninitialized", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 41, }, @@ -1275,7 +1231,6 @@ ruleTester.run("one-var", rule, { { messageId: "splitInitialized", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 53, }, @@ -1290,7 +1245,6 @@ ruleTester.run("one-var", rule, { { messageId: "splitInitialized", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 1, }, @@ -1305,7 +1259,6 @@ ruleTester.run("one-var", rule, { { messageId: "splitInitialized", data: { type: "const" }, - type: "VariableDeclaration", line: 1, column: 1, }, @@ -1319,7 +1272,6 @@ ruleTester.run("one-var", rule, { { messageId: "splitInitialized", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 1, }, @@ -1333,7 +1285,6 @@ ruleTester.run("one-var", rule, { { messageId: "splitInitialized", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 1, }, @@ -1347,7 +1298,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 1, }, @@ -1361,7 +1311,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 1, }, @@ -1375,7 +1324,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 1, }, @@ -1389,7 +1337,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 1, }, @@ -1402,7 +1349,6 @@ ruleTester.run("one-var", rule, { errors: [ { messageId: "splitRequires", - type: "VariableDeclaration", line: 1, column: 1, }, @@ -1415,7 +1361,6 @@ ruleTester.run("one-var", rule, { errors: [ { messageId: "splitRequires", - type: "VariableDeclaration", line: 1, column: 1, }, @@ -1428,7 +1373,6 @@ ruleTester.run("one-var", rule, { errors: [ { messageId: "splitRequires", - type: "VariableDeclaration", line: 1, column: 1, }, @@ -1441,7 +1385,6 @@ ruleTester.run("one-var", rule, { errors: [ { messageId: "splitRequires", - type: "VariableDeclaration", line: 1, column: 1, }, @@ -1455,7 +1398,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "const" }, - type: "VariableDeclaration", line: 1, column: 29, }, @@ -1471,7 +1413,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 15, }, @@ -1485,7 +1426,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 19, }, @@ -1500,7 +1440,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "let" }, - type: "VariableDeclaration", line: 1, column: 15, }, @@ -1515,7 +1454,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "let" }, - type: "VariableDeclaration", line: 1, column: 19, }, @@ -1530,7 +1468,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "const" }, - type: "VariableDeclaration", line: 1, column: 21, }, @@ -1545,7 +1482,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 25, }, @@ -1559,7 +1495,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 15, }, @@ -1574,7 +1509,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "let" }, - type: "VariableDeclaration", line: 1, column: 25, }, @@ -1589,7 +1523,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "const" }, - type: "VariableDeclaration", line: 1, column: 25, }, @@ -1603,7 +1536,6 @@ ruleTester.run("one-var", rule, { { messageId: "combineUninitialized", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 19, }, @@ -1617,14 +1549,12 @@ ruleTester.run("one-var", rule, { { messageId: "combineInitialized", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 12, }, { messageId: "combineUninitialized", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 30, }, @@ -1639,7 +1569,6 @@ ruleTester.run("one-var", rule, { { messageId: "combineUninitialized", data: { type: "let" }, - type: "VariableDeclaration", line: 1, column: 19, }, @@ -1654,14 +1583,12 @@ ruleTester.run("one-var", rule, { { messageId: "combineInitialized", data: { type: "let" }, - type: "VariableDeclaration", line: 1, column: 12, }, { messageId: "combineUninitialized", data: { type: "let" }, - type: "VariableDeclaration", line: 1, column: 30, }, @@ -1676,7 +1603,6 @@ ruleTester.run("one-var", rule, { { messageId: "combineUninitialized", data: { type: "let" }, - type: "VariableDeclaration", line: 1, column: 21, }, @@ -1690,14 +1616,12 @@ ruleTester.run("one-var", rule, { errors: [ { messageId: "combineInitialized", - type: "VariableDeclaration", line: 1, column: 14, }, { messageId: "combineUninitialized", data: { type: "let" }, - type: "VariableDeclaration", line: 1, column: 34, }, @@ -1711,14 +1635,12 @@ ruleTester.run("one-var", rule, { { messageId: "combineInitialized", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 12, }, { messageId: "splitUninitialized", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 23, }, @@ -1732,7 +1654,6 @@ ruleTester.run("one-var", rule, { { messageId: "splitUninitialized", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 12, }, @@ -1747,14 +1668,12 @@ ruleTester.run("one-var", rule, { { messageId: "combineInitialized", data: { type: "let" }, - type: "VariableDeclaration", line: 1, column: 12, }, { messageId: "splitUninitialized", data: { type: "let" }, - type: "VariableDeclaration", line: 1, column: 23, }, @@ -1769,7 +1688,6 @@ ruleTester.run("one-var", rule, { { messageId: "splitUninitialized", data: { type: "let" }, - type: "VariableDeclaration", line: 1, column: 12, }, @@ -1784,14 +1702,12 @@ ruleTester.run("one-var", rule, { { messageId: "combineInitialized", data: { type: "const" }, - type: "VariableDeclaration", line: 1, column: 14, }, { messageId: "splitUninitialized", data: { type: "let" }, - type: "VariableDeclaration", line: 1, column: 27, }, @@ -1806,7 +1722,6 @@ ruleTester.run("one-var", rule, { { messageId: "splitUninitialized", data: { type: "let" }, - type: "VariableDeclaration", line: 1, column: 14, }, @@ -1820,14 +1735,12 @@ ruleTester.run("one-var", rule, { { messageId: "combineUninitialized", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 8, }, { messageId: "combineInitialized", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 26, }, @@ -1841,7 +1754,6 @@ ruleTester.run("one-var", rule, { { messageId: "combineInitialized", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 19, }, @@ -1856,14 +1768,12 @@ ruleTester.run("one-var", rule, { { messageId: "combineUninitialized", data: { type: "let" }, - type: "VariableDeclaration", line: 1, column: 8, }, { messageId: "combineInitialized", data: { type: "let" }, - type: "VariableDeclaration", line: 1, column: 26, }, @@ -1878,7 +1788,6 @@ ruleTester.run("one-var", rule, { { messageId: "combineInitialized", data: { type: "let" }, - type: "VariableDeclaration", line: 1, column: 19, }, @@ -1893,14 +1802,12 @@ ruleTester.run("one-var", rule, { { messageId: "combineUninitialized", data: { type: "let" }, - type: "VariableDeclaration", line: 1, column: 8, }, { messageId: "combineInitialized", data: { type: "const" }, - type: "VariableDeclaration", line: 1, column: 28, }, @@ -1915,7 +1822,6 @@ ruleTester.run("one-var", rule, { { messageId: "combineInitialized", data: { type: "const" }, - type: "VariableDeclaration", line: 1, column: 21, }, @@ -1929,14 +1835,12 @@ ruleTester.run("one-var", rule, { { messageId: "combineUninitialized", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 8, }, { messageId: "splitInitialized", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 15, }, @@ -1950,7 +1854,6 @@ ruleTester.run("one-var", rule, { { messageId: "splitInitialized", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 8, }, @@ -1965,14 +1868,12 @@ ruleTester.run("one-var", rule, { { messageId: "combineUninitialized", data: { type: "let" }, - type: "VariableDeclaration", line: 1, column: 8, }, { messageId: "splitInitialized", data: { type: "let" }, - type: "VariableDeclaration", line: 1, column: 15, }, @@ -1987,7 +1888,6 @@ ruleTester.run("one-var", rule, { { messageId: "splitInitialized", data: { type: "let" }, - type: "VariableDeclaration", line: 1, column: 8, }, @@ -2002,14 +1902,12 @@ ruleTester.run("one-var", rule, { { messageId: "combineUninitialized", data: { type: "let" }, - type: "VariableDeclaration", line: 1, column: 8, }, { messageId: "splitInitialized", data: { type: "const" }, - type: "VariableDeclaration", line: 1, column: 15, }, @@ -2024,7 +1922,6 @@ ruleTester.run("one-var", rule, { { messageId: "splitInitialized", data: { type: "const" }, - type: "VariableDeclaration", line: 1, column: 8, }, @@ -2038,7 +1935,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 12, }, @@ -2053,7 +1949,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "let" }, - type: "VariableDeclaration", line: 1, column: 12, }, @@ -2068,7 +1963,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "const" }, - type: "VariableDeclaration", line: 1, column: 14, }, @@ -2083,14 +1977,12 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "let" }, - type: "VariableDeclaration", line: 1, column: 8, }, { messageId: "combine", data: { type: "const" }, - type: "VariableDeclaration", line: 1, column: 28, }, @@ -2105,7 +1997,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "const" }, - type: "VariableDeclaration", line: 1, column: 21, }, @@ -2120,14 +2011,12 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "let" }, - type: "VariableDeclaration", line: 1, column: 8, }, { messageId: "split", data: { type: "const" }, - type: "VariableDeclaration", line: 1, column: 15, }, @@ -2142,7 +2031,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "const" }, - type: "VariableDeclaration", line: 1, column: 8, }, @@ -2157,14 +2045,12 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "const" }, - type: "VariableDeclaration", line: 1, column: 14, }, { messageId: "combine", data: { type: "let" }, - type: "VariableDeclaration", line: 1, column: 34, }, @@ -2179,7 +2065,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "let" }, - type: "VariableDeclaration", line: 1, column: 21, }, @@ -2194,14 +2079,12 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "const" }, - type: "VariableDeclaration", line: 1, column: 14, }, { messageId: "split", data: { type: "let" }, - type: "VariableDeclaration", line: 1, column: 27, }, @@ -2216,7 +2099,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "let" }, - type: "VariableDeclaration", line: 1, column: 14, }, @@ -2230,7 +2112,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 10, }, @@ -2244,14 +2125,12 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 14, }, { messageId: "combine", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 47, }, @@ -2268,14 +2147,12 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "let" }, - type: "VariableDeclaration", line: 1, column: 11, }, { messageId: "split", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 18, }, @@ -2289,7 +2166,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 8, }, @@ -2303,21 +2179,18 @@ ruleTester.run("one-var", rule, { { messageId: "combineInitialized", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 12, }, { messageId: "splitUninitialized", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 23, }, { messageId: "combineInitialized", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 44, }, @@ -2331,14 +2204,12 @@ ruleTester.run("one-var", rule, { { messageId: "combineInitialized", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 12, }, { messageId: "combineInitialized", data: { type: "var" }, - type: "VariableDeclaration", line: 1, column: 41, }, @@ -2352,7 +2223,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "var" }, - type: "VariableDeclaration", line: 2, column: 1, }, @@ -2367,7 +2237,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "const" }, - type: "VariableDeclaration", }, ], }, @@ -2380,7 +2249,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "const" }, - type: "VariableDeclaration", }, ], }, @@ -2393,7 +2261,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "const" }, - type: "VariableDeclaration", }, ], }, @@ -2406,7 +2273,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "const" }, - type: "VariableDeclaration", }, ], }, @@ -2419,7 +2285,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "const" }, - type: "VariableDeclaration", }, ], }, @@ -2432,7 +2297,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "const" }, - type: "VariableDeclaration", }, ], }, @@ -2445,7 +2309,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "const" }, - type: "VariableDeclaration", }, ], }, @@ -2458,7 +2321,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "const" }, - type: "VariableDeclaration", }, ], }, @@ -2472,7 +2334,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -2484,7 +2345,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -2496,7 +2356,6 @@ ruleTester.run("one-var", rule, { { messageId: "splitUninitialized", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -2508,7 +2367,6 @@ ruleTester.run("one-var", rule, { { messageId: "splitInitialized", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -2520,7 +2378,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -2532,7 +2389,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -2544,7 +2400,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -2556,7 +2411,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -2568,7 +2422,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -2580,7 +2433,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -2592,7 +2444,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -2604,7 +2455,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -2616,7 +2466,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -2631,7 +2480,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "let" }, - type: "VariableDeclaration", }, ], }, @@ -2644,7 +2492,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -2657,7 +2504,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "let" }, - type: "VariableDeclaration", }, ], }, @@ -2670,7 +2516,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -2683,7 +2528,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "let" }, - type: "VariableDeclaration", }, ], }, @@ -2696,7 +2540,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -2709,7 +2552,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -2722,7 +2564,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "let" }, - type: "VariableDeclaration", }, ], }, @@ -2735,7 +2576,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -2748,7 +2588,6 @@ ruleTester.run("one-var", rule, { { messageId: "combineInitialized", data: { type: "let" }, - type: "VariableDeclaration", }, ], }, @@ -2761,7 +2600,6 @@ ruleTester.run("one-var", rule, { { messageId: "combineInitialized", data: { type: "var" }, - type: "VariableDeclaration", }, ], }, @@ -2779,7 +2617,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "using" }, - type: "VariableDeclaration", }, ], }, @@ -2795,7 +2632,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "await using" }, - type: "VariableDeclaration", }, ], }, @@ -2811,7 +2647,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "using" }, - type: "VariableDeclaration", }, ], }, @@ -2827,7 +2662,6 @@ ruleTester.run("one-var", rule, { { messageId: "split", data: { type: "await using" }, - type: "VariableDeclaration", }, ], }, @@ -2843,7 +2677,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "using" }, - type: "VariableDeclaration", }, ], }, @@ -2859,7 +2692,6 @@ ruleTester.run("one-var", rule, { { messageId: "combine", data: { type: "await using" }, - type: "VariableDeclaration", }, ], }, @@ -2875,7 +2707,6 @@ ruleTester.run("one-var", rule, { { messageId: "splitInitialized", data: { type: "using" }, - type: "VariableDeclaration", }, ], }, @@ -2891,7 +2722,6 @@ ruleTester.run("one-var", rule, { { messageId: "splitInitialized", data: { type: "await using" }, - type: "VariableDeclaration", }, ], }, diff --git a/tests/lib/rules/operator-assignment.js b/tests/lib/rules/operator-assignment.js index af82f0637810..4f70a4897b56 100644 --- a/tests/lib/rules/operator-assignment.js +++ b/tests/lib/rules/operator-assignment.js @@ -117,7 +117,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -128,7 +127,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "-=" }, }, ], @@ -139,7 +137,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "*=" }, }, ], @@ -150,7 +147,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "*=" }, }, ], @@ -161,7 +157,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "*=" }, }, ], @@ -172,7 +167,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "/=" }, }, ], @@ -183,7 +177,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "%=" }, }, ], @@ -194,7 +187,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "<<=" }, }, ], @@ -205,7 +197,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: ">>=" }, }, ], @@ -216,7 +207,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: ">>>=" }, }, ], @@ -227,7 +217,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "&=" }, }, ], @@ -238,7 +227,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "^=" }, }, ], @@ -249,7 +237,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "|=" }, }, ], @@ -260,7 +247,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "-=" }, }, ], @@ -271,7 +257,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "*=" }, }, ], @@ -283,7 +268,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -295,7 +279,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -307,7 +290,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -319,7 +301,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -331,7 +312,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -342,7 +322,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -354,7 +333,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -365,7 +343,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -377,7 +354,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -388,7 +364,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -400,7 +375,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -411,7 +385,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -423,7 +396,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -434,7 +406,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -445,7 +416,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -457,7 +427,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: ">>>=" }, }, ], @@ -469,7 +438,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: ">>>=" }, }, ], @@ -480,7 +448,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "/=" }, }, ], @@ -491,7 +458,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "/=" }, }, ], @@ -503,7 +469,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -515,7 +480,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -527,7 +491,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -539,7 +502,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -551,7 +513,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -563,7 +524,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -575,7 +535,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -587,7 +546,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -599,7 +557,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -611,7 +568,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -623,7 +579,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -635,7 +590,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -647,7 +601,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -659,7 +612,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -671,7 +623,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -683,7 +634,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -695,7 +645,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "^=" }, }, ], @@ -706,7 +655,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "**=" }, }, ], @@ -718,7 +666,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "**=" }, }, ], @@ -730,7 +677,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "*=" }, }, ], @@ -742,7 +688,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "-=" }, }, ], @@ -754,7 +699,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -766,7 +710,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -778,7 +721,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "*=" }, }, ], @@ -790,7 +732,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -802,7 +743,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "/=" }, }, ], @@ -814,7 +754,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "/=" }, }, ], @@ -826,7 +765,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "/=" }, }, ], @@ -838,7 +776,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "/=" }, }, ], @@ -850,7 +787,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -862,7 +798,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -874,7 +809,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -886,7 +820,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "unexpected", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -899,7 +832,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], @@ -910,7 +842,6 @@ ruleTester.run("operator-assignment", rule, { errors: [ { messageId: "replaced", - type: "AssignmentExpression", data: { operator: "+=" }, }, ], diff --git a/tests/lib/rules/operator-linebreak.js b/tests/lib/rules/operator-linebreak.js index d41f205d7f35..098ce5aa4dfb 100644 --- a/tests/lib/rules/operator-linebreak.js +++ b/tests/lib/rules/operator-linebreak.js @@ -170,7 +170,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "operatorAtEnd", data: { operator: "+" }, - type: "BinaryExpression", line: 2, column: 1, endLine: 2, @@ -185,7 +184,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "operatorAtEnd", data: { operator: "+" }, - type: "BinaryExpression", line: 2, column: 2, endLine: 2, @@ -200,7 +198,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "badLinebreak", data: { operator: "+" }, - type: "BinaryExpression", line: 2, column: 1, endLine: 2, @@ -215,7 +212,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "operatorAtEnd", data: { operator: "+" }, - type: "BinaryExpression", line: 2, column: 1, endLine: 2, @@ -230,7 +226,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "operatorAtEnd", data: { operator: "+" }, - type: "BinaryExpression", line: 2, column: 1, endLine: 2, @@ -245,7 +240,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "operatorAtEnd", data: { operator: "||" }, - type: "LogicalExpression", line: 2, column: 2, endLine: 2, @@ -260,7 +254,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "operatorAtEnd", data: { operator: "+=" }, - type: "AssignmentExpression", line: 2, column: 2, endLine: 2, @@ -275,7 +268,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "operatorAtEnd", data: { operator: "=" }, - type: "VariableDeclarator", line: 2, column: 2, endLine: 2, @@ -290,7 +282,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "badLinebreak", data: { operator: "*" }, - type: "BinaryExpression", line: 2, column: 1, endLine: 2, @@ -305,7 +296,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "operatorAtBeginning", data: { operator: "?" }, - type: "ConditionalExpression", line: 1, column: 21, endLine: 1, @@ -314,7 +304,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "operatorAtBeginning", data: { operator: ":" }, - type: "ConditionalExpression", line: 2, column: 6, endLine: 2, @@ -331,7 +320,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "operatorAtEnd", data: { operator: "?" }, - type: "ConditionalExpression", line: 2, column: 1, endLine: 2, @@ -340,7 +328,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "operatorAtEnd", data: { operator: ":" }, - type: "ConditionalExpression", line: 3, column: 1, endLine: 3, @@ -357,7 +344,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "operatorAtBeginning", data: { operator: "+" }, - type: "BinaryExpression", line: 1, column: 3, endLine: 1, @@ -373,7 +359,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "operatorAtBeginning", data: { operator: "+" }, - type: "BinaryExpression", line: 1, column: 5, endLine: 1, @@ -389,7 +374,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "operatorAtBeginning", data: { operator: "||" }, - type: "LogicalExpression", line: 1, column: 3, endLine: 1, @@ -405,7 +389,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "operatorAtBeginning", data: { operator: "+=" }, - type: "AssignmentExpression", line: 1, column: 3, endLine: 1, @@ -421,7 +404,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "operatorAtBeginning", data: { operator: "=" }, - type: "VariableDeclarator", line: 1, column: 7, endLine: 1, @@ -437,7 +419,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "operatorAtBeginning", data: { operator: "?" }, - type: "ConditionalExpression", line: 1, column: 21, endLine: 1, @@ -446,7 +427,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "operatorAtBeginning", data: { operator: ":" }, - type: "ConditionalExpression", line: 2, column: 6, endLine: 2, @@ -463,7 +443,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "noLinebreak", data: { operator: "+" }, - type: "BinaryExpression", line: 1, column: 3, endLine: 1, @@ -479,7 +458,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "noLinebreak", data: { operator: "+" }, - type: "BinaryExpression", line: 2, column: 1, endLine: 2, @@ -495,7 +473,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "noLinebreak", data: { operator: "+" }, - type: "BinaryExpression", line: 1, column: 5, endLine: 1, @@ -511,7 +488,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "noLinebreak", data: { operator: "+" }, - type: "BinaryExpression", line: 2, column: 1, endLine: 2, @@ -527,7 +503,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "noLinebreak", data: { operator: "||" }, - type: "LogicalExpression", line: 1, column: 3, endLine: 1, @@ -543,7 +518,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "noLinebreak", data: { operator: "||" }, - type: "LogicalExpression", line: 2, column: 2, endLine: 2, @@ -559,7 +533,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "noLinebreak", data: { operator: "+=" }, - type: "AssignmentExpression", line: 1, column: 3, endLine: 1, @@ -575,7 +548,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "noLinebreak", data: { operator: "+=" }, - type: "AssignmentExpression", line: 2, column: 1, endLine: 2, @@ -591,7 +563,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "noLinebreak", data: { operator: "=" }, - type: "VariableDeclarator", line: 1, column: 7, endLine: 1, @@ -607,7 +578,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "noLinebreak", data: { operator: "=" }, - type: "VariableDeclarator", line: 2, column: 2, endLine: 2, @@ -623,7 +593,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "noLinebreak", data: { operator: "?" }, - type: "ConditionalExpression", line: 1, column: 21, endLine: 1, @@ -632,7 +601,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "noLinebreak", data: { operator: ":" }, - type: "ConditionalExpression", line: 3, column: 1, endLine: 3, @@ -648,7 +616,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "badLinebreak", data: { operator: "?" }, - type: "ConditionalExpression", line: 2, column: 1, endLine: 2, @@ -657,7 +624,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "badLinebreak", data: { operator: ":" }, - type: "ConditionalExpression", line: 4, column: 1, endLine: 4, @@ -672,7 +638,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "badLinebreak", data: { operator: ">>>" }, - type: "BinaryExpression", line: 2, column: 3, endLine: 2, @@ -688,7 +653,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "noLinebreak", data: { operator: "+=" }, - type: "AssignmentExpression", line: 1, column: 5, endLine: 1, @@ -704,7 +668,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "badLinebreak", data: { operator: ":" }, - type: "ConditionalExpression", line: 4, column: 1, endLine: 4, @@ -721,7 +684,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "operatorAtBeginning", data: { operator: "+" }, - type: "BinaryExpression", line: 1, column: 4, endLine: 1, @@ -736,7 +698,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "operatorAtEnd", data: { operator: "&&" }, - type: "LogicalExpression", line: 2, column: 1, endLine: 2, @@ -751,7 +712,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "badLinebreak", data: { operator: "+" }, - type: "BinaryExpression", line: 2, column: 1, endLine: 2, @@ -767,7 +727,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "badLinebreak", data: { operator: "+" }, - type: "BinaryExpression", line: 2, column: 1, endLine: 2, @@ -782,7 +741,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "operatorAtEnd", data: { operator: "+" }, - type: "BinaryExpression", line: 2, column: 1, endLine: 2, @@ -798,7 +756,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "operatorAtBeginning", data: { operator: "+" }, - type: "BinaryExpression", line: 1, column: 13, endLine: 1, @@ -828,7 +785,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "operatorAtEnd", data: { operator: "&&=" }, - type: "AssignmentExpression", line: 2, column: 3, endLine: 2, @@ -845,7 +801,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "operatorAtBeginning", data: { operator: "||=" }, - type: "AssignmentExpression", line: 1, column: 3, endLine: 1, @@ -862,7 +817,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "noLinebreak", data: { operator: "??=" }, - type: "AssignmentExpression", line: 1, column: 4, endLine: 1, @@ -879,7 +833,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "noLinebreak", data: { operator: "&&=" }, - type: "AssignmentExpression", line: 2, column: 3, endLine: 2, @@ -896,7 +849,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "operatorAtBeginning", data: { operator: "||=" }, - type: "AssignmentExpression", line: 1, column: 3, endLine: 1, @@ -913,7 +865,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "operatorAtEnd", data: { operator: "??=" }, - type: "AssignmentExpression", line: 2, column: 1, endLine: 2, @@ -932,7 +883,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "operatorAtEnd", data: { operator: "=" }, - type: "PropertyDefinition", line: 2, column: 1, endLine: 2, @@ -949,7 +899,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "operatorAtBeginning", data: { operator: "=" }, - type: "PropertyDefinition", line: 1, column: 13, endLine: 1, @@ -966,7 +915,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "noLinebreak", data: { operator: "=" }, - type: "PropertyDefinition", line: 1, column: 13, endLine: 1, @@ -983,7 +931,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "operatorAtEnd", data: { operator: "=" }, - type: "PropertyDefinition", line: 2, column: 1, endLine: 2, @@ -1000,7 +947,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "operatorAtBeginning", data: { operator: "=" }, - type: "PropertyDefinition", line: 1, column: 15, endLine: 1, @@ -1017,7 +963,6 @@ ruleTester.run("operator-linebreak", rule, { { messageId: "noLinebreak", data: { operator: "=" }, - type: "PropertyDefinition", line: 2, column: 2, endLine: 2, diff --git a/tests/lib/rules/prefer-arrow-callback.js b/tests/lib/rules/prefer-arrow-callback.js index e3588ece3043..aaef4ce22c3b 100644 --- a/tests/lib/rules/prefer-arrow-callback.js +++ b/tests/lib/rules/prefer-arrow-callback.js @@ -19,7 +19,6 @@ const RuleTester = require("../../../lib/rule-tester/rule-tester"); const errors = [ { messageId: "preferArrowCallback", - type: "FunctionExpression", }, ]; diff --git a/tests/lib/rules/prefer-const.js b/tests/lib/rules/prefer-const.js index 05f4f98f2391..9a41a99cb75e 100644 --- a/tests/lib/rules/prefer-const.js +++ b/tests/lib/rules/prefer-const.js @@ -233,12 +233,10 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "a" }, - type: "Identifier", }, { messageId: "useConst", data: { name: "b" }, - type: "Identifier", }, ], }, @@ -250,12 +248,10 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "a" }, - type: "Identifier", }, { messageId: "useConst", data: { name: "b" }, - type: "Identifier", }, ], }, @@ -278,7 +274,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "x" }, - type: "Identifier", }, ], }, @@ -289,7 +284,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "i" }, - type: "Identifier", }, ], }, @@ -300,7 +294,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "x" }, - type: "Identifier", }, ], }, @@ -311,7 +304,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "x" }, - type: "Identifier", }, ], }, @@ -322,7 +314,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "x" }, - type: "Identifier", }, ], }, @@ -333,7 +324,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "x" }, - type: "Identifier", }, ], }, @@ -344,7 +334,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "i" }, - type: "Identifier", }, ], }, @@ -355,7 +344,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "x" }, - type: "Identifier", }, ], }, @@ -366,7 +354,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "x" }, - type: "Identifier", }, ], }, @@ -377,7 +364,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "g" }, - type: "Identifier", }, ], }, @@ -388,7 +374,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "x" }, - type: "Identifier", }, ], }, @@ -399,7 +384,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "x" }, - type: "Identifier", }, ], }, @@ -410,7 +394,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "x" }, - type: "Identifier", }, ], }, @@ -421,12 +404,10 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "i" }, - type: "Identifier", }, { messageId: "useConst", data: { name: "x" }, - type: "Identifier", }, ], }, @@ -444,7 +425,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -462,7 +442,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -474,7 +453,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "x" }, - type: "Identifier", column: 8, }, ], @@ -486,7 +464,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "x" }, - type: "Identifier", column: 29, }, ], @@ -498,7 +475,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "x" }, - type: "Identifier", column: 22, }, ], @@ -512,7 +488,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -524,7 +499,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "c" }, - type: "Identifier", }, ], }, @@ -536,12 +510,10 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "b" }, - type: "Identifier", }, { messageId: "useConst", data: { name: "c" }, - type: "Identifier", }, ], }, @@ -553,7 +525,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -565,12 +536,10 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "a" }, - type: "Identifier", }, { messageId: "useConst", data: { name: "b" }, - type: "Identifier", }, ], }, @@ -582,7 +551,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -594,7 +562,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -606,12 +573,10 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "a" }, - type: "Identifier", }, { messageId: "useConst", data: { name: "b" }, - type: "Identifier", }, ], }, @@ -623,12 +588,10 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "a" }, - type: "Identifier", }, { messageId: "useConst", data: { name: "c" }, - type: "Identifier", }, ], }, @@ -640,7 +603,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "c" }, - type: "Identifier", }, ], }, @@ -655,7 +617,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "name" }, - type: "Identifier", column: 7, }, ], @@ -673,7 +634,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "name" }, - type: "Identifier", column: 7, }, ], @@ -687,7 +647,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "x" }, - type: "Identifier", column: 5, }, ], @@ -704,7 +663,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "x" }, - type: "Identifier", }, ], }, @@ -715,7 +673,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "x" }, - type: "Identifier", }, ], }, @@ -726,12 +683,10 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "foo" }, - type: "Identifier", }, { messageId: "useConst", data: { name: "bar" }, - type: "Identifier", }, ], }, @@ -744,7 +699,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "y" }, - type: "Identifier", }, ], }, @@ -755,12 +709,10 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "y" }, - type: "Identifier", }, { messageId: "useConst", data: { name: "z" }, - type: "Identifier", }, ], }, @@ -774,7 +726,6 @@ ruleTester.run("prefer-const", rule, { { message: "'predicate' is never reassigned. Use 'const' instead.", - type: "Identifier", }, ], }, @@ -786,7 +737,6 @@ ruleTester.run("prefer-const", rule, { { message: "'predicate' is never reassigned. Use 'const' instead.", - type: "Identifier", }, ], }, @@ -798,7 +748,6 @@ ruleTester.run("prefer-const", rule, { { message: "'predicate' is never reassigned. Use 'const' instead.", - type: "Identifier", }, ], }, @@ -808,11 +757,9 @@ ruleTester.run("prefer-const", rule, { errors: [ { message: "'x' is never reassigned. Use 'const' instead.", - type: "Identifier", }, { message: "'y' is never reassigned. Use 'const' instead.", - type: "Identifier", }, ], }, @@ -822,7 +769,6 @@ ruleTester.run("prefer-const", rule, { errors: [ { message: "'y' is never reassigned. Use 'const' instead.", - type: "Identifier", }, ], }, @@ -832,15 +778,12 @@ ruleTester.run("prefer-const", rule, { errors: [ { message: "'x' is never reassigned. Use 'const' instead.", - type: "Identifier", }, { message: "'y' is never reassigned. Use 'const' instead.", - type: "Identifier", }, { message: "'z' is never reassigned. Use 'const' instead.", - type: "Identifier", }, ], }, @@ -850,23 +793,18 @@ ruleTester.run("prefer-const", rule, { errors: [ { message: "'a' is never reassigned. Use 'const' instead.", - type: "Identifier", }, { message: "'b' is never reassigned. Use 'const' instead.", - type: "Identifier", }, { message: "'c' is never reassigned. Use 'const' instead.", - type: "Identifier", }, { message: "'y' is never reassigned. Use 'const' instead.", - type: "Identifier", }, { message: "'z' is never reassigned. Use 'const' instead.", - type: "Identifier", }, ], }, @@ -876,19 +814,15 @@ ruleTester.run("prefer-const", rule, { errors: [ { message: "'x' is never reassigned. Use 'const' instead.", - type: "Identifier", }, { message: "'y' is never reassigned. Use 'const' instead.", - type: "Identifier", }, { message: "'a' is never reassigned. Use 'const' instead.", - type: "Identifier", }, { message: "'b' is never reassigned. Use 'const' instead.", - type: "Identifier", }, ], }, @@ -901,15 +835,12 @@ ruleTester.run("prefer-const", rule, { { message: "'someFunc' is never reassigned. Use 'const' instead.", - type: "Identifier", }, { message: "'a' is never reassigned. Use 'const' instead.", - type: "Identifier", }, { message: "'b' is never reassigned. Use 'const' instead.", - type: "Identifier", }, ], }, @@ -922,12 +853,10 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "a" }, - type: "Identifier", }, { messageId: "useConst", data: { name: "b" }, - type: "Identifier", }, ], }, @@ -938,17 +867,14 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "a" }, - type: "Identifier", }, { messageId: "useConst", data: { name: "b" }, - type: "Identifier", }, { messageId: "useConst", data: { name: "c" }, - type: "Identifier", }, ], }, @@ -969,11 +895,9 @@ ruleTester.run("prefer-const", rule, { errors: [ { message: "'bar' is never reassigned. Use 'const' instead.", - type: "Identifier", }, { message: "'bar' is never reassigned. Use 'const' instead.", - type: "Identifier", }, ], }, @@ -993,7 +917,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -1006,7 +929,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -1018,7 +940,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -1030,7 +951,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -1042,7 +962,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -1054,7 +973,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -1066,7 +984,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "a" }, - type: "Identifier", column: 27, }, ], @@ -1079,12 +996,10 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "a" }, - type: "Identifier", }, { messageId: "useConst", data: { name: "b" }, - type: "Identifier", }, ], }, @@ -1096,12 +1011,10 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "a" }, - type: "Identifier", }, { messageId: "useConst", data: { name: "b" }, - type: "Identifier", }, ], }, @@ -1113,12 +1026,10 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "a" }, - type: "Identifier", }, { messageId: "useConst", data: { name: "b" }, - type: "Identifier", }, ], }, @@ -1130,7 +1041,6 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "a" }, - type: "Identifier", }, ], }, @@ -1151,17 +1061,14 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "itemId" }, - type: "Identifier", }, { messageId: "useConst", data: { name: "list" }, - type: "Identifier", }, { messageId: "useConst", data: { name: "obj" }, - type: "Identifier", }, ], }, @@ -1182,17 +1089,14 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "itemId" }, - type: "Identifier", }, { messageId: "useConst", data: { name: "list" }, - type: "Identifier", }, { messageId: "useConst", data: { name: "obj" }, - type: "Identifier", }, ], }, @@ -1210,12 +1114,10 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "itemId" }, - type: "Identifier", }, { messageId: "useConst", data: { name: "list" }, - type: "Identifier", }, ], }, @@ -1236,17 +1138,14 @@ ruleTester.run("prefer-const", rule, { { messageId: "useConst", data: { name: "itemId" }, - type: "Identifier", }, { messageId: "useConst", data: { name: "list" }, - type: "Identifier", }, { messageId: "useConst", data: { name: "obj" }, - type: "Identifier", }, ], }, diff --git a/tests/lib/rules/prefer-destructuring.js b/tests/lib/rules/prefer-destructuring.js index fc1ae7ba0f11..af50672840ca 100644 --- a/tests/lib/rules/prefer-destructuring.js +++ b/tests/lib/rules/prefer-destructuring.js @@ -294,7 +294,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "array" }, - type: "VariableDeclarator", }, ], }, @@ -305,7 +304,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "array" }, - type: "AssignmentExpression", }, ], }, @@ -316,7 +314,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -327,7 +324,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -338,7 +334,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -349,7 +344,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -360,7 +354,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -371,7 +364,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -382,7 +374,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -397,7 +388,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -409,7 +399,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -424,7 +413,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -436,7 +424,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -448,7 +435,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -459,7 +445,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -470,7 +455,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "AssignmentExpression", }, ], }, @@ -481,7 +465,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "AssignmentExpression", }, ], }, @@ -496,7 +479,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "array" }, - type: "VariableDeclarator", }, ], }, @@ -508,7 +490,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "array" }, - type: "AssignmentExpression", }, ], }, @@ -526,7 +507,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "array" }, - type: "VariableDeclarator", }, ], }, @@ -543,7 +523,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "array" }, - type: "VariableDeclarator", }, ], }, @@ -560,7 +539,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "array" }, - type: "AssignmentExpression", }, ], }, @@ -577,7 +555,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "AssignmentExpression", }, ], }, @@ -588,7 +565,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -601,7 +577,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -612,7 +587,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -623,7 +597,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -634,7 +607,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -645,7 +617,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -656,7 +627,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -667,7 +637,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -678,7 +647,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -689,7 +657,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -700,7 +667,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -711,7 +677,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -722,7 +687,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -733,7 +697,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -744,7 +707,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -755,7 +717,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -766,7 +727,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -777,7 +737,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -788,7 +747,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -799,7 +757,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -810,7 +767,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -821,7 +777,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -832,7 +787,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -843,7 +797,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, @@ -854,7 +807,6 @@ ruleTester.run("prefer-destructuring", rule, { { messageId: "preferDestructuring", data: { type: "object" }, - type: "VariableDeclarator", }, ], }, diff --git a/tests/lib/rules/prefer-exponentiation-operator.js b/tests/lib/rules/prefer-exponentiation-operator.js index f6044ec3d122..863d860c30bb 100644 --- a/tests/lib/rules/prefer-exponentiation-operator.js +++ b/tests/lib/rules/prefer-exponentiation-operator.js @@ -31,7 +31,6 @@ function invalid(code, output) { errors: [ { messageId: "useExponentiation", - type: "CallExpression", }, ], }; @@ -111,7 +110,6 @@ ruleTester.run("prefer-exponentiation-operator", rule, { errors: [ { messageId: "useExponentiation", - type: "CallExpression", line: 1, column: 1, endLine: 1, @@ -126,7 +124,6 @@ ruleTester.run("prefer-exponentiation-operator", rule, { errors: [ { messageId: "useExponentiation", - type: "CallExpression", line: 1, column: 1, endLine: 1, @@ -306,7 +303,6 @@ ruleTester.run("prefer-exponentiation-operator", rule, { errors: [ { messageId: "useExponentiation", - type: "CallExpression", line: 1, column: 1, endLine: 1, @@ -314,7 +310,6 @@ ruleTester.run("prefer-exponentiation-operator", rule, { }, { messageId: "useExponentiation", - type: "CallExpression", line: 1, column: 18, endLine: 2, @@ -328,19 +323,16 @@ ruleTester.run("prefer-exponentiation-operator", rule, { errors: [ { messageId: "useExponentiation", - type: "CallExpression", column: 1, endColumn: 41, }, { messageId: "useExponentiation", - type: "CallExpression", column: 10, endColumn: 24, }, { messageId: "useExponentiation", - type: "CallExpression", column: 26, endColumn: 40, }, @@ -352,13 +344,11 @@ ruleTester.run("prefer-exponentiation-operator", rule, { errors: [ { messageId: "useExponentiation", - type: "CallExpression", column: 1, endColumn: 15, }, { messageId: "useExponentiation", - type: "CallExpression", column: 17, endColumn: 31, }, @@ -414,7 +404,6 @@ ruleTester.run("prefer-exponentiation-operator", rule, { errors: [ { messageId: "useExponentiation", - type: "CallExpression", }, ], }, @@ -431,7 +420,6 @@ ruleTester.run("prefer-exponentiation-operator", rule, { errors: [ { messageId: "useExponentiation", - type: "CallExpression", }, ], }, @@ -448,7 +436,6 @@ ruleTester.run("prefer-exponentiation-operator", rule, { errors: [ { messageId: "useExponentiation", - type: "CallExpression", }, ], }, diff --git a/tests/lib/rules/prefer-named-capture-group.js b/tests/lib/rules/prefer-named-capture-group.js index 138ca0ada145..9696dc38e466 100644 --- a/tests/lib/rules/prefer-named-capture-group.js +++ b/tests/lib/rules/prefer-named-capture-group.js @@ -101,7 +101,6 @@ ruleTester.run("prefer-named-capture-group", rule, { errors: [ { messageId: "required", - type: "Literal", data: { group: "([0-9]{4})" }, line: 1, column: 1, @@ -124,7 +123,6 @@ ruleTester.run("prefer-named-capture-group", rule, { errors: [ { messageId: "required", - type: "NewExpression", data: { group: "([0-9]{4})" }, line: 1, column: 1, @@ -147,7 +145,6 @@ ruleTester.run("prefer-named-capture-group", rule, { errors: [ { messageId: "required", - type: "CallExpression", data: { group: "([0-9]{4})" }, line: 1, column: 1, @@ -170,7 +167,6 @@ ruleTester.run("prefer-named-capture-group", rule, { errors: [ { messageId: "required", - type: "NewExpression", data: { group: "(bc)" }, suggestions: [ { @@ -190,7 +186,6 @@ ruleTester.run("prefer-named-capture-group", rule, { errors: [ { messageId: "required", - type: "NewExpression", data: { group: "(b)" }, suggestions: [ { @@ -210,7 +205,6 @@ ruleTester.run("prefer-named-capture-group", rule, { errors: [ { messageId: "required", - type: "NewExpression", data: { group: "(b)" }, suggestions: null, }, @@ -221,7 +215,6 @@ ruleTester.run("prefer-named-capture-group", rule, { errors: [ { messageId: "required", - type: "Literal", data: { group: "([0-9]{4})" }, line: 1, column: 1, @@ -239,7 +232,6 @@ ruleTester.run("prefer-named-capture-group", rule, { }, { messageId: "required", - type: "Literal", data: { group: "(\\w{5})" }, line: 1, column: 1, @@ -262,7 +254,6 @@ ruleTester.run("prefer-named-capture-group", rule, { errors: [ { messageId: "required", - type: "Literal", data: { group: "([0-9]{4})" }, line: 1, column: 1, @@ -280,7 +271,6 @@ ruleTester.run("prefer-named-capture-group", rule, { }, { messageId: "required", - type: "Literal", data: { group: "(5)" }, line: 1, column: 1, @@ -303,7 +293,6 @@ ruleTester.run("prefer-named-capture-group", rule, { errors: [ { messageId: "required", - type: "Literal", data: { group: "(a)" }, line: 1, column: 1, @@ -326,7 +315,6 @@ ruleTester.run("prefer-named-capture-group", rule, { errors: [ { messageId: "required", - type: "Literal", data: { group: "(a)" }, line: 1, column: 1, @@ -349,7 +337,6 @@ ruleTester.run("prefer-named-capture-group", rule, { errors: [ { messageId: "required", - type: "Literal", data: { group: "(\\w{5})" }, line: 1, column: 1, @@ -372,7 +359,6 @@ ruleTester.run("prefer-named-capture-group", rule, { errors: [ { messageId: "required", - type: "Literal", data: { group: "(5)" }, line: 1, column: 1, @@ -395,7 +381,6 @@ ruleTester.run("prefer-named-capture-group", rule, { errors: [ { messageId: "required", - type: "Literal", data: { group: "(a)" }, line: 1, column: 1, @@ -418,7 +403,6 @@ ruleTester.run("prefer-named-capture-group", rule, { errors: [ { messageId: "required", - type: "NewExpression", data: { group: "(a)" }, suggestions: null, }, @@ -429,7 +413,6 @@ ruleTester.run("prefer-named-capture-group", rule, { errors: [ { messageId: "required", - type: "NewExpression", data: { group: "(bc)" }, suggestions: null, }, @@ -440,13 +423,11 @@ ruleTester.run("prefer-named-capture-group", rule, { errors: [ { messageId: "required", - type: "NewExpression", data: { group: "(a)" }, suggestions: null, }, { messageId: "required", - type: "NewExpression", data: { group: "(b)" }, suggestions: null, }, @@ -457,7 +438,6 @@ ruleTester.run("prefer-named-capture-group", rule, { errors: [ { messageId: "required", - type: "NewExpression", data: { group: "(b)" }, suggestions: null, }, @@ -468,7 +448,6 @@ ruleTester.run("prefer-named-capture-group", rule, { errors: [ { messageId: "required", - type: "CallExpression", data: { group: "(a)" }, suggestions: null, }, @@ -479,7 +458,6 @@ ruleTester.run("prefer-named-capture-group", rule, { errors: [ { messageId: "required", - type: "CallExpression", data: { group: "(ab)" }, suggestions: null, }, @@ -490,7 +468,6 @@ ruleTester.run("prefer-named-capture-group", rule, { errors: [ { messageId: "required", - type: "NewExpression", data: { group: "(ab)" }, suggestions: null, }, @@ -501,7 +478,6 @@ ruleTester.run("prefer-named-capture-group", rule, { errors: [ { messageId: "required", - type: "NewExpression", data: { group: "(a)" }, line: 1, column: 1, @@ -525,7 +501,6 @@ ruleTester.run("prefer-named-capture-group", rule, { errors: [ { messageId: "required", - type: "CallExpression", data: { group: "(b\nc)" }, suggestions: [ { @@ -545,7 +520,6 @@ ruleTester.run("prefer-named-capture-group", rule, { errors: [ { messageId: "required", - type: "NewExpression", data: { group: "(b)" }, suggestions: null, }, @@ -556,7 +530,6 @@ ruleTester.run("prefer-named-capture-group", rule, { errors: [ { messageId: "required", - type: "CallExpression", data: { group: "(a)" }, suggestions: null, }, @@ -567,7 +540,6 @@ ruleTester.run("prefer-named-capture-group", rule, { errors: [ { messageId: "required", - type: "CallExpression", data: { group: "(b)" }, suggestions: null, }, @@ -579,7 +551,6 @@ ruleTester.run("prefer-named-capture-group", rule, { errors: [ { messageId: "required", - type: "NewExpression", data: { group: "([0-9]{4})" }, line: 1, column: 1, @@ -603,7 +574,6 @@ ruleTester.run("prefer-named-capture-group", rule, { errors: [ { messageId: "required", - type: "CallExpression", data: { group: "([0-9]{4})" }, line: 1, column: 1, @@ -630,7 +600,6 @@ ruleTester.run("prefer-named-capture-group", rule, { errors: [ { messageId: "required", - type: "NewExpression", data: { group: "([0-9]{4})" }, line: 3, column: 17, @@ -661,7 +630,6 @@ ruleTester.run("prefer-named-capture-group", rule, { errors: [ { messageId: "required", - type: "NewExpression", data: { group: "([[A--B]])" }, line: 1, column: 1, diff --git a/tests/lib/rules/prefer-object-spread.js b/tests/lib/rules/prefer-object-spread.js index 2a793b007184..1b542eff0702 100644 --- a/tests/lib/rules/prefer-object-spread.js +++ b/tests/lib/rules/prefer-object-spread.js @@ -107,7 +107,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 1, }, @@ -119,7 +118,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 1, }, @@ -131,7 +129,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 1, }, @@ -143,7 +140,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 1, }, @@ -155,7 +151,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 1, }, @@ -167,7 +162,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 1, }, @@ -181,7 +175,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 1, }, @@ -194,13 +187,11 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 1, }, { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 31, }, @@ -212,19 +203,16 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 1, }, { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 31, }, { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 61, }, @@ -238,7 +226,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 1, }, @@ -252,7 +239,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 1, }, @@ -266,7 +252,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 1, }, @@ -280,7 +265,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 1, }, @@ -300,7 +284,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 1, }, @@ -325,7 +308,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 1, }, @@ -351,7 +333,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 14, }, @@ -368,7 +349,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 14, }, @@ -391,7 +371,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 14, }, @@ -409,7 +388,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useLiteralMessage", - type: "CallExpression", line: 1, column: 1, }, @@ -421,7 +399,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useLiteralMessage", - type: "CallExpression", line: 1, column: 1, }, @@ -440,7 +417,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useLiteralMessage", - type: "CallExpression", line: 3, column: 17, }, @@ -459,7 +435,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useLiteralMessage", - type: "CallExpression", line: 3, column: 17, }, @@ -472,7 +447,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useLiteralMessage", - type: "CallExpression", line: 1, column: 9, }, @@ -484,7 +458,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 9, }, @@ -496,7 +469,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 9, }, @@ -508,7 +480,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 9, }, @@ -520,7 +491,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 1, }, @@ -532,7 +502,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 1, }, @@ -550,7 +519,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 3, column: 17, }, @@ -568,7 +536,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 3, column: 17, }, @@ -582,7 +549,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 8, }, @@ -594,7 +560,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 13, }, @@ -606,7 +571,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 25, }, @@ -618,7 +582,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 5, }, @@ -630,7 +593,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 30, }, @@ -648,7 +610,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useLiteralMessage", - type: "CallExpression", line: 3, column: 17, }, @@ -666,7 +627,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 3, column: 17, }, @@ -684,7 +644,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useLiteralMessage", - type: "CallExpression", line: 3, column: 17, }, @@ -702,7 +661,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 3, column: 17, }, @@ -720,7 +678,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useLiteralMessage", - type: "CallExpression", line: 3, column: 17, }, @@ -738,7 +695,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 3, column: 17, }, @@ -762,7 +718,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 2, column: 33, }, @@ -787,7 +742,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 2, column: 33, }, @@ -812,7 +766,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 2, column: 33, }, @@ -844,7 +797,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 2, column: 33, }, @@ -860,7 +812,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 2, column: 29, }, @@ -874,7 +825,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useLiteralMessage", - type: "CallExpression", line: 1, column: 1, }, @@ -886,7 +836,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useLiteralMessage", - type: "CallExpression", line: 1, column: 1, }, @@ -899,7 +848,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useLiteralMessage", - type: "CallExpression", line: 1, column: 1, }, @@ -912,7 +860,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useLiteralMessage", - type: "CallExpression", line: 1, column: 1, }, @@ -931,7 +878,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useLiteralMessage", - type: "CallExpression", line: 3, column: 17, }, @@ -950,7 +896,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useLiteralMessage", - type: "CallExpression", line: 3, column: 17, }, @@ -964,7 +909,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useLiteralMessage", - type: "CallExpression", line: 1, column: 1, }, @@ -981,7 +925,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 13, }, @@ -996,7 +939,6 @@ ruleTester.run("prefer-object-spread", rule, { errors: [ { messageId: "useSpreadMessage", - type: "CallExpression", line: 1, column: 1, }, diff --git a/tests/lib/rules/prefer-promise-reject-errors.js b/tests/lib/rules/prefer-promise-reject-errors.js index f68c8f483a2f..5f62e36be22e 100644 --- a/tests/lib/rules/prefer-promise-reject-errors.js +++ b/tests/lib/rules/prefer-promise-reject-errors.js @@ -125,7 +125,11 @@ ruleTester.run("prefer-promise-reject-errors", rule, { "Promise.reject(foo &&= 5)", ].map(invalidCase => { const errors = { - errors: [{ messageId: "rejectAnError", type: "CallExpression" }], + errors: [ + { + messageId: "rejectAnError", + }, + ], }; return Object.assign( diff --git a/tests/lib/rules/prefer-reflect.js b/tests/lib/rules/prefer-reflect.js index c262f40a5040..e5ad12902044 100644 --- a/tests/lib/rules/prefer-reflect.js +++ b/tests/lib/rules/prefer-reflect.js @@ -136,7 +136,6 @@ ruleTester.run("prefer-reflect", rule, { existing: "Function.prototype.apply", substitute: "Reflect.apply", }, - type: "CallExpression", }, ], }, @@ -150,7 +149,6 @@ ruleTester.run("prefer-reflect", rule, { existing: "Function.prototype.apply", substitute: "Reflect.apply", }, - type: "CallExpression", }, ], }, @@ -163,7 +161,6 @@ ruleTester.run("prefer-reflect", rule, { existing: "Function.prototype.call", substitute: "Reflect.apply", }, - type: "CallExpression", }, ], }, @@ -177,7 +174,6 @@ ruleTester.run("prefer-reflect", rule, { existing: "Function.prototype.call", substitute: "Reflect.apply", }, - type: "CallExpression", }, ], }, @@ -190,7 +186,6 @@ ruleTester.run("prefer-reflect", rule, { existing: "Object.defineProperty", substitute: "Reflect.defineProperty", }, - type: "CallExpression", }, ], }, @@ -204,7 +199,6 @@ ruleTester.run("prefer-reflect", rule, { existing: "Object.defineProperty", substitute: "Reflect.defineProperty", }, - type: "CallExpression", }, ], }, @@ -217,7 +211,6 @@ ruleTester.run("prefer-reflect", rule, { existing: "Object.getOwnPropertyDescriptor", substitute: "Reflect.getOwnPropertyDescriptor", }, - type: "CallExpression", }, ], }, @@ -231,7 +224,6 @@ ruleTester.run("prefer-reflect", rule, { existing: "Object.getOwnPropertyDescriptor", substitute: "Reflect.getOwnPropertyDescriptor", }, - type: "CallExpression", }, ], }, @@ -244,7 +236,6 @@ ruleTester.run("prefer-reflect", rule, { existing: "Object.getPrototypeOf", substitute: "Reflect.getPrototypeOf", }, - type: "CallExpression", }, ], }, @@ -258,7 +249,6 @@ ruleTester.run("prefer-reflect", rule, { existing: "Object.getPrototypeOf", substitute: "Reflect.getPrototypeOf", }, - type: "CallExpression", }, ], }, @@ -271,7 +261,6 @@ ruleTester.run("prefer-reflect", rule, { existing: "Object.setPrototypeOf", substitute: "Reflect.setPrototypeOf", }, - type: "CallExpression", }, ], }, @@ -285,7 +274,6 @@ ruleTester.run("prefer-reflect", rule, { existing: "Object.setPrototypeOf", substitute: "Reflect.setPrototypeOf", }, - type: "CallExpression", }, ], }, @@ -298,7 +286,6 @@ ruleTester.run("prefer-reflect", rule, { existing: "Object.isExtensible", substitute: "Reflect.isExtensible", }, - type: "CallExpression", }, ], }, @@ -312,7 +299,6 @@ ruleTester.run("prefer-reflect", rule, { existing: "Object.isExtensible", substitute: "Reflect.isExtensible", }, - type: "CallExpression", }, ], }, @@ -325,7 +311,6 @@ ruleTester.run("prefer-reflect", rule, { existing: "Object.getOwnPropertyNames", substitute: "Reflect.getOwnPropertyNames", }, - type: "CallExpression", }, ], }, @@ -339,7 +324,6 @@ ruleTester.run("prefer-reflect", rule, { existing: "Object.getOwnPropertyNames", substitute: "Reflect.getOwnPropertyNames", }, - type: "CallExpression", }, ], }, @@ -352,7 +336,6 @@ ruleTester.run("prefer-reflect", rule, { existing: "Object.preventExtensions", substitute: "Reflect.preventExtensions", }, - type: "CallExpression", }, ], }, @@ -366,7 +349,6 @@ ruleTester.run("prefer-reflect", rule, { existing: "Object.preventExtensions", substitute: "Reflect.preventExtensions", }, - type: "CallExpression", }, ], }, @@ -379,7 +361,6 @@ ruleTester.run("prefer-reflect", rule, { existing: "the delete keyword", substitute: "Reflect.deleteProperty", }, - type: "UnaryExpression", }, ], }, @@ -393,7 +374,6 @@ ruleTester.run("prefer-reflect", rule, { existing: "the delete keyword", substitute: "Reflect.deleteProperty", }, - type: "UnaryExpression", }, ], }, diff --git a/tests/lib/rules/prefer-regex-literals.js b/tests/lib/rules/prefer-regex-literals.js index 214edd9201d3..7a7d5454b726 100644 --- a/tests/lib/rules/prefer-regex-literals.js +++ b/tests/lib/rules/prefer-regex-literals.js @@ -153,7 +153,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRegExp", - type: "NewExpression", suggestions: [ { messageId: "replaceWithLiteral", @@ -168,7 +167,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRegExp", - type: "CallExpression", suggestions: [ { messageId: "replaceWithLiteral", @@ -183,7 +181,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRegExp", - type: "NewExpression", suggestions: [ { messageId: "replaceWithLiteral", @@ -198,7 +195,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRegExp", - type: "CallExpression", suggestions: [ { messageId: "replaceWithLiteral", @@ -213,7 +209,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRegExp", - type: "NewExpression", suggestions: [ { messageId: "replaceWithLiteral", @@ -228,7 +223,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRegExp", - type: "CallExpression", suggestions: [ { messageId: "replaceWithLiteral", @@ -243,7 +237,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRegExp", - type: "NewExpression", suggestions: [ { messageId: "replaceWithLiteral", @@ -258,7 +251,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRegExp", - type: "CallExpression", suggestions: [ { messageId: "replaceWithLiteral", @@ -273,7 +265,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRegExp", - type: "NewExpression", suggestions: [ { messageId: "replaceWithLiteral", @@ -288,7 +279,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRegExp", - type: "NewExpression", suggestions: [ { messageId: "replaceWithLiteral", @@ -303,7 +293,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRegExp", - type: "NewExpression", suggestions: [ { messageId: "replaceWithLiteral", @@ -318,7 +307,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRegExp", - type: "CallExpression", suggestions: [ { messageId: "replaceWithLiteral", @@ -333,7 +321,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRegExp", - type: "NewExpression", suggestions: [ { messageId: "replaceWithLiteral", @@ -348,7 +335,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRegExp", - type: "CallExpression", suggestions: [ { messageId: "replaceWithLiteral", @@ -363,7 +349,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRegExp", - type: "NewExpression", suggestions: [ { messageId: "replaceWithLiteral", @@ -378,7 +363,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRegExp", - type: "NewExpression", suggestions: [ { messageId: "replaceWithLiteral", @@ -393,7 +377,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRegExp", - type: "CallExpression", suggestions: [ { messageId: "replaceWithLiteral", @@ -408,7 +391,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRegExp", - type: "NewExpression", suggestions: [ { messageId: "replaceWithLiteral", @@ -423,7 +405,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRegExp", - type: "NewExpression", suggestions: [ { messageId: "replaceWithLiteral", @@ -438,7 +419,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRegExp", - type: "CallExpression", suggestions: [ { messageId: "replaceWithLiteral", @@ -453,7 +433,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRegExp", - type: "CallExpression", suggestions: [ { messageId: "replaceWithLiteral", @@ -468,7 +447,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRegExp", - type: "NewExpression", suggestions: [ { messageId: "replaceWithLiteral", @@ -483,7 +461,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRegExp", - type: "NewExpression", suggestions: [ { messageId: "replaceWithLiteral", @@ -498,7 +475,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRegExp", - type: "NewExpression", suggestions: [ { messageId: "replaceWithLiteral", @@ -513,7 +489,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRegExp", - type: "NewExpression", suggestions: [ { messageId: "replaceWithLiteral", @@ -528,7 +503,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRegExp", - type: "CallExpression", suggestions: [ { messageId: "replaceWithLiteral", @@ -544,7 +518,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRegExp", - type: "NewExpression", suggestions: [ { messageId: "replaceWithLiteral", @@ -560,7 +533,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRegExp", - type: "CallExpression", suggestions: [ { messageId: "replaceWithLiteral", @@ -580,7 +552,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRedundantRegExp", - type: "NewExpression", line: 1, column: 1, suggestions: [ @@ -602,7 +573,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRedundantRegExpWithFlags", - type: "NewExpression", line: 1, column: 1, suggestions: [ @@ -627,7 +597,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRedundantRegExpWithFlags", - type: "NewExpression", line: 1, column: 1, suggestions: [ @@ -659,7 +628,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRedundantRegExpWithFlags", - type: "NewExpression", line: 1, column: 1, suggestions: [ @@ -684,7 +652,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRedundantRegExpWithFlags", - type: "NewExpression", line: 1, column: 1, suggestions: [ @@ -716,7 +683,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRedundantRegExpWithFlags", - type: "NewExpression", line: 1, column: 1, suggestions: [ @@ -741,7 +707,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRedundantRegExpWithFlags", - type: "NewExpression", line: 1, column: 1, suggestions: [ @@ -773,7 +738,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRedundantRegExpWithFlags", - type: "NewExpression", line: 1, column: 1, suggestions: [ @@ -798,7 +762,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRedundantRegExpWithFlags", - type: "NewExpression", line: 1, column: 1, suggestions: [ @@ -823,7 +786,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRedundantRegExpWithFlags", - type: "NewExpression", line: 1, column: 1, suggestions: [ @@ -848,7 +810,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRegExp", - type: "NewExpression", line: 1, column: 1, suggestions: [ @@ -870,7 +831,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRedundantRegExpWithFlags", - type: "NewExpression", line: 1, column: 1, suggestions: [ @@ -895,7 +855,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRedundantRegExp", - type: "NewExpression", line: 1, column: 1, suggestions: null, @@ -915,7 +874,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRedundantRegExpWithFlags", - type: "NewExpression", line: 1, column: 1, suggestions: null, @@ -932,7 +890,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRedundantRegExp", - type: "NewExpression", line: 2, column: 1, suggestions: null, @@ -949,7 +906,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRedundantRegExpWithFlags", - type: "NewExpression", line: 2, column: 1, suggestions: null, @@ -966,7 +922,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRedundantRegExp", - type: "CallExpression", line: 1, column: 3, suggestions: [ @@ -988,7 +943,6 @@ ruleTester.run("prefer-regex-literals", rule, { errors: [ { messageId: "unexpectedRedundantRegExp", - type: "CallExpression", line: 1, column: 1, suggestions: [ diff --git a/tests/lib/rules/prefer-rest-params.js b/tests/lib/rules/prefer-rest-params.js index 89d9e22a441c..255de1b8e15e 100644 --- a/tests/lib/rules/prefer-rest-params.js +++ b/tests/lib/rules/prefer-rest-params.js @@ -33,19 +33,35 @@ ruleTester.run("prefer-rest-params", rule, { invalid: [ { code: "function foo() { arguments; }", - errors: [{ type: "Identifier", messageId: "preferRestParams" }], + errors: [ + { + messageId: "preferRestParams", + }, + ], }, { code: "function foo() { arguments[0]; }", - errors: [{ type: "Identifier", messageId: "preferRestParams" }], + errors: [ + { + messageId: "preferRestParams", + }, + ], }, { code: "function foo() { arguments[1]; }", - errors: [{ type: "Identifier", messageId: "preferRestParams" }], + errors: [ + { + messageId: "preferRestParams", + }, + ], }, { code: "function foo() { arguments[Symbol.iterator]; }", - errors: [{ type: "Identifier", messageId: "preferRestParams" }], + errors: [ + { + messageId: "preferRestParams", + }, + ], }, ], }); diff --git a/tests/lib/rules/prefer-spread.js b/tests/lib/rules/prefer-spread.js index 4e1301118bc8..165bab17b68a 100644 --- a/tests/lib/rules/prefer-spread.js +++ b/tests/lib/rules/prefer-spread.js @@ -16,7 +16,11 @@ const RuleTester = require("../../../lib/rule-tester/rule-tester"); // Tests //------------------------------------------------------------------------------ -const errors = [{ messageId: "preferSpread", type: "CallExpression" }]; +const errors = [ + { + messageId: "preferSpread", + }, +]; const ruleTester = new RuleTester({ languageOptions: { ecmaVersion: 2022 } }); diff --git a/tests/lib/rules/prefer-template.js b/tests/lib/rules/prefer-template.js index 32d1b8cf54aa..9a5305495c6d 100644 --- a/tests/lib/rules/prefer-template.js +++ b/tests/lib/rules/prefer-template.js @@ -19,7 +19,6 @@ const RuleTester = require("../../../lib/rule-tester/rule-tester"); const errors = [ { messageId: "unexpectedStringConcatenation", - type: "BinaryExpression", }, ]; diff --git a/tests/lib/rules/quote-props.js b/tests/lib/rules/quote-props.js index 868f16ebacdc..de826ff1b257 100644 --- a/tests/lib/rules/quote-props.js +++ b/tests/lib/rules/quote-props.js @@ -224,7 +224,6 @@ ruleTester.run("quote-props", rule, { { messageId: "unquotedPropertyFound", data: { property: "a" }, - type: "Property", }, ], }, @@ -235,7 +234,6 @@ ruleTester.run("quote-props", rule, { { messageId: "unquotedPropertyFound", data: { property: "0" }, - type: "Property", }, ], }, @@ -247,7 +245,6 @@ ruleTester.run("quote-props", rule, { { messageId: "unnecessarilyQuotedProperty", data: { property: "a" }, - type: "Property", }, ], }, @@ -259,7 +256,6 @@ ruleTester.run("quote-props", rule, { { messageId: "unnecessarilyQuotedProperty", data: { property: "null" }, - type: "Property", }, ], }, @@ -271,7 +267,6 @@ ruleTester.run("quote-props", rule, { { messageId: "unnecessarilyQuotedProperty", data: { property: "true" }, - type: "Property", }, ], }, @@ -283,7 +278,6 @@ ruleTester.run("quote-props", rule, { { messageId: "unnecessarilyQuotedProperty", data: { property: "0" }, - type: "Property", }, ], }, @@ -295,7 +289,6 @@ ruleTester.run("quote-props", rule, { { messageId: "inconsistentlyQuotedProperty", data: { key: "b" }, - type: "Property", }, ], }, @@ -307,7 +300,6 @@ ruleTester.run("quote-props", rule, { { messageId: "inconsistentlyQuotedProperty", data: { key: "a" }, - type: "Property", }, ], }, @@ -319,7 +311,6 @@ ruleTester.run("quote-props", rule, { { messageId: "inconsistentlyQuotedProperty", data: { key: "b" }, - type: "Property", }, ], }, @@ -328,8 +319,12 @@ ruleTester.run("quote-props", rule, { output: "({ a: 0, b: 0 })", options: ["consistent-as-needed"], errors: [ - { messageId: "redundantQuoting", type: "Property" }, - { messageId: "redundantQuoting", type: "Property" }, + { + messageId: "redundantQuoting", + }, + { + messageId: "redundantQuoting", + }, ], }, { @@ -337,7 +332,11 @@ ruleTester.run("quote-props", rule, { output: "({ a: 0, [x]: 0 })", options: ["consistent-as-needed"], languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "redundantQuoting", type: "Property" }], + errors: [ + { + messageId: "redundantQuoting", + }, + ], }, { code: "({ 'a': 0, x })", @@ -347,7 +346,6 @@ ruleTester.run("quote-props", rule, { errors: [ { messageId: "redundantQuoting", - type: "Property", }, ], }, @@ -356,8 +354,12 @@ ruleTester.run("quote-props", rule, { output: "({ true: 0, null: 0 })", options: ["consistent-as-needed"], errors: [ - { messageId: "redundantQuoting", type: "Property" }, - { messageId: "redundantQuoting", type: "Property" }, + { + messageId: "redundantQuoting", + }, + { + messageId: "redundantQuoting", + }, ], }, { @@ -368,7 +370,6 @@ ruleTester.run("quote-props", rule, { { messageId: "inconsistentlyQuotedProperty", data: { key: "true" }, - type: "Property", }, ], }, @@ -377,8 +378,12 @@ ruleTester.run("quote-props", rule, { output: "({ a: 0, b: 0 })", options: ["consistent-as-needed", { keywords: true }], errors: [ - { messageId: "redundantQuoting", type: "Property" }, - { messageId: "redundantQuoting", type: "Property" }, + { + messageId: "redundantQuoting", + }, + { + messageId: "redundantQuoting", + }, ], }, { @@ -389,12 +394,10 @@ ruleTester.run("quote-props", rule, { { messageId: "requireQuotesDueToReservedWord", data: { property: "while" }, - type: "Property", }, { messageId: "requireQuotesDueToReservedWord", data: { property: "while" }, - type: "Property", }, ], }, @@ -406,7 +409,6 @@ ruleTester.run("quote-props", rule, { { messageId: "requireQuotesDueToReservedWord", data: { property: "while" }, - type: "Property", }, ], }, @@ -414,7 +416,11 @@ ruleTester.run("quote-props", rule, { code: "({ foo: 0, 'bar': 0 })", output: "({ foo: 0, bar: 0 })", options: ["consistent-as-needed", { keywords: true }], - errors: [{ messageId: "redundantQuoting", type: "Property" }], + errors: [ + { + messageId: "redundantQuoting", + }, + ], }, { code: @@ -434,7 +440,6 @@ ruleTester.run("quote-props", rule, { { messageId: "inconsistentlyQuotedProperty", data: { key: "prop2" }, - type: "Property", }, ], }, @@ -453,9 +458,15 @@ ruleTester.run("quote-props", rule, { "})", options: ["consistent-as-needed"], errors: [ - { messageId: "redundantQuoting", type: "Property" }, - { messageId: "redundantQuoting", type: "Property" }, - { messageId: "redundantQuoting", type: "Property" }, + { + messageId: "redundantQuoting", + }, + { + messageId: "redundantQuoting", + }, + { + messageId: "redundantQuoting", + }, ], }, { @@ -466,7 +477,6 @@ ruleTester.run("quote-props", rule, { { messageId: "unnecessarilyQuotedProperty", data: { property: "if" }, - type: "Property", }, ], }, @@ -478,7 +488,6 @@ ruleTester.run("quote-props", rule, { { messageId: "unnecessarilyQuotedProperty", data: { property: "synchronized" }, - type: "Property", }, ], }, @@ -490,7 +499,6 @@ ruleTester.run("quote-props", rule, { { messageId: "unquotedReservedProperty", data: { property: "while" }, - type: "Property", }, ], }, @@ -502,7 +510,6 @@ ruleTester.run("quote-props", rule, { { messageId: "unquotedReservedProperty", data: { property: "if" }, - type: "Property", }, ], }, @@ -514,7 +521,6 @@ ruleTester.run("quote-props", rule, { { messageId: "unquotedNumericProperty", data: { property: "1" }, - type: "Property", }, ], }, @@ -526,7 +532,6 @@ ruleTester.run("quote-props", rule, { { messageId: "unquotedPropertyFound", data: { property: "1" }, - type: "Property", }, ], }, diff --git a/tests/lib/rules/quotes.js b/tests/lib/rules/quotes.js index de7264951041..ac56ee859e35 100644 --- a/tests/lib/rules/quotes.js +++ b/tests/lib/rules/quotes.js @@ -323,7 +323,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "doublequote" }, - type: "Literal", }, ], }, @@ -335,7 +334,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "singlequote" }, - type: "Literal", }, ], }, @@ -350,7 +348,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "singlequote" }, - type: "TemplateLiteral", }, ], }, @@ -361,7 +358,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "doublequote" }, - type: "Literal", }, ], }, @@ -373,13 +369,11 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "singlequote" }, - type: "Literal", column: 11, }, { messageId: "wrongQuotes", data: { description: "singlequote" }, - type: "Literal", column: 31, }, ], @@ -392,7 +386,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "doublequote" }, - type: "Literal", }, ], }, @@ -407,7 +400,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "doublequote" }, - type: "TemplateLiteral", }, ], }, @@ -419,7 +411,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "singlequote" }, - type: "Literal", }, ], }, @@ -431,7 +422,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "doublequote" }, - type: "Literal", }, ], }, @@ -443,7 +433,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "doublequote" }, - type: "Literal", }, ], }, @@ -455,7 +444,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "singlequote" }, - type: "Literal", }, ], }, @@ -467,7 +455,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "doublequote" }, - type: "Literal", }, ], }, @@ -480,7 +467,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "backtick" }, - type: "Literal", }, ], }, @@ -493,7 +479,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "backtick" }, - type: "Literal", }, ], }, @@ -506,7 +491,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "backtick" }, - type: "Literal", }, ], }, @@ -519,7 +503,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "backtick" }, - type: "Literal", }, ], }, @@ -532,7 +515,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "backtick" }, - type: "Literal", }, ], }, @@ -547,7 +529,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "backtick" }, - type: "Literal", }, ], }, @@ -560,7 +541,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "backtick" }, - type: "Literal", }, ], }, @@ -573,7 +553,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "backtick" }, - type: "Literal", }, ], }, @@ -588,12 +567,10 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "backtick" }, - type: "Literal", }, { messageId: "wrongQuotes", data: { description: "backtick" }, - type: "Literal", }, ], }, @@ -606,12 +583,10 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "backtick" }, - type: "Literal", }, { messageId: "wrongQuotes", data: { description: "backtick" }, - type: "Literal", }, ], }, @@ -626,7 +601,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "singlequote" }, - type: "Literal", }, ], }, @@ -639,7 +613,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "doublequote" }, - type: "Literal", }, ], }, @@ -655,7 +628,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "backtick" }, - type: "Literal", }, ], }, @@ -669,7 +641,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "doublequote" }, - type: "TemplateLiteral", }, ], }, @@ -681,7 +652,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "doublequote" }, - type: "TemplateLiteral", }, ], }, @@ -693,7 +663,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "doublequote" }, - type: "TemplateLiteral", }, ], }, @@ -705,7 +674,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "doublequote" }, - type: "TemplateLiteral", }, ], }, @@ -717,7 +685,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "doublequote" }, - type: "TemplateLiteral", }, ], }, @@ -729,7 +696,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "doublequote" }, - type: "TemplateLiteral", }, ], }, @@ -743,7 +709,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "doublequote" }, - type: "TemplateLiteral", }, ], }, @@ -755,7 +720,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "doublequote" }, - type: "TemplateLiteral", }, ], }, @@ -767,7 +731,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "doublequote" }, - type: "TemplateLiteral", }, ], }, @@ -779,7 +742,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "doublequote" }, - type: "TemplateLiteral", line: 1, column: 1, }, @@ -795,7 +757,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "singlequote" }, - type: "Literal", }, ], }, @@ -807,7 +768,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "doublequote" }, - type: "Literal", }, ], }, @@ -820,7 +780,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "backtick" }, - type: "Literal", }, ], }, @@ -833,7 +792,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "backtick" }, - type: "Literal", }, ], }, @@ -846,7 +804,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "backtick" }, - type: "Literal", }, ], }, @@ -859,7 +816,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "backtick" }, - type: "Literal", }, ], }, @@ -872,7 +828,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "backtick" }, - type: "Literal", }, ], }, @@ -885,7 +840,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "backtick" }, - type: "Literal", }, ], }, @@ -898,7 +852,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "backtick" }, - type: "Literal", }, ], }, @@ -911,7 +864,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "backtick" }, - type: "Literal", }, ], }, @@ -924,7 +876,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "backtick" }, - type: "Literal", }, ], }, @@ -939,7 +890,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "doublequote" }, - type: "Literal", }, ], }, @@ -952,7 +902,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "doublequote" }, - type: "Literal", }, ], }, @@ -965,7 +914,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "singlequote" }, - type: "Literal", }, ], }, @@ -978,7 +926,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "singlequote" }, - type: "Literal", }, ], }, @@ -991,7 +938,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "backtick" }, - type: "Literal", }, ], }, @@ -1004,7 +950,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "backtick" }, - type: "Literal", }, ], }, @@ -1018,7 +963,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "doublequote" }, - type: "TemplateLiteral", }, ], }, @@ -1031,12 +975,10 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "backtick" }, - type: "Literal", }, { messageId: "wrongQuotes", data: { description: "backtick" }, - type: "Literal", }, ], }, @@ -1047,7 +989,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "doublequote" }, - type: "Literal", }, ], }, @@ -1059,7 +1000,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "doublequote" }, - type: "TemplateLiteral", }, ], }, @@ -1071,7 +1011,6 @@ ruleTester.run("quotes", rule, { { messageId: "wrongQuotes", data: { description: "doublequote" }, - type: "TemplateLiteral", }, ], }, diff --git a/tests/lib/rules/radix.js b/tests/lib/rules/radix.js index 7a7f3d8cbaa3..ecf4270a9a6f 100644 --- a/tests/lib/rules/radix.js +++ b/tests/lib/rules/radix.js @@ -93,7 +93,6 @@ ruleTester.run("radix", rule, { errors: [ { messageId: "missingParameters", - type: "CallExpression", }, ], }, @@ -102,7 +101,6 @@ ruleTester.run("radix", rule, { errors: [ { messageId: "missingParameters", - type: "CallExpression", }, ], }, @@ -111,7 +109,6 @@ ruleTester.run("radix", rule, { errors: [ { messageId: "missingRadix", - type: "CallExpression", suggestions: [ { messageId: "addRadixParameter10", @@ -127,7 +124,6 @@ ruleTester.run("radix", rule, { errors: [ { messageId: "missingRadix", - type: "CallExpression", suggestions: [ { messageId: "addRadixParameter10", @@ -142,7 +138,6 @@ ruleTester.run("radix", rule, { errors: [ { messageId: "missingRadix", - type: "CallExpression", suggestions: [ { messageId: "addRadixParameter10", @@ -158,7 +153,6 @@ ruleTester.run("radix", rule, { errors: [ { messageId: "missingRadix", - type: "CallExpression", suggestions: [ { messageId: "addRadixParameter10", @@ -173,7 +167,6 @@ ruleTester.run("radix", rule, { errors: [ { messageId: "invalidRadix", - type: "CallExpression", }, ], }, @@ -182,7 +175,6 @@ ruleTester.run("radix", rule, { errors: [ { messageId: "invalidRadix", - type: "CallExpression", }, ], }, @@ -191,7 +183,6 @@ ruleTester.run("radix", rule, { errors: [ { messageId: "invalidRadix", - type: "CallExpression", }, ], }, @@ -200,7 +191,6 @@ ruleTester.run("radix", rule, { errors: [ { messageId: "invalidRadix", - type: "CallExpression", }, ], }, @@ -209,7 +199,6 @@ ruleTester.run("radix", rule, { errors: [ { messageId: "invalidRadix", - type: "CallExpression", }, ], }, @@ -218,7 +207,6 @@ ruleTester.run("radix", rule, { errors: [ { messageId: "invalidRadix", - type: "CallExpression", }, ], }, @@ -227,7 +215,6 @@ ruleTester.run("radix", rule, { errors: [ { messageId: "invalidRadix", - type: "CallExpression", }, ], }, @@ -236,7 +223,6 @@ ruleTester.run("radix", rule, { errors: [ { messageId: "invalidRadix", - type: "CallExpression", }, ], }, @@ -245,7 +231,6 @@ ruleTester.run("radix", rule, { errors: [ { messageId: "missingParameters", - type: "CallExpression", }, ], }, @@ -255,7 +240,6 @@ ruleTester.run("radix", rule, { errors: [ { messageId: "missingParameters", - type: "CallExpression", }, ], }, @@ -264,7 +248,6 @@ ruleTester.run("radix", rule, { errors: [ { messageId: "missingRadix", - type: "CallExpression", suggestions: [ { messageId: "addRadixParameter10", @@ -279,7 +262,6 @@ ruleTester.run("radix", rule, { errors: [ { messageId: "invalidRadix", - type: "CallExpression", }, ], }, @@ -288,7 +270,6 @@ ruleTester.run("radix", rule, { errors: [ { messageId: "invalidRadix", - type: "CallExpression", }, ], }, @@ -297,7 +278,6 @@ ruleTester.run("radix", rule, { errors: [ { messageId: "invalidRadix", - type: "CallExpression", }, ], }, @@ -307,7 +287,6 @@ ruleTester.run("radix", rule, { errors: [ { messageId: "redundantRadix", - type: "CallExpression", }, ], }, @@ -319,7 +298,6 @@ ruleTester.run("radix", rule, { errors: [ { messageId: "missingRadix", - type: "CallExpression", suggestions: [ { messageId: "addRadixParameter10", @@ -335,7 +313,6 @@ ruleTester.run("radix", rule, { errors: [ { messageId: "missingRadix", - type: "CallExpression", suggestions: [ { messageId: "addRadixParameter10", @@ -351,7 +328,6 @@ ruleTester.run("radix", rule, { errors: [ { messageId: "missingRadix", - type: "CallExpression", suggestions: [ { messageId: "addRadixParameter10", @@ -367,7 +343,6 @@ ruleTester.run("radix", rule, { errors: [ { messageId: "missingRadix", - type: "CallExpression", suggestions: [ { messageId: "addRadixParameter10", diff --git a/tests/lib/rules/require-atomic-updates.js b/tests/lib/rules/require-atomic-updates.js index df705a212386..21a43f5590b3 100644 --- a/tests/lib/rules/require-atomic-updates.js +++ b/tests/lib/rules/require-atomic-updates.js @@ -22,25 +22,21 @@ const ruleTester = new RuleTester({ const VARIABLE_ERROR = { messageId: "nonAtomicUpdate", data: { value: "foo" }, - type: "AssignmentExpression", }; const STATIC_PROPERTY_ERROR = { messageId: "nonAtomicObjectUpdate", data: { value: "foo.bar", object: "foo" }, - type: "AssignmentExpression", }; const COMPUTED_PROPERTY_ERROR = { messageId: "nonAtomicObjectUpdate", data: { value: "foo[bar].baz", object: "foo" }, - type: "AssignmentExpression", }; const PRIVATE_PROPERTY_ERROR = { messageId: "nonAtomicObjectUpdate", data: { value: "foo.#bar", object: "foo" }, - type: "AssignmentExpression", }; ruleTester.run("require-atomic-updates", rule, { @@ -373,13 +369,11 @@ ruleTester.run("require-atomic-updates", rule, { { messageId: "nonAtomicObjectUpdate", data: { value: "process.exitCode", object: "process" }, - type: "AssignmentExpression", line: 6, }, { messageId: "nonAtomicObjectUpdate", data: { value: "process.exitCode", object: "process" }, - type: "AssignmentExpression", line: 8, }, ], diff --git a/tests/lib/rules/require-yield.js b/tests/lib/rules/require-yield.js index 5b73b989dc4c..80bfdee53f60 100644 --- a/tests/lib/rules/require-yield.js +++ b/tests/lib/rules/require-yield.js @@ -34,27 +34,40 @@ ruleTester.run("require-yield", rule, { { code: "function* foo() { return 0; }", errors: [ - { messageId: "missingYield", type: "FunctionDeclaration" }, + { + messageId: "missingYield", + }, ], }, { code: "(function* foo() { return 0; })();", - errors: [{ messageId: "missingYield", type: "FunctionExpression" }], + errors: [ + { + messageId: "missingYield", + }, + ], }, { code: "var obj = { *foo() { return 0; } }", - errors: [{ messageId: "missingYield", type: "FunctionExpression" }], + errors: [ + { + messageId: "missingYield", + }, + ], }, { code: "class A { *foo() { return 0; } }", - errors: [{ messageId: "missingYield", type: "FunctionExpression" }], + errors: [ + { + messageId: "missingYield", + }, + ], }, { code: "function* foo() { function* bar() { yield 0; } }", errors: [ { messageId: "missingYield", - type: "FunctionDeclaration", column: 1, }, ], @@ -64,7 +77,6 @@ ruleTester.run("require-yield", rule, { errors: [ { messageId: "missingYield", - type: "FunctionDeclaration", column: 19, }, ], diff --git a/tests/lib/rules/rest-spread-spacing.js b/tests/lib/rules/rest-spread-spacing.js index 64b16f97a792..00039a299e35 100644 --- a/tests/lib/rules/rest-spread-spacing.js +++ b/tests/lib/rules/rest-spread-spacing.js @@ -115,7 +115,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 8, messageId: "unexpectedWhitespace", data: { type: "spread" }, - type: "SpreadElement", }, ], }, @@ -130,7 +129,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 9, messageId: "unexpectedWhitespace", data: { type: "spread" }, - type: "SpreadElement", }, ], }, @@ -145,7 +143,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 8, messageId: "unexpectedWhitespace", data: { type: "spread" }, - type: "SpreadElement", }, ], }, @@ -160,7 +157,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 10, messageId: "unexpectedWhitespace", data: { type: "spread" }, - type: "SpreadElement", }, ], }, @@ -175,7 +171,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 1, messageId: "unexpectedWhitespace", data: { type: "spread" }, - type: "SpreadElement", }, ], }, @@ -190,7 +185,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 5, messageId: "unexpectedWhitespace", data: { type: "spread" }, - type: "SpreadElement", }, ], }, @@ -205,7 +199,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 2, messageId: "unexpectedWhitespace", data: { type: "spread" }, - type: "SpreadElement", }, ], }, @@ -221,7 +214,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 8, messageId: "unexpectedWhitespace", data: { type: "spread" }, - type: "SpreadElement", }, ], }, @@ -237,7 +229,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 8, messageId: "unexpectedWhitespace", data: { type: "spread" }, - type: "SpreadElement", }, ], }, @@ -253,7 +244,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 1, messageId: "unexpectedWhitespace", data: { type: "spread" }, - type: "SpreadElement", }, ], }, @@ -269,7 +259,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 7, messageId: "expectedWhitespace", data: { type: "spread" }, - type: "SpreadElement", }, ], }, @@ -284,7 +273,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 8, messageId: "unexpectedWhitespace", data: { type: "spread" }, - type: "SpreadElement", }, ], }, @@ -299,7 +287,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 8, messageId: "unexpectedWhitespace", data: { type: "spread" }, - type: "SpreadElement", }, ], }, @@ -315,7 +302,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 7, messageId: "expectedWhitespace", data: { type: "spread" }, - type: "SpreadElement", }, ], }, @@ -331,7 +317,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 7, messageId: "expectedWhitespace", data: { type: "spread" }, - type: "SpreadElement", }, ], }, @@ -346,7 +331,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 6, messageId: "unexpectedWhitespace", data: { type: "spread" }, - type: "SpreadElement", }, ], }, @@ -361,7 +345,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 6, messageId: "unexpectedWhitespace", data: { type: "spread" }, - type: "SpreadElement", }, ], }, @@ -376,7 +359,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 1, messageId: "unexpectedWhitespace", data: { type: "spread" }, - type: "SpreadElement", }, ], }, @@ -392,7 +374,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 6, messageId: "unexpectedWhitespace", data: { type: "spread" }, - type: "SpreadElement", }, ], }, @@ -408,7 +389,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 6, messageId: "unexpectedWhitespace", data: { type: "spread" }, - type: "SpreadElement", }, ], }, @@ -424,7 +404,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 1, messageId: "unexpectedWhitespace", data: { type: "spread" }, - type: "SpreadElement", }, ], }, @@ -440,7 +419,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 5, messageId: "expectedWhitespace", data: { type: "spread" }, - type: "SpreadElement", }, ], }, @@ -455,7 +433,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 6, messageId: "unexpectedWhitespace", data: { type: "spread" }, - type: "SpreadElement", }, ], }, @@ -470,7 +447,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 6, messageId: "unexpectedWhitespace", data: { type: "spread" }, - type: "SpreadElement", }, ], }, @@ -486,7 +462,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 5, messageId: "expectedWhitespace", data: { type: "spread" }, - type: "SpreadElement", }, ], }, @@ -502,7 +477,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 5, messageId: "expectedWhitespace", data: { type: "spread" }, - type: "SpreadElement", }, ], }, @@ -517,7 +491,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 16, messageId: "unexpectedWhitespace", data: { type: "rest" }, - type: "RestElement", }, ], }, @@ -532,7 +505,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 16, messageId: "unexpectedWhitespace", data: { type: "rest" }, - type: "RestElement", }, ], }, @@ -547,7 +519,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 1, messageId: "unexpectedWhitespace", data: { type: "rest" }, - type: "RestElement", }, ], }, @@ -563,7 +534,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 16, messageId: "unexpectedWhitespace", data: { type: "rest" }, - type: "RestElement", }, ], }, @@ -579,7 +549,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 16, messageId: "unexpectedWhitespace", data: { type: "rest" }, - type: "RestElement", }, ], }, @@ -595,7 +564,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 1, messageId: "unexpectedWhitespace", data: { type: "rest" }, - type: "RestElement", }, ], }, @@ -611,7 +579,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 15, messageId: "expectedWhitespace", data: { type: "rest" }, - type: "RestElement", }, ], }, @@ -627,7 +594,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 21, messageId: "unexpectedWhitespace", data: { type: "spread property" }, - type: "SpreadElement", }, ], }, @@ -643,7 +609,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 21, messageId: "unexpectedWhitespace", data: { type: "spread property" }, - type: "SpreadElement", }, ], }, @@ -659,7 +624,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 1, messageId: "unexpectedWhitespace", data: { type: "spread property" }, - type: "SpreadElement", }, ], }, @@ -676,7 +640,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 21, messageId: "unexpectedWhitespace", data: { type: "spread property" }, - type: "SpreadElement", }, ], }, @@ -693,7 +656,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 21, messageId: "unexpectedWhitespace", data: { type: "spread property" }, - type: "SpreadElement", }, ], }, @@ -710,7 +672,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 1, messageId: "unexpectedWhitespace", data: { type: "spread property" }, - type: "SpreadElement", }, ], }, @@ -727,7 +688,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 20, messageId: "expectedWhitespace", data: { type: "spread property" }, - type: "SpreadElement", }, ], }, @@ -744,7 +704,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 21, messageId: "unexpectedWhitespace", data: { type: "spread property" }, - type: "SpreadElement", }, ], }, @@ -761,7 +720,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 21, messageId: "unexpectedWhitespace", data: { type: "spread property" }, - type: "SpreadElement", }, ], }, @@ -778,7 +736,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 20, messageId: "expectedWhitespace", data: { type: "spread property" }, - type: "SpreadElement", }, ], }, @@ -795,7 +752,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 20, messageId: "expectedWhitespace", data: { type: "spread property" }, - type: "SpreadElement", }, ], }, @@ -811,7 +767,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 17, messageId: "unexpectedWhitespace", data: { type: "rest property" }, - type: "RestElement", }, ], }, @@ -827,7 +782,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 17, messageId: "unexpectedWhitespace", data: { type: "rest property" }, - type: "RestElement", }, ], }, @@ -843,7 +797,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 1, messageId: "unexpectedWhitespace", data: { type: "rest property" }, - type: "RestElement", }, ], }, @@ -860,7 +813,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 17, messageId: "unexpectedWhitespace", data: { type: "rest property" }, - type: "RestElement", }, ], }, @@ -877,7 +829,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 17, messageId: "unexpectedWhitespace", data: { type: "rest property" }, - type: "RestElement", }, ], }, @@ -894,7 +845,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 1, messageId: "unexpectedWhitespace", data: { type: "rest property" }, - type: "RestElement", }, ], }, @@ -911,7 +861,6 @@ ruleTester.run("rest-spread-spacing", rule, { endColumn: 16, messageId: "expectedWhitespace", data: { type: "rest property" }, - type: "RestElement", }, ], }, diff --git a/tests/lib/rules/semi-spacing.js b/tests/lib/rules/semi-spacing.js index 403d8619364b..e95915c3788b 100644 --- a/tests/lib/rules/semi-spacing.js +++ b/tests/lib/rules/semi-spacing.js @@ -86,7 +86,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "unexpectedWhitespaceBefore", - type: "VariableDeclaration", line: 1, column: 12, endLine: 1, @@ -100,7 +99,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "unexpectedWhitespaceBefore", - type: "VariableDeclaration", line: 1, column: 12, endLine: 1, @@ -114,7 +112,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "unexpectedWhitespaceBefore", - type: "VariableDeclaration", line: 2, column: 8, }, @@ -126,7 +123,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "unexpectedWhitespaceBefore", - type: "VariableDeclaration", line: 1, column: 22, }, @@ -138,7 +134,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "unexpectedWhitespaceBefore", - type: "VariableDeclaration", line: 2, column: 2, }, @@ -150,7 +145,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "unexpectedWhitespaceBefore", - type: "ExpressionStatement", line: 1, column: 16, }, @@ -162,7 +156,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "unexpectedWhitespaceBefore", - type: "ExpressionStatement", line: 1, column: 18, }, @@ -174,7 +167,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "unexpectedWhitespaceBefore", - type: "BreakStatement", line: 1, column: 21, }, @@ -186,7 +178,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "unexpectedWhitespaceBefore", - type: "ContinueStatement", line: 1, column: 24, }, @@ -198,7 +189,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "unexpectedWhitespaceBefore", - type: "DebuggerStatement", line: 1, column: 9, }, @@ -210,7 +200,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "unexpectedWhitespaceBefore", - type: "ReturnStatement", line: 1, column: 24, }, @@ -222,7 +211,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "unexpectedWhitespaceBefore", - type: "ThrowStatement", line: 1, column: 23, }, @@ -234,13 +222,11 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "unexpectedWhitespaceBefore", - type: "ForStatement", line: 1, column: 15, }, { messageId: "unexpectedWhitespaceBefore", - type: "ForStatement", line: 1, column: 24, }, @@ -252,7 +238,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "missingWhitespaceAfter", - type: "VariableDeclaration", line: 1, column: 12, endLine: 1, @@ -267,7 +252,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "missingWhitespaceBefore", - type: "VariableDeclaration", line: 1, column: 12, endLine: 1, @@ -282,7 +266,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "unexpectedWhitespaceAfter", - type: "VariableDeclaration", line: 1, column: 13, endLine: 1, @@ -297,7 +280,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "unexpectedWhitespaceAfter", - type: "VariableDeclaration", line: 1, column: 13, endLine: 1, @@ -311,7 +293,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "missingWhitespaceAfter", - type: "ForStatement", line: 1, column: 15, endLine: 1, @@ -319,7 +300,6 @@ ruleTester.run("semi-spacing", rule, { }, { messageId: "missingWhitespaceAfter", - type: "ForStatement", line: 1, column: 22, endLine: 1, @@ -334,7 +314,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "missingWhitespaceBefore", - type: "ForStatement", line: 1, column: 15, endLine: 1, @@ -342,7 +321,6 @@ ruleTester.run("semi-spacing", rule, { }, { messageId: "missingWhitespaceBefore", - type: "ForStatement", line: 1, column: 23, endLine: 1, @@ -357,13 +335,11 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "unexpectedWhitespaceAfter", - type: "ForStatement", line: 1, column: 16, }, { messageId: "unexpectedWhitespaceAfter", - type: "ForStatement", line: 1, column: 24, }, @@ -377,7 +353,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "unexpectedWhitespaceBefore", - type: "ImportDeclaration", line: 1, column: 22, }, @@ -391,7 +366,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "unexpectedWhitespaceBefore", - type: "ImportDeclaration", line: 1, column: 27, }, @@ -405,7 +379,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "unexpectedWhitespaceBefore", - type: "ExportNamedDeclaration", line: 1, column: 26, }, @@ -419,7 +392,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "unexpectedWhitespaceBefore", - type: "ExportAllDeclaration", line: 1, column: 20, }, @@ -433,7 +405,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "unexpectedWhitespaceBefore", - type: "ExportDefaultDeclaration", line: 1, column: 19, }, @@ -447,7 +418,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "unexpectedWhitespaceBefore", - type: "ContinueStatement", line: 1, column: 21, endLine: 1, @@ -463,7 +433,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "unexpectedWhitespaceBefore", - type: "ThrowStatement", line: 1, column: 27, endLine: 1, @@ -478,7 +447,6 @@ ruleTester.run("semi-spacing", rule, { languageOptions: { ecmaVersion: 6 }, errors: [ { - type: "ForStatement", messageId: "unexpectedWhitespaceBefore", line: 1, column: 6, @@ -486,7 +454,6 @@ ruleTester.run("semi-spacing", rule, { endColumn: 7, }, { - type: "ForStatement", messageId: "unexpectedWhitespaceAfter", line: 1, column: 8, @@ -502,7 +469,6 @@ ruleTester.run("semi-spacing", rule, { languageOptions: { ecmaVersion: 6 }, errors: [ { - type: "ForStatement", messageId: "unexpectedWhitespaceBefore", line: 1, column: 6, @@ -517,7 +483,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "unexpectedWhitespaceBefore", - type: "DoWhileStatement", line: 1, column: 19, endLine: 1, @@ -531,7 +496,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "missingWhitespaceAfter", - type: "DoWhileStatement", line: 1, column: 19, endLine: 1, @@ -546,7 +510,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "missingWhitespaceBefore", - type: "DoWhileStatement", line: 1, column: 19, endLine: 1, @@ -554,7 +517,6 @@ ruleTester.run("semi-spacing", rule, { }, { messageId: "unexpectedWhitespaceAfter", - type: "DoWhileStatement", line: 1, column: 20, endLine: 1, @@ -571,7 +533,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "unexpectedWhitespaceBefore", - type: "PropertyDefinition", line: 1, column: 14, endLine: 1, @@ -579,7 +540,6 @@ ruleTester.run("semi-spacing", rule, { }, { messageId: "missingWhitespaceAfter", - type: "PropertyDefinition", line: 1, column: 15, endLine: 1, @@ -595,7 +555,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "missingWhitespaceBefore", - type: "PropertyDefinition", line: 1, column: 14, endLine: 1, @@ -603,7 +562,6 @@ ruleTester.run("semi-spacing", rule, { }, { messageId: "unexpectedWhitespaceAfter", - type: "PropertyDefinition", line: 1, column: 15, endLine: 1, @@ -618,7 +576,6 @@ ruleTester.run("semi-spacing", rule, { errors: [ { messageId: "missingWhitespaceAfter", - type: "PropertyDefinition", line: 1, column: 14, endLine: 1, diff --git a/tests/lib/rules/semi.js b/tests/lib/rules/semi.js index 87a3b99a278c..45e2399dbca2 100644 --- a/tests/lib/rules/semi.js +++ b/tests/lib/rules/semi.js @@ -894,7 +894,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "ImportDeclaration", line: 1, column: 33, endLine: void 0, @@ -909,7 +908,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "ImportDeclaration", line: 1, column: 35, endLine: void 0, @@ -924,7 +922,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "ImportDeclaration", line: 1, column: 37, endLine: void 0, @@ -939,7 +936,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "ImportDeclaration", line: 1, column: 19, endLine: void 0, @@ -954,7 +950,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "ImportDeclaration", line: 1, column: 55, endLine: void 0, @@ -968,7 +963,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "ReturnStatement", line: 1, column: 27, endLine: 1, @@ -982,7 +976,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "BreakStatement", line: 1, column: 20, endLine: 1, @@ -996,7 +989,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "ContinueStatement", line: 1, column: 23, endLine: 1, @@ -1011,7 +1003,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "VariableDeclaration", line: 1, column: 10, endLine: void 0, @@ -1025,7 +1016,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "VariableDeclaration", line: 1, column: 10, endLine: void 0, @@ -1039,7 +1029,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "VariableDeclaration", line: 1, column: 13, endLine: void 0, @@ -1053,7 +1042,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "DebuggerStatement", line: 1, column: 9, endLine: void 0, @@ -1067,7 +1055,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "ExpressionStatement", line: 1, column: 6, endLine: void 0, @@ -1081,7 +1068,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "ExpressionStatement", line: 1, column: 6, endLine: 2, @@ -1095,7 +1081,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "ExpressionStatement", line: 1, column: 6, endLine: 2, @@ -1109,7 +1094,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "ExpressionStatement", line: 1, column: 6, endLine: 2, @@ -1123,7 +1107,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "ExpressionStatement", line: 1, column: 6, endLine: 2, @@ -1137,7 +1120,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "VariableDeclaration", line: 1, column: 23, endLine: 1, @@ -1151,7 +1133,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "VariableDeclaration", line: 1, column: 15, endLine: 1, @@ -1165,7 +1146,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "VariableDeclaration", line: 1, column: 15, endLine: 1, @@ -1179,7 +1159,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "VariableDeclaration", line: 1, column: 21, endLine: 1, @@ -1193,7 +1172,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "VariableDeclaration", line: 3, column: 2, endLine: void 0, @@ -1207,7 +1185,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "VariableDeclaration", line: 1, column: 8, endLine: 2, @@ -1221,7 +1198,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "ThrowStatement", line: 1, column: 23, endLine: void 0, @@ -1235,7 +1211,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "DoWhileStatement", line: 1, column: 16, endLine: void 0, @@ -1290,7 +1265,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "ThrowStatement", line: 1, column: 23, endLine: 1, @@ -1305,7 +1279,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "ReturnStatement", line: 1, column: 27, endLine: 1, @@ -1320,7 +1293,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "BreakStatement", line: 1, column: 20, endLine: 1, @@ -1335,7 +1307,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "ContinueStatement", line: 1, column: 23, endLine: 1, @@ -1351,7 +1322,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "VariableDeclaration", line: 1, column: 10, endLine: 1, @@ -1366,7 +1336,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "VariableDeclaration", line: 1, column: 10, endLine: 1, @@ -1381,7 +1350,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "VariableDeclaration", line: 1, column: 13, endLine: 1, @@ -1396,7 +1364,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "DebuggerStatement", line: 1, column: 9, endLine: 1, @@ -1411,7 +1378,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "ExpressionStatement", line: 1, column: 6, endLine: 1, @@ -1426,7 +1392,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "VariableDeclaration", line: 1, column: 23, endLine: 1, @@ -1441,7 +1406,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "VariableDeclaration", line: 1, column: 15, endLine: 1, @@ -1456,7 +1420,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "VariableDeclaration", line: 1, column: 15, endLine: 1, @@ -1471,7 +1434,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "VariableDeclaration", line: 1, column: 21, endLine: 1, @@ -1486,7 +1448,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "VariableDeclaration", line: 3, column: 2, endLine: 3, @@ -1502,7 +1463,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "ImportDeclaration", line: 1, column: 55, endLine: 1, @@ -1517,7 +1477,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "DoWhileStatement", line: 1, column: 16, endLine: 1, @@ -1532,7 +1491,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "ExpressionStatement", line: 1, column: 25, endLine: 1, @@ -1548,7 +1506,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "ExpressionStatement", line: 1, column: 25, endLine: 1, @@ -1563,7 +1520,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "ExpressionStatement", line: 1, column: 32, endLine: 1, @@ -1578,7 +1534,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "ExpressionStatement", line: 1, column: 25, endLine: 2, @@ -1593,7 +1548,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "ExpressionStatement", line: 1, column: 32, endLine: 2, @@ -1609,7 +1563,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "ExpressionStatement", line: 1, column: 25, endLine: 1, @@ -1625,7 +1578,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "ExpressionStatement", line: 1, column: 25, endLine: 1, @@ -1641,7 +1593,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "ExpressionStatement", line: 2, column: 6, endLine: 2, @@ -1657,7 +1608,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "ExpressionStatement", line: 2, column: 6, endLine: 2, @@ -1673,7 +1623,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "DoWhileStatement", line: 1, column: 36, endLine: 2, @@ -1689,7 +1638,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "DoWhileStatement", line: 2, column: 2, endLine: 2, @@ -1940,7 +1888,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "ExportAllDeclaration", line: 1, column: 20, endLine: void 0, @@ -1955,7 +1902,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "ExportNamedDeclaration", line: 1, column: 26, endLine: void 0, @@ -1970,7 +1916,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "ExportNamedDeclaration", line: 1, column: 27, endLine: void 0, @@ -1985,7 +1930,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "VariableDeclaration", line: 1, column: 15, endLine: void 0, @@ -2000,7 +1944,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "VariableDeclaration", line: 1, column: 15, endLine: void 0, @@ -2015,7 +1958,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "VariableDeclaration", line: 1, column: 22, endLine: void 0, @@ -2030,7 +1972,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "ExportDefaultDeclaration", line: 1, column: 26, endLine: void 0, @@ -2045,7 +1986,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "ExportDefaultDeclaration", line: 1, column: 34, endLine: void 0, @@ -2060,7 +2000,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "ExportDefaultDeclaration", line: 1, column: 24, endLine: void 0, @@ -2075,7 +2014,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "missingSemi", - type: "ExportDefaultDeclaration", line: 1, column: 25, endLine: void 0, @@ -2093,7 +2031,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "ExportAllDeclaration", line: 1, column: 20, endLine: 1, @@ -2109,7 +2046,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "ExportNamedDeclaration", line: 1, column: 26, endLine: 1, @@ -2125,7 +2061,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "ExportNamedDeclaration", line: 1, column: 27, endLine: 1, @@ -2141,7 +2076,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "VariableDeclaration", line: 1, column: 15, endLine: 1, @@ -2157,7 +2091,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "VariableDeclaration", line: 1, column: 15, endLine: 1, @@ -2173,7 +2106,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "VariableDeclaration", line: 1, column: 22, endLine: 1, @@ -2189,7 +2121,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "ExportDefaultDeclaration", line: 1, column: 26, endLine: 1, @@ -2205,7 +2136,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "ExportDefaultDeclaration", line: 1, column: 34, endLine: 1, @@ -2221,7 +2151,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "ExportDefaultDeclaration", line: 1, column: 24, endLine: 1, @@ -2237,7 +2166,6 @@ ruleTester.run("semi", rule, { errors: [ { messageId: "extraSemi", - type: "ExportDefaultDeclaration", line: 1, column: 25, endLine: 1, diff --git a/tests/lib/rules/sort-imports.js b/tests/lib/rules/sort-imports.js index 4301cb088cda..767310e9da63 100644 --- a/tests/lib/rules/sort-imports.js +++ b/tests/lib/rules/sort-imports.js @@ -21,7 +21,6 @@ const ruleTester = new RuleTester({ }), expectedError = { messageId: "sortImportsAlphabetically", - type: "ImportDeclaration", }, ignoreCaseArgs = [{ ignoreCase: true }]; @@ -171,7 +170,6 @@ ruleTester.run("sort-imports", rule, { syntaxA: "multiple", syntaxB: "single", }, - type: "ImportDeclaration", }, ], }, @@ -185,7 +183,6 @@ ruleTester.run("sort-imports", rule, { syntaxA: "all", syntaxB: "single", }, - type: "ImportDeclaration", }, ], }, @@ -199,7 +196,6 @@ ruleTester.run("sort-imports", rule, { syntaxA: "none", syntaxB: "single", }, - type: "ImportDeclaration", }, ], }, @@ -223,7 +219,6 @@ ruleTester.run("sort-imports", rule, { syntaxA: "all", syntaxB: "single", }, - type: "ImportDeclaration", }, ], }, @@ -234,7 +229,6 @@ ruleTester.run("sort-imports", rule, { { messageId: "sortMembersAlphabetically", data: { memberName: "a" }, - type: "ImportSpecifier", }, ], }, @@ -254,7 +248,6 @@ ruleTester.run("sort-imports", rule, { { messageId: "sortMembersAlphabetically", data: { memberName: "a" }, - type: "ImportSpecifier", }, ], }, @@ -265,7 +258,6 @@ ruleTester.run("sort-imports", rule, { { messageId: "sortMembersAlphabetically", data: { memberName: "B" }, - type: "ImportSpecifier", }, ], }, @@ -276,7 +268,6 @@ ruleTester.run("sort-imports", rule, { { messageId: "sortMembersAlphabetically", data: { memberName: "aaaaa" }, - type: "ImportSpecifier", }, ], }, @@ -287,7 +278,6 @@ ruleTester.run("sort-imports", rule, { { messageId: "sortMembersAlphabetically", data: { memberName: "aaaaa" }, - type: "ImportSpecifier", }, ], }, @@ -298,7 +288,6 @@ ruleTester.run("sort-imports", rule, { { messageId: "sortMembersAlphabetically", data: { memberName: "aaaaa" }, - type: "ImportSpecifier", }, ], }, @@ -309,7 +298,6 @@ ruleTester.run("sort-imports", rule, { { messageId: "sortMembersAlphabetically", data: { memberName: "aaaaa" }, - type: "ImportSpecifier", }, ], }, @@ -338,7 +326,6 @@ ruleTester.run("sort-imports", rule, { { messageId: "sortMembersAlphabetically", data: { memberName: "qux" }, - type: "ImportSpecifier", }, ], }, @@ -350,7 +337,6 @@ ruleTester.run("sort-imports", rule, { errors: [ { messageId: "sortImportsAlphabetically", - type: "ImportDeclaration", }, ], }, @@ -360,7 +346,6 @@ ruleTester.run("sort-imports", rule, { errors: [ { messageId: "sortImportsAlphabetically", - type: "ImportDeclaration", }, ], }, @@ -371,7 +356,6 @@ ruleTester.run("sort-imports", rule, { errors: [ { messageId: "sortImportsAlphabetically", - type: "ImportDeclaration", }, ], }, @@ -382,7 +366,6 @@ ruleTester.run("sort-imports", rule, { errors: [ { messageId: "sortImportsAlphabetically", - type: "ImportDeclaration", }, ], }, @@ -393,7 +376,6 @@ ruleTester.run("sort-imports", rule, { errors: [ { messageId: "sortImportsAlphabetically", - type: "ImportDeclaration", }, ], }, @@ -404,7 +386,6 @@ ruleTester.run("sort-imports", rule, { errors: [ { messageId: "sortImportsAlphabetically", - type: "ImportDeclaration", }, ], }, @@ -415,7 +396,6 @@ ruleTester.run("sort-imports", rule, { errors: [ { messageId: "sortImportsAlphabetically", - type: "ImportDeclaration", }, ], }, @@ -426,7 +406,6 @@ ruleTester.run("sort-imports", rule, { errors: [ { messageId: "sortImportsAlphabetically", - type: "ImportDeclaration", }, ], }, @@ -437,7 +416,6 @@ ruleTester.run("sort-imports", rule, { errors: [ { messageId: "sortImportsAlphabetically", - type: "ImportDeclaration", }, ], }, @@ -448,7 +426,6 @@ ruleTester.run("sort-imports", rule, { errors: [ { messageId: "sortImportsAlphabetically", - type: "ImportDeclaration", }, ], }, @@ -459,7 +436,6 @@ ruleTester.run("sort-imports", rule, { errors: [ { messageId: "sortImportsAlphabetically", - type: "ImportDeclaration", }, ], }, @@ -470,7 +446,6 @@ ruleTester.run("sort-imports", rule, { errors: [ { messageId: "sortImportsAlphabetically", - type: "ImportDeclaration", }, ], }, @@ -481,7 +456,6 @@ ruleTester.run("sort-imports", rule, { errors: [ { messageId: "sortImportsAlphabetically", - type: "ImportDeclaration", line: 4, }, ], @@ -493,7 +467,6 @@ ruleTester.run("sort-imports", rule, { errors: [ { messageId: "sortMembersAlphabetically", - type: "ImportSpecifier", }, ], }, diff --git a/tests/lib/rules/sort-vars.js b/tests/lib/rules/sort-vars.js index 5468b27069d5..b618989f0338 100644 --- a/tests/lib/rules/sort-vars.js +++ b/tests/lib/rules/sort-vars.js @@ -19,7 +19,6 @@ const rule = require("../../../lib/rules/sort-vars"), const ruleTester = new RuleTester(), expectedError = { messageId: "sortVars", - type: "VariableDeclarator", }, ignoreCaseArgs = [{ ignoreCase: true }]; diff --git a/tests/lib/rules/space-before-function-paren.js b/tests/lib/rules/space-before-function-paren.js index 236c58d83013..cbb5f46934b0 100644 --- a/tests/lib/rules/space-before-function-paren.js +++ b/tests/lib/rules/space-before-function-paren.js @@ -174,7 +174,6 @@ ruleTester.run("space-before-function-paren", rule, { output: "function foo () {}", errors: [ { - type: "FunctionDeclaration", messageId: "missingSpace", line: 1, column: 13, @@ -187,7 +186,6 @@ ruleTester.run("space-before-function-paren", rule, { output: "function foo /* */() {}", errors: [ { - type: "FunctionDeclaration", messageId: "missingSpace", line: 1, column: 18, @@ -200,7 +198,6 @@ ruleTester.run("space-before-function-paren", rule, { output: "var foo = function () {}", errors: [ { - type: "FunctionExpression", messageId: "missingSpace", line: 1, column: 19, @@ -212,7 +209,6 @@ ruleTester.run("space-before-function-paren", rule, { output: "var bar = function foo () {}", errors: [ { - type: "FunctionExpression", messageId: "missingSpace", line: 1, column: 23, @@ -224,13 +220,11 @@ ruleTester.run("space-before-function-paren", rule, { output: "var obj = { get foo () {}, set foo (val) {} };", errors: [ { - type: "FunctionExpression", messageId: "missingSpace", line: 1, column: 20, }, { - type: "FunctionExpression", messageId: "missingSpace", line: 1, column: 34, @@ -243,7 +237,6 @@ ruleTester.run("space-before-function-paren", rule, { languageOptions: { ecmaVersion: 6 }, errors: [ { - type: "FunctionExpression", messageId: "missingSpace", line: 1, column: 16, @@ -256,7 +249,6 @@ ruleTester.run("space-before-function-paren", rule, { languageOptions: { ecmaVersion: 6 }, errors: [ { - type: "FunctionDeclaration", messageId: "missingSpace", line: 1, column: 14, @@ -270,7 +262,6 @@ ruleTester.run("space-before-function-paren", rule, { options: ["never"], errors: [ { - type: "FunctionDeclaration", messageId: "unexpectedSpace", line: 1, column: 13, @@ -284,7 +275,6 @@ ruleTester.run("space-before-function-paren", rule, { options: ["never"], errors: [ { - type: "FunctionDeclaration", messageId: "unexpectedSpace", line: 1, column: 13, @@ -297,7 +287,6 @@ ruleTester.run("space-before-function-paren", rule, { options: ["never"], errors: [ { - type: "FunctionDeclaration", messageId: "unexpectedSpace", line: 1, column: 13, @@ -310,7 +299,6 @@ ruleTester.run("space-before-function-paren", rule, { options: ["never"], errors: [ { - type: "FunctionDeclaration", messageId: "unexpectedSpace", line: 1, column: 13, @@ -323,7 +311,6 @@ ruleTester.run("space-before-function-paren", rule, { options: ["never"], errors: [ { - type: "FunctionDeclaration", messageId: "unexpectedSpace", line: 1, column: 13, @@ -337,7 +324,6 @@ ruleTester.run("space-before-function-paren", rule, { options: ["never"], errors: [ { - type: "FunctionDeclaration", messageId: "unexpectedSpace", line: 1, column: 13, @@ -352,7 +338,6 @@ ruleTester.run("space-before-function-paren", rule, { options: ["never"], errors: [ { - type: "FunctionDeclaration", messageId: "unexpectedSpace", line: 1, column: 13, @@ -365,7 +350,6 @@ ruleTester.run("space-before-function-paren", rule, { options: ["never"], errors: [ { - type: "FunctionDeclaration", messageId: "unexpectedSpace", line: 1, column: 13, @@ -378,7 +362,6 @@ ruleTester.run("space-before-function-paren", rule, { options: ["never"], errors: [ { - type: "FunctionExpression", messageId: "unexpectedSpace", line: 1, column: 19, @@ -392,7 +375,6 @@ ruleTester.run("space-before-function-paren", rule, { options: ["never"], errors: [ { - type: "FunctionExpression", messageId: "unexpectedSpace", line: 1, column: 23, @@ -405,13 +387,11 @@ ruleTester.run("space-before-function-paren", rule, { options: ["never"], errors: [ { - type: "FunctionExpression", messageId: "unexpectedSpace", line: 1, column: 20, }, { - type: "FunctionExpression", messageId: "unexpectedSpace", line: 1, column: 35, @@ -425,7 +405,6 @@ ruleTester.run("space-before-function-paren", rule, { languageOptions: { ecmaVersion: 6 }, errors: [ { - type: "FunctionExpression", messageId: "unexpectedSpace", line: 1, column: 16, @@ -439,7 +418,6 @@ ruleTester.run("space-before-function-paren", rule, { languageOptions: { ecmaVersion: 6 }, errors: [ { - type: "FunctionDeclaration", messageId: "unexpectedSpace", line: 1, column: 14, @@ -462,31 +440,26 @@ ruleTester.run("space-before-function-paren", rule, { languageOptions: { ecmaVersion: 6 }, errors: [ { - type: "FunctionDeclaration", messageId: "unexpectedSpace", line: 1, column: 13, }, { - type: "FunctionExpression", messageId: "missingSpace", line: 2, column: 19, }, { - type: "FunctionExpression", messageId: "unexpectedSpace", line: 3, column: 20, }, { - type: "FunctionExpression", messageId: "unexpectedSpace", line: 3, column: 35, }, { - type: "FunctionExpression", messageId: "unexpectedSpace", line: 3, column: 49, @@ -500,13 +473,11 @@ ruleTester.run("space-before-function-paren", rule, { languageOptions: { ecmaVersion: 6 }, errors: [ { - type: "FunctionExpression", messageId: "unexpectedSpace", line: 1, column: 24, }, { - type: "FunctionExpression", messageId: "unexpectedSpace", line: 1, column: 38, @@ -520,7 +491,6 @@ ruleTester.run("space-before-function-paren", rule, { languageOptions: { ecmaVersion: 6 }, errors: [ { - type: "FunctionExpression", messageId: "unexpectedSpace", line: 1, column: 16, @@ -542,31 +512,26 @@ ruleTester.run("space-before-function-paren", rule, { languageOptions: { ecmaVersion: 6 }, errors: [ { - type: "FunctionDeclaration", messageId: "missingSpace", line: 1, column: 13, }, { - type: "FunctionExpression", messageId: "unexpectedSpace", line: 2, column: 19, }, { - type: "FunctionExpression", messageId: "missingSpace", line: 3, column: 20, }, { - type: "FunctionExpression", messageId: "missingSpace", line: 3, column: 34, }, { - type: "FunctionExpression", messageId: "missingSpace", line: 3, column: 47, @@ -579,7 +544,6 @@ ruleTester.run("space-before-function-paren", rule, { options: [{ named: "ignore", anonymous: "always" }], errors: [ { - type: "FunctionExpression", messageId: "missingSpace", line: 1, column: 19, @@ -592,7 +556,6 @@ ruleTester.run("space-before-function-paren", rule, { options: [{ named: "ignore", anonymous: "never" }], errors: [ { - type: "FunctionExpression", messageId: "unexpectedSpace", line: 1, column: 19, @@ -605,7 +568,6 @@ ruleTester.run("space-before-function-paren", rule, { options: [{ named: "always", anonymous: "ignore" }], errors: [ { - type: "FunctionExpression", messageId: "missingSpace", line: 1, column: 23, @@ -618,7 +580,6 @@ ruleTester.run("space-before-function-paren", rule, { options: [{ named: "never", anonymous: "ignore" }], errors: [ { - type: "FunctionExpression", messageId: "unexpectedSpace", line: 1, column: 23, @@ -646,7 +607,9 @@ ruleTester.run("space-before-function-paren", rule, { output: "async () => 1", languageOptions: { ecmaVersion: 8 }, errors: [ - { messageId: "missingSpace", type: "ArrowFunctionExpression" }, + { + messageId: "missingSpace", + }, ], }, { @@ -655,7 +618,9 @@ ruleTester.run("space-before-function-paren", rule, { options: ["always"], languageOptions: { ecmaVersion: 8 }, errors: [ - { messageId: "missingSpace", type: "ArrowFunctionExpression" }, + { + messageId: "missingSpace", + }, ], }, { @@ -666,7 +631,6 @@ ruleTester.run("space-before-function-paren", rule, { errors: [ { messageId: "unexpectedSpace", - type: "ArrowFunctionExpression", }, ], }, diff --git a/tests/lib/rules/space-infix-ops.js b/tests/lib/rules/space-infix-ops.js index c20fc6d62fe7..039d7339730e 100644 --- a/tests/lib/rules/space-infix-ops.js +++ b/tests/lib/rules/space-infix-ops.js @@ -129,7 +129,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: "+" }, - type: "BinaryExpression", line: 1, column: 2, endColumn: 3, @@ -143,7 +142,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: "+" }, - type: "BinaryExpression", line: 1, column: 3, endColumn: 4, @@ -157,7 +155,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: "+" }, - type: "BinaryExpression", line: 1, column: 2, endColumn: 3, @@ -171,7 +168,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: "||" }, - type: "LogicalExpression", line: 1, column: 2, endColumn: 4, @@ -185,7 +181,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: "||" }, - type: "LogicalExpression", line: 1, column: 3, endColumn: 5, @@ -199,7 +194,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: "||" }, - type: "LogicalExpression", line: 1, column: 2, endColumn: 4, @@ -213,7 +207,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: "=" }, - type: "AssignmentExpression", line: 1, column: 2, }, @@ -226,7 +219,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: "=" }, - type: "AssignmentExpression", line: 1, column: 2, }, @@ -239,7 +231,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: "=" }, - type: "AssignmentExpression", line: 1, column: 3, }, @@ -252,7 +243,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: "?" }, - type: "ConditionalExpression", line: 1, column: 2, endColumn: 3, @@ -260,7 +250,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: ":" }, - type: "ConditionalExpression", line: 1, column: 4, endColumn: 5, @@ -274,7 +263,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: "?" }, - type: "ConditionalExpression", line: 1, column: 2, endColumn: 3, @@ -282,7 +270,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: ":" }, - type: "ConditionalExpression", line: 1, column: 6, endColumn: 7, @@ -296,7 +283,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: "?" }, - type: "ConditionalExpression", line: 1, column: 3, endColumn: 4, @@ -304,7 +290,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: ":" }, - type: "ConditionalExpression", line: 1, column: 5, endColumn: 6, @@ -318,7 +303,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: "?" }, - type: "ConditionalExpression", line: 1, column: 2, endColumn: 3, @@ -332,7 +316,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: ":" }, - type: "ConditionalExpression", line: 1, column: 6, endColumn: 7, @@ -346,7 +329,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: "?" }, - type: "ConditionalExpression", line: 1, column: 2, endColumn: 3, @@ -360,7 +342,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: "?" }, - type: "ConditionalExpression", line: 1, column: 3, endColumn: 4, @@ -374,7 +355,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: ":" }, - type: "ConditionalExpression", line: 1, column: 6, endColumn: 7, @@ -388,7 +368,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: ":" }, - type: "ConditionalExpression", line: 1, column: 7, endColumn: 8, @@ -402,7 +381,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: "=" }, - type: "VariableDeclarator", line: 1, column: 6, }, @@ -415,7 +393,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: "=" }, - type: "VariableDeclarator", line: 1, column: 6, }, @@ -428,7 +405,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: "=" }, - type: "VariableDeclarator", line: 1, column: 7, }, @@ -441,7 +417,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: "=" }, - type: "VariableDeclarator", line: 1, column: 13, }, @@ -459,7 +434,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: "|" }, - type: "BinaryExpression", line: 1, column: 2, }, @@ -472,7 +446,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: "||" }, - type: "LogicalExpression", line: 1, column: 43, }, @@ -485,7 +458,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: "||" }, - type: "LogicalExpression", line: 1, column: 16, }, @@ -498,7 +470,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: "||" }, - type: "LogicalExpression", line: 1, column: 15, }, @@ -512,7 +483,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: "=" }, - type: "VariableDeclarator", line: 1, column: 16, }, @@ -528,14 +498,12 @@ ruleTester.run("space-infix-ops", rule, { data: { operator: "=" }, line: 1, column: 7, - type: "AssignmentPattern", }, { messageId: "missingSpace", data: { operator: "=" }, line: 1, column: 10, - type: "VariableDeclarator", }, ], }, @@ -549,7 +517,6 @@ ruleTester.run("space-infix-ops", rule, { data: { operator: "=" }, line: 1, column: 15, - type: "AssignmentPattern", }, ], }, @@ -563,7 +530,6 @@ ruleTester.run("space-infix-ops", rule, { data: { operator: "**" }, line: 1, column: 2, - type: "BinaryExpression", }, ], }, @@ -576,7 +542,6 @@ ruleTester.run("space-infix-ops", rule, { data: { operator: "in" }, line: 1, column: 6, - type: "BinaryExpression", }, ], }, @@ -589,7 +554,6 @@ ruleTester.run("space-infix-ops", rule, { data: { operator: "instanceof" }, line: 1, column: 6, - type: "BinaryExpression", }, ], }, @@ -609,7 +573,6 @@ ruleTester.run("space-infix-ops", rule, { { messageId: "missingSpace", data: { operator: "=" }, - type: "VariableDeclarator", line: 1, column: 11, }, @@ -632,7 +595,6 @@ ruleTester.run("space-infix-ops", rule, { data: { operator: "=" }, line: 1, column: 23, - type: "AssignmentPattern", }, ], }, @@ -650,7 +612,6 @@ ruleTester.run("space-infix-ops", rule, { column: 2, endLine: 1, endColumn: 5, - type: "AssignmentExpression", }, ], }, @@ -666,7 +627,6 @@ ruleTester.run("space-infix-ops", rule, { column: 3, endLine: 1, endColumn: 6, - type: "AssignmentExpression", }, ], }, @@ -682,7 +642,6 @@ ruleTester.run("space-infix-ops", rule, { column: 2, endLine: 1, endColumn: 5, - type: "AssignmentExpression", }, ], }, @@ -700,7 +659,6 @@ ruleTester.run("space-infix-ops", rule, { column: 12, endLine: 1, endColumn: 13, - type: "PropertyDefinition", }, ], }, @@ -716,7 +674,6 @@ ruleTester.run("space-infix-ops", rule, { column: 15, endLine: 1, endColumn: 16, - type: "PropertyDefinition", }, ], }, diff --git a/tests/lib/rules/space-unary-ops.js b/tests/lib/rules/space-unary-ops.js index 88584b87beb9..86cff62af843 100644 --- a/tests/lib/rules/space-unary-ops.js +++ b/tests/lib/rules/space-unary-ops.js @@ -266,7 +266,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "wordOperator", data: { word: "delete" }, - type: "UnaryExpression", }, ], }, @@ -278,7 +277,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "wordOperator", data: { word: "delete" }, - type: "UnaryExpression", }, ], }, @@ -290,7 +288,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "unexpectedAfterWord", data: { word: "delete" }, - type: "UnaryExpression", }, ], }, @@ -302,7 +299,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "wordOperator", data: { word: "new" }, - type: "NewExpression", }, ], }, @@ -314,7 +310,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "unexpectedAfterWord", data: { word: "new" }, - type: "NewExpression", }, ], }, @@ -326,7 +321,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "wordOperator", data: { word: "new" }, - type: "NewExpression", }, ], }, @@ -338,7 +332,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "unexpectedAfterWord", data: { word: "new" }, - type: "NewExpression", }, ], }, @@ -351,7 +344,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "wordOperator", data: { word: "typeof" }, - type: "UnaryExpression", }, ], }, @@ -363,7 +355,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "unexpectedAfterWord", data: { word: "typeof" }, - type: "UnaryExpression", }, ], }, @@ -375,7 +366,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "wordOperator", data: { word: "typeof" }, - type: "UnaryExpression", }, ], }, @@ -387,7 +377,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "unexpectedAfterWord", data: { word: "typeof" }, - type: "UnaryExpression", }, ], }, @@ -399,7 +388,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "wordOperator", data: { word: "typeof" }, - type: "UnaryExpression", }, ], }, @@ -411,7 +399,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "unexpectedAfterWord", data: { word: "typeof" }, - type: "UnaryExpression", }, ], }, @@ -423,7 +410,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "wordOperator", data: { word: "typeof" }, - type: "UnaryExpression", }, ], }, @@ -436,7 +422,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "wordOperator", data: { word: "void" }, - type: "UnaryExpression", }, ], }, @@ -448,7 +433,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "wordOperator", data: { word: "void" }, - type: "UnaryExpression", }, ], }, @@ -460,7 +444,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "wordOperator", data: { word: "void" }, - type: "UnaryExpression", }, ], }, @@ -472,7 +455,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "wordOperator", data: { word: "void" }, - type: "UnaryExpression", }, ], }, @@ -484,7 +466,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "unexpectedAfterWord", data: { word: "void" }, - type: "UnaryExpression", }, ], }, @@ -496,7 +477,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "unexpectedAfterWord", data: { word: "void" }, - type: "UnaryExpression", }, ], }, @@ -532,7 +512,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "unexpectedAfter", data: { operator: "!" }, - type: "UnaryExpression", line: 1, column: 2, }, @@ -546,7 +525,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "operator", data: { operator: "!" }, - type: "UnaryExpression", line: 1, column: 2, }, @@ -561,7 +539,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "unexpectedAfter", data: { operator: "-" }, - type: "UnaryExpression", }, ], }, @@ -573,7 +550,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "operator", data: { operator: "-" }, - type: "UnaryExpression", }, ], }, @@ -706,7 +682,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "wordOperator", data: { word: "yield" }, - type: "YieldExpression", line: 1, column: 19, }, @@ -721,7 +696,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "unexpectedAfterWord", data: { word: "yield" }, - type: "YieldExpression", line: 1, column: 19, }, @@ -735,7 +709,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "wordOperator", data: { word: "yield" }, - type: "YieldExpression", line: 1, column: 19, }, @@ -838,7 +811,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "wordOperator", data: { word: "yield" }, - type: "YieldExpression", line: 1, column: 19, }, @@ -853,7 +825,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "wordOperator", data: { word: "yield" }, - type: "YieldExpression", line: 1, column: 19, }, @@ -867,7 +838,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "wordOperator", data: { word: "await" }, - type: "AwaitExpression", line: 1, column: 24, }, @@ -882,7 +852,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "wordOperator", data: { word: "await" }, - type: "AwaitExpression", line: 1, column: 24, }, @@ -897,7 +866,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "unexpectedAfterWord", data: { word: "await" }, - type: "AwaitExpression", line: 1, column: 24, }, @@ -912,7 +880,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "unexpectedAfterWord", data: { word: "await" }, - type: "AwaitExpression", line: 1, column: 24, }, @@ -927,7 +894,6 @@ ruleTester.run("space-unary-ops", rule, { { messageId: "unexpectedAfterWord", data: { word: "yield" }, - type: "YieldExpression", line: 1, column: 27, }, diff --git a/tests/lib/rules/spaced-comment.js b/tests/lib/rules/spaced-comment.js index 63c3b394e2d8..1985b6f2d535 100644 --- a/tests/lib/rules/spaced-comment.js +++ b/tests/lib/rules/spaced-comment.js @@ -426,7 +426,6 @@ ruleTester.run("spaced-comment", rule, { { messageId: "expectedSpaceAfter", data: { refChar: "//" }, - type: "Line", }, ], }, @@ -438,7 +437,6 @@ ruleTester.run("spaced-comment", rule, { { messageId: "unexpectedSpaceAfter", data: { refChar: "//" }, - type: "Line", }, ], }, @@ -450,7 +448,6 @@ ruleTester.run("spaced-comment", rule, { { messageId: "unexpectedSpaceAfter", data: { refChar: "//" }, - type: "Line", }, ], }, @@ -472,7 +469,6 @@ ruleTester.run("spaced-comment", rule, { { messageId: "expectedExceptionAfter", data: { refChar: "//*" }, - type: "Line", }, ], }, @@ -489,12 +485,10 @@ ruleTester.run("spaced-comment", rule, { { messageId: "expectedExceptionAfter", data: { refChar: "//" }, - type: "Line", }, { messageId: "expectedExceptionAfter", data: { refChar: "//" }, - type: "Line", }, ], }, @@ -528,7 +522,6 @@ ruleTester.run("spaced-comment", rule, { { messageId: "unexpectedSpaceAfter", data: { refChar: "/*" }, - type: "Block", }, ], }, @@ -545,7 +538,6 @@ ruleTester.run("spaced-comment", rule, { { messageId: "expectedExceptionAfter", data: { refChar: "/*" }, - type: "Block", }, ], }, @@ -557,7 +549,6 @@ ruleTester.run("spaced-comment", rule, { { messageId: "expectedSpaceAfter", data: { refChar: "/*" }, - type: "Block", }, ], }, @@ -569,7 +560,6 @@ ruleTester.run("spaced-comment", rule, { { messageId: "unexpectedSpaceAfter", data: { refChar: "/*" }, - type: "Block", }, ], }, @@ -581,7 +571,6 @@ ruleTester.run("spaced-comment", rule, { { messageId: "expectedSpaceAfter", data: { refChar: "/*" }, - type: "Block", }, ], }, @@ -593,7 +582,6 @@ ruleTester.run("spaced-comment", rule, { { messageId: "expectedSpaceAfter", data: { refChar: "/*" }, - type: "Block", }, ], }, @@ -605,7 +593,6 @@ ruleTester.run("spaced-comment", rule, { { messageId: "unexpectedSpaceAfter", data: { refChar: "/*" }, - type: "Block", }, ], }, @@ -622,12 +609,10 @@ ruleTester.run("spaced-comment", rule, { { messageId: "expectedSpaceAfter", data: { refChar: "//" }, - type: "Line", }, { messageId: "expectedSpaceAfter", data: { refChar: "//" }, - type: "Line", }, ], }, @@ -644,7 +629,6 @@ ruleTester.run("spaced-comment", rule, { { messageId: "expectedSpaceAfter", data: { refChar: "/*" }, - type: "Block", }, ], }, @@ -661,7 +645,6 @@ ruleTester.run("spaced-comment", rule, { { messageId: "expectedSpaceAfter", data: { refChar: "//" }, - type: "Line", }, ], }, @@ -673,7 +656,6 @@ ruleTester.run("spaced-comment", rule, { { messageId: "expectedSpaceAfter", data: { refChar: "/*" }, - type: "Block", }, ], }, @@ -688,7 +670,6 @@ ruleTester.run("spaced-comment", rule, { { messageId: "expectedExceptionAfter", data: { refChar: "/*" }, - type: "Block", }, ], }, @@ -703,14 +684,12 @@ ruleTester.run("spaced-comment", rule, { { messageId: "expectedSpaceAfter", data: { refChar: "/*" }, - type: "Block", line: 4, column: 1, }, { messageId: "expectedSpaceAfter", data: { refChar: "/*" }, - type: "Block", line: 4, column: 13, }, @@ -726,7 +705,6 @@ ruleTester.run("spaced-comment", rule, { { messageId: "expectedSpaceBefore", data: { refChar: "/**" }, - type: "Block", }, ], }, @@ -738,7 +716,6 @@ ruleTester.run("spaced-comment", rule, { { messageId: "unexpectedSpaceBefore", data: { refChar: "*/" }, - type: "Block", }, ], }, @@ -750,7 +727,6 @@ ruleTester.run("spaced-comment", rule, { { messageId: "expectedSpaceBefore", data: { refChar: "/**" }, - type: "Block", }, ], }, @@ -762,7 +738,6 @@ ruleTester.run("spaced-comment", rule, { { messageId: "unexpectedSpaceBefore", data: { refChar: "*/" }, - type: "Block", }, ], }, @@ -774,7 +749,6 @@ ruleTester.run("spaced-comment", rule, { { messageId: "expectedSpaceBefore", data: { refChar: "/**" }, - type: "Block", }, ], }, @@ -786,7 +760,6 @@ ruleTester.run("spaced-comment", rule, { { messageId: "unexpectedSpaceBefore", data: { refChar: "*/" }, - type: "Block", }, ], }, @@ -800,7 +773,6 @@ ruleTester.run("spaced-comment", rule, { { messageId: "expectedSpaceAfter", data: { refChar: "//#endregion" }, - type: "Line", }, ], }, @@ -812,7 +784,6 @@ ruleTester.run("spaced-comment", rule, { { messageId: "expectedSpaceAfter", data: { refChar: "/*" }, - type: "Block", }, ], }, @@ -824,7 +795,6 @@ ruleTester.run("spaced-comment", rule, { { messageId: "expectedSpaceAfter", data: { refChar: "/**" }, - type: "Block", }, ], }, @@ -836,12 +806,10 @@ ruleTester.run("spaced-comment", rule, { { messageId: "expectedSpaceAfter", data: { refChar: "/**" }, - type: "Block", }, { messageId: "expectedSpaceBefore", data: { refChar: "*/" }, - type: "Block", }, ], }, @@ -853,12 +821,10 @@ ruleTester.run("spaced-comment", rule, { { messageId: "unexpectedSpaceAfter", data: { refChar: "/*" }, - type: "Block", }, { messageId: "unexpectedSpaceBefore", data: { refChar: "*/" }, - type: "Block", }, ], }, diff --git a/tests/lib/rules/strict.js b/tests/lib/rules/strict.js index 089504979125..1cd6d0744403 100644 --- a/tests/lib/rules/strict.js +++ b/tests/lib/rules/strict.js @@ -291,33 +291,53 @@ ruleTester.run("strict", rule, { code: '"use strict"; foo();', output: null, options: ["never"], - errors: [{ messageId: "never", type: "ExpressionStatement" }], + errors: [ + { + messageId: "never", + }, + ], }, { code: "function foo() { 'use strict'; return; }", output: null, options: ["never"], - errors: [{ messageId: "never", type: "ExpressionStatement" }], + errors: [ + { + messageId: "never", + }, + ], }, { code: "var foo = function() { 'use strict'; return; };", output: null, options: ["never"], - errors: [{ messageId: "never", type: "ExpressionStatement" }], + errors: [ + { + messageId: "never", + }, + ], }, { code: "function foo() { return function() { 'use strict'; return; }; }", output: null, options: ["never"], - errors: [{ messageId: "never", type: "ExpressionStatement" }], + errors: [ + { + messageId: "never", + }, + ], }, { code: "'use strict'; function foo() { \"use strict\"; return; }", output: null, options: ["never"], errors: [ - { messageId: "never", type: "ExpressionStatement" }, - { messageId: "never", type: "ExpressionStatement" }, + { + messageId: "never", + }, + { + messageId: "never", + }, ], }, { @@ -325,7 +345,11 @@ ruleTester.run("strict", rule, { output: " foo();", options: ["never"], languageOptions: { ecmaVersion: 6, sourceType: "module" }, - errors: [{ messageId: "module", type: "ExpressionStatement" }], + errors: [ + { + messageId: "module", + }, + ], }, { code: "'use strict'; function foo() { 'use strict'; return; }", @@ -335,8 +359,12 @@ ruleTester.run("strict", rule, { parserOptions: { ecmaFeatures: { impliedStrict: true } }, }, errors: [ - { messageId: "implied", type: "ExpressionStatement" }, - { messageId: "implied", type: "ExpressionStatement" }, + { + messageId: "implied", + }, + { + messageId: "implied", + }, ], }, { @@ -349,8 +377,12 @@ ruleTester.run("strict", rule, { parserOptions: { ecmaFeatures: { impliedStrict: true } }, }, errors: [ - { messageId: "module", type: "ExpressionStatement" }, - { messageId: "module", type: "ExpressionStatement" }, + { + messageId: "module", + }, + { + messageId: "module", + }, ], }, @@ -359,15 +391,23 @@ ruleTester.run("strict", rule, { code: "foo();", output: null, options: ["global"], - errors: [{ messageId: "global", type: "Program" }], + errors: [ + { + messageId: "global", + }, + ], }, { code: "function foo() { 'use strict'; return; }", output: null, options: ["global"], errors: [ - { messageId: "global", type: "Program" }, - { messageId: "global", type: "ExpressionStatement" }, + { + messageId: "global", + }, + { + messageId: "global", + }, ], }, { @@ -375,8 +415,12 @@ ruleTester.run("strict", rule, { output: null, options: ["global"], errors: [ - { messageId: "global", type: "Program" }, - { messageId: "global", type: "ExpressionStatement" }, + { + messageId: "global", + }, + { + messageId: "global", + }, ], }, { @@ -385,34 +429,54 @@ ruleTester.run("strict", rule, { options: ["global"], languageOptions: { ecmaVersion: 6 }, errors: [ - { messageId: "global", type: "Program" }, - { messageId: "global", type: "ExpressionStatement" }, + { + messageId: "global", + }, + { + messageId: "global", + }, ], }, { code: "'use strict'; function foo() { 'use strict'; return; }", output: null, options: ["global"], - errors: [{ messageId: "global", type: "ExpressionStatement" }], + errors: [ + { + messageId: "global", + }, + ], }, { code: "'use strict'; var foo = function() { 'use strict'; return; };", output: null, options: ["global"], - errors: [{ messageId: "global", type: "ExpressionStatement" }], + errors: [ + { + messageId: "global", + }, + ], }, { code: "'use strict'; 'use strict'; foo();", output: "'use strict'; foo();", options: ["global"], - errors: [{ messageId: "multiple", type: "ExpressionStatement" }], + errors: [ + { + messageId: "multiple", + }, + ], }, { code: "'use strict'; foo();", output: " foo();", options: ["global"], languageOptions: { ecmaVersion: 6, sourceType: "module" }, - errors: [{ messageId: "module", type: "ExpressionStatement" }], + errors: [ + { + messageId: "module", + }, + ], }, { code: "'use strict'; function foo() { 'use strict'; return; }", @@ -422,8 +486,12 @@ ruleTester.run("strict", rule, { parserOptions: { ecmaFeatures: { impliedStrict: true } }, }, errors: [ - { messageId: "implied", type: "ExpressionStatement" }, - { messageId: "implied", type: "ExpressionStatement" }, + { + messageId: "implied", + }, + { + messageId: "implied", + }, ], }, { @@ -436,8 +504,12 @@ ruleTester.run("strict", rule, { parserOptions: { ecmaFeatures: { impliedStrict: true } }, }, errors: [ - { messageId: "module", type: "ExpressionStatement" }, - { messageId: "module", type: "ExpressionStatement" }, + { + messageId: "module", + }, + { + messageId: "module", + }, ], }, @@ -446,25 +518,41 @@ ruleTester.run("strict", rule, { code: "'use strict'; foo();", output: null, options: ["function"], - errors: [{ messageId: "function", type: "ExpressionStatement" }], + errors: [ + { + messageId: "function", + }, + ], }, { code: "'use strict'; (function() { 'use strict'; return true; }());", output: null, options: ["function"], - errors: [{ messageId: "function", type: "ExpressionStatement" }], + errors: [ + { + messageId: "function", + }, + ], }, { code: "(function() { 'use strict'; function f() { 'use strict'; return } return true; }());", output: "(function() { 'use strict'; function f() { return } return true; }());", options: ["function"], - errors: [{ messageId: "unnecessary", type: "ExpressionStatement" }], + errors: [ + { + messageId: "unnecessary", + }, + ], }, { code: "(function() { return true; }());", output: null, options: ["function"], - errors: [{ messageId: "function", type: "FunctionExpression" }], + errors: [ + { + messageId: "function", + }, + ], }, { code: "(() => { return true; })();", @@ -472,7 +560,9 @@ ruleTester.run("strict", rule, { options: ["function"], languageOptions: { ecmaVersion: 6 }, errors: [ - { messageId: "function", type: "ArrowFunctionExpression" }, + { + messageId: "function", + }, ], }, { @@ -481,7 +571,9 @@ ruleTester.run("strict", rule, { options: ["function"], languageOptions: { ecmaVersion: 6 }, errors: [ - { messageId: "function", type: "ArrowFunctionExpression" }, + { + messageId: "function", + }, ], }, { @@ -489,28 +581,44 @@ ruleTester.run("strict", rule, { output: null, options: ["function"], errors: [ - { messageId: "function", type: "FunctionExpression" }, - { messageId: "function", type: "FunctionDeclaration" }, + { + messageId: "function", + }, + { + messageId: "function", + }, ], }, { code: "function foo() { 'use strict'; 'use strict'; return; }", output: "function foo() { 'use strict'; return; }", options: ["function"], - errors: [{ messageId: "multiple", type: "ExpressionStatement" }], + errors: [ + { + messageId: "multiple", + }, + ], }, { code: "var foo = function() { 'use strict'; 'use strict'; return; }", output: "var foo = function() { 'use strict'; return; }", options: ["function"], - errors: [{ messageId: "multiple", type: "ExpressionStatement" }], + errors: [ + { + messageId: "multiple", + }, + ], }, { code: "var foo = function() { 'use strict'; return; }", output: "var foo = function() { return; }", options: ["function"], languageOptions: { ecmaVersion: 6, sourceType: "module" }, - errors: [{ messageId: "module", type: "ExpressionStatement" }], + errors: [ + { + messageId: "module", + }, + ], }, { code: "'use strict'; function foo() { 'use strict'; return; }", @@ -520,8 +628,12 @@ ruleTester.run("strict", rule, { parserOptions: { ecmaFeatures: { impliedStrict: true } }, }, errors: [ - { messageId: "implied", type: "ExpressionStatement" }, - { messageId: "implied", type: "ExpressionStatement" }, + { + messageId: "implied", + }, + { + messageId: "implied", + }, ], }, { @@ -534,41 +646,65 @@ ruleTester.run("strict", rule, { parserOptions: { ecmaFeatures: { impliedStrict: true } }, }, errors: [ - { messageId: "module", type: "ExpressionStatement" }, - { messageId: "module", type: "ExpressionStatement" }, + { + messageId: "module", + }, + { + messageId: "module", + }, ], }, { code: "function foo() { return function() { 'use strict'; return; }; }", output: null, options: ["function"], - errors: [{ messageId: "function", type: "FunctionDeclaration" }], + errors: [ + { + messageId: "function", + }, + ], }, { code: "var foo = function() { function bar() { 'use strict'; return; } return; }", output: null, options: ["function"], - errors: [{ messageId: "function", type: "FunctionExpression" }], + errors: [ + { + messageId: "function", + }, + ], }, { code: "function foo() { 'use strict'; return; } var bar = function() { return; };", output: null, options: ["function"], - errors: [{ messageId: "function", type: "FunctionExpression" }], + errors: [ + { + messageId: "function", + }, + ], }, { code: "var foo = function() { 'use strict'; return; }; function bar() { return; };", output: null, options: ["function"], - errors: [{ messageId: "function", type: "FunctionDeclaration" }], + errors: [ + { + messageId: "function", + }, + ], }, { code: "function foo() { 'use strict'; return function() { 'use strict'; 'use strict'; return; }; }", output: "function foo() { 'use strict'; return function() { return; }; }", options: ["function"], errors: [ - { messageId: "unnecessary", type: "ExpressionStatement" }, - { messageId: "multiple", type: "ExpressionStatement" }, + { + messageId: "unnecessary", + }, + { + messageId: "multiple", + }, ], }, { @@ -576,8 +712,12 @@ ruleTester.run("strict", rule, { output: "var foo = function() { 'use strict'; function bar() { return; } }", options: ["function"], errors: [ - { messageId: "unnecessary", type: "ExpressionStatement" }, - { messageId: "multiple", type: "ExpressionStatement" }, + { + messageId: "unnecessary", + }, + { + messageId: "multiple", + }, ], }, { @@ -586,7 +726,9 @@ ruleTester.run("strict", rule, { options: ["function"], languageOptions: { ecmaVersion: 6 }, errors: [ - { messageId: "function", type: "ArrowFunctionExpression" }, + { + messageId: "function", + }, ], }, @@ -599,7 +741,6 @@ ruleTester.run("strict", rule, { errors: [ { messageId: "unnecessaryInClasses", - type: "ExpressionStatement", }, ], }, @@ -611,7 +752,6 @@ ruleTester.run("strict", rule, { errors: [ { messageId: "unnecessaryInClasses", - type: "ExpressionStatement", }, ], }, @@ -623,7 +763,6 @@ ruleTester.run("strict", rule, { errors: [ { messageId: "unnecessaryInClasses", - type: "ExpressionStatement", }, ], }, @@ -635,7 +774,6 @@ ruleTester.run("strict", rule, { errors: [ { messageId: "unnecessaryInClasses", - type: "ExpressionStatement", }, ], }, @@ -647,7 +785,6 @@ ruleTester.run("strict", rule, { errors: [ { messageId: "unnecessaryInClasses", - type: "ExpressionStatement", }, ], }, @@ -658,8 +795,12 @@ ruleTester.run("strict", rule, { output: null, options: ["safe"], errors: [ - { messageId: "function", type: "ExpressionStatement" }, - { messageId: "function", type: "FunctionDeclaration" }, + { + messageId: "function", + }, + { + messageId: "function", + }, ], }, { @@ -670,8 +811,12 @@ ruleTester.run("strict", rule, { parserOptions: { ecmaFeatures: { globalReturn: true } }, }, errors: [ - { messageId: "global", type: "Program" }, - { messageId: "global", type: "ExpressionStatement" }, + { + messageId: "global", + }, + { + messageId: "global", + }, ], }, { @@ -682,8 +827,12 @@ ruleTester.run("strict", rule, { parserOptions: { ecmaFeatures: { impliedStrict: true } }, }, errors: [ - { messageId: "implied", type: "ExpressionStatement" }, - { messageId: "implied", type: "ExpressionStatement" }, + { + messageId: "implied", + }, + { + messageId: "implied", + }, ], }, { @@ -696,8 +845,12 @@ ruleTester.run("strict", rule, { parserOptions: { ecmaFeatures: { impliedStrict: true } }, }, errors: [ - { messageId: "module", type: "ExpressionStatement" }, - { messageId: "module", type: "ExpressionStatement" }, + { + messageId: "module", + }, + { + messageId: "module", + }, ], }, @@ -706,14 +859,22 @@ ruleTester.run("strict", rule, { code: "'use strict'; function foo() { return; }", output: null, errors: [ - { messageId: "function", type: "ExpressionStatement" }, - { messageId: "function", type: "FunctionDeclaration" }, + { + messageId: "function", + }, + { + messageId: "function", + }, ], }, { code: "function foo() { return; }", output: null, - errors: [{ messageId: "function", type: "FunctionDeclaration" }], + errors: [ + { + messageId: "function", + }, + ], }, { code: "function foo() { 'use strict'; return; }", @@ -722,8 +883,12 @@ ruleTester.run("strict", rule, { parserOptions: { ecmaFeatures: { globalReturn: true } }, }, errors: [ - { messageId: "global", type: "Program" }, - { messageId: "global", type: "ExpressionStatement" }, + { + messageId: "global", + }, + { + messageId: "global", + }, ], }, { @@ -733,8 +898,12 @@ ruleTester.run("strict", rule, { parserOptions: { ecmaFeatures: { impliedStrict: true } }, }, errors: [ - { messageId: "implied", type: "ExpressionStatement" }, - { messageId: "implied", type: "ExpressionStatement" }, + { + messageId: "implied", + }, + { + messageId: "implied", + }, ], }, { @@ -746,8 +915,12 @@ ruleTester.run("strict", rule, { parserOptions: { ecmaFeatures: { impliedStrict: true } }, }, errors: [ - { messageId: "module", type: "ExpressionStatement" }, - { messageId: "module", type: "ExpressionStatement" }, + { + messageId: "module", + }, + { + messageId: "module", + }, ], }, diff --git a/tests/lib/rules/symbol-description.js b/tests/lib/rules/symbol-description.js index 92d444d91598..b47ec076b89c 100644 --- a/tests/lib/rules/symbol-description.js +++ b/tests/lib/rules/symbol-description.js @@ -43,7 +43,6 @@ ruleTester.run("symbol-description", rule, { errors: [ { messageId: "expected", - type: "CallExpression", }, ], }, @@ -52,7 +51,6 @@ ruleTester.run("symbol-description", rule, { errors: [ { messageId: "expected", - type: "CallExpression", }, ], }, diff --git a/tests/lib/rules/unicode-bom.js b/tests/lib/rules/unicode-bom.js index 2710bc05bd29..2f7d73b495a1 100644 --- a/tests/lib/rules/unicode-bom.js +++ b/tests/lib/rules/unicode-bom.js @@ -16,8 +16,12 @@ const rule = require("../../../lib/rules/unicode-bom"), //------------------------------------------------------------------------------ const ruleTester = new RuleTester(); -const expectedError = { messageId: "expected", type: "Program" }; -const unexpectedError = { messageId: "unexpected", type: "Program" }; +const expectedError = { + messageId: "expected", +}; +const unexpectedError = { + messageId: "unexpected", +}; ruleTester.run("unicode-bom", rule, { valid: [ diff --git a/tests/lib/rules/use-isnan.js b/tests/lib/rules/use-isnan.js index 4601964c14ba..51fd93a6edc2 100644 --- a/tests/lib/rules/use-isnan.js +++ b/tests/lib/rules/use-isnan.js @@ -20,7 +20,6 @@ const ruleTester = new RuleTester(); const comparisonError = { messageId: "comparisonWithNaN", - type: "BinaryExpression", }; ruleTester.run("use-isnan", rule, { @@ -895,197 +894,333 @@ ruleTester.run("use-isnan", rule, { { code: "switch(NaN) { case foo: break; }", errors: [ - { messageId: "switchNaN", type: "SwitchStatement", column: 1 }, + { + messageId: "switchNaN", + column: 1, + }, ], }, { code: "switch(foo) { case NaN: break; }", - errors: [{ messageId: "caseNaN", type: "SwitchCase", column: 15 }], + errors: [ + { + messageId: "caseNaN", + column: 15, + }, + ], }, { code: "switch(NaN) { case foo: break; }", options: [{}], errors: [ - { messageId: "switchNaN", type: "SwitchStatement", column: 1 }, + { + messageId: "switchNaN", + column: 1, + }, ], }, { code: "switch(foo) { case NaN: break; }", options: [{}], - errors: [{ messageId: "caseNaN", type: "SwitchCase", column: 15 }], + errors: [ + { + messageId: "caseNaN", + column: 15, + }, + ], }, { code: "switch(NaN) {}", options: [{ enforceForSwitchCase: true }], errors: [ - { messageId: "switchNaN", type: "SwitchStatement", column: 1 }, + { + messageId: "switchNaN", + column: 1, + }, ], }, { code: "switch(NaN) { case foo: break; }", options: [{ enforceForSwitchCase: true }], errors: [ - { messageId: "switchNaN", type: "SwitchStatement", column: 1 }, + { + messageId: "switchNaN", + column: 1, + }, ], }, { code: "switch(NaN) { default: break; }", options: [{ enforceForSwitchCase: true }], errors: [ - { messageId: "switchNaN", type: "SwitchStatement", column: 1 }, + { + messageId: "switchNaN", + column: 1, + }, ], }, { code: "switch(NaN) { case foo: break; default: break; }", options: [{ enforceForSwitchCase: true }], errors: [ - { messageId: "switchNaN", type: "SwitchStatement", column: 1 }, + { + messageId: "switchNaN", + column: 1, + }, ], }, { code: "switch(foo) { case NaN: }", options: [{ enforceForSwitchCase: true }], - errors: [{ messageId: "caseNaN", type: "SwitchCase", column: 15 }], + errors: [ + { + messageId: "caseNaN", + column: 15, + }, + ], }, { code: "switch(foo) { case NaN: break; }", options: [{ enforceForSwitchCase: true }], - errors: [{ messageId: "caseNaN", type: "SwitchCase", column: 15 }], + errors: [ + { + messageId: "caseNaN", + column: 15, + }, + ], }, { code: "switch(foo) { case (NaN): break; }", options: [{ enforceForSwitchCase: true }], - errors: [{ messageId: "caseNaN", type: "SwitchCase", column: 15 }], + errors: [ + { + messageId: "caseNaN", + column: 15, + }, + ], }, { code: "switch(foo) { case bar: break; case NaN: break; default: break; }", options: [{ enforceForSwitchCase: true }], - errors: [{ messageId: "caseNaN", type: "SwitchCase", column: 32 }], + errors: [ + { + messageId: "caseNaN", + column: 32, + }, + ], }, { code: "switch(foo) { case bar: case NaN: default: break; }", options: [{ enforceForSwitchCase: true }], - errors: [{ messageId: "caseNaN", type: "SwitchCase", column: 25 }], + errors: [ + { + messageId: "caseNaN", + column: 25, + }, + ], }, { code: "switch(foo) { case bar: break; case NaN: break; case baz: break; case NaN: break; }", options: [{ enforceForSwitchCase: true }], errors: [ - { messageId: "caseNaN", type: "SwitchCase", column: 32 }, - { messageId: "caseNaN", type: "SwitchCase", column: 66 }, + { + messageId: "caseNaN", + column: 32, + }, + { + messageId: "caseNaN", + column: 66, + }, ], }, { code: "switch(NaN) { case NaN: break; }", options: [{ enforceForSwitchCase: true }], errors: [ - { messageId: "switchNaN", type: "SwitchStatement", column: 1 }, - { messageId: "caseNaN", type: "SwitchCase", column: 15 }, + { + messageId: "switchNaN", + column: 1, + }, + { + messageId: "caseNaN", + column: 15, + }, ], }, { code: "switch(Number.NaN) { case foo: break; }", errors: [ - { messageId: "switchNaN", type: "SwitchStatement", column: 1 }, + { + messageId: "switchNaN", + column: 1, + }, ], }, { code: "switch(foo) { case Number.NaN: break; }", - errors: [{ messageId: "caseNaN", type: "SwitchCase", column: 15 }], + errors: [ + { + messageId: "caseNaN", + column: 15, + }, + ], }, { code: "switch(Number.NaN) { case foo: break; }", options: [{}], errors: [ - { messageId: "switchNaN", type: "SwitchStatement", column: 1 }, + { + messageId: "switchNaN", + column: 1, + }, ], }, { code: "switch(foo) { case Number.NaN: break; }", options: [{}], - errors: [{ messageId: "caseNaN", type: "SwitchCase", column: 15 }], + errors: [ + { + messageId: "caseNaN", + column: 15, + }, + ], }, { code: "switch(Number.NaN) {}", options: [{ enforceForSwitchCase: true }], errors: [ - { messageId: "switchNaN", type: "SwitchStatement", column: 1 }, + { + messageId: "switchNaN", + column: 1, + }, ], }, { code: "switch(Number.NaN) { case foo: break; }", options: [{ enforceForSwitchCase: true }], errors: [ - { messageId: "switchNaN", type: "SwitchStatement", column: 1 }, + { + messageId: "switchNaN", + column: 1, + }, ], }, { code: "switch(Number.NaN) { default: break; }", options: [{ enforceForSwitchCase: true }], errors: [ - { messageId: "switchNaN", type: "SwitchStatement", column: 1 }, + { + messageId: "switchNaN", + column: 1, + }, ], }, { code: "switch(Number.NaN) { case foo: break; default: break; }", options: [{ enforceForSwitchCase: true }], errors: [ - { messageId: "switchNaN", type: "SwitchStatement", column: 1 }, + { + messageId: "switchNaN", + column: 1, + }, ], }, { code: "switch(foo) { case Number.NaN: }", options: [{ enforceForSwitchCase: true }], - errors: [{ messageId: "caseNaN", type: "SwitchCase", column: 15 }], + errors: [ + { + messageId: "caseNaN", + column: 15, + }, + ], }, { code: "switch(foo) { case Number.NaN: break; }", options: [{ enforceForSwitchCase: true }], - errors: [{ messageId: "caseNaN", type: "SwitchCase", column: 15 }], + errors: [ + { + messageId: "caseNaN", + column: 15, + }, + ], }, { code: "switch(foo) { case (Number.NaN): break; }", options: [{ enforceForSwitchCase: true }], - errors: [{ messageId: "caseNaN", type: "SwitchCase", column: 15 }], + errors: [ + { + messageId: "caseNaN", + column: 15, + }, + ], }, { code: "switch(foo) { case bar: break; case Number.NaN: break; default: break; }", options: [{ enforceForSwitchCase: true }], - errors: [{ messageId: "caseNaN", type: "SwitchCase", column: 32 }], + errors: [ + { + messageId: "caseNaN", + column: 32, + }, + ], }, { code: "switch(foo) { case bar: case Number.NaN: default: break; }", options: [{ enforceForSwitchCase: true }], - errors: [{ messageId: "caseNaN", type: "SwitchCase", column: 25 }], + errors: [ + { + messageId: "caseNaN", + column: 25, + }, + ], }, { code: "switch(foo) { case bar: break; case NaN: break; case baz: break; case Number.NaN: break; }", options: [{ enforceForSwitchCase: true }], errors: [ - { messageId: "caseNaN", type: "SwitchCase", column: 32 }, - { messageId: "caseNaN", type: "SwitchCase", column: 66 }, + { + messageId: "caseNaN", + column: 32, + }, + { + messageId: "caseNaN", + column: 66, + }, ], }, { code: "switch(Number.NaN) { case Number.NaN: break; }", options: [{ enforceForSwitchCase: true }], errors: [ - { messageId: "switchNaN", type: "SwitchStatement", column: 1 }, - { messageId: "caseNaN", type: "SwitchCase", column: 22 }, + { + messageId: "switchNaN", + column: 1, + }, + { + messageId: "caseNaN", + column: 22, + }, ], }, { code: "switch((doStuff(), NaN)) {}", options: [{ enforceForSwitchCase: true }], errors: [ - { messageId: "switchNaN", type: "SwitchStatement", column: 1 }, + { + messageId: "switchNaN", + column: 1, + }, ], }, { code: "switch((doStuff(), Number.NaN)) {}", options: [{ enforceForSwitchCase: true }], errors: [ - { messageId: "switchNaN", type: "SwitchStatement", column: 1 }, + { + messageId: "switchNaN", + column: 1, + }, ], }, @@ -1099,7 +1234,6 @@ ruleTester.run("use-isnan", rule, { errors: [ { messageId: "indexOfNaN", - type: "CallExpression", data: { methodName: "indexOf" }, suggestions: [ { @@ -1117,7 +1251,6 @@ ruleTester.run("use-isnan", rule, { errors: [ { messageId: "indexOfNaN", - type: "CallExpression", data: { methodName: "lastIndexOf" }, suggestions: [ { @@ -1135,7 +1268,6 @@ ruleTester.run("use-isnan", rule, { errors: [ { messageId: "indexOfNaN", - type: "CallExpression", data: { methodName: "indexOf" }, suggestions: [ { @@ -1153,7 +1285,6 @@ ruleTester.run("use-isnan", rule, { errors: [ { messageId: "indexOfNaN", - type: "CallExpression", data: { methodName: "indexOf" }, suggestions: [ { @@ -1171,7 +1302,6 @@ ruleTester.run("use-isnan", rule, { errors: [ { messageId: "indexOfNaN", - type: "CallExpression", data: { methodName: "lastIndexOf" }, suggestions: [ { @@ -1189,7 +1319,6 @@ ruleTester.run("use-isnan", rule, { errors: [ { messageId: "indexOfNaN", - type: "CallExpression", data: { methodName: "indexOf" }, suggestions: [ { @@ -1207,7 +1336,6 @@ ruleTester.run("use-isnan", rule, { errors: [ { messageId: "indexOfNaN", - type: "CallExpression", data: { methodName: "lastIndexOf" }, suggestions: [ { @@ -1279,7 +1407,6 @@ ruleTester.run("use-isnan", rule, { errors: [ { messageId: "indexOfNaN", - type: "CallExpression", data: { methodName: "indexOf" }, suggestions: [ { @@ -1297,7 +1424,6 @@ ruleTester.run("use-isnan", rule, { errors: [ { messageId: "indexOfNaN", - type: "CallExpression", data: { methodName: "lastIndexOf" }, suggestions: [ { @@ -1315,7 +1441,6 @@ ruleTester.run("use-isnan", rule, { errors: [ { messageId: "indexOfNaN", - type: "CallExpression", data: { methodName: "indexOf" }, suggestions: [ { @@ -1333,7 +1458,6 @@ ruleTester.run("use-isnan", rule, { errors: [ { messageId: "indexOfNaN", - type: "CallExpression", data: { methodName: "lastIndexOf" }, suggestions: [ { @@ -1351,7 +1475,6 @@ ruleTester.run("use-isnan", rule, { errors: [ { messageId: "indexOfNaN", - type: "CallExpression", data: { methodName: "indexOf" }, suggestions: [ { @@ -1369,7 +1492,6 @@ ruleTester.run("use-isnan", rule, { errors: [ { messageId: "indexOfNaN", - type: "CallExpression", data: { methodName: "lastIndexOf" }, suggestions: [ { diff --git a/tests/lib/rules/valid-typeof.js b/tests/lib/rules/valid-typeof.js index 193a6c7e4560..153bd0451a7d 100644 --- a/tests/lib/rules/valid-typeof.js +++ b/tests/lib/rules/valid-typeof.js @@ -80,68 +80,123 @@ ruleTester.run("valid-typeof", rule, { invalid: [ { code: "typeof foo === 'strnig'", - errors: [{ messageId: "invalidValue", type: "Literal" }], + errors: [ + { + messageId: "invalidValue", + }, + ], }, { code: "'strnig' === typeof foo", - errors: [{ messageId: "invalidValue", type: "Literal" }], + errors: [ + { + messageId: "invalidValue", + }, + ], }, { code: "if (typeof bar === 'umdefined') {}", - errors: [{ messageId: "invalidValue", type: "Literal" }], + errors: [ + { + messageId: "invalidValue", + }, + ], }, { code: "typeof foo !== 'strnig'", - errors: [{ messageId: "invalidValue", type: "Literal" }], + errors: [ + { + messageId: "invalidValue", + }, + ], }, { code: "'strnig' !== typeof foo", - errors: [{ messageId: "invalidValue", type: "Literal" }], + errors: [ + { + messageId: "invalidValue", + }, + ], }, { code: "if (typeof bar !== 'umdefined') {}", - errors: [{ messageId: "invalidValue", type: "Literal" }], + errors: [ + { + messageId: "invalidValue", + }, + ], }, { code: "typeof foo != 'strnig'", - errors: [{ messageId: "invalidValue", type: "Literal" }], + errors: [ + { + messageId: "invalidValue", + }, + ], }, { code: "'strnig' != typeof foo", - errors: [{ messageId: "invalidValue", type: "Literal" }], + errors: [ + { + messageId: "invalidValue", + }, + ], }, { code: "if (typeof bar != 'umdefined') {}", - errors: [{ messageId: "invalidValue", type: "Literal" }], + errors: [ + { + messageId: "invalidValue", + }, + ], }, { code: "typeof foo == 'strnig'", - errors: [{ messageId: "invalidValue", type: "Literal" }], + errors: [ + { + messageId: "invalidValue", + }, + ], }, { code: "'strnig' == typeof foo", - errors: [{ messageId: "invalidValue", type: "Literal" }], + errors: [ + { + messageId: "invalidValue", + }, + ], }, { code: "if (typeof bar == 'umdefined') {}", - errors: [{ messageId: "invalidValue", type: "Literal" }], + errors: [ + { + messageId: "invalidValue", + }, + ], }, { code: "if (typeof bar === `umdefined`) {}", languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "invalidValue", type: "TemplateLiteral" }], + errors: [ + { + messageId: "invalidValue", + }, + ], }, { code: "typeof foo == 'invalid string'", options: [{ requireStringLiterals: true }], - errors: [{ messageId: "invalidValue", type: "Literal" }], + errors: [ + { + messageId: "invalidValue", + }, + ], }, { code: "if (typeof bar !== undefined) {}", errors: [ { messageId: "invalidValue", - type: "Identifier", suggestions: [ { messageId: "suggestString", @@ -155,7 +210,11 @@ ruleTester.run("valid-typeof", rule, { { code: "typeof foo == Object", options: [{ requireStringLiterals: true }], - errors: [{ messageId: "notString", type: "Identifier" }], + errors: [ + { + messageId: "notString", + }, + ], }, { code: "typeof foo === undefined", @@ -163,7 +222,6 @@ ruleTester.run("valid-typeof", rule, { errors: [ { messageId: "notString", - type: "Identifier", suggestions: [ { messageId: "suggestString", @@ -180,7 +238,6 @@ ruleTester.run("valid-typeof", rule, { errors: [ { messageId: "notString", - type: "Identifier", suggestions: [ { messageId: "suggestString", @@ -197,7 +254,6 @@ ruleTester.run("valid-typeof", rule, { errors: [ { messageId: "notString", - type: "Identifier", suggestions: [ { messageId: "suggestString", @@ -212,13 +268,21 @@ ruleTester.run("valid-typeof", rule, { code: "typeof foo === `undefined${foo}`", options: [{ requireStringLiterals: true }], languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "notString", type: "TemplateLiteral" }], + errors: [ + { + messageId: "notString", + }, + ], }, { code: "typeof foo === `${string}`", options: [{ requireStringLiterals: true }], languageOptions: { ecmaVersion: 6 }, - errors: [{ messageId: "notString", type: "TemplateLiteral" }], + errors: [ + { + messageId: "notString", + }, + ], }, ], }); diff --git a/tests/lib/rules/vars-on-top.js b/tests/lib/rules/vars-on-top.js index cf818ad9dcd5..0950378c057d 100644 --- a/tests/lib/rules/vars-on-top.js +++ b/tests/lib/rules/vars-on-top.js @@ -17,7 +17,9 @@ const rule = require("../../../lib/rules/vars-on-top"), //------------------------------------------------------------------------------ const ruleTester = new RuleTester(); -const error = { messageId: "top", type: "VariableDeclaration" }; +const error = { + messageId: "top", +}; ruleTester.run("vars-on-top", rule, { valid: [ diff --git a/tests/lib/rules/wrap-iife.js b/tests/lib/rules/wrap-iife.js index 5a12e1f19809..d7ca494c1c2c 100644 --- a/tests/lib/rules/wrap-iife.js +++ b/tests/lib/rules/wrap-iife.js @@ -25,15 +25,12 @@ const ruleTester = new RuleTester({ const wrapInvocationError = { messageId: "wrapInvocation", - type: "CallExpression", }; const wrapExpressionError = { messageId: "wrapExpression", - type: "CallExpression", }; const moveInvocationError = { messageId: "moveInvocation", - type: "CallExpression", }; ruleTester.run("wrap-iife", rule, { diff --git a/tests/lib/rules/wrap-regex.js b/tests/lib/rules/wrap-regex.js index b0ad9e0cfbe6..c2012a317727 100644 --- a/tests/lib/rules/wrap-regex.js +++ b/tests/lib/rules/wrap-regex.js @@ -30,19 +30,31 @@ ruleTester.run("wrap-regex", rule, { { code: "/foo/.test(bar);", output: "(/foo/).test(bar);", - errors: [{ messageId: "requireParens", type: "Literal" }], + errors: [ + { + messageId: "requireParens", + }, + ], }, { code: "/foo/ig.test(bar);", output: "(/foo/ig).test(bar);", - errors: [{ messageId: "requireParens", type: "Literal" }], + errors: [ + { + messageId: "requireParens", + }, + ], }, // https://github.com/eslint/eslint/issues/10573 { code: "if(/foo/ig.test(bar));", output: "if((/foo/ig).test(bar));", - errors: [{ messageId: "requireParens", type: "Literal" }], + errors: [ + { + messageId: "requireParens", + }, + ], }, ], }); diff --git a/tests/lib/rules/yield-star-spacing.js b/tests/lib/rules/yield-star-spacing.js index 5bd3a46666bb..7eeb1aead168 100644 --- a/tests/lib/rules/yield-star-spacing.js +++ b/tests/lib/rules/yield-star-spacing.js @@ -18,15 +18,17 @@ const rule = require("../../../lib/rules/yield-star-spacing"), const ruleTester = new RuleTester({ languageOptions: { ecmaVersion: 6 } }); -const missingBeforeError = { messageId: "missingBefore", type: "Punctuator" }; -const missingAfterError = { messageId: "missingAfter", type: "Punctuator" }; +const missingBeforeError = { + messageId: "missingBefore", +}; +const missingAfterError = { + messageId: "missingAfter", +}; const unexpectedBeforeError = { messageId: "unexpectedBefore", - type: "Punctuator", }; const unexpectedAfterError = { messageId: "unexpectedAfter", - type: "Punctuator", }; ruleTester.run("yield-star-spacing", rule, { diff --git a/tests/lib/rules/yoda.js b/tests/lib/rules/yoda.js index f93a15580a02..954f8bddd5d4 100644 --- a/tests/lib/rules/yoda.js +++ b/tests/lib/rules/yoda.js @@ -325,7 +325,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "left", operator: "<=" }, - type: "BinaryExpression", }, ], }, @@ -337,7 +336,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "==" }, - type: "BinaryExpression", }, ], }, @@ -349,7 +347,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "===" }, - type: "BinaryExpression", }, ], }, @@ -361,7 +358,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "!=" }, - type: "BinaryExpression", }, ], }, @@ -374,7 +370,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "!=" }, - type: "BinaryExpression", }, ], }, @@ -386,7 +381,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "!==" }, - type: "BinaryExpression", }, ], }, @@ -398,7 +392,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<=" }, - type: "BinaryExpression", }, ], }, @@ -411,7 +404,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<=" }, - type: "BinaryExpression", }, ], }, @@ -424,7 +416,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<=" }, - type: "BinaryExpression", }, ], }, @@ -437,7 +428,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<=" }, - type: "BinaryExpression", }, ], }, @@ -449,7 +439,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: ">=" }, - type: "BinaryExpression", }, ], }, @@ -461,7 +450,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<" }, - type: "BinaryExpression", }, ], }, @@ -473,7 +461,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: ">" }, - type: "BinaryExpression", }, ], }, @@ -485,7 +472,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<" }, - type: "BinaryExpression", }, ], }, @@ -497,7 +483,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "left", operator: "==" }, - type: "BinaryExpression", }, ], }, @@ -510,7 +495,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "left", operator: "==" }, - type: "BinaryExpression", }, ], }, @@ -522,7 +506,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "left", operator: "===" }, - type: "BinaryExpression", }, ], }, @@ -535,7 +518,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "left", operator: "===" }, - type: "BinaryExpression", }, ], }, @@ -548,7 +530,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "left", operator: "<=" }, - type: "BinaryExpression", }, ], }, @@ -560,7 +541,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<=" }, - type: "BinaryExpression", }, ], }, @@ -572,7 +552,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<=" }, - type: "BinaryExpression", }, ], }, @@ -584,7 +563,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<" }, - type: "BinaryExpression", }, ], }, @@ -596,7 +574,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<" }, - type: "BinaryExpression", }, ], }, @@ -608,7 +585,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<=" }, - type: "BinaryExpression", }, ], }, @@ -620,7 +596,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<=" }, - type: "BinaryExpression", }, ], }, @@ -632,7 +607,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "left", operator: "<" }, - type: "BinaryExpression", }, ], }, @@ -645,7 +619,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "left", operator: "<" }, - type: "BinaryExpression", }, ], }, @@ -658,7 +631,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<" }, - type: "BinaryExpression", }, ], }, @@ -670,7 +642,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<=" }, - type: "BinaryExpression", }, ], }, @@ -683,7 +654,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<=" }, - type: "BinaryExpression", }, ], }, @@ -696,7 +666,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<=" }, - type: "BinaryExpression", }, ], }, @@ -708,7 +677,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<=" }, - type: "BinaryExpression", }, ], }, @@ -720,7 +688,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<=" }, - type: "BinaryExpression", }, ], }, @@ -732,7 +699,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<=" }, - type: "BinaryExpression", }, ], }, @@ -744,7 +710,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<=" }, - type: "BinaryExpression", }, ], }, @@ -757,7 +722,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<=" }, - type: "BinaryExpression", }, ], }, @@ -769,7 +733,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<=" }, - type: "BinaryExpression", }, ], }, @@ -781,7 +744,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<=" }, - type: "BinaryExpression", }, ], }, @@ -794,7 +756,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<=" }, - type: "BinaryExpression", }, ], }, @@ -806,7 +767,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<=" }, - type: "BinaryExpression", }, ], }, @@ -819,7 +779,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<=" }, - type: "BinaryExpression", }, ], }, @@ -831,7 +790,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "==" }, - type: "BinaryExpression", }, ], }, @@ -843,7 +801,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "===" }, - type: "BinaryExpression", }, ], }, @@ -855,7 +812,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "left", operator: "===" }, - type: "BinaryExpression", }, ], }, @@ -868,7 +824,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "left", operator: "===" }, - type: "BinaryExpression", }, ], }, @@ -879,7 +834,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<=" }, - type: "BinaryExpression", }, ], }, @@ -891,7 +845,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<" }, - type: "BinaryExpression", }, ], }, @@ -903,7 +856,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "left", operator: ">" }, - type: "BinaryExpression", }, ], }, @@ -915,7 +867,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "left", operator: "===" }, - type: "BinaryExpression", }, ], }, @@ -927,7 +878,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "left", operator: "===" }, - type: "BinaryExpression", }, ], }, @@ -941,7 +891,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "===" }, - type: "BinaryExpression", }, ], }, @@ -953,7 +902,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "===" }, - type: "BinaryExpression", }, ], }, @@ -965,7 +913,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "left", operator: "===" }, - type: "BinaryExpression", }, ], }, @@ -977,7 +924,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "left", operator: "===" }, - type: "BinaryExpression", }, ], }, @@ -989,7 +935,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "left", operator: "===" }, - type: "BinaryExpression", }, ], }, @@ -1004,7 +949,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<" }, - type: "BinaryExpression", }, ], }, @@ -1017,7 +961,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<" }, - type: "BinaryExpression", }, ], }, @@ -1030,7 +973,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<" }, - type: "BinaryExpression", }, ], }, @@ -1043,7 +985,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<" }, - type: "BinaryExpression", }, ], }, @@ -1056,7 +997,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<" }, - type: "BinaryExpression", }, ], }, @@ -1069,7 +1009,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<" }, - type: "BinaryExpression", }, ], }, @@ -1081,7 +1020,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<" }, - type: "BinaryExpression", }, ], }, @@ -1094,7 +1032,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "left", operator: "<" }, - type: "BinaryExpression", }, ], }, @@ -1107,7 +1044,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "left", operator: "<" }, - type: "BinaryExpression", }, ], }, @@ -1120,7 +1056,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "left", operator: "<" }, - type: "BinaryExpression", }, ], }, @@ -1133,7 +1068,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "left", operator: "<" }, - type: "BinaryExpression", }, ], }, @@ -1146,7 +1080,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "left", operator: "<" }, - type: "BinaryExpression", }, ], }, @@ -1158,7 +1091,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "left", operator: "<" }, - type: "BinaryExpression", }, ], }, @@ -1169,7 +1101,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<" }, - type: "BinaryExpression", }, ], }, @@ -1181,7 +1112,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: ">" }, - type: "BinaryExpression", }, ], }, @@ -1193,7 +1123,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "left", operator: "<" }, - type: "BinaryExpression", }, ], }, @@ -1205,7 +1134,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<=" }, - type: "BinaryExpression", }, ], }, @@ -1217,7 +1145,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "left", operator: ">=" }, - type: "BinaryExpression", }, ], }, @@ -1229,7 +1156,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<=" }, - type: "BinaryExpression", }, ], }, @@ -1241,7 +1167,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "left", operator: ">=" }, - type: "BinaryExpression", }, ], }, @@ -1253,7 +1178,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "left", operator: ">=" }, - type: "BinaryExpression", }, ], }, @@ -1265,7 +1189,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "left", operator: ">=" }, - type: "BinaryExpression", }, ], }, @@ -1277,7 +1200,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "left", operator: ">=" }, - type: "BinaryExpression", }, ], }, @@ -1289,7 +1211,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: ">" }, - type: "BinaryExpression", }, ], }, @@ -1301,7 +1222,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: ">" }, - type: "BinaryExpression", }, ], }, @@ -1315,7 +1235,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "left", operator: "<" }, - type: "BinaryExpression", }, ], }, @@ -1327,7 +1246,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "left", operator: "<" }, - type: "BinaryExpression", }, ], }, @@ -1339,7 +1257,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<=" }, - type: "BinaryExpression", }, ], }, @@ -1351,7 +1268,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<=" }, - type: "BinaryExpression", }, ], }, @@ -1363,7 +1279,6 @@ ruleTester.run("yoda", rule, { { messageId: "expected", data: { expectedSide: "right", operator: "<" }, - type: "BinaryExpression", }, ], }, From b42c42e7cd3ac9ee1b5a15f16ff25b325d0482e4 Mon Sep 17 00:00:00 2001 From: Milos Djermanovic Date: Tue, 9 Sep 2025 16:37:37 +0200 Subject: [PATCH 103/165] chore: disallow use of deprecated `type` property in core rule tests (#20094) --- eslint.config.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/eslint.config.js b/eslint.config.js index f34aa2bf29e5..89969dcd8b6d 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -163,11 +163,21 @@ module.exports = defineConfig([ ], "eslint-plugin/test-case-shorthand-strings": "error", "no-useless-concat": "off", + "no-restricted-syntax": [ + "error", + { + selector: + "ObjectExpression > Property[key.name='errors'] > ArrayExpression.value > ObjectExpression > Property[key.name='type']", + message: + "Do not use deprecated 'type' property in rule tests.", + }, + ], }, }, { name: "eslint/tests", files: ["tests/**/*.js"], + ignores: ["tests/lib/rules/*.js", "tests/tools/internal-rules/*.js"], languageOptions: { globals: { ...globals.mocha, From 7a670c301b58609017ce8cfda99ee81f95de3898 Mon Sep 17 00:00:00 2001 From: Pixel998 Date: Tue, 9 Sep 2025 17:39:29 +0300 Subject: [PATCH 104/165] fix: correct rule option typings in `rules.d.ts` (#20084) --- lib/types/rules.d.ts | 263 ++++++++++++++++++++++++++++++++----------- 1 file changed, 197 insertions(+), 66 deletions(-) diff --git a/lib/types/rules.d.ts b/lib/types/rules.d.ts index 951998baa3e4..e48fca22aa38 100644 --- a/lib/types/rules.d.ts +++ b/lib/types/rules.d.ts @@ -84,6 +84,18 @@ type ValidNoRestrictedImportPatternOptions = EitherGroupOrRegEx & EitherNameSpecifiers; +interface CapitalizedCommentsCommonOptions { + ignorePattern?: string; + /** + * @default false + */ + ignoreInlineComments?: boolean; + /** + * @default false + */ + ignoreConsecutiveComments?: boolean; +} + //----------------------------------------------------------------------------- // Public types //----------------------------------------------------------------------------- @@ -396,17 +408,13 @@ export interface ESLintRules extends Linter.RulesRecord { "capitalized-comments": Linter.RuleEntry< [ "always" | "never", - Partial<{ - ignorePattern: string; - /** - * @default false - */ - ignoreInlineComments: boolean; - /** - * @default false - */ - ignoreConsecutiveComments: boolean; - }>, + ( + | CapitalizedCommentsCommonOptions + | Partial<{ + line: CapitalizedCommentsCommonOptions; + block: CapitalizedCommentsCommonOptions; + }> + ), ] >; @@ -1655,7 +1663,21 @@ export interface ESLintRules extends Linter.RulesRecord { * @since 5.0.0-alpha.3 * @see https://eslint.org/docs/latest/rules/max-classes-per-file */ - "max-classes-per-file": Linter.RuleEntry<[number]>; + "max-classes-per-file": Linter.RuleEntry< + [ + | number + | Partial<{ + /** + * @default false + */ + ignoreExpressions: boolean; + /** + * @default 1 + */ + max: number; + }>, + ] + >; /** * Rule to enforce a maximum depth that blocks can be nested. @@ -1665,12 +1687,18 @@ export interface ESLintRules extends Linter.RulesRecord { */ "max-depth": Linter.RuleEntry< [ - Partial<{ - /** - * @default 4 - */ - max: number; - }>, + | number + | Partial<{ + /** + * @deprecated + * @default 4 + */ + maximum: number; + /** + * @default 4 + */ + max: number; + }>, ] >; @@ -1758,24 +1786,25 @@ export interface ESLintRules extends Linter.RulesRecord { */ "max-lines-per-function": Linter.RuleEntry< [ - Partial<{ - /** - * @default 50 - */ - max: number; - /** - * @default false - */ - skipBlankLines: boolean; - /** - * @default false - */ - skipComments: boolean; - /** - * @default false - */ - IIFEs: boolean; - }>, + | number + | Partial<{ + /** + * @default 50 + */ + max: number; + /** + * @default false + */ + skipBlankLines: boolean; + /** + * @default false + */ + skipComments: boolean; + /** + * @default false + */ + IIFEs: boolean; + }>, ] >; @@ -1787,13 +1816,18 @@ export interface ESLintRules extends Linter.RulesRecord { */ "max-nested-callbacks": Linter.RuleEntry< [ + | number | Partial<{ + /** + * @deprecated + * @default 10 + */ + maximum: number; /** * @default 10 */ max: number; - }> - | number, + }>, ] >; @@ -1805,7 +1839,13 @@ export interface ESLintRules extends Linter.RulesRecord { */ "max-params": Linter.RuleEntry< [ + | number | Partial<{ + /** + * @deprecated + * @default 3 + */ + maximum: number; /** * @default 3 */ @@ -1814,8 +1854,7 @@ export interface ESLintRules extends Linter.RulesRecord { * @default false */ countVoidThis: boolean; - }> - | number, + }>, ] >; @@ -1827,17 +1866,26 @@ export interface ESLintRules extends Linter.RulesRecord { */ "max-statements": Linter.RuleEntry< [ - | Partial<{ - /** - * @default 10 - */ - max: number; - /** - * @default false - */ - ignoreTopLevelFunctions: boolean; - }> - | number, + ( + | number + | Partial<{ + /** + * @deprecated + * @default 10 + */ + maximum: number; + /** + * @default 10 + */ + max: number; + }> + ), + Partial<{ + /** + * @default false + */ + ignoreTopLevelFunctions: boolean; + }>, ] >; @@ -2014,7 +2062,24 @@ export interface ESLintRules extends Linter.RulesRecord { "no-bitwise": Linter.RuleEntry< [ Partial<{ - allow: string[]; + /** + * @default [] + */ + allow: Array< + | "^" + | "|" + | "&" + | "<<" + | ">>" + | ">>>" + | "^=" + | "|=" + | "&=" + | "<<=" + | ">>=" + | ">>>=" + | "~" + >; /** * @default false */ @@ -2166,9 +2231,9 @@ export interface ESLintRules extends Linter.RulesRecord { [ { /** - * @default true + * @default "allExceptWhileTrue" */ - checkLoops: boolean; + checkLoops: "all" | "allExceptWhileTrue" | "none" | boolean; }, ] >; @@ -2395,7 +2460,16 @@ export interface ESLintRules extends Linter.RulesRecord { * @since 1.7.0 * @see https://eslint.org/docs/latest/rules/no-empty-pattern */ - "no-empty-pattern": Linter.RuleEntry<[]>; + "no-empty-pattern": Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + allowObjectPatternsAsParameters: boolean; + }>, + ] + >; /** * Rule to disallow empty static blocks. @@ -2668,7 +2742,16 @@ export interface ESLintRules extends Linter.RulesRecord { * @since 2.0.0-alpha-1 * @see https://eslint.org/docs/latest/rules/no-implicit-globals */ - "no-implicit-globals": Linter.RuleEntry<[]>; + "no-implicit-globals": Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + lexicalBindings: boolean; + }>, + ] + >; /** * Rule to disallow the use of `eval()`-like methods. @@ -2695,7 +2778,13 @@ export interface ESLintRules extends Linter.RulesRecord { * @since 0.10.0 * @see https://eslint.org/docs/latest/rules/no-inline-comments */ - "no-inline-comments": Linter.RuleEntry<[]>; + "no-inline-comments": Linter.RuleEntry< + [ + Partial<{ + ignorePattern: string; + }>, + ] + >; /** * Rule to disallow variable or `function` declarations in nested blocks. @@ -2703,7 +2792,17 @@ export interface ESLintRules extends Linter.RulesRecord { * @since 0.6.0 * @see https://eslint.org/docs/latest/rules/no-inner-declarations */ - "no-inner-declarations": Linter.RuleEntry<["functions" | "both"]>; + "no-inner-declarations": Linter.RuleEntry< + [ + "functions" | "both", + Partial<{ + /** + * @default "allow" + */ + blockScopedFunctions: "allow" | "disallow"; + }>, + ] + >; /** * Rule to disallow invalid regular expression strings in `RegExp` constructors. @@ -2767,6 +2866,10 @@ export interface ESLintRules extends Linter.RulesRecord { * @default false */ skipTemplates: boolean; + /** + * @default false + */ + skipJSXText: boolean; }>, ] >; @@ -2855,11 +2958,19 @@ export interface ESLintRules extends Linter.RulesRecord { /** * @default [] */ - ignore: number[]; + ignore: Array; /** * @default false */ ignoreArrayIndexes: boolean; + /** + * @default false + */ + ignoreDefaultValues: boolean; + /** + * @default false + */ + ignoreClassFieldInitialValues: boolean; /** * @default false */ @@ -2981,7 +3092,16 @@ export interface ESLintRules extends Linter.RulesRecord { * @since 3.14.0 * @see https://eslint.org/docs/latest/rules/no-multi-assign */ - "no-multi-assign": Linter.RuleEntry<[]>; + "no-multi-assign": Linter.RuleEntry< + [ + Partial<{ + /** + * @default false + */ + ignoreNonDeclaration: boolean; + }>, + ] + >; /** * Rule to disallow multiple spaces. @@ -3555,7 +3675,16 @@ export interface ESLintRules extends Linter.RulesRecord { * @since 2.0.0-rc.0 * @see https://eslint.org/docs/latest/rules/no-self-assign */ - "no-self-assign": Linter.RuleEntry<[]>; + "no-self-assign": Linter.RuleEntry< + [ + Partial<{ + /** + * @default true + */ + props: boolean; + }>, + ] + >; /** * Rule to disallow comparisons where both sides are exactly the same. @@ -3929,12 +4058,13 @@ export interface ESLintRules extends Linter.RulesRecord { /** * @default [] */ - ignore: + ignore: Array< | "WhileStatement" | "DoWhileStatement" | "ForStatement" | "ForInStatement" - | "ForOfStatement"; + | "ForOfStatement" + >; }>, ] >; @@ -4293,7 +4423,7 @@ export interface ESLintRules extends Linter.RulesRecord { */ "no-warning-comments": Linter.RuleEntry< [ - { + Partial<{ /** * @default ["todo", "fixme", "xxx"] */ @@ -4302,7 +4432,8 @@ export interface ESLintRules extends Linter.RulesRecord { * @default 'start' */ location: "start" | "anywhere"; - }, + decoration: string[]; + }>, ] >; @@ -5342,7 +5473,7 @@ export interface ESLintRules extends Linter.RulesRecord { */ enforceForSwitchCase: boolean; /** - * @default true + * @default false */ enforceForIndexOf: boolean; }>, From 6b0c08b106aa66f2e9fa484282f0eb63c64a1215 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Wed, 10 Sep 2025 08:09:54 +0000 Subject: [PATCH 105/165] docs: Update README --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 0016ec32080c..4a9edc767fb3 100644 --- a/README.md +++ b/README.md @@ -277,6 +277,11 @@ Nitin Kumar The people who review and fix bugs and help triage issues.
${(index + 1) % 9 === 0 ? "" : ""}`, ) From a1f06a350c4155c4dbf39bf932a38d71d70f1b65 Mon Sep 17 00:00:00 2001 From: Pixel998 Date: Tue, 7 Oct 2025 17:56:13 +0300 Subject: [PATCH 148/165] fix: correct SourceCode typings (#20114) * fix: correct SourceCode typings * add tests * revert `ParserServices` type change --- lib/types/index.d.ts | 26 +++++++++++-- tests/lib/types/types.test.ts | 71 ++++++++++++++++++++++++++++++++++- 2 files changed, 92 insertions(+), 5 deletions(-) diff --git a/lib/types/index.d.ts b/lib/types/index.d.ts index 71a8fd9949bf..bd2f635c04ce 100644 --- a/lib/types/index.d.ts +++ b/lib/types/index.d.ts @@ -222,11 +222,16 @@ export class SourceCode getDeclaredVariables(node: ESTree.Node): Scope.Variable[]; + /** @deprecated */ getJSDocComment(node: ESTree.Node): ESTree.Comment | null; getNodeByRangeIndex(index: number): ESTree.Node | null; - isSpaceBetweenTokens(first: AST.Token, second: AST.Token): boolean; + /** @deprecated Use `isSpaceBetween()` instead. */ + isSpaceBetweenTokens( + first: ESTree.Node | AST.Token, + second: ESTree.Node | AST.Token, + ): boolean; getLocFromIndex(index: number): ESTree.Position; @@ -260,6 +265,18 @@ export class SourceCode getTokensAfter: SourceCode.UnaryCursorWithCountOptions; + /** @deprecated Use `getTokenBefore()` instead. */ + getTokenOrCommentBefore( + node: ESTree.Node | AST.Token | ESTree.Comment, + skip?: number | undefined, + ): AST.Token | ESTree.Comment | null; + + /** @deprecated Use `getTokenAfter()` instead. */ + getTokenOrCommentAfter( + node: ESTree.Node | AST.Token | ESTree.Comment, + skip?: number | undefined, + ): AST.Token | ESTree.Comment | null; + getFirstTokenBetween: SourceCode.BinaryCursorWithSkipOptions; getFirstTokensBetween: SourceCode.BinaryCursorWithCountOptions; @@ -306,9 +323,10 @@ export namespace SourceCode { interface Config { text: string; ast: AST.Program; - parserServices?: ParserServices | undefined; - scopeManager?: Scope.ScopeManager | undefined; - visitorKeys?: VisitorKeys | undefined; + hasBOM?: boolean | undefined; + parserServices?: ParserServices | null | undefined; + scopeManager?: Scope.ScopeManager | null | undefined; + visitorKeys?: VisitorKeys | null | undefined; } type ParserServices = any; diff --git a/tests/lib/types/types.test.ts b/tests/lib/types/types.test.ts index e343afb1d90b..ce07f36e7341 100644 --- a/tests/lib/types/types.test.ts +++ b/tests/lib/types/types.test.ts @@ -93,7 +93,52 @@ const COMMENT: Comment = { // #region SourceCode -let sourceCode = new SourceCode(SOURCE, AST); +let sourceCode: SourceCode; + +sourceCode = new SourceCode(SOURCE, AST); +sourceCode = new SourceCode({ text: SOURCE, ast: AST }); +sourceCode = new SourceCode({ text: SOURCE, ast: AST, hasBOM: true }); +sourceCode = new SourceCode({ text: SOURCE, ast: AST, hasBOM: undefined }); +sourceCode = new SourceCode({ + text: SOURCE, + ast: AST, + parserServices: { + foo() {}, + }, +}); +sourceCode = new SourceCode({ text: SOURCE, ast: AST, parserServices: null }); +sourceCode = new SourceCode({ + text: SOURCE, + ast: AST, + parserServices: undefined, +}); +sourceCode = new SourceCode({ + text: SOURCE, + ast: AST, + scopeManager: { + scopes: [], + globalScope: null, + acquire(node, inner) { + return scopeManager.scopes[0]; + }, + getDeclaredVariables() { + return []; + }, + }, +}); +sourceCode = new SourceCode({ text: SOURCE, ast: AST, scopeManager: null }); +sourceCode = new SourceCode({ + text: SOURCE, + ast: AST, + scopeManager: undefined, +}); +sourceCode = new SourceCode({ + text: SOURCE, + ast: AST, + visitorKeys: { ArrayExpression: ["elements"] }, +}); +sourceCode = new SourceCode({ text: SOURCE, ast: AST, visitorKeys: null }); +sourceCode = new SourceCode({ text: SOURCE, ast: AST, visitorKeys: undefined }); SourceCode.splitLines(SOURCE); @@ -113,6 +158,8 @@ sourceCode.getNodeByRangeIndex(0); sourceCode.getNodeByRangeIndex(0); sourceCode.isSpaceBetweenTokens(TOKEN, TOKEN); +sourceCode.isSpaceBetweenTokens(AST, TOKEN); +sourceCode.isSpaceBetweenTokens(TOKEN, AST); sourceCode.isSpaceBetween(TOKEN, TOKEN); sourceCode.isSpaceBetween(AST, TOKEN); @@ -292,6 +339,16 @@ sourceCode.getTokensAfter(AST, { sourceCode.getTokensAfter(TOKEN, 0); sourceCode.getTokensAfter(COMMENT, 0); +sourceCode.getTokenOrCommentBefore(AST); +sourceCode.getTokenOrCommentBefore(AST, 0); +sourceCode.getTokenOrCommentBefore(TOKEN, 0); +sourceCode.getTokenOrCommentBefore(COMMENT, 0); + +sourceCode.getTokenOrCommentAfter(AST); +sourceCode.getTokenOrCommentAfter(AST, 0); +sourceCode.getTokenOrCommentAfter(TOKEN, 0); +sourceCode.getTokenOrCommentAfter(COMMENT, 0); + sourceCode.getFirstTokenBetween(AST, AST); // $ExpectType Token | null sourceCode.getFirstTokenBetween(AST, AST, 0); sourceCode.getFirstTokenBetween(AST, AST, { skip: 0 }); @@ -2046,6 +2103,18 @@ ruleTester.run("simple-valid-test", rule2, { }, }); +interface CustomParserServices { + program: any; +} + +(parserServices: CustomParserServices): Linter.Config => ({ + languageOptions: { + parser: { + parseForESLint: () => ({ ast: AST, services: parserServices }), + }, + }, +}); + (): Linter.Config => ({ languageOptions: { // @ts-expect-error From 205dbd2d9272e761574c478e3b0181f7b89ed0f6 Mon Sep 17 00:00:00 2001 From: ntnyq Date: Thu, 9 Oct 2025 16:25:36 +0800 Subject: [PATCH 149/165] chore: fix typos (#20200) --- docs/src/library/rule-list.md | 4 ++-- lib/eslint/eslint-helpers.js | 2 +- lib/shared/serialization.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/src/library/rule-list.md b/docs/src/library/rule-list.md index e299a5fd2a15..495805e262bb 100644 --- a/docs/src/library/rule-list.md +++ b/docs/src/library/rule-list.md @@ -14,7 +14,7 @@ The rule list is a macro defined in `components/rule-list.macro.html`. The macro {{ replacementRuleList({ specifiers: [{ rule: { name: 'global-require', url: -'...' }, plugin: { name: '@eslint-comunnity/eslint-plugin-n', url: '...' } }] }) +'...' }, plugin: { name: '@eslint-community/eslint-plugin-n', url: '...' } }] }) }} ``` @@ -24,4 +24,4 @@ The rule list is a macro defined in `components/rule-list.macro.html`. The macro {% from 'components/rule-list.macro.html' import replacementRuleList %} -{{ replacementRuleList({ specifiers: [{ rule: { name: 'global-require', url: '...' }, plugin: { name: '@eslint-comunnity/eslint-plugin-n', url: '...' } }] }) }} +{{ replacementRuleList({ specifiers: [{ rule: { name: 'global-require', url: '...' }, plugin: { name: '@eslint-community/eslint-plugin-n', url: '...' } }] }) }} diff --git a/lib/eslint/eslint-helpers.js b/lib/eslint/eslint-helpers.js index be3b68cf9c0b..16c8dde94ec8 100644 --- a/lib/eslint/eslint-helpers.js +++ b/lib/eslint/eslint-helpers.js @@ -506,7 +506,7 @@ async function globMultiSearch({ * @param {boolean} args.globInputPaths true to interpret glob patterns, * false to not interpret glob patterns. * @param {string} args.cwd The current working directory to find from. - * @param {ConfigLoader|LegacyConfigLoader} args.configLoader The config loeader for the current run. + * @param {ConfigLoader|LegacyConfigLoader} args.configLoader The config loader for the current run. * @param {boolean} args.errorOnUnmatchedPattern Determines if an unmatched pattern * should throw an error. * @returns {Promise>} The fully resolved file paths. diff --git a/lib/shared/serialization.js b/lib/shared/serialization.js index afc73f9b915b..01cacf5ee84e 100644 --- a/lib/shared/serialization.js +++ b/lib/shared/serialization.js @@ -56,7 +56,7 @@ function isSerializable(val, seenObjects = new Set()) { /* * We're creating a new Set of seen objects because we want to * ensure that `val` doesn't appear again in this path, but it can appear - * in other paths. This allows for resuing objects in the graph, as long as + * in other paths. This allows for reusing objects in the graph, as long as * there are no cycles. */ !isSerializable( From 4168a18b7efd8facbbd71cd44a62942a9f656a30 Mon Sep 17 00:00:00 2001 From: Sweta Tanwar Date: Thu, 9 Oct 2025 17:14:05 +0530 Subject: [PATCH 150/165] chore: fix typo in legacy-eslint.js (#20202) --- tests/lib/eslint/legacy-eslint.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/tests/lib/eslint/legacy-eslint.js b/tests/lib/eslint/legacy-eslint.js index 480b45d17a67..c4bcab113d8e 100644 --- a/tests/lib/eslint/legacy-eslint.js +++ b/tests/lib/eslint/legacy-eslint.js @@ -3028,7 +3028,7 @@ describe("LegacyESLint", () => { }, /Error while processing options validation schema of rule 'schema-invalid\/rule1': minItems must be number/u); }); - it("should succesfully execute with a rule with `schema:false` from a plugin when no options were passed", async () => { + it("should successfully execute with a rule with `schema:false` from a plugin when no options were passed", async () => { eslint = new LegacyESLint({ cwd: path.join(fixtureDir, "plugins"), baseConfig: { @@ -3055,7 +3055,7 @@ describe("LegacyESLint", () => { ); }); - it("should succesfully execute with a rule with `schema:false` from a plugin when an option is passed", async () => { + it("should successfully execute with a rule with `schema:false` from a plugin when an option is passed", async () => { eslint = new LegacyESLint({ cwd: path.join(fixtureDir, "plugins"), baseConfig: { @@ -3082,7 +3082,7 @@ describe("LegacyESLint", () => { ); }); - it("should succesfully execute with a rule with `schema:[]` from a plugin when no options were passed", async () => { + it("should successfully execute with a rule with `schema:[]` from a plugin when no options were passed", async () => { eslint = new LegacyESLint({ cwd: path.join(fixtureDir, "plugins"), baseConfig: { @@ -3131,7 +3131,7 @@ describe("LegacyESLint", () => { }, /Configuration for rule "schema-empty-array\/rule1" is invalid.*should NOT have more than 0 items/su); }); - it("should succesfully execute with a rule with no schema from a plugin when no options were passed", async () => { + it("should successfully execute with a rule with no schema from a plugin when no options were passed", async () => { eslint = new LegacyESLint({ cwd: path.join(fixtureDir, "plugins"), baseConfig: { @@ -3178,7 +3178,7 @@ describe("LegacyESLint", () => { }, /Configuration for rule "schema-missing\/rule1" is invalid.*should NOT have more than 0 items/su); }); - it("should succesfully execute with a rule with an array schema from a plugin when no options were passed", async () => { + it("should successfully execute with a rule with an array schema from a plugin when no options were passed", async () => { eslint = new LegacyESLint({ cwd: path.join(fixtureDir, "plugins"), baseConfig: { @@ -3205,7 +3205,7 @@ describe("LegacyESLint", () => { ); }); - it("should succesfully execute with a rule with an array schema from a plugin when a correct option was passed", async () => { + it("should successfully execute with a rule with an array schema from a plugin when a correct option was passed", async () => { eslint = new LegacyESLint({ cwd: path.join(fixtureDir, "plugins"), baseConfig: { @@ -3280,7 +3280,7 @@ describe("LegacyESLint", () => { }, /Configuration for rule "schema-array\/rule1" is invalid.*should NOT have more than 1 items/su); }); - it("should succesfully execute with a rule with an object schema from a plugin when no options were passed", async () => { + it("should successfully execute with a rule with an object schema from a plugin when no options were passed", async () => { eslint = new LegacyESLint({ cwd: path.join(fixtureDir, "plugins"), baseConfig: { @@ -3307,7 +3307,7 @@ describe("LegacyESLint", () => { ); }); - it("should succesfully execute with a rule with an object schema from a plugin when a correct option was passed", async () => { + it("should successfully execute with a rule with an object schema from a plugin when a correct option was passed", async () => { eslint = new LegacyESLint({ cwd: path.join(fixtureDir, "plugins"), baseConfig: { @@ -4290,7 +4290,7 @@ describe("LegacyESLint", () => { * Run 1: Lint result wasn't already cached. * Run 2: Lint result was already cached. The cached lint result is used but the cache is reconciled before the run ends. * Run 3: Lint result was already cached. The cached lint result was being used throughout the previous run, so possible - * mutations in the previous run that occured after the cache was reconciled may have side effects for this run. + * mutations in the previous run that occurred after the cache was reconciled may have side effects for this run. */ for (let i = 0; i < 3; i++) { const [result] = await eslint.lintFiles([filePath]); @@ -4359,7 +4359,7 @@ describe("LegacyESLint", () => { * Run 1: Lint result wasn't already cached. * Run 2: Lint result was already cached. The cached lint result is used but the cache is reconciled before the run ends. * Run 3: Lint result was already cached. The cached lint result was being used throughout the previous run, so possible - * mutations in the previous run that occured after the cache was reconciled may have side effects for this run. + * mutations in the previous run that occurred after the cache was reconciled may have side effects for this run. */ for (let i = 0; i < 3; i++) { const [result] = await eslint.lintFiles([filePath]); From b39e71a2130ae1ea3fbc19b19f5b951eb625722a Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Fri, 10 Oct 2025 08:10:26 +0000 Subject: [PATCH 151/165] docs: Update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a9043fcbf120..b89254f32c11 100644 --- a/README.md +++ b/README.md @@ -343,7 +343,7 @@ to get your logo on our READMEs and [website](https://eslint.org/sponsors).

Automattic Airbnb

Gold Sponsors

Qlty Software trunk.io Shopify

Silver Sponsors

Vite Liftoff American Express StackBlitz

Bronze Sponsors

-

Cybozu Discord GitBook Nx Mercedes-Benz Group HeroCoders LambdaTest

+

Syntax Cybozu Sentry Discord GitBook Nx Mercedes-Benz Group HeroCoders LambdaTest

Technology Sponsors

Technology sponsors allow us to use their products and services for free as part of a contribution to the open source ecosystem and our work.

Netlify Algolia 1Password

From c070e65f6bb9e38d06a89ba2b3261781bec3d397 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Fri, 10 Oct 2025 18:13:05 +0900 Subject: [PATCH 152/165] docs: correct formatting in `no-irregular-whitespace` rule documentation (#20203) --- docs/src/rules/no-irregular-whitespace.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/src/rules/no-irregular-whitespace.md b/docs/src/rules/no-irregular-whitespace.md index 8b1972d1d61f..1b318294a2ab 100644 --- a/docs/src/rules/no-irregular-whitespace.md +++ b/docs/src/rules/no-irregular-whitespace.md @@ -38,11 +38,10 @@ This rule disallows the following characters except where the options allow: ```text \u000B - Line Tabulation (\v) - \u000C - Form Feed (\f) - -\u00A0 - No-Break Space - \u0085 - Next Line - +\u00A0 - No-Break Space - \u1680 - Ogham Space Mark - \u180E - Mongolian Vowel Separator - -\ufeff - Zero Width No-Break Space - \u2000 - En Quad - \u2001 - Em Quad - \u2002 - En Space - @@ -58,8 +57,9 @@ This rule disallows the following characters except where the options allow: \u2028 - Line Separator - - \u2029 - Paragraph Separator - - \u202F - Narrow No-Break Space - -\u205f - Medium Mathematical Space - +\u205F - Medium Mathematical Space - \u3000 - Ideographic Space - +\uFEFF - Zero Width No-Break Space - ``` ## Options From 462675af8a811f9ca984efaedbdc5b46b13ced7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Sat, 11 Oct 2025 15:13:07 +0900 Subject: [PATCH 153/165] docs: improve web accessibility by hiding non-semantic character (#20205) --- docs/src/assets/scss/eslint-site-footer.scss | 2 +- docs/src/assets/scss/languages.scss | 2 +- docs/src/assets/scss/versions.scss | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/src/assets/scss/eslint-site-footer.scss b/docs/src/assets/scss/eslint-site-footer.scss index e9b25d685b9d..8efe42796f52 100644 --- a/docs/src/assets/scss/eslint-site-footer.scss +++ b/docs/src/assets/scss/eslint-site-footer.scss @@ -29,7 +29,7 @@ margin-inline-end: 0.5rem; &:not(:last-of-type)::after { - content: "|"; + content: "|" / ""; margin-left: 0.5rem; margin-inline-start: 0.5rem; } diff --git a/docs/src/assets/scss/languages.scss b/docs/src/assets/scss/languages.scss index 468d55b319b4..a0f760acc180 100644 --- a/docs/src/assets/scss/languages.scss +++ b/docs/src/assets/scss/languages.scss @@ -27,7 +27,7 @@ color: var(--link-color); &::after { - content: " ✔️"; + content: " ✔️" / "check mark"; white-space: pre; color: rgba(100%, 0%, 0%, 0); text-shadow: 0 0 0 var(--headings-color); diff --git a/docs/src/assets/scss/versions.scss b/docs/src/assets/scss/versions.scss index bcaac9511469..38a719126533 100644 --- a/docs/src/assets/scss/versions.scss +++ b/docs/src/assets/scss/versions.scss @@ -28,7 +28,7 @@ color: var(--link-color); &::after { - content: " ✔️"; + content: " ✔️" / "check mark"; white-space: pre; color: rgba(100%, 0%, 0%, 0); text-shadow: 0 0 0 var(--headings-color); From eac71fb77113de7bf199ff20c6ee44cefcb59848 Mon Sep 17 00:00:00 2001 From: Milos Djermanovic Date: Mon, 13 Oct 2025 03:30:07 +0200 Subject: [PATCH 154/165] test: remove use of `nodejsScope` option of eslint-scope from tests (#20206) --- tests/fixtures/parsers/enhanced-parser3.js | 1 - tests/lib/languages/js/source-code/source-code.js | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/fixtures/parsers/enhanced-parser3.js b/tests/fixtures/parsers/enhanced-parser3.js index fb57e8047387..0e226120c59d 100644 --- a/tests/fixtures/parsers/enhanced-parser3.js +++ b/tests/fixtures/parsers/enhanced-parser3.js @@ -29,7 +29,6 @@ function analyzeScope(ast) { const options = { optimistic: false, directive: false, - nodejsScope: false, impliedStrict: false, sourceType: "script", ecmaVersion: 6, diff --git a/tests/lib/languages/js/source-code/source-code.js b/tests/lib/languages/js/source-code/source-code.js index 4ff4a2afb416..79ff355b153e 100644 --- a/tests/lib/languages/js/source-code/source-code.js +++ b/tests/lib/languages/js/source-code/source-code.js @@ -3749,8 +3749,8 @@ describe("SourceCode", () => { const ast = espree.parse(code, DEFAULT_CONFIG); const scopeManager = eslintScope.analyze(ast, { ignoreEval: true, - nodejsScope: true, ecmaVersion: 6, + sourceType: "commonjs", }); const sourceCode = new SourceCode({ text: code, @@ -4012,8 +4012,8 @@ describe("SourceCode", () => { const ast = espree.parse(code, DEFAULT_CONFIG); const scopeManager = eslintScope.analyze(ast, { ignoreEval: true, - nodejsScope: true, ecmaVersion: 6, + sourceType: "commonjs", }); const sourceCode = new SourceCode({ text: code, From 004577eda2f2f4b2829e0364f8b41893cebfc859 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 14 Oct 2025 09:26:59 +0800 Subject: [PATCH 155/165] ci: bump github/codeql-action from 3 to 4 (#20211) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3 to 4. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/v3...v4) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: '4' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/codeql-analysis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 86d597ba0e3b..ed1f8b5315f7 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -44,7 +44,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v3 + uses: github/codeql-action/init@v4 with: languages: ${{ matrix.language }} @@ -56,7 +56,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@v3 + uses: github/codeql-action/autobuild@v4 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -70,4 +70,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 + uses: github/codeql-action/analyze@v4 From e37e590aae2a7fcca4d3a9adc1379ad466e5c5d1 Mon Sep 17 00:00:00 2001 From: Francesco Trotta Date: Thu, 16 Oct 2025 10:33:23 +0200 Subject: [PATCH 156/165] feat: correct `no-loss-of-precision` false positives with `e` notation (#20187) * fix: correct `no-loss-of-precision` false positives with `e` notation * add decimal point if missing * use option to always parse input as a float * add invalid test case --- lib/rules/no-loss-of-precision.js | 414 ++++++++++++------------ tests/lib/rules/no-loss-of-precision.js | 15 + 2 files changed, 221 insertions(+), 208 deletions(-) diff --git a/lib/rules/no-loss-of-precision.js b/lib/rules/no-loss-of-precision.js index 456dd2c1012f..8e2005f151c3 100644 --- a/lib/rules/no-loss-of-precision.js +++ b/lib/rules/no-loss-of-precision.js @@ -5,6 +5,212 @@ "use strict"; +//------------------------------------------------------------------------------ +// Helpers +//------------------------------------------------------------------------------ + +/** Class representing a number in scientific notation. */ +class ScientificNotation { + /** @type {string} The digits of the coefficient. A decimal point is implied after the first digit. */ + coefficient; + + /** @type {number} The order of magnitude. */ + magnitude; + + constructor(coefficient, magnitude) { + this.coefficient = coefficient; + this.magnitude = magnitude; + } + + /* c8 ignore start -- debug only */ + toString() { + return `${this.coefficient[0]}${this.coefficient.length > 1 ? `.${this.coefficient.slice(1)}` : ""}e${this.magnitude}`; + } + /* c8 ignore stop */ +} + +/** + * Returns whether the node is number literal + * @param {Node} node the node literal being evaluated + * @returns {boolean} true if the node is a number literal + */ +function isNumber(node) { + return typeof node.value === "number"; +} + +/** + * Gets the source code of the given number literal. Removes `_` numeric separators from the result. + * @param {Node} node the number `Literal` node + * @returns {string} raw source code of the literal, without numeric separators + */ +function getRaw(node) { + return node.raw.replace(/_/gu, ""); +} + +/** + * Checks whether the number is base ten + * @param {ASTNode} node the node being evaluated + * @returns {boolean} true if the node is in base ten + */ +function isBaseTen(node) { + const prefixes = ["0x", "0X", "0b", "0B", "0o", "0O"]; + + return ( + prefixes.every(prefix => !node.raw.startsWith(prefix)) && + !/^0[0-7]+$/u.test(node.raw) + ); +} + +/** + * Checks that the user-intended non-base ten number equals the actual number after is has been converted to the Number type + * @param {Node} node the node being evaluated + * @returns {boolean} true if they do not match + */ +function notBaseTenLosesPrecision(node) { + const rawString = getRaw(node).toUpperCase(); + let base; + + if (rawString.startsWith("0B")) { + base = 2; + } else if (rawString.startsWith("0X")) { + base = 16; + } else { + base = 8; + } + + return !rawString.endsWith(node.value.toString(base).toUpperCase()); +} + +/** + * Returns the number stripped of leading zeros + * @param {string} numberAsString the string representation of the number + * @returns {string} the stripped string + */ +function removeLeadingZeros(numberAsString) { + for (let i = 0; i < numberAsString.length; i++) { + if (numberAsString[i] !== "0") { + return numberAsString.slice(i); + } + } + return numberAsString; +} + +/** + * Returns the number stripped of trailing zeros + * @param {string} numberAsString the string representation of the number + * @returns {string} the stripped string + */ +function removeTrailingZeros(numberAsString) { + for (let i = numberAsString.length - 1; i >= 0; i--) { + if (numberAsString[i] !== "0") { + return numberAsString.slice(0, i + 1); + } + } + return numberAsString; +} + +/** + * Converts an integer to an object containing the integer's coefficient and order of magnitude + * @param {string} stringInteger the string representation of the integer being converted + * @returns {ScientificNotation} the object containing the integer's coefficient and order of magnitude + */ +function normalizeInteger(stringInteger) { + const trimmedInteger = removeLeadingZeros(stringInteger); + const significantDigits = removeTrailingZeros(trimmedInteger); + + return new ScientificNotation(significantDigits, trimmedInteger.length - 1); +} + +/** + * Converts a float to an object containing the float's coefficient and order of magnitude + * @param {string} stringFloat the string representation of the float being converted + * @returns {ScientificNotation} the object containing the float's coefficient and order of magnitude + */ +function normalizeFloat(stringFloat) { + const trimmedFloat = removeLeadingZeros(stringFloat); + const indexOfDecimalPoint = trimmedFloat.indexOf("."); + + switch (indexOfDecimalPoint) { + case 0: { + const significantDigits = removeLeadingZeros(trimmedFloat.slice(1)); + + return new ScientificNotation( + significantDigits, + significantDigits.length - trimmedFloat.length, + ); + } + case -1: + return new ScientificNotation( + trimmedFloat, + trimmedFloat.length - 1, + ); + default: + return new ScientificNotation( + trimmedFloat.replace(".", ""), + indexOfDecimalPoint - 1, + ); + } +} + +/** + * Converts a base ten number to proper scientific notation + * @param {string} stringNumber the string representation of the base ten number to be converted + * @param {boolean} parseAsFloat if true, the coefficient will be always parsed as a float, regardless of whether a decimal point is present + * @returns {ScientificNotation} the object containing the number's coefficient and order of magnitude + */ +function convertNumberToScientificNotation(stringNumber, parseAsFloat) { + const splitNumber = stringNumber.split("e"); + const originalCoefficient = splitNumber[0]; + const normalizedNumber = + parseAsFloat || stringNumber.includes(".") + ? normalizeFloat(originalCoefficient) + : normalizeInteger(originalCoefficient); + if (splitNumber.length > 1) { + normalizedNumber.magnitude += parseInt(splitNumber[1], 10); + } + + return normalizedNumber; +} + +/** + * Checks that the user-intended base ten number equals the actual number after is has been converted to the Number type + * @param {Node} node the node being evaluated + * @returns {boolean} true if they do not match + */ +function baseTenLosesPrecision(node) { + const rawNumber = getRaw(node).toLowerCase(); + const normalizedRawNumber = convertNumberToScientificNotation( + rawNumber, + false, + ); + const requestedPrecision = normalizedRawNumber.coefficient.length; + + if (requestedPrecision > 100) { + return true; + } + const storedNumber = node.value.toPrecision(requestedPrecision); + const normalizedStoredNumber = convertNumberToScientificNotation( + storedNumber, + true, + ); + + return ( + normalizedRawNumber.magnitude !== normalizedStoredNumber.magnitude || + normalizedRawNumber.coefficient !== normalizedStoredNumber.coefficient + ); +} + +/** + * Checks that the user-intended number equals the actual number after is has been converted to the Number type + * @param {Node} node the node being evaluated + * @returns {boolean} true if they do not match + */ +function losesPrecision(node) { + return isBaseTen(node) + ? baseTenLosesPrecision(node) + : notBaseTenLosesPrecision(node); +} + //------------------------------------------------------------------------------ // Rule Definition //------------------------------------------------------------------------------ @@ -29,214 +235,6 @@ module.exports = { }, create(context) { - /** - * Returns whether the node is number literal - * @param {Node} node the node literal being evaluated - * @returns {boolean} true if the node is a number literal - */ - function isNumber(node) { - return typeof node.value === "number"; - } - - /** - * Gets the source code of the given number literal. Removes `_` numeric separators from the result. - * @param {Node} node the number `Literal` node - * @returns {string} raw source code of the literal, without numeric separators - */ - function getRaw(node) { - return node.raw.replace(/_/gu, ""); - } - - /** - * Checks whether the number is base ten - * @param {ASTNode} node the node being evaluated - * @returns {boolean} true if the node is in base ten - */ - function isBaseTen(node) { - const prefixes = ["0x", "0X", "0b", "0B", "0o", "0O"]; - - return ( - prefixes.every(prefix => !node.raw.startsWith(prefix)) && - !/^0[0-7]+$/u.test(node.raw) - ); - } - - /** - * Checks that the user-intended non-base ten number equals the actual number after is has been converted to the Number type - * @param {Node} node the node being evaluated - * @returns {boolean} true if they do not match - */ - function notBaseTenLosesPrecision(node) { - const rawString = getRaw(node).toUpperCase(); - let base; - - if (rawString.startsWith("0B")) { - base = 2; - } else if (rawString.startsWith("0X")) { - base = 16; - } else { - base = 8; - } - - return !rawString.endsWith(node.value.toString(base).toUpperCase()); - } - - /** - * Adds a decimal point to the numeric string at index 1 - * @param {string} stringNumber the numeric string without any decimal point - * @returns {string} the numeric string with a decimal point in the proper place - */ - function addDecimalPointToNumber(stringNumber) { - return `${stringNumber[0]}.${stringNumber.slice(1)}`; - } - - /** - * Returns the number stripped of leading zeros - * @param {string} numberAsString the string representation of the number - * @returns {string} the stripped string - */ - function removeLeadingZeros(numberAsString) { - for (let i = 0; i < numberAsString.length; i++) { - if (numberAsString[i] !== "0") { - return numberAsString.slice(i); - } - } - return numberAsString; - } - - /** - * Returns the number stripped of trailing zeros - * @param {string} numberAsString the string representation of the number - * @returns {string} the stripped string - */ - function removeTrailingZeros(numberAsString) { - for (let i = numberAsString.length - 1; i >= 0; i--) { - if (numberAsString[i] !== "0") { - return numberAsString.slice(0, i + 1); - } - } - return numberAsString; - } - - /** - * Converts an integer to an object containing the integer's coefficient and order of magnitude - * @param {string} stringInteger the string representation of the integer being converted - * @returns {Object} the object containing the integer's coefficient and order of magnitude - */ - function normalizeInteger(stringInteger) { - const trimmedInteger = removeLeadingZeros(stringInteger); - const significantDigits = removeTrailingZeros(trimmedInteger); - - return { - magnitude: trimmedInteger.length - 1, - coefficient: addDecimalPointToNumber(significantDigits), - }; - } - - /** - * - * Converts a float to an object containing the floats's coefficient and order of magnitude - * @param {string} stringFloat the string representation of the float being converted - * @returns {Object} the object containing the float's coefficient and order of magnitude - */ - function normalizeFloat(stringFloat) { - const trimmedFloat = removeLeadingZeros(stringFloat); - - if (trimmedFloat.startsWith(".")) { - const decimalDigits = trimmedFloat.slice(1); - const significantDigits = removeLeadingZeros(decimalDigits); - - return { - magnitude: - significantDigits.length - decimalDigits.length - 1, - coefficient: addDecimalPointToNumber(significantDigits), - }; - } - return { - magnitude: trimmedFloat.indexOf(".") - 1, - coefficient: addDecimalPointToNumber( - trimmedFloat.replace(".", ""), - ), - }; - } - - /** - * Converts a base ten number to proper scientific notation - * @param {string} stringNumber the string representation of the base ten number to be converted - * @returns {string} the number converted to scientific notation - */ - function convertNumberToScientificNotation(stringNumber) { - const splitNumber = stringNumber.split("e"); - const originalCoefficient = splitNumber[0]; - const normalizedNumber = stringNumber.includes(".") - ? normalizeFloat(originalCoefficient) - : normalizeInteger(originalCoefficient); - const normalizedCoefficient = normalizedNumber.coefficient; - const magnitude = - splitNumber.length > 1 - ? parseInt(splitNumber[1], 10) + normalizedNumber.magnitude - : normalizedNumber.magnitude; - - return `${normalizedCoefficient}e${magnitude}`; - } - - /** - * Checks that the user-intended base ten number equals the actual number after is has been converted to the Number type - * @param {Node} node the node being evaluated - * @returns {boolean} true if they do not match - */ - function baseTenLosesPrecision(node) { - const rawNumber = getRaw(node).toLowerCase(); - - /* - * If trailing zeros equal the exponent, this is a valid representation - * like "9.00e2" where 00 = 2 (meaning 9.00 * 10^2 = 900) - * https://github.com/eslint/eslint/issues/19957 - */ - if (rawNumber.includes(".") && rawNumber.includes("e")) { - const parts = rawNumber.split("e"); - const coefficient = parts[0]; - const exponent = parseInt(parts[1], 10); - - // Count trailing zeros after decimal - const decimalParts = coefficient.split("."); - if (decimalParts.length === 2) { - const decimalPart = decimalParts[1]; - const trailingZeros = decimalPart.match(/0*$/u)[0].length; - - if (trailingZeros === exponent) { - return false; - } - } - } - - const normalizedRawNumber = - convertNumberToScientificNotation(rawNumber); - const requestedPrecision = normalizedRawNumber - .split("e")[0] - .replace(".", "").length; - - if (requestedPrecision > 100) { - return true; - } - const storedNumber = node.value.toPrecision(requestedPrecision); - const normalizedStoredNumber = - convertNumberToScientificNotation(storedNumber); - - return normalizedRawNumber !== normalizedStoredNumber; - } - - /** - * Checks that the user-intended number equals the actual number after is has been converted to the Number type - * @param {Node} node the node being evaluated - * @returns {boolean} true if they do not match - */ - function losesPrecision(node) { - return isBaseTen(node) - ? baseTenLosesPrecision(node) - : notBaseTenLosesPrecision(node); - } - return { Literal(node) { if (node.value && isNumber(node) && losesPrecision(node)) { diff --git a/tests/lib/rules/no-loss-of-precision.js b/tests/lib/rules/no-loss-of-precision.js index 62d34bdc2feb..05c222a9f7c8 100644 --- a/tests/lib/rules/no-loss-of-precision.js +++ b/tests/lib/rules/no-loss-of-precision.js @@ -54,12 +54,15 @@ ruleTester.run("no-loss-of-precision", rule, { "var x = 9.0000000000e10", "var x = 9.00E2", "var x = 9.000E3", + "var x = 9.100E3", "var x = 9.0000000000E10", "var x = 019.5", "var x = 0195", "var x = 00195", "var x = 0008", "var x = 0e5", + "var x = .42", + "var x = 42.", { code: "var x = 12_34_56", languageOptions: { ecmaVersion: 2021 } }, { code: "var x = 12_3.4_56", languageOptions: { ecmaVersion: 2021 } }, @@ -185,6 +188,18 @@ ruleTester.run("no-loss-of-precision", rule, { languageOptions: { ecmaVersion: 2021 }, errors: [{ messageId: "noLossOfPrecision" }], }, + { + code: "var x = 90071992547409930e-1", + errors: [{ messageId: "noLossOfPrecision" }], + }, + { + code: "var x = .9007199254740993e16", + errors: [{ messageId: "noLossOfPrecision" }], + }, + { + code: "var x = 900719925474099.30e1", + errors: [{ messageId: "noLossOfPrecision" }], + }, { code: "var x = -9_00719_9254_740993", languageOptions: { ecmaVersion: 2021 }, From ce40f74efd45f66d9fbfc6f78ce622ee72008485 Mon Sep 17 00:00:00 2001 From: Atul Nair <89694754+Un5had0wed@users.noreply.github.com> Date: Fri, 17 Oct 2025 02:23:40 +0530 Subject: [PATCH 157/165] feat: update `complexity` rule to only highlight function header (#20048) * feat: adjust highlighting to minimize visual noise for the 'complexity' rule Fixes #19984 * Add new test --- lib/rules/complexity.js | 6 +++++ tests/lib/rules/complexity.js | 44 ++++++++++++++++++++++++++++++++++- 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/lib/rules/complexity.js b/lib/rules/complexity.js index acab41262d44..f31586e9017e 100644 --- a/lib/rules/complexity.js +++ b/lib/rules/complexity.js @@ -171,6 +171,7 @@ module.exports = { if (complexity > threshold) { let name; + let loc = node.loc; if (codePath.origin === "class-field-initializer") { name = "class field initializer"; @@ -178,10 +179,15 @@ module.exports = { name = "class static block"; } else { name = astUtils.getFunctionNameWithKind(node); + loc = astUtils.getFunctionHeadLoc( + node, + context.sourceCode, + ); } context.report({ node, + loc, messageId: "complex", data: { name: upperCaseFirst(name), diff --git a/tests/lib/rules/complexity.js b/tests/lib/rules/complexity.js index 7eb6f497f7a9..ce16c77d1edf 100644 --- a/tests/lib/rules/complexity.js +++ b/tests/lib/rules/complexity.js @@ -318,6 +318,17 @@ ruleTester.run("complexity", rule, { options: [0], errors: [makeError("Function 'a'", 1, 0)], }, + { + code: "function foo(x) {if (x > 10) {return 'x is greater than 10';} else if (x > 5) {return 'x is greater than 5';} else {return 'x is less than 5';}}", + options: [2], + errors: [ + { + ...makeError("Function 'foo'", 3, 2), + column: 1, + endColumn: 13, + }, + ], + }, { code: "var func = function () {}", options: [0], @@ -827,6 +838,23 @@ ruleTester.run("complexity", rule, { }, ], }, + { + code: "class C { x = () => a || b || c; y = f || g || h; }", + options: [2], + languageOptions: { ecmaVersion: 2022 }, + errors: [ + { + ...makeError("Method 'x'", 3, 2), + column: 11, + endColumn: 15, + }, + { + ...makeError("Class field initializer", 3, 2), + column: 38, + endColumn: 49, + }, + ], + }, // object property options { @@ -834,6 +862,14 @@ ruleTester.run("complexity", rule, { options: [{ max: 0 }], errors: [makeError("Function 'a'", 1, 0)], }, + { + code: "const obj = { b: (a) => a?.b?.c, c: function (a) { return a?.b?.c; } };", + options: [{ max: 2 }], + errors: [ + { ...makeError("Method 'b'", 3, 2), column: 15, endColumn: 18 }, + { ...makeError("Method 'c'", 3, 2), column: 34, endColumn: 46 }, + ], + }, // optional chaining { @@ -869,7 +905,13 @@ ruleTester.run("complexity", rule, { { code: "function a(b) { b?.c.d?.e; }", options: [{ max: 2 }], - errors: [makeError("Function 'a'", 3, 2)], + errors: [ + { + ...makeError("Function 'a'", 3, 2), + column: 1, + endColumn: 11, + }, + ], }, { code: "function a(b) { b?.c?.(); }", From ff31609f195654d448954210ba4d31e921d463e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Fri, 17 Oct 2025 18:42:31 +0900 Subject: [PATCH 158/165] ci: add Node.js 25 to `ci.yml` (#20220) --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f179e4b5fdb0..db48f681fd6d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -70,7 +70,7 @@ jobs: strategy: matrix: os: [ubuntu-latest] - node: [24.x, 22.x, 20.x, 18.x, "18.18.0"] + node: [25.x, 24.x, 22.x, 20.x, 18.x, "18.18.0"] NODE_OPTIONS: [""] include: - os: windows-latest From c82b5efa1fc91900e029efa23e688fad67fc17fa Mon Sep 17 00:00:00 2001 From: "Nicholas C. Zakas" Date: Fri, 17 Oct 2025 12:24:44 -0400 Subject: [PATCH 159/165] refactor: Use types from @eslint/core (#20168) * refactor: Use types from @eslint/core * Update lib/types/index.d.ts Co-authored-by: Francesco Trotta * RulesRecord -> RulesConfig * Replace more types * Clean up RulesRecord/RulesConfig * Fix type errors * Remove extraneous types --------- Co-authored-by: Francesco Trotta --- lib/types/index.d.ts | 462 +++++----------------------------- package.json | 1 - tests/lib/types/types.test.ts | 1 - 3 files changed, 63 insertions(+), 401 deletions(-) diff --git a/lib/types/index.d.ts b/lib/types/index.d.ts index bd2f635c04ce..fb423d4b44d7 100644 --- a/lib/types/index.d.ts +++ b/lib/types/index.d.ts @@ -30,7 +30,6 @@ import type { CustomRuleDefinitionType, CustomRuleTypeDefinitions, DeprecatedInfo, - Language, LanguageOptions as GenericLanguageOptions, RuleContext as CoreRuleContext, RuleDefinition, @@ -38,8 +37,28 @@ import type { SourceRange, TextSourceCode, TraversalStep, + RulesConfig, + GlobalAccess, + GlobalsConfig, + LinterOptionsConfig, + EnvironmentConfig, + ObjectMetaProperties as CoreObjectMetaProperties, + Plugin as CorePlugin, + LintMessage as CoreLintMessage, + Processor as CoreProcessor, + ConfigObject, + LegacyConfigObject, + SeverityName, + SeverityLevel, + Severity as CoreSeverity, + EcmaVersion as CoreEcmaVersion, + ConfigOverride as CoreConfigOverride, + ProcessorFile as CoreProcessorFile, + JavaScriptParserOptionsConfig, + RulesMeta, + RuleTextEditor, + RuleTextEdit, } from "@eslint/core"; -import { JSONSchema4 } from "json-schema"; import { LegacyESLint } from "./use-at-your-own-risk.js"; export namespace AST { @@ -1148,60 +1167,7 @@ export namespace Rule { reachable: boolean; } - interface RuleMetaData { - /** Properties often used for documentation generation and tooling. */ - docs?: - | { - /** Provides a short description of the rule. Commonly used when generating lists of rules. */ - description?: string | undefined; - /** Historically used by some plugins that divide rules into categories in their documentation. */ - category?: string | undefined; - /** Historically used by some plugins to indicate a rule belongs in their `recommended` configuration. */ - recommended?: boolean | undefined; - /** Specifies the URL at which the full documentation can be accessed. Code editors often use this to provide a helpful link on highlighted rule violations. */ - url?: string | undefined; - } - | undefined; - /** Violation and suggestion messages. */ - messages?: { [messageId: string]: string } | undefined; - /** - * Specifies if the `--fix` option on the command line automatically fixes problems reported by the rule. - * Mandatory for fixable rules. - */ - fixable?: "code" | "whitespace" | undefined; - /** - * Specifies the [options](https://eslint.org/docs/latest/extend/custom-rules#options-schemas) - * so ESLint can prevent invalid [rule configurations](https://eslint.org/docs/latest/use/configure/rules#configuring-rules). - * Mandatory for rules with options. - */ - schema?: JSONSchema4 | JSONSchema4[] | false | undefined; - - /** Any default options to be recursively merged on top of any user-provided options. */ - defaultOptions?: unknown[]; - - /** Indicates whether the rule has been deprecated or provides additional metadata about the deprecation. Omit if not deprecated. */ - deprecated?: boolean | DeprecatedInfo | undefined; - /** - * @deprecated Use deprecated.replacedBy instead. - * The name of the rule(s) this rule was replaced by, if it was deprecated. - */ - replacedBy?: readonly string[]; - - /** - * Indicates the type of rule: - * - `"problem"` means the rule is identifying code that either will cause an error or may cause a confusing behavior. Developers should consider this a high priority to resolve. - * - `"suggestion"` means the rule is identifying something that could be done in a better way but no errors will occur if the code isn't changed. - * - `"layout"` means the rule cares primarily about whitespace, semicolons, commas, and parentheses, - * all the parts of the program that determine how the code looks rather than how it executes. - * These rules work on parts of the code that aren't specified in the AST. - */ - type?: "problem" | "suggestion" | "layout" | undefined; - /** - * Specifies whether the rule can return suggestions (defaults to `false` if omitted). - * Mandatory for rules that provide suggestions. - */ - hasSuggestions?: boolean | undefined; - } + type RuleMetaData = RulesMeta; interface RuleContext extends CoreRuleContext<{ @@ -1244,34 +1210,8 @@ export namespace Rule { | { node: ESTree.Node } | { loc: AST.SourceLocation | { line: number; column: number } }; - interface RuleFixer { - insertTextAfter( - nodeOrToken: ESTree.Node | AST.Token, - text: string, - ): Fix; - - insertTextAfterRange(range: AST.Range, text: string): Fix; - - insertTextBefore( - nodeOrToken: ESTree.Node | AST.Token, - text: string, - ): Fix; - - insertTextBeforeRange(range: AST.Range, text: string): Fix; - - remove(nodeOrToken: ESTree.Node | AST.Token): Fix; - - removeRange(range: AST.Range): Fix; - - replaceText(nodeOrToken: ESTree.Node | AST.Token, text: string): Fix; - - replaceTextRange(range: AST.Range, text: string): Fix; - } - - interface Fix { - range: AST.Range; - text: string; - } + type RuleFixer = RuleTextEditor; + type Fix = RuleTextEdit; } export type JSRuleDefinitionTypeOptions = CustomRuleTypeDefinitions; @@ -1347,21 +1287,21 @@ export namespace Linter { * * @see [Rule Severities](https://eslint.org/docs/latest/use/configure/rules#rule-severities) */ - type Severity = 0 | 1 | 2; + type Severity = SeverityLevel; /** * The human readable severity level for a rule. * * @see [Rule Severities](https://eslint.org/docs/latest/use/configure/rules#rule-severities) */ - type StringSeverity = "off" | "warn" | "error"; + type StringSeverity = SeverityName; /** * The numeric or human readable severity level for a rule. * * @see [Rule Severities](https://eslint.org/docs/latest/use/configure/rules#rule-severities) */ - type RuleSeverity = Severity | StringSeverity; + type RuleSeverity = CoreSeverity; /** * An array containing the rule severity level, followed by the rule options. @@ -1385,52 +1325,24 @@ export namespace Linter { /** * The rules config object is a key/value map of rule names and their severity and options. */ - interface RulesRecord { - [rule: string]: RuleEntry; - } + type RulesRecord = RulesConfig; /** * A configuration object that may have a `rules` block. */ - interface HasRules { + interface HasRules { rules?: Partial | undefined; } /** * The ECMAScript version of the code being linted. */ - type EcmaVersion = - | 3 - | 5 - | 6 - | 7 - | 8 - | 9 - | 10 - | 11 - | 12 - | 13 - | 14 - | 15 - | 16 - | 17 - | 2015 - | 2016 - | 2017 - | 2018 - | 2019 - | 2020 - | 2021 - | 2022 - | 2023 - | 2024 - | 2025 - | 2026 - | "latest"; + type EcmaVersion = CoreEcmaVersion; /** * The type of JavaScript source code. */ + // TODO: Refactor to JavaScriptSourceType when exported from @eslint/core. type SourceType = "script" | "module" | "commonjs"; /** @@ -1439,8 +1351,8 @@ export namespace Linter { * @see [ESLint Legacy Configuration](https://eslint.org/docs/latest/use/configure/) */ interface BaseConfig< - Rules extends RulesRecord = RulesRecord, - OverrideRules extends RulesRecord = Rules, + Rules extends RulesConfig = RulesConfig, + OverrideRules extends RulesConfig = Rules, > extends HasRules { $schema?: string | undefined; @@ -1493,7 +1405,7 @@ export namespace Linter { * @see [Working with Custom Parsers](https://eslint.org/docs/latest/extend/custom-parsers) * @see [Specifying Parser Options](https://eslint.org/docs/latest/use/configure/language-options-deprecated#specifying-parser-options) */ - parserOptions?: ParserOptions | undefined; + parserOptions?: JavaScriptParserOptionsConfig | undefined; /** * Which third-party plugins define additional rules, environments, configs, etc. for ESLint to use. @@ -1527,18 +1439,8 @@ export namespace Linter { /** * The overwrites that apply more differing configuration to specific files or directories. */ - interface ConfigOverride - extends BaseConfig { - /** - * The glob patterns for excluded files. - */ - excludedFiles?: string | string[] | undefined; - - /** - * The glob patterns for target files. - */ - files: string | string[]; - } + type ConfigOverride = + CoreConfigOverride; /** * ESLint legacy configuration. @@ -1546,78 +1448,21 @@ export namespace Linter { * @see [ESLint Legacy Configuration](https://eslint.org/docs/latest/use/configure/) */ // https://github.com/eslint/eslint/blob/v8.57.0/conf/config-schema.js - interface LegacyConfig< - Rules extends RulesRecord = RulesRecord, - OverrideRules extends RulesRecord = Rules, - > extends BaseConfig { - /** - * Tell ESLint to ignore specific files and directories. - * - * @see [Ignore Patterns](https://eslint.org/docs/latest/use/configure/ignore-deprecated#ignorepatterns-in-config-files) - */ - ignorePatterns?: string | string[] | undefined; - - /** - * @see [Using Configuration Files](https://eslint.org/docs/latest/use/configure/configuration-files-deprecated#using-configuration-files) - */ - root?: boolean | undefined; - } + type LegacyConfig< + Rules extends RulesConfig = RulesConfig, + OverrideRules extends RulesConfig = Rules, + > = LegacyConfigObject; /** * Parser options. * * @see [Specifying Parser Options](https://eslint.org/docs/latest/use/configure/language-options#specifying-parser-options) */ - interface ParserOptions { - /** - * Allow the use of reserved words as identifiers (if `ecmaVersion` is 3). - * - * @default false - */ - allowReserved?: boolean | undefined; - - /** - * Accepts any valid ECMAScript version number or `'latest'`: - * - * - A version: es3, es5, es6, es7, es8, es9, es10, es11, es12, es13, es14, ..., or - * - A year: es2015, es2016, es2017, es2018, es2019, es2020, es2021, es2022, es2023, ..., or - * - `'latest'` - * - * When it's a version or a year, the value must be a number - so do not include the `es` prefix. - * - * Specifies the version of ECMAScript syntax you want to use. This is used by the parser to determine how to perform scope analysis, and it affects the default - * - * @default 5 - */ - ecmaVersion?: EcmaVersion | undefined; - - /** - * The type of JavaScript source code. Possible values are "script" for - * traditional script files, "module" for ECMAScript modules (ESM), and - * "commonjs" for CommonJS files. - * - * @default 'script' - * - * @see https://eslint.org/docs/latest/use/configure/language-options-deprecated#specifying-parser-options - */ - sourceType?: SourceType | undefined; - - /** - * An object indicating which additional language features you'd like to use. - * - * @see https://eslint.org/docs/latest/use/configure/language-options-deprecated#specifying-parser-options - */ - ecmaFeatures?: - | { - globalReturn?: boolean | undefined; - impliedStrict?: boolean | undefined; - jsx?: boolean | undefined; - [key: string]: any; - } - | undefined; - [key: string]: any; - } + type ParserOptions = JavaScriptParserOptionsConfig; + /** + * Options used for linting code with `Linter#verify` and `Linter#verifyAndFix`. + */ interface LintOptions { filename?: string | undefined; preprocess?: ((code: string) => string[]) | undefined; @@ -1632,6 +1477,7 @@ export namespace Linter { reportUnusedDisableDirectives?: boolean | undefined; } + // TODO: Once exported from @eslint/core, remove this and use that instead interface LintSuggestion { /** A short description. */ desc: string; @@ -1643,46 +1489,7 @@ export namespace Linter { messageId?: string | undefined; } - interface LintMessage { - /** The 1-based column number. */ - column: number; - - /** The 1-based line number. */ - line: number; - - /** The 1-based column number of the end location. */ - endColumn?: number | undefined; - - /** The 1-based line number of the end location. */ - endLine?: number | undefined; - - /** The ID of the rule which makes this message. */ - ruleId: string | null; - - /** The reported message. */ - message: string; - - /** The ID of the message in the rule's meta. */ - messageId?: string | undefined; - - /** - * Type of node. - * @deprecated `nodeType` is deprecated and will be removed in the next major version. - */ - nodeType?: string | undefined; - - /** If `true` then this is a fatal error. */ - fatal?: true | undefined; - - /** The severity of this message. */ - severity: Exclude; - - /** Information for autofix. */ - fix?: Rule.Fix | undefined; - - /** Information for suggestions. */ - suggestions?: LintSuggestion[] | undefined; - } + type LintMessage = CoreLintMessage; interface LintSuppression { kind: string; @@ -1743,114 +1550,19 @@ export namespace Linter { visitorKeys?: SourceCode.VisitorKeys | undefined; } - interface ProcessorFile { - text: string; - filename: string; - } + type ProcessorFile = CoreProcessorFile; // https://eslint.org/docs/latest/extend/plugins#processors-in-plugins - interface Processor< - T extends string | ProcessorFile = string | ProcessorFile, - > extends ESLint.ObjectMetaProperties { - /** If `true` then it means the processor supports autofix. */ - supportsAutofix?: boolean | undefined; - - /** The function to extract code blocks. */ - preprocess?(text: string, filename: string): T[]; - - /** The function to merge messages. */ - postprocess?( - messages: LintMessage[][], - filename: string, - ): LintMessage[]; - } - - interface Config { - /** - * An string to identify the configuration object. Used in error messages and - * inspection tools. - */ - name?: string; - - /** - * Path to the directory where the configuration object should apply. - * `files` and `ignores` patterns in the configuration object are - * interpreted as relative to this path. - */ - basePath?: string; - - /** - * An array of glob patterns indicating the files that the configuration - * object should apply to. If not specified, the configuration object applies - * to all files - */ - files?: Array; - - /** - * An array of glob patterns indicating the files that the configuration - * object should not apply to. If not specified, the configuration object - * applies to all files matched by files - */ - ignores?: string[]; - - /** - * The name of the language used for linting. This is used to determine the - * parser and other language-specific settings. - * @since 9.7.0 - */ - language?: string; - - /** - * An object containing settings related to how JavaScript is configured for - * linting. - */ - languageOptions?: LanguageOptions; - - /** - * An object containing settings related to the linting process - */ - linterOptions?: LinterOptions; - - /** - * Either an object containing preprocess() and postprocess() methods or a - * string indicating the name of a processor inside of a plugin - * (i.e., "pluginName/processorName"). - */ - processor?: string | Processor; - - /** - * An object containing a name-value mapping of plugin names to plugin objects. - * When files is specified, these plugins are only available to the matching files. - */ - plugins?: Record; + type Processor = + CoreProcessor; - /** - * An object containing the configured rules. When files or ignores are specified, - * these rule configurations are only available to the matching files. - */ - rules?: Partial; - - /** - * An object containing name-value pairs of information that should be - * available to all rules. - */ - settings?: Record; - } + type Config = ConfigObject; /** @deprecated Use `Config` instead of `FlatConfig` */ - type FlatConfig = Config; - - type GlobalConf = - | boolean - | "off" - | "readable" - | "readonly" - | "writable" - | "writeable"; - - interface Globals { - [name: string]: GlobalConf; - } + type FlatConfig = Config; + + type GlobalConf = GlobalAccess; + type Globals = GlobalsConfig; interface LanguageOptions extends GenericLanguageOptions { /** @@ -1887,24 +1599,7 @@ export namespace Linter { parserOptions?: Linter.ParserOptions | undefined; } - interface LinterOptions { - /** - * A boolean value indicating if inline configuration is allowed. - */ - noInlineConfig?: boolean; - - /** - * A severity value indicating if and how unused disable directives should be - * tracked and reported. - */ - reportUnusedDisableDirectives?: Severity | StringSeverity | boolean; - - /** - * A severity value indicating if and how unused inline configs should be - * tracked and reported. - */ - reportUnusedInlineConfigs?: Severity | StringSeverity; - } + type LinterOptions = LinterOptionsConfig; /** * Performance statistics. @@ -1995,45 +1690,14 @@ export class ESLint { } export namespace ESLint { - type ConfigData = - Omit, "$schema">; - - interface Environment { - /** The definition of global variables. */ - globals?: Linter.Globals | undefined; - - /** The parser options that will be enabled under this environment. */ - parserOptions?: Linter.ParserOptions | undefined; - } - - interface ObjectMetaProperties { - /** @deprecated Use `meta.name` instead. */ - name?: string | undefined; - - /** @deprecated Use `meta.version` instead. */ - version?: string | undefined; - - meta?: { - name?: string | undefined; - version?: string | undefined; - }; - } - - interface Plugin extends ObjectMetaProperties { - meta?: ObjectMetaProperties["meta"] & { - namespace?: string | undefined; - }; - configs?: - | Record< - string, - Linter.LegacyConfig | Linter.Config | Linter.Config[] - > - | undefined; - environments?: Record | undefined; - languages?: Record | undefined; - processors?: Record | undefined; - rules?: Record | undefined; - } + type ConfigData = Omit< + Linter.LegacyConfig, + "$schema" + >; + + type Environment = EnvironmentConfig; + type ObjectMetaProperties = CoreObjectMetaProperties; + type Plugin = CorePlugin; type FixType = "directive" | "problem" | "suggestion" | "layout"; diff --git a/package.json b/package.json index 224042db2860..0b5064cafd9d 100644 --- a/package.json +++ b/package.json @@ -116,7 +116,6 @@ "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", diff --git a/tests/lib/types/types.test.ts b/tests/lib/types/types.test.ts index ce07f36e7341..d44d4ba201cf 100644 --- a/tests/lib/types/types.test.ts +++ b/tests/lib/types/types.test.ts @@ -2117,7 +2117,6 @@ interface CustomParserServices { (): Linter.Config => ({ languageOptions: { - // @ts-expect-error parser: "foo-parser", }, }); From 50c3dfd98065622765a51a8ddb1e70c44fc5a4cb Mon Sep 17 00:00:00 2001 From: Francesco Trotta Date: Fri, 17 Oct 2025 20:16:38 +0200 Subject: [PATCH 160/165] fix: improve type support for isolated dependencies in pnpm (#20201) * fix: improve type support for isolated dependencies in pnpm * update Knip config * update dependencies --- .github/workflows/ci.yml | 17 +++++++++++++++++ .gitignore | 1 + eslint.config.js | 5 +++++ knip.jsonc | 2 ++ lib/types/config-api.d.ts | 8 ++++++-- package.json | 7 ++++--- tests/pnpm/check.js | 9 +++++++++ tests/pnpm/package.json | 7 +++++++ tests/pnpm/test-eslint.config.js | 5 +++++ tests/pnpm/tsconfig.json | 9 +++++++++ 10 files changed, 65 insertions(+), 5 deletions(-) create mode 100644 tests/pnpm/check.js create mode 100644 tests/pnpm/package.json create mode 100644 tests/pnpm/test-eslint.config.js create mode 100644 tests/pnpm/tsconfig.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index db48f681fd6d..978af24cc03b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -149,3 +149,20 @@ jobs: - name: Test types for ${{ matrix.package.name }} working-directory: ${{ matrix.package.directory }} run: npm run test:types + + pnpm_test: + name: Test pnpm Type Support + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + + - uses: pnpm/action-setup@v4 + with: + version: latest + + - uses: actions/setup-node@v5 + with: + node-version: "lts/*" + + - name: Run pnpm test + run: npm run test:pnpm diff --git a/.gitignore b/.gitignore index e71935e48d5b..e25c0a524a94 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ /node_modules /docs/node_modules +/tests/pnpm/node_modules test.js coverage/ build/ diff --git a/eslint.config.js b/eslint.config.js index 89969dcd8b6d..3f42ab3a37bd 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -370,4 +370,9 @@ module.exports = defineConfig([ ], }, }, + { + name: "eslint/pnpm-test", + files: ["tests/pnpm/**/*.js"], + languageOptions: { sourceType: "module" }, + }, ]); diff --git a/knip.jsonc b/knip.jsonc index e065fb338f1a..e7bbda05481e 100644 --- a/knip.jsonc +++ b/knip.jsonc @@ -21,6 +21,8 @@ "tests/performance/jshint.js", // Many are required using dynamic paths such as `fs.readFileSync(path.join())`: "tests/fixtures/**", + // pnpm test package + "tests/pnpm/**", // Run from Makefile.js "tools/generate-formatter-examples.js", ], diff --git a/lib/types/config-api.d.ts b/lib/types/config-api.d.ts index bcb8e61c5f3d..e795add86e35 100644 --- a/lib/types/config-api.d.ts +++ b/lib/types/config-api.d.ts @@ -3,6 +3,10 @@ * @author Nicholas C. Zakas */ -import { defineConfig, globalIgnores } from "@eslint/config-helpers"; +import { + type Config, + defineConfig, + globalIgnores, +} from "@eslint/config-helpers"; -export { defineConfig, globalIgnores }; +export { type Config, defineConfig, globalIgnores }; diff --git a/package.json b/package.json index 0b5064cafd9d..6f7ef46ecd36 100644 --- a/package.json +++ b/package.json @@ -70,9 +70,10 @@ "test": "node Makefile.js test", "test:browser": "node Makefile.js cypress", "test:cli": "mocha", + "test:emfile": "node tools/check-emfile-handling.js", "test:fuzz": "node Makefile.js fuzz", "test:performance": "node Makefile.js perf", - "test:emfile": "node tools/check-emfile-handling.js", + "test:pnpm": "cd tests/pnpm && node check.js && pnpm install && pnpm exec tsc", "test:types": "tsc -p tests/lib/types/tsconfig.json" }, "gitHooks": { @@ -106,8 +107,8 @@ "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.0", - "@eslint/config-helpers": "^0.4.0", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.1", "@eslint/core": "^0.16.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.37.0", diff --git a/tests/pnpm/check.js b/tests/pnpm/check.js new file mode 100644 index 000000000000..4581c1af7038 --- /dev/null +++ b/tests/pnpm/check.js @@ -0,0 +1,9 @@ +import fs from "node:fs"; + +const nodeModulesURL = new URL("../../node_modules", import.meta.url); + +if (fs.existsSync(nodeModulesURL)) { + // eslint-disable-next-line no-console -- Used for interactive output. + console.error("Delete node_modules to run the pnpm type support test."); + process.exitCode = 1; +} diff --git a/tests/pnpm/package.json b/tests/pnpm/package.json new file mode 100644 index 000000000000..896a35441d0c --- /dev/null +++ b/tests/pnpm/package.json @@ -0,0 +1,7 @@ +{ + "type": "module", + "dependencies": { + "eslint": "file:../..", + "typescript": "^5.9.3" + } +} diff --git a/tests/pnpm/test-eslint.config.js b/tests/pnpm/test-eslint.config.js new file mode 100644 index 000000000000..03e9ea507c54 --- /dev/null +++ b/tests/pnpm/test-eslint.config.js @@ -0,0 +1,5 @@ +import { defineConfig, globalIgnores } from "eslint/config"; + +export const ignoresConfig = globalIgnores([]); + +export default defineConfig([ignoresConfig]); diff --git a/tests/pnpm/tsconfig.json b/tests/pnpm/tsconfig.json new file mode 100644 index 000000000000..731223ab72b7 --- /dev/null +++ b/tests/pnpm/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "checkJs": true, + "declaration": true, + "module": "nodenext", + "noEmit": true + }, + "files": ["test-eslint.config.js"] +} From 25d0e33270e08baed09dbee2cdd56a8e5cd9da0f Mon Sep 17 00:00:00 2001 From: Jenkins Date: Fri, 17 Oct 2025 18:24:44 +0000 Subject: [PATCH 161/165] chore: package.json update for @eslint/js release --- packages/js/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/js/package.json b/packages/js/package.json index d1fc9b8f45d2..65dbba16a3c0 100644 --- a/packages/js/package.json +++ b/packages/js/package.json @@ -1,6 +1,6 @@ { "name": "@eslint/js", - "version": "9.37.0", + "version": "9.38.0", "description": "ESLint JavaScript language implementation", "funding": "https://eslint.org/donate", "main": "./src/index.js", From d17c795bf1624e0604998482b98e6bb6bff39045 Mon Sep 17 00:00:00 2001 From: Milos Djermanovic Date: Fri, 17 Oct 2025 20:37:47 +0200 Subject: [PATCH 162/165] chore: upgrade @eslint/js@9.38.0 (#20221) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6f7ef46ecd36..6193954ecc89 100644 --- a/package.json +++ b/package.json @@ -111,7 +111,7 @@ "@eslint/config-helpers": "^0.4.1", "@eslint/core": "^0.16.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.37.0", + "@eslint/js": "9.38.0", "@eslint/plugin-kit": "^0.4.0", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", From f961736693e8b5658eb117eedbb9754be589c0ce Mon Sep 17 00:00:00 2001 From: Jenkins Date: Fri, 17 Oct 2025 18:48:39 +0000 Subject: [PATCH 163/165] Build: changelog update for 9.38.0 --- CHANGELOG.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b47f1e71eb81..6475c078a372 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,24 @@ +v9.38.0 - October 17, 2025 + +* [`d17c795`](https://github.com/eslint/eslint/commit/d17c795bf1624e0604998482b98e6bb6bff39045) chore: upgrade @eslint/js@9.38.0 (#20221) (Milos Djermanovic) +* [`25d0e33`](https://github.com/eslint/eslint/commit/25d0e33270e08baed09dbee2cdd56a8e5cd9da0f) chore: package.json update for @eslint/js release (Jenkins) +* [`50c3dfd`](https://github.com/eslint/eslint/commit/50c3dfd98065622765a51a8ddb1e70c44fc5a4cb) fix: improve type support for isolated dependencies in pnpm (#20201) (Francesco Trotta) +* [`c82b5ef`](https://github.com/eslint/eslint/commit/c82b5efa1fc91900e029efa23e688fad67fc17fa) refactor: Use types from @eslint/core (#20168) (Nicholas C. Zakas) +* [`ff31609`](https://github.com/eslint/eslint/commit/ff31609f195654d448954210ba4d31e921d463e8) ci: add Node.js 25 to `ci.yml` (#20220) (루밀LuMir) +* [`ce40f74`](https://github.com/eslint/eslint/commit/ce40f74efd45f66d9fbfc6f78ce622ee72008485) feat: update `complexity` rule to only highlight function header (#20048) (Atul Nair) +* [`e37e590`](https://github.com/eslint/eslint/commit/e37e590aae2a7fcca4d3a9adc1379ad466e5c5d1) feat: correct `no-loss-of-precision` false positives with `e` notation (#20187) (Francesco Trotta) +* [`004577e`](https://github.com/eslint/eslint/commit/004577eda2f2f4b2829e0364f8b41893cebfc859) ci: bump github/codeql-action from 3 to 4 (#20211) (dependabot[bot]) +* [`eac71fb`](https://github.com/eslint/eslint/commit/eac71fb77113de7bf199ff20c6ee44cefcb59848) test: remove use of `nodejsScope` option of eslint-scope from tests (#20206) (Milos Djermanovic) +* [`462675a`](https://github.com/eslint/eslint/commit/462675af8a811f9ca984efaedbdc5b46b13ced7a) docs: improve web accessibility by hiding non-semantic character (#20205) (루밀LuMir) +* [`c070e65`](https://github.com/eslint/eslint/commit/c070e65f6bb9e38d06a89ba2b3261781bec3d397) docs: correct formatting in `no-irregular-whitespace` rule documentation (#20203) (루밀LuMir) +* [`b39e71a`](https://github.com/eslint/eslint/commit/b39e71a2130ae1ea3fbc19b19f5b951eb625722a) docs: Update README (GitHub Actions Bot) +* [`4168a18`](https://github.com/eslint/eslint/commit/4168a18b7efd8facbbd71cd44a62942a9f656a30) chore: fix typo in legacy-eslint.js (#20202) (Sweta Tanwar) +* [`205dbd2`](https://github.com/eslint/eslint/commit/205dbd2d9272e761574c478e3b0181f7b89ed0f6) chore: fix typos (#20200) (ntnyq) +* [`a1f06a3`](https://github.com/eslint/eslint/commit/a1f06a350c4155c4dbf39bf932a38d71d70f1b65) fix: correct SourceCode typings (#20114) (Pixel998) +* [`dbb200e`](https://github.com/eslint/eslint/commit/dbb200e3604e63bba23a18d40089ca44604835ed) chore: use team member's username when name is not available in data (#20194) (Milos Djermanovic) +* [`cd39983`](https://github.com/eslint/eslint/commit/cd3998314876a4fad6463d9011bc73778ccc1fd9) docs: move `custom-formatters` type descriptions to `nodejs-api` (#20190) (Percy Ma) +* [`8962089`](https://github.com/eslint/eslint/commit/8962089edbd978b43513576387a134036b8e2d36) chore: mark deprecated rules as available until v11.0.0 (#20184) (Pixel998) + v9.37.0 - October 3, 2025 * [`afe8a13`](https://github.com/eslint/eslint/commit/afe8a1346958242031fea66fdfbb239e8bf408b7) chore: update `@eslint/js` dependency to version 9.37.0 (#20183) (Francesco Trotta) From 8fe511b4c0fb74df3290271b29c672c3fbf3be1f Mon Sep 17 00:00:00 2001 From: Jenkins Date: Fri, 17 Oct 2025 18:48:39 +0000 Subject: [PATCH 164/165] 9.38.0 --- docs/package.json | 2 +- docs/src/_data/versions.json | 2 +- docs/src/use/formatters/html-formatter-example.html | 2 +- package.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/package.json b/docs/package.json index 12acbfd0ffa4..65d975f4c0e6 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,7 +1,7 @@ { "name": "docs-eslint", "private": true, - "version": "9.37.0", + "version": "9.38.0", "description": "", "main": "index.js", "keywords": [], diff --git a/docs/src/_data/versions.json b/docs/src/_data/versions.json index c6e9e3edd89a..aec94917c9a5 100644 --- a/docs/src/_data/versions.json +++ b/docs/src/_data/versions.json @@ -6,7 +6,7 @@ "path": "/docs/head/" }, { - "version": "9.37.0", + "version": "9.38.0", "branch": "latest", "path": "/docs/latest/" }, diff --git a/docs/src/use/formatters/html-formatter-example.html b/docs/src/use/formatters/html-formatter-example.html index 6765e30dceaf..723d51a3b2db 100644 --- a/docs/src/use/formatters/html-formatter-example.html +++ b/docs/src/use/formatters/html-formatter-example.html @@ -118,7 +118,7 @@

ESLint Report

- 8 problems (4 errors, 4 warnings) - Generated on Fri Oct 03 2025 20:29:46 GMT+0000 (Coordinated Universal Time) + 8 problems (4 errors, 4 warnings) - Generated on Fri Oct 17 2025 18:48:40 GMT+0000 (Coordinated Universal Time)
+ +fnx's Avatar
+fnx +
+
Josh Goldberg ✨'s Avatar
Josh Goldberg ✨ From c7f861b3f8c1ac961b4cd4f22483798f3324c62b Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Fri, 12 Sep 2025 08:09:41 +0000 Subject: [PATCH 106/165] docs: Update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4a9edc767fb3..e68b714523db 100644 --- a/README.md +++ b/README.md @@ -333,7 +333,7 @@ to get your logo on our READMEs and [website](https://eslint.org/sponsors).

Automattic Airbnb

Gold Sponsors

Qlty Software trunk.io Shopify

Silver Sponsors

Vite Liftoff American Express StackBlitz

Bronze Sponsors

-

Syntax Cybozu Sentry Icons8 Discord GitBook Nx Mercedes-Benz Group HeroCoders LambdaTest

+

Syntax Cybozu Sentry Discord GitBook Nx Mercedes-Benz Group HeroCoders LambdaTest

Technology Sponsors

Technology sponsors allow us to use their products and services for free as part of a contribution to the open source ecosystem and our work.

Netlify Algolia 1Password

From 4821963bf765532069c49e9da9ecbe9485b073fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Sat, 13 Sep 2025 21:40:27 +0900 Subject: [PATCH 107/165] test: add missing loc information to error objects in rule tests (#20112) --- tests/lib/rules/no-console.js | 136 +++++++++++++++++++++++++++ tests/lib/rules/no-continue.js | 16 ++++ tests/lib/rules/no-debugger.js | 4 + tests/lib/rules/no-nested-ternary.js | 8 ++ tests/lib/rules/no-ternary.js | 12 +++ 5 files changed, 176 insertions(+) diff --git a/tests/lib/rules/no-console.js b/tests/lib/rules/no-console.js index 0979c3402a96..b5fe9e60ca7e 100644 --- a/tests/lib/rules/no-console.js +++ b/tests/lib/rules/no-console.js @@ -48,6 +48,10 @@ ruleTester.run("no-console", rule, { { messageId: "unexpected", suggestions: null, + line: 1, + column: 8, + endLine: 1, + endColumn: 20, }, ], }, @@ -57,6 +61,10 @@ ruleTester.run("no-console", rule, { { messageId: "unexpected", suggestions: null, + line: 1, + column: 5, + endLine: 1, + endColumn: 16, }, ], }, @@ -72,6 +80,10 @@ ruleTester.run("no-console", rule, { output: "", }, ], + line: 1, + column: 1, + endLine: 1, + endColumn: 12, }, ], }, @@ -87,6 +99,10 @@ ruleTester.run("no-console", rule, { output: "", }, ], + line: 1, + column: 1, + endLine: 1, + endColumn: 14, }, ], }, @@ -102,6 +118,10 @@ ruleTester.run("no-console", rule, { output: "", }, ], + line: 1, + column: 1, + endLine: 1, + endColumn: 13, }, ], }, @@ -117,6 +137,10 @@ ruleTester.run("no-console", rule, { output: "", }, ], + line: 1, + column: 1, + endLine: 1, + endColumn: 13, }, ], }, @@ -132,6 +156,10 @@ ruleTester.run("no-console", rule, { output: "switch (a) { case 1: }", }, ], + line: 1, + column: 22, + endLine: 1, + endColumn: 33, }, ], }, @@ -147,6 +175,10 @@ ruleTester.run("no-console", rule, { output: "if (a) { }", }, ], + line: 1, + column: 10, + endLine: 1, + endColumn: 22, }, ], }, @@ -162,6 +194,10 @@ ruleTester.run("no-console", rule, { output: "a();\n\nb();", }, ], + line: 2, + column: 1, + endLine: 2, + endColumn: 12, }, ], }, @@ -178,6 +214,10 @@ ruleTester.run("no-console", rule, { output: "class A { static { } }", }, ], + line: 1, + column: 20, + endLine: 1, + endColumn: 32, }, ], }, @@ -188,6 +228,10 @@ ruleTester.run("no-console", rule, { { messageId: "unexpected", suggestions: null, + line: 2, + column: 1, + endLine: 2, + endColumn: 12, }, ], }, @@ -198,6 +242,10 @@ ruleTester.run("no-console", rule, { { messageId: "unexpected", suggestions: null, + line: 2, + column: 1, + endLine: 2, + endColumn: 12, }, ], }, @@ -214,6 +262,10 @@ ruleTester.run("no-console", rule, { output: "a();\n\n[1, 2, 3].forEach(a => doSomething(a));", }, ], + line: 2, + column: 1, + endLine: 2, + endColumn: 12, }, ], }, @@ -227,6 +279,10 @@ ruleTester.run("no-console", rule, { messageId: "limited", data: { allowed: "warn" }, suggestions: null, + line: 1, + column: 8, + endLine: 1, + endColumn: 20, }, ], }, @@ -238,6 +294,10 @@ ruleTester.run("no-console", rule, { messageId: "limited", data: { allowed: "log" }, suggestions: null, + line: 1, + column: 5, + endLine: 1, + endColumn: 17, }, ], }, @@ -255,6 +315,10 @@ ruleTester.run("no-console", rule, { output: "", }, ], + line: 1, + column: 1, + endLine: 1, + endColumn: 12, }, ], }, @@ -272,6 +336,10 @@ ruleTester.run("no-console", rule, { output: "", }, ], + line: 1, + column: 1, + endLine: 1, + endColumn: 14, }, ], }, @@ -289,6 +357,10 @@ ruleTester.run("no-console", rule, { output: "", }, ], + line: 1, + column: 1, + endLine: 1, + endColumn: 13, }, ], }, @@ -306,6 +378,10 @@ ruleTester.run("no-console", rule, { output: "", }, ], + line: 1, + column: 1, + endLine: 1, + endColumn: 13, }, ], }, @@ -323,6 +399,10 @@ ruleTester.run("no-console", rule, { output: "switch (a) { case 1: }", }, ], + line: 1, + column: 22, + endLine: 1, + endColumn: 33, }, ], }, @@ -340,6 +420,10 @@ ruleTester.run("no-console", rule, { output: "if (a) { }", }, ], + line: 1, + column: 10, + endLine: 1, + endColumn: 22, }, ], }, @@ -358,6 +442,10 @@ ruleTester.run("no-console", rule, { output: "class A { static { } }", }, ], + line: 1, + column: 20, + endLine: 1, + endColumn: 33, }, ], }, @@ -371,6 +459,10 @@ ruleTester.run("no-console", rule, { messageId: "limited", data: { allowed: "warn, error" }, suggestions: null, + line: 1, + column: 8, + endLine: 1, + endColumn: 19, }, ], }, @@ -382,6 +474,10 @@ ruleTester.run("no-console", rule, { messageId: "limited", data: { allowed: "warn, error" }, suggestions: null, + line: 1, + column: 5, + endLine: 1, + endColumn: 17, }, ], }, @@ -399,6 +495,10 @@ ruleTester.run("no-console", rule, { output: "", }, ], + line: 1, + column: 1, + endLine: 1, + endColumn: 12, }, ], }, @@ -416,6 +516,10 @@ ruleTester.run("no-console", rule, { output: "", }, ], + line: 1, + column: 1, + endLine: 1, + endColumn: 14, }, ], }, @@ -433,6 +537,10 @@ ruleTester.run("no-console", rule, { output: "", }, ], + line: 1, + column: 1, + endLine: 1, + endColumn: 13, }, ], }, @@ -450,6 +558,10 @@ ruleTester.run("no-console", rule, { output: "", }, ], + line: 1, + column: 1, + endLine: 1, + endColumn: 13, }, ], }, @@ -467,6 +579,10 @@ ruleTester.run("no-console", rule, { output: "switch (a) { case 1: }", }, ], + line: 1, + column: 22, + endLine: 1, + endColumn: 35, }, ], }, @@ -484,6 +600,10 @@ ruleTester.run("no-console", rule, { output: "if (a) { }", }, ], + line: 1, + column: 10, + endLine: 1, + endColumn: 21, }, ], }, @@ -502,6 +622,10 @@ ruleTester.run("no-console", rule, { output: "class A { static { } }", }, ], + line: 1, + column: 20, + endLine: 1, + endColumn: 32, }, ], }, @@ -516,6 +640,10 @@ ruleTester.run("no-console", rule, { output: "", }, ], + line: 1, + column: 1, + endLine: 1, + endColumn: 13, }, ], }, @@ -530,6 +658,10 @@ ruleTester.run("no-console", rule, { output: "", }, ], + line: 1, + column: 1, + endLine: 1, + endColumn: 11, }, ], }, @@ -552,6 +684,10 @@ ruleTester.run("no-console", rule, { output: "", }, ], + line: 1, + column: 1, + endLine: 1, + endColumn: 12, }, ], }, diff --git a/tests/lib/rules/no-continue.js b/tests/lib/rules/no-continue.js index a091d204b5f1..b7e62301ece4 100644 --- a/tests/lib/rules/no-continue.js +++ b/tests/lib/rules/no-continue.js @@ -30,6 +30,10 @@ ruleTester.run("no-continue", rule, { errors: [ { messageId: "unexpected", + line: 1, + column: 55, + endLine: 1, + endColumn: 64, }, ], }, @@ -38,6 +42,10 @@ ruleTester.run("no-continue", rule, { errors: [ { messageId: "unexpected", + line: 1, + column: 64, + endLine: 1, + endColumn: 81, }, ], }, @@ -46,6 +54,10 @@ ruleTester.run("no-continue", rule, { errors: [ { messageId: "unexpected", + line: 1, + column: 55, + endLine: 1, + endColumn: 64, }, ], }, @@ -54,6 +66,10 @@ ruleTester.run("no-continue", rule, { errors: [ { messageId: "unexpected", + line: 1, + column: 64, + endLine: 1, + endColumn: 81, }, ], }, diff --git a/tests/lib/rules/no-debugger.js b/tests/lib/rules/no-debugger.js index 51e7d94ed093..f8a85c87788b 100644 --- a/tests/lib/rules/no-debugger.js +++ b/tests/lib/rules/no-debugger.js @@ -27,6 +27,10 @@ ruleTester.run("no-debugger", rule, { errors: [ { messageId: "unexpected", + line: 1, + column: 10, + endLine: 1, + endColumn: 18, }, ], }, diff --git a/tests/lib/rules/no-nested-ternary.js b/tests/lib/rules/no-nested-ternary.js index 6ef9fe95f55b..9c0408ce92c6 100644 --- a/tests/lib/rules/no-nested-ternary.js +++ b/tests/lib/rules/no-nested-ternary.js @@ -26,6 +26,10 @@ ruleTester.run("no-nested-ternary", rule, { errors: [ { messageId: "noNestedTernary", + line: 1, + column: 1, + endLine: 1, + endColumn: 40, }, ], }, @@ -34,6 +38,10 @@ ruleTester.run("no-nested-ternary", rule, { errors: [ { messageId: "noNestedTernary", + line: 1, + column: 1, + endLine: 1, + endColumn: 40, }, ], }, diff --git a/tests/lib/rules/no-ternary.js b/tests/lib/rules/no-ternary.js index 83ba7ccc6a46..2cea604b74dd 100644 --- a/tests/lib/rules/no-ternary.js +++ b/tests/lib/rules/no-ternary.js @@ -26,6 +26,10 @@ ruleTester.run("no-ternary", rule, { errors: [ { messageId: "noTernaryOperator", + line: 1, + column: 11, + endLine: 1, + endColumn: 31, }, ], }, @@ -34,6 +38,10 @@ ruleTester.run("no-ternary", rule, { errors: [ { messageId: "noTernaryOperator", + line: 1, + column: 1, + endLine: 1, + endColumn: 25, }, ], }, @@ -42,6 +50,10 @@ ruleTester.run("no-ternary", rule, { errors: [ { messageId: "noTernaryOperator", + line: 1, + column: 28, + endLine: 1, + endColumn: 43, }, ], }, From 1ace67d9f7903adc3d3f09868aa05b673e7d3f3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Sat, 13 Sep 2025 22:15:24 +0900 Subject: [PATCH 108/165] chore: update example to use `defineConfig` (#20111) * chore: update example to use `defineConfig` * wip --- docs/_examples/custom-rule-tutorial-code/eslint.config.js | 6 ++++-- docs/_examples/custom-rule-tutorial-code/package.json | 2 +- docs/_examples/integration-tutorial-code/package.json | 2 +- docs/src/extend/custom-rule-tutorial.md | 6 ++++-- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/docs/_examples/custom-rule-tutorial-code/eslint.config.js b/docs/_examples/custom-rule-tutorial-code/eslint.config.js index a55e4f26fd71..a23f26898ae4 100644 --- a/docs/_examples/custom-rule-tutorial-code/eslint.config.js +++ b/docs/_examples/custom-rule-tutorial-code/eslint.config.js @@ -4,10 +4,12 @@ */ "use strict"; +// Import the `defineConfig` helper function +const { defineConfig } = require("eslint/config"); // Import the ESLint plugin const eslintPluginExample = require("./eslint-plugin-example"); -module.exports = [ +module.exports = defineConfig([ { files: ["**/*.js"], languageOptions: { @@ -20,4 +22,4 @@ module.exports = [ "example/enforce-foo-bar": "error", }, }, -]; +]); diff --git a/docs/_examples/custom-rule-tutorial-code/package.json b/docs/_examples/custom-rule-tutorial-code/package.json index 12c159677a23..9ba59ce1b446 100644 --- a/docs/_examples/custom-rule-tutorial-code/package.json +++ b/docs/_examples/custom-rule-tutorial-code/package.json @@ -18,6 +18,6 @@ "author": "", "license": "ISC", "devDependencies": { - "eslint": "^9.1.1" + "eslint": "^9.35.0" } } diff --git a/docs/_examples/integration-tutorial-code/package.json b/docs/_examples/integration-tutorial-code/package.json index c31fecbaf2fe..9c4a4f02503a 100644 --- a/docs/_examples/integration-tutorial-code/package.json +++ b/docs/_examples/integration-tutorial-code/package.json @@ -11,6 +11,6 @@ "author": "", "license": "ISC", "dependencies": { - "eslint": "^9.1.1" + "eslint": "^9.35.0" } } diff --git a/docs/src/extend/custom-rule-tutorial.md b/docs/src/extend/custom-rule-tutorial.md index 0556cc3c0ef8..a855dd67ebf8 100644 --- a/docs/src/extend/custom-rule-tutorial.md +++ b/docs/src/extend/custom-rule-tutorial.md @@ -312,10 +312,12 @@ Then, add the following code to `eslint.config.js`: // eslint.config.js "use strict"; +// Import the `defineConfig` helper function +const { defineConfig } = require("eslint/config"); // Import the ESLint plugin locally const eslintPluginExample = require("./eslint-plugin-example"); -module.exports = [ +module.exports = defineConfig([ { files: ["**/*.js"], languageOptions: { @@ -328,7 +330,7 @@ module.exports = [ "example/enforce-foo-bar": "error", }, }, -]; +]); ``` Before you can test the rule, you must create a file to test the rule on. From 7d61b7fadc9c5c6f2b131e37e8a3cffa5aae8ee6 Mon Sep 17 00:00:00 2001 From: Pixel998 Date: Sun, 14 Sep 2025 23:14:43 +0300 Subject: [PATCH 109/165] fix: add missing scope types to `Scope.type` (#20110) * fix: add missing scope types to `Scope.type` * update custom-rules.md * add line break between footnotes --- docs/src/extend/custom-rules.md | 36 +++++++++++++++++---------------- lib/types/index.d.ts | 2 ++ 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/docs/src/extend/custom-rules.md b/docs/src/extend/custom-rules.md index 30b0bbcf0038..340328702c58 100644 --- a/docs/src/extend/custom-rules.md +++ b/docs/src/extend/custom-rules.md @@ -872,26 +872,28 @@ You can view scope information for any JavaScript code using [Code Explorer](htt The following table contains a list of AST node types and the scope type that they correspond to. For more information about the scope types, refer to the [`Scope` object documentation](./scope-manager-interface#scope-interface). -| AST Node Type | Scope Type | -| :------------------------ | :--------- | -| `Program` | `global` | -| `FunctionDeclaration` | `function` | -| `FunctionExpression` | `function` | -| `ArrowFunctionExpression` | `function` | -| `ClassDeclaration` | `class` | -| `ClassExpression` | `class` | -| `BlockStatement` ※1 | `block` | -| `SwitchStatement` ※1 | `switch` | -| `ForStatement` ※2 | `for` | -| `ForInStatement` ※2 | `for` | -| `ForOfStatement` ※2 | `for` | -| `WithStatement` | `with` | -| `CatchClause` | `catch` | -| others | ※3 | +| AST Node Type | Scope Type | +| :------------------------ | :------------------- | +| `Program` | `global` | +| `FunctionDeclaration` | `function` | +| `FunctionExpression` | `function` | +| `ArrowFunctionExpression` | `function` | +| `ClassDeclaration` | `class` | +| `ClassExpression` | `class` | +| `StaticBlock` | `class-static-block` | +| `BlockStatement` ※1 | `block` | +| `SwitchStatement` ※1 | `switch` | +| `ForStatement` ※2 | `for` | +| `ForInStatement` ※2 | `for` | +| `ForOfStatement` ※2 | `for` | +| `WithStatement` | `with` | +| `CatchClause` | `catch` | +| others | ※3 ※4 | **※1** Only if the configured parser provided the block-scope feature. The default parser provides the block-scope feature if `parserOptions.ecmaVersion` is not less than `6`.
**※2** Only if the `for` statement defines the iteration variable as a block-scoped variable (E.g., `for (let i = 0;;) {}`).
-**※3** The scope of the closest ancestor node which has own scope. If the closest ancestor node has multiple scopes then it chooses the innermost scope (E.g., the `Program` node has a `global` scope and a `module` scope if `Program#sourceType` is `"module"`. The innermost scope is the `module` scope.). +**※3** The scope of the closest ancestor node which has own scope. If the closest ancestor node has multiple scopes then it chooses the innermost scope (E.g., the `Program` node has a `global` scope and a `module` scope if `Program#sourceType` is `"module"`. The innermost scope is the `module` scope.).
+**※4** Each `PropertyDefinition#value` node (it can be any expression node type), has a `class-field-initializer` scope. For example, in `class C { field = 1 }`, the `Literal` node that represents `1` has a `class-field-initializer` scope. If the node has other scopes, the `class-field-initializer` scope will be the outermost one. For example, in `class C { field = () => {} }`, the `ArrowFunctionExpression` node has two scopes: `class-field-initializer` and `function`. #### Scope Variables diff --git a/lib/types/index.d.ts b/lib/types/index.d.ts index c799f22b42a4..6dc3e6808104 100644 --- a/lib/types/index.d.ts +++ b/lib/types/index.d.ts @@ -92,6 +92,8 @@ export namespace Scope { | "block" | "catch" | "class" + | "class-field-initializer" + | "class-static-block" | "for" | "function" | "function-expression-name" From 31d93926990fba536846ec727d7a2625fc844649 Mon Sep 17 00:00:00 2001 From: Pixel998 Date: Sun, 14 Sep 2025 23:24:23 +0300 Subject: [PATCH 110/165] docs: fix typos (#20118) --- docs/src/extend/stats.md | 6 +++--- docs/src/rules/no-use-before-define.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/src/extend/stats.md b/docs/src/extend/stats.md index e39d944ada89..b293ae16dfa2 100644 --- a/docs/src/extend/stats.md +++ b/docs/src/extend/stats.md @@ -34,9 +34,9 @@ The `Stats` value is the timing information of each lint run. The `stats` proper An object containing the times spent on (parsing, fixing, linting) - `ParseTime` (`{ total: number }`)
The total time that is spent when parsing a file. - - `RuleTime` (`{ total: number }`) + - `RuleTime` (`{ total: number }`)
The total time that is spent on a rule. - - `FixTime` (`{ total: number }`) + - `FixTime` (`{ total: number }`)
The total time that is spent on applying fixes to the code. ### CLI usage @@ -117,7 +117,7 @@ no-regex-spaces | 0.204 | 32.1% ### API Usage -You can achieve the same thing using the Node.js API by passing`stats: true` as an option to the `ESLint` constructor. For example: +You can achieve the same thing using the Node.js API by passing `stats: true` as an option to the `ESLint` constructor. For example: ```js const { ESLint } = require("eslint"); diff --git a/docs/src/rules/no-use-before-define.md b/docs/src/rules/no-use-before-define.md index dbd8034bcfc2..31578b5fb6fd 100644 --- a/docs/src/rules/no-use-before-define.md +++ b/docs/src/rules/no-use-before-define.md @@ -161,7 +161,7 @@ This rule additionally supports TypeScript type syntax. The following options en * `enums` (`boolean`) - If it is `true`, the rule warns every reference to an `enum` before it is defined. - Defult is `true`. + Default is `true`. * `typedefs` (`boolean`) - If it is `true`, this rule warns every reference to a type `alias` or `interface` before its declaration. If `false`, the rule allows using type `alias`es and `interface`s before they are defined. Default is `true`. From fee751dc8aeab54547af4538332ea5c069ef28b6 Mon Sep 17 00:00:00 2001 From: Pixel998 Date: Mon, 15 Sep 2025 11:23:03 +0300 Subject: [PATCH 111/165] =?UTF-8?q?refactor:=20use=C2=A0`defaultOptions`?= =?UTF-8?q?=C2=A0in=C2=A0rules=20(#20121)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/rules/no-misleading-character-class.js | 9 +++++++-- lib/rules/require-unicode-regexp.js | 4 +++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/rules/no-misleading-character-class.js b/lib/rules/no-misleading-character-class.js index 2e1318aa7abb..c7223335fc41 100644 --- a/lib/rules/no-misleading-character-class.js +++ b/lib/rules/no-misleading-character-class.js @@ -278,6 +278,12 @@ module.exports = { meta: { type: "problem", + defaultOptions: [ + { + allowEscape: false, + }, + ], + docs: { description: "Disallow characters which are made with multiple code points in character class syntax", @@ -293,7 +299,6 @@ module.exports = { properties: { allowEscape: { type: "boolean", - default: false, }, }, additionalProperties: false, @@ -313,7 +318,7 @@ module.exports = { }, }, create(context) { - const allowEscape = context.options[0]?.allowEscape; + const [{ allowEscape }] = context.options; const sourceCode = context.sourceCode; const parser = new RegExpParser(); const checkedPatternNodes = new Set(); diff --git a/lib/rules/require-unicode-regexp.js b/lib/rules/require-unicode-regexp.js index 8d5ca102aed9..fd039afe1477 100644 --- a/lib/rules/require-unicode-regexp.js +++ b/lib/rules/require-unicode-regexp.js @@ -47,6 +47,8 @@ module.exports = { meta: { type: "suggestion", + defaultOptions: [{}], + docs: { description: "Enforce the use of `u` or `v` flag on regular expressions", @@ -79,7 +81,7 @@ module.exports = { create(context) { const sourceCode = context.sourceCode; - const { requireFlag } = context.options[0] ?? {}; + const [{ requireFlag }] = context.options; return { "Literal[regex]"(node) { From c00bb37d62c1bcc0a37f094371be9c40064009f1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Sep 2025 11:21:52 +0200 Subject: [PATCH 112/165] ci: bump actions/labeler from 5 to 6 (#20090) Bumps [actions/labeler](https://github.com/actions/labeler) from 5 to 6. - [Release notes](https://github.com/actions/labeler/releases) - [Commits](https://github.com/actions/labeler/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/labeler dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/pr-labeler.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr-labeler.yml b/.github/workflows/pr-labeler.yml index cdcd28f96746..cdc9b89d28d8 100644 --- a/.github/workflows/pr-labeler.yml +++ b/.github/workflows/pr-labeler.yml @@ -7,6 +7,6 @@ jobs: pull-requests: write runs-on: ubuntu-latest steps: - - uses: actions/labeler@v5 + - uses: actions/labeler@v6 with: sync-labels: true From 1c0d85049e3f30a8809340c1abc881c63b7812ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Tue, 16 Sep 2025 00:08:49 +0900 Subject: [PATCH 113/165] fix: update `eslint-all.js` to use `Object.freeze` for `rules` object (#20116) fix: update `eslint-all.js` to use `Object.freeze` for rules object --- packages/js/src/configs/eslint-all.js | 4 ++-- tools/update-eslint-all.js | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/js/src/configs/eslint-all.js b/packages/js/src/configs/eslint-all.js index 344c2d11f43f..248950d985e2 100644 --- a/packages/js/src/configs/eslint-all.js +++ b/packages/js/src/configs/eslint-all.js @@ -13,7 +13,7 @@ */ module.exports = Object.freeze({ - "rules": { + rules: Object.freeze({ "accessor-pairs": "error", "array-callback-return": "error", "arrow-body-style": "error", @@ -213,5 +213,5 @@ module.exports = Object.freeze({ "valid-typeof": "error", "vars-on-top": "error", "yoda": "error" - } + }) }); diff --git a/tools/update-eslint-all.js b/tools/update-eslint-all.js index 5fae908987f6..855c018029b4 100644 --- a/tools/update-eslint-all.js +++ b/tools/update-eslint-all.js @@ -42,7 +42,9 @@ const code = `/* * cause an error. */ -module.exports = Object.freeze(${JSON.stringify({ rules: allRules }, null, 4)}); +module.exports = Object.freeze({ + rules: Object.freeze(${JSON.stringify(allRules, null, 4).replaceAll("\n", "\n ")}) +}); `; fs.writeFileSync("./packages/js/src/configs/eslint-all.js", code, "utf8"); From bac82a2a9c80a3f69087852758d7737aea371f09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=94=AF=E7=84=B6?= Date: Mon, 15 Sep 2025 23:13:24 +0800 Subject: [PATCH 114/165] ci: simplify renovate configuration (#19907) ci: centralize renovate config --- .github/renovate.json5 | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index ba90fa33a076..952474f6538e 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -1,29 +1,8 @@ { $schema: "https://docs.renovatebot.com/renovate-schema.json", - extends: [ - "config:recommended", - ":approveMajorUpdates", - ":semanticCommitScopeDisabled", - ], - ignorePresets: [":semanticPrefixFixDepsChoreOthers"], - labels: ["dependencies"], + extends: ["github>eslint/workflows//.github/renovate/base.json5"], ignoreDeps: ["jiti-v2.0", "jiti-v2.1"], - - // Wait well over npm's three day window for any new package as a precaution against malicious publishes - // https://docs.npmjs.com/policies/unpublish/#packages-published-less-than-72-hours-ago - minimumReleaseAge: "7 days", - packageRules: [ - { - description: "Use the deps:actions label for github-action manager updates (this means Renovate's github-action manager).", - addLabels: ["deps:actions"], - matchManagers: ["github-actions"], - }, - { - description: "Use the deps:npm label for npm manager packages (this means Renovate's npm manager).", - addLabels: ["deps:npm"], - matchManagers: ["npm"], - }, { description: "Group Babel packages into a single PR.", groupName: "babel", From 75b74d865d3b8e7fa3bcf5ad29f4bf6d18d1310e Mon Sep 17 00:00:00 2001 From: ntnyq Date: Tue, 16 Sep 2025 18:07:28 +0800 Subject: [PATCH 115/165] fix: add missing rule option types (#20127) --- lib/types/rules.d.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/types/rules.d.ts b/lib/types/rules.d.ts index e48fca22aa38..ba3ddc466eb2 100644 --- a/lib/types/rules.d.ts +++ b/lib/types/rules.d.ts @@ -1022,6 +1022,7 @@ export interface ESLintRules extends Linter.RulesRecord { */ properties: "always" | "never"; exceptions: string[]; + exceptionPatterns: string[]; }>, ] >; @@ -1040,6 +1041,10 @@ export interface ESLintRules extends Linter.RulesRecord { * @default false */ properties: boolean; + /** + * @default false + */ + classFields: boolean; /** * @default false */ From 47afcf668df65eac68d7b04145d037037010a076 Mon Sep 17 00:00:00 2001 From: Francesco Trotta Date: Tue, 16 Sep 2025 14:47:33 +0200 Subject: [PATCH 116/165] feat: correct `preserve-caught-error` edge cases (#20109) * fix: update `preserve-caught-error` edge cases * allow multiple `cause` definitions when the last one is expected --- lib/rules/preserve-caught-error.js | 96 +++++++++++++++--------- tests/lib/rules/preserve-caught-error.js | 59 +++++++++++++++ 2 files changed, 119 insertions(+), 36 deletions(-) diff --git a/lib/rules/preserve-caught-error.js b/lib/rules/preserve-caught-error.js index 80a57ab0861e..c6c67e653119 100644 --- a/lib/rules/preserve-caught-error.js +++ b/lib/rules/preserve-caught-error.js @@ -10,9 +10,15 @@ const astUtils = require("./utils/ast-utils"); -//---------------------------------------------------------------------- +//------------------------------------------------------------------------------ +// Types +//------------------------------------------------------------------------------ + +/** @typedef {import("estree").Node} ASTNode */ + +//------------------------------------------------------------------------------ // Helpers -//---------------------------------------------------------------------- +//------------------------------------------------------------------------------ /* * This is an indicator of an error cause node, that is too complicated to be detected and fixed. @@ -32,9 +38,11 @@ const BUILT_IN_ERROR_TYPES = new Set([ ]); /** - * Finds and returns the ASTNode that is used as the `cause` of the Error being thrown + * Finds and returns information about the `cause` property of an error being thrown. * @param {ASTNode} throwStatement `ThrowStatement` to be checked. - * @returns {ASTNode | UNKNOWN_CAUSE | null} The `cause` of `Error` being thrown, `null` if not set. + * @returns {{ value: ASTNode; multipleDefinitions: boolean; } | UNKNOWN_CAUSE | null} + * Information about the `cause` of the error being thrown, such as the value node and + * whether there are multiple definitions of `cause`. `null` if there is no `cause`. */ function getErrorCause(throwStatement) { const throwExpression = throwStatement.argument; @@ -73,7 +81,7 @@ function getErrorCause(throwStatement) { return UNKNOWN_CAUSE; } - const causeProperty = errorOptions.properties.find( + const causeProperties = errorOptions.properties.filter( prop => prop.type === "Property" && prop.key.type === "Identifier" && @@ -81,7 +89,13 @@ function getErrorCause(throwStatement) { !prop.computed, // It is hard to accurately identify the value of computed props ); - return causeProperty ? causeProperty.value : null; + const causeProperty = causeProperties.at(-1); + return causeProperty + ? { + value: causeProperty.value, + multipleDefinitions: causeProperties.length > 1, + } + : null; } // Error options exist, but too complicated to be analyzed/fixed @@ -290,14 +304,14 @@ module.exports = { } // Check if there is a cause attached to the new error - const thrownErrorCause = getErrorCause(throwStatement); + const errorCauseInfo = getErrorCause(throwStatement); - if (thrownErrorCause === UNKNOWN_CAUSE) { + if (errorCauseInfo === UNKNOWN_CAUSE) { // Error options exist, but too complicated to be analyzed/fixed return; } - if (thrownErrorCause === null) { + if (errorCauseInfo === null) { // If there is no `cause` attached to the error being thrown. context.report({ messageId: "missingCause", @@ -439,42 +453,52 @@ module.exports = { return; } - // If there is an attached cause, verify that is matches the caught error + const { value: thrownErrorCause } = errorCauseInfo; + + // If there is an attached cause, verify that it matches the caught error if ( !( thrownErrorCause.type === "Identifier" && thrownErrorCause.name === caughtError.name ) ) { - context.report({ - messageId: "incorrectCause", - node: thrownErrorCause, - suggest: [ - { - messageId: "includeCause", - fix(fixer) { - /* - * In case `cause` is attached using object property shorthand or as a method. - * e.g. throw Error("fail", { cause }); - * throw Error("fail", { cause() { // do something } }); - */ - if ( - thrownErrorCause.parent.method || - thrownErrorCause.parent.shorthand - ) { + const suggest = errorCauseInfo.multipleDefinitions + ? null // If there are multiple `cause` definitions, a suggestion could be confusing. + : [ + { + messageId: "includeCause", + fix(fixer) { + /* + * In case `cause` is attached using object property shorthand or as a method or accessor. + * e.g. throw Error("fail", { cause }); + * throw Error("fail", { cause() { doSomething(); } }); + * throw Error("fail", { get cause() { return error; } }); + */ + if ( + thrownErrorCause.parent + .method || + thrownErrorCause.parent + .shorthand || + thrownErrorCause.parent.kind !== + "init" + ) { + return fixer.replaceText( + thrownErrorCause.parent, + `cause: ${caughtError.name}`, + ); + } + return fixer.replaceText( - thrownErrorCause.parent, - `cause: ${caughtError.name}`, + thrownErrorCause, + caughtError.name, ); - } - - return fixer.replaceText( - thrownErrorCause, - caughtError.name, - ); + }, }, - }, - ], + ]; + context.report({ + messageId: "incorrectCause", + node: thrownErrorCause, + suggest, }); return; } diff --git a/tests/lib/rules/preserve-caught-error.js b/tests/lib/rules/preserve-caught-error.js index d454f7c89ce4..70f7c4441143 100644 --- a/tests/lib/rules/preserve-caught-error.js +++ b/tests/lib/rules/preserve-caught-error.js @@ -86,6 +86,12 @@ ruleTester.run("preserve-caught-error", rule, { }`, options: [{ requireCatchParameter: false }], }, + /* Multiple cause properties are present and the last one is the expected caught error value. */ + `try { + doSomething(); + } catch (error) { + throw new Error("Something failed", { cause: anotherError, cause: error }); + }`, ], invalid: [ /* 1. Throws a new Error without cause, even though an error was caught */ @@ -722,5 +728,58 @@ ruleTester.run("preserve-caught-error", rule, { }, ], }, + /* 25. When multiple `cause` properties are present. */ + { + code: `try {} catch (error) { + throw new Error("Something failed", { cause: error, cause: anotherError }); + }`, + errors: [{ messageId: "incorrectCause" }], + }, + /* 26. Getters and setters as `cause`. */ + { + code: `try {} catch (error) { + throw new Error("Something failed", { get cause() { } }); + }`, + errors: [ + { + messageId: "incorrectCause", + suggestions: [ + { + messageId: "includeCause", + output: `try {} catch (error) { + throw new Error("Something failed", { cause: error }); + }`, + }, + ], + }, + ], + }, + { + code: `try {} catch (error) { + throw new Error("Something failed", { set cause(value) { } }); + }`, + errors: [ + { + messageId: "incorrectCause", + suggestions: [ + { + messageId: "includeCause", + output: `try {} catch (error) { + throw new Error("Something failed", { cause: error }); + }`, + }, + ], + }, + ], + }, + { + code: `try {} catch (error) { + throw new Error("Something failed", { + get cause() { return error; }, + set cause(value) { error = value; }, + }); + }`, + errors: [{ messageId: "incorrectCause" }], + }, ], }); From b73ab12acd3e87f8d8173cda03499f6cd1f26db6 Mon Sep 17 00:00:00 2001 From: sethamus <32633697+sethamus@users.noreply.github.com> Date: Wed, 17 Sep 2025 12:40:24 +0300 Subject: [PATCH 117/165] docs: update examples to use `defineConfig` (#20131) --- docs/src/extend/custom-parsers.md | 11 ++-- docs/src/use/configure/migration-guide.md | 73 ++++++++++++++--------- docs/src/use/core-concepts/glossary.md | 15 +++-- 3 files changed, 62 insertions(+), 37 deletions(-) diff --git a/docs/src/extend/custom-parsers.md b/docs/src/extend/custom-parsers.md index 8a84dda68199..f5b181618350 100644 --- a/docs/src/extend/custom-parsers.md +++ b/docs/src/extend/custom-parsers.md @@ -129,16 +129,17 @@ Then add the custom parser to your ESLint configuration file with the `languageO ```js // eslint.config.js +const { defineConfig } = require("eslint/config"); const myparser = require("eslint-parser-myparser"); -module.exports = [ +module.exports = defineConfig([ { languageOptions: { parser: myparser, }, // ... rest of configuration }, -]; +]); ``` When using legacy configuration, specify the `parser` property as a string: @@ -183,13 +184,15 @@ Include the custom parser in an ESLint configuration file: ```js // eslint.config.js -module.exports = [ +const { defineConfig } = require("eslint/config"); + +module.exports = defineConfig([ { languageOptions: { parser: require("./path/to/awesome-custom-parser"), }, }, -]; +]); ``` Or if using legacy configuration: diff --git a/docs/src/use/configure/migration-guide.md b/docs/src/use/configure/migration-guide.md index e5d0e34b94da..54b24222ef55 100644 --- a/docs/src/use/configure/migration-guide.md +++ b/docs/src/use/configure/migration-guide.md @@ -80,9 +80,10 @@ In flat config, you would do the same thing like this: ```javascript // eslint.config.js +import { defineConfig } from "eslint/config"; import jsdoc from "eslint-plugin-jsdoc"; -export default [ +export default defineConfig([ { files: ["**/*.js"], plugins: { @@ -93,7 +94,7 @@ export default [ "jsdoc/check-values": "error", }, }, -]; +]); ``` ::: tip @@ -123,9 +124,10 @@ In flat config, you would do the same thing like this: ```javascript // eslint.config.js +import { defineConfig } from "eslint/config"; import babelParser from "@babel/eslint-parser"; -export default [ +export default defineConfig([ { // ...other config languageOptions: { @@ -133,7 +135,7 @@ export default [ }, // ...other config }, -]; +]); ``` ### Processors @@ -187,9 +189,10 @@ In flat config, the following are all valid ways to express the same: ```javascript // eslint.config.js +import { defineConfig } from "eslint/config"; import somePlugin from "eslint-plugin-someplugin"; -export default [ +export default defineConfig([ { plugins: { somePlugin }, processor: "somePlugin/someProcessor", @@ -203,7 +206,7 @@ export default [ // We don't need the plugin to be present in the config to use the processor directly processor: somePlugin.processors.someProcessor, }, -]; +]); ``` Note that because the `.md` processor is _not_ automatically added by flat config, you also need to specify an extra configuration element: @@ -265,9 +268,10 @@ For flat config, here is a configuration with the default glob pattern: ```javascript // eslint.config.js +import { defineConfig } from "eslint/config"; import js from "@eslint/js"; -export default [ +export default defineConfig([ js.configs.recommended, // Recommended config applied to all files // Override the recommended config { @@ -277,7 +281,7 @@ export default [ }, // ...other configuration }, -]; +]); ``` A flat config example configuration supporting multiple configs for different glob patterns: @@ -285,9 +289,10 @@ A flat config example configuration supporting multiple configs for different gl ```javascript // eslint.config.js +import { defineConfig } from "eslint/config"; import js from "@eslint/js"; -export default [ +export default defineConfig([ js.configs.recommended, // Recommended config applied to all files // File-pattern specific overrides { @@ -303,7 +308,7 @@ export default [ }, }, // ...other configurations -]; +]); ``` ### Configuring Language Options @@ -338,9 +343,10 @@ Here's the same configuration in flat config: ```javascript // eslint.config.js +import { defineConfig } from "eslint/config"; import globals from "globals"; -export default [ +export default defineConfig([ { languageOptions: { ecmaVersion: 2022, @@ -353,7 +359,7 @@ export default [ }, // ...other config }, -]; +]); ``` ::: tip @@ -402,9 +408,10 @@ Another option is to remove the comment from the file being linted and define th ```javascript // eslint.config.js +import { defineConfig } from "eslint/config"; import globals from "globals"; -export default [ +export default defineConfig([ // ...other config { files: ["tests/**"], @@ -414,7 +421,7 @@ export default [ }, }, }, -]; +]); ``` ### Predefined and Shareable Configs @@ -475,11 +482,12 @@ To use the same configs in flat config, you would do the following: ```javascript // eslint.config.js +import { defineConfig } from "eslint/config"; import js from "@eslint/js"; import customConfig from "./custom-config.js"; import myConfig from "eslint-config-my-config"; -export default [ +export default defineConfig([ js.configs.recommended, customConfig, myConfig, @@ -489,7 +497,7 @@ export default [ }, // ...other config }, -]; +]); ``` Note that because you are just importing JavaScript modules, you can mutate the config objects before ESLint uses them. For example, you might want to have a certain config object only apply to your test files: @@ -497,16 +505,17 @@ Note that because you are just importing JavaScript modules, you can mutate the ```javascript // eslint.config.js +import { defineConfig } from "eslint/config"; import js from "@eslint/js"; import customTestConfig from "./custom-test-config.js"; -export default [ +export default defineConfig([ js.configs.recommended, { ...customTestConfig, files: ["**/*.test.js"], }, -]; +]); ``` #### Using eslintrc Configs in Flat Config @@ -522,6 +531,7 @@ You may find that there's a shareable config you rely on that hasn't yet been up Then, import `FlatCompat` and create a new instance to convert an existing eslintrc config. For example, if the npm package `eslint-config-my-config` is in eslintrc format, you can write this: ```js +import { defineConfig } from "eslint/config"; import { FlatCompat } from "@eslint/eslintrc"; import path from "path"; import { fileURLToPath } from "url"; @@ -534,10 +544,10 @@ const compat = new FlatCompat({ baseDirectory: __dirname, }); -export default [ +export default defineConfig([ // mimic ESLintRC-style extends ...compat.extends("eslint-config-my-config"), -]; +]); ``` This example uses the `FlatCompat#extends()` method to insert the `eslint-config-my-config` into the flat config array. @@ -572,13 +582,15 @@ module.exports = { The equivalent ignore patterns in flat config look like this: ```javascript -export default [ +import { defineConfig } from "eslint/config"; + +export default defineConfig([ // ...other config { // Note: there should be no other properties in this object ignores: ["**/temp.js", "config/*"], }, -]; +]); ``` In `.eslintignore`, `temp.js` ignores all files named `temp.js`, whereas in flat config, you need to specify this as `**/temp.js`. The pattern `temp.js` in flat config only ignores a file named `temp.js` in the same directory as the configuration file. @@ -610,7 +622,9 @@ Here's the same options in flat config: ```javascript // eslint.config.js -export default [ +import { defineConfig } from "eslint/config"; + +export default defineConfig([ { // ...other config linterOptions: { @@ -618,7 +632,7 @@ export default [ reportUnusedDisableDirectives: "warn", }, }, -]; +]); ``` ### CLI Flag Changes @@ -637,9 +651,10 @@ The `--rulesdir` flag was used to load additional rules from a specified directo ```js // eslint.config.js +import { defineConfig } from "eslint/config"; import myRule from "./rules/my-rule.js"; -export default [ +export default defineConfig([ { // define the plugin plugins: { @@ -655,7 +670,7 @@ export default [ "local/my-rule": ["error"], }, }, -]; +]); ``` #### `--ext` @@ -664,13 +679,15 @@ The `--ext` flag was used to specify additional file extensions ESLint should se ```js // eslint.config.js -export default [ +import { defineConfig } from "eslint/config"; + +export default defineConfig([ { files: ["**/*.ts", "**/*.tsx"], // any additional configuration for these file types here }, -]; +]); ``` ESLint uses the `files` keys from the config file to determine which files should be linted. diff --git a/docs/src/use/core-concepts/glossary.md b/docs/src/use/core-concepts/glossary.md index 400a9ec068e9..847343ebac89 100644 --- a/docs/src/use/core-concepts/glossary.md +++ b/docs/src/use/core-concepts/glossary.md @@ -33,13 +33,15 @@ Each config file exports a [config array](#config-array) containing [config obje For example, this `eslint.config.js` file enables the `prefer-const` [rule](#rule) at the _error_ [severity](#severity): ```js -export default [ +import { defineConfig } from "eslint/config"; + +export default defineConfig([ { rules: { "prefer-const": "error", }, }, -]; +]); ``` See [Configuration Files](../configure/configuration-files) for more details. @@ -242,7 +244,9 @@ When a [config object](#config-object) or [inline config](#inline-config-configu The following [config file](#config-file-configuration-file) overrides `no-unused-expressions` from `"error"` to `"off"` in `*.test.js` files: ```js -export default [ +import { defineConfig } from "eslint/config"; + +export default defineConfig([ { rules: { "no-unused-expressions": "error", @@ -254,7 +258,7 @@ export default [ "no-unused-expressions": "off", }, }, -]; +]); ``` The following [inline config](#inline-config-configuration-comment) sets `no-unused-expressions` to `"error"`: @@ -346,10 +350,11 @@ Many plugins provide configs with names like _"recommended"_ that enable their s For example, [`eslint-plugin-solid`](https://github.com/solidjs-community/eslint-plugin-solid) provides a shareable recommended config: ```js +import { defineConfig } from "eslint/config"; import js from "@eslint/js"; import solid from "eslint-plugin-solid/configs/recommended"; -export default [js.configs.recommended, solid]; +export default defineConfig([js.configs.recommended, solid]); ``` For information on shareable configs, see [Share Configurations](../../extend/shareable-configs). From 488cba6b391b97b2cfc74bbb46fdeacb1361949e Mon Sep 17 00:00:00 2001 From: Jenkins Date: Fri, 19 Sep 2025 14:08:03 +0000 Subject: [PATCH 118/165] chore: package.json update for @eslint/js release --- packages/js/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/js/package.json b/packages/js/package.json index c0e541411073..d88cea0f6e08 100644 --- a/packages/js/package.json +++ b/packages/js/package.json @@ -1,6 +1,6 @@ { "name": "@eslint/js", - "version": "9.35.0", + "version": "9.36.0", "description": "ESLint JavaScript language implementation", "funding": "https://eslint.org/donate", "main": "./src/index.js", From 12411e8d450ed26a5f7cca6a78ec05323c9323e8 Mon Sep 17 00:00:00 2001 From: Milos Djermanovic Date: Fri, 19 Sep 2025 16:19:05 +0200 Subject: [PATCH 119/165] chore: upgrade @eslint/js@9.36.0 (#20139) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 100f683f81b5..c54389feba17 100644 --- a/package.json +++ b/package.json @@ -110,7 +110,7 @@ "@eslint/config-helpers": "^0.3.1", "@eslint/core": "^0.15.2", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.35.0", + "@eslint/js": "9.36.0", "@eslint/plugin-kit": "^0.3.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", From 5878a4243f623b46b476eb81043d06244eae5877 Mon Sep 17 00:00:00 2001 From: Jenkins Date: Fri, 19 Sep 2025 14:30:44 +0000 Subject: [PATCH 120/165] Build: changelog update for 9.36.0 --- CHANGELOG.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c70b5feadc2..959d9913443a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,29 @@ +v9.36.0 - September 19, 2025 + +* [`12411e8`](https://github.com/eslint/eslint/commit/12411e8d450ed26a5f7cca6a78ec05323c9323e8) chore: upgrade @eslint/js@9.36.0 (#20139) (Milos Djermanovic) +* [`488cba6`](https://github.com/eslint/eslint/commit/488cba6b391b97b2cfc74bbb46fdeacb1361949e) chore: package.json update for @eslint/js release (Jenkins) +* [`b73ab12`](https://github.com/eslint/eslint/commit/b73ab12acd3e87f8d8173cda03499f6cd1f26db6) docs: update examples to use `defineConfig` (#20131) (sethamus) +* [`47afcf6`](https://github.com/eslint/eslint/commit/47afcf668df65eac68d7b04145d037037010a076) feat: correct `preserve-caught-error` edge cases (#20109) (Francesco Trotta) +* [`75b74d8`](https://github.com/eslint/eslint/commit/75b74d865d3b8e7fa3bcf5ad29f4bf6d18d1310e) fix: add missing rule option types (#20127) (ntnyq) +* [`bac82a2`](https://github.com/eslint/eslint/commit/bac82a2a9c80a3f69087852758d7737aea371f09) ci: simplify renovate configuration (#19907) (唯然) +* [`1c0d850`](https://github.com/eslint/eslint/commit/1c0d85049e3f30a8809340c1abc881c63b7812ff) fix: update `eslint-all.js` to use `Object.freeze` for `rules` object (#20116) (루밀LuMir) +* [`c00bb37`](https://github.com/eslint/eslint/commit/c00bb37d62c1bcc0a37f094371be9c40064009f1) ci: bump actions/labeler from 5 to 6 (#20090) (dependabot[bot]) +* [`fee751d`](https://github.com/eslint/eslint/commit/fee751dc8aeab54547af4538332ea5c069ef28b6) refactor: use `defaultOptions` in rules (#20121) (Pixel998) +* [`31d9392`](https://github.com/eslint/eslint/commit/31d93926990fba536846ec727d7a2625fc844649) docs: fix typos (#20118) (Pixel998) +* [`7d61b7f`](https://github.com/eslint/eslint/commit/7d61b7fadc9c5c6f2b131e37e8a3cffa5aae8ee6) fix: add missing scope types to `Scope.type` (#20110) (Pixel998) +* [`1ace67d`](https://github.com/eslint/eslint/commit/1ace67d9f7903adc3d3f09868aa05b673e7d3f3b) chore: update example to use `defineConfig` (#20111) (루밀LuMir) +* [`4821963`](https://github.com/eslint/eslint/commit/4821963bf765532069c49e9da9ecbe9485b073fc) test: add missing loc information to error objects in rule tests (#20112) (루밀LuMir) +* [`c7f861b`](https://github.com/eslint/eslint/commit/c7f861b3f8c1ac961b4cd4f22483798f3324c62b) docs: Update README (GitHub Actions Bot) +* [`6b0c08b`](https://github.com/eslint/eslint/commit/6b0c08b106aa66f2e9fa484282f0eb63c64a1215) docs: Update README (GitHub Actions Bot) +* [`7a670c3`](https://github.com/eslint/eslint/commit/7a670c301b58609017ce8cfda99ee81f95de3898) fix: correct rule option typings in `rules.d.ts` (#20084) (Pixel998) +* [`b42c42e`](https://github.com/eslint/eslint/commit/b42c42e7cd3ac9ee1b5a15f16ff25b325d0482e4) chore: disallow use of deprecated `type` property in core rule tests (#20094) (Milos Djermanovic) +* [`7bb498d`](https://github.com/eslint/eslint/commit/7bb498d720dcd054cc042ca4b60b138d8485f07c) test: remove deprecated `type` property from core rule tests (#20093) (Pixel998) +* [`91f97c5`](https://github.com/eslint/eslint/commit/91f97c50468fbdc089c91e99c2ea0fe821911df2) docs: Update README (GitHub Actions Bot) +* [`e10cf2a`](https://github.com/eslint/eslint/commit/e10cf2ab42fe5b481d980dc652f7504414747733) ci: bump actions/setup-node from 4 to 5 (#20089) (dependabot[bot]) +* [`5cb0ce4`](https://github.com/eslint/eslint/commit/5cb0ce48ef6cfbbe6d09131c33a53f9d66fe9bd4) refactor: use `meta.defaultOptions` in `preserve-caught-error` (#20080) (Pixel998) +* [`f9f7cb5`](https://github.com/eslint/eslint/commit/f9f7cb578dced3c14f635e17c75aa6744d291f4d) chore: package.json update for eslint-config-eslint release (Jenkins) +* [`81764b2`](https://github.com/eslint/eslint/commit/81764b298065a328038cd067bc8fedef97e57500) chore: update `eslint` peer dependency in `eslint-config-eslint` (#20079) (Milos Djermanovic) + v9.35.0 - September 5, 2025 * [`da87f2f`](https://github.com/eslint/eslint/commit/da87f2fe792cab5b69b62bf5c15e69ab4f433087) chore: upgrade @eslint/js@9.35.0 (#20077) (Milos Djermanovic) From b4857e54e54b5dba96d156cd8d8b4d42dc5a3bf4 Mon Sep 17 00:00:00 2001 From: Jenkins Date: Fri, 19 Sep 2025 14:30:45 +0000 Subject: [PATCH 121/165] 9.36.0 --- docs/package.json | 2 +- docs/src/_data/rules_meta.json | 13 +++++++++++++ docs/src/_data/versions.json | 2 +- docs/src/use/formatters/html-formatter-example.html | 2 +- package.json | 2 +- 5 files changed, 17 insertions(+), 4 deletions(-) diff --git a/docs/package.json b/docs/package.json index 97d733be4551..1e4dbbf7db1e 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,7 +1,7 @@ { "name": "docs-eslint", "private": true, - "version": "9.35.0", + "version": "9.36.0", "description": "", "main": "index.js", "keywords": [], diff --git a/docs/src/_data/rules_meta.json b/docs/src/_data/rules_meta.json index d98550785584..234ac4c47def 100644 --- a/docs/src/_data/rules_meta.json +++ b/docs/src/_data/rules_meta.json @@ -2429,6 +2429,11 @@ }, "no-misleading-character-class": { "type": "problem", + "defaultOptions": [ + { + "allowEscape": false + } + ], "docs": { "description": "Disallow characters which are made with multiple code points in character class syntax", "recommended": true, @@ -4153,6 +4158,11 @@ }, "preserve-caught-error": { "type": "suggestion", + "defaultOptions": [ + { + "requireCatchParameter": false + } + ], "docs": { "description": "Disallow losing originally caught error when re-throwing custom errors", "recommended": false, @@ -4255,6 +4265,9 @@ }, "require-unicode-regexp": { "type": "suggestion", + "defaultOptions": [ + {} + ], "docs": { "description": "Enforce the use of `u` or `v` flag on regular expressions", "recommended": false, diff --git a/docs/src/_data/versions.json b/docs/src/_data/versions.json index 555d4e46d2a2..dc5ef6ea7756 100644 --- a/docs/src/_data/versions.json +++ b/docs/src/_data/versions.json @@ -6,7 +6,7 @@ "path": "/docs/head/" }, { - "version": "9.35.0", + "version": "9.36.0", "branch": "latest", "path": "/docs/latest/" }, diff --git a/docs/src/use/formatters/html-formatter-example.html b/docs/src/use/formatters/html-formatter-example.html index 81b94c5d807d..bcfac54dbd5e 100644 --- a/docs/src/use/formatters/html-formatter-example.html +++ b/docs/src/use/formatters/html-formatter-example.html @@ -118,7 +118,7 @@

ESLint Report

- 8 problems (4 errors, 4 warnings) - Generated on Fri Sep 05 2025 14:41:14 GMT+0000 (Coordinated Universal Time) + 8 problems (4 errors, 4 warnings) - Generated on Fri Sep 19 2025 14:30:46 GMT+0000 (Coordinated Universal Time)
diff --git a/package.json b/package.json index c54389feba17..ccce3a62ccce 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "eslint", - "version": "9.35.0", + "version": "9.36.0", "author": "Nicholas C. Zakas ", "description": "An AST-based pattern checker for JavaScript.", "type": "commonjs", From 448b57bca3406ee12c4e44e9298fc0c99d3ee10c Mon Sep 17 00:00:00 2001 From: Milos Djermanovic Date: Sun, 21 Sep 2025 19:35:06 +0200 Subject: [PATCH 122/165] chore: Mark deprecated formatting rules as available until v11.0.0 (#20144) --- lib/rules/array-bracket-newline.js | 2 +- lib/rules/array-bracket-spacing.js | 2 +- lib/rules/array-element-newline.js | 2 +- lib/rules/arrow-parens.js | 2 +- lib/rules/arrow-spacing.js | 2 +- lib/rules/block-spacing.js | 2 +- lib/rules/brace-style.js | 2 +- lib/rules/comma-dangle.js | 2 +- lib/rules/comma-spacing.js | 2 +- lib/rules/comma-style.js | 2 +- lib/rules/computed-property-spacing.js | 2 +- lib/rules/dot-location.js | 2 +- lib/rules/eol-last.js | 2 +- lib/rules/func-call-spacing.js | 2 +- lib/rules/function-call-argument-newline.js | 2 +- lib/rules/function-paren-newline.js | 2 +- lib/rules/generator-star-spacing.js | 2 +- lib/rules/implicit-arrow-linebreak.js | 2 +- lib/rules/indent-legacy.js | 1 + lib/rules/indent.js | 2 +- lib/rules/jsx-quotes.js | 2 +- lib/rules/key-spacing.js | 2 +- lib/rules/keyword-spacing.js | 2 +- lib/rules/line-comment-position.js | 2 +- lib/rules/linebreak-style.js | 2 +- lib/rules/lines-around-comment.js | 2 +- lib/rules/lines-around-directive.js | 2 +- lib/rules/lines-between-class-members.js | 2 +- lib/rules/max-len.js | 2 +- lib/rules/max-statements-per-line.js | 2 +- lib/rules/multiline-comment-style.js | 2 +- lib/rules/multiline-ternary.js | 2 +- lib/rules/new-parens.js | 2 +- lib/rules/newline-after-var.js | 2 +- lib/rules/newline-before-return.js | 2 +- lib/rules/newline-per-chained-call.js | 2 +- lib/rules/no-confusing-arrow.js | 2 +- lib/rules/no-extra-parens.js | 2 +- lib/rules/no-extra-semi.js | 2 +- lib/rules/no-floating-decimal.js | 2 +- lib/rules/no-mixed-operators.js | 2 +- lib/rules/no-mixed-spaces-and-tabs.js | 2 +- lib/rules/no-multi-spaces.js | 2 +- lib/rules/no-multiple-empty-lines.js | 2 +- lib/rules/no-spaced-func.js | 2 +- lib/rules/no-tabs.js | 2 +- lib/rules/no-trailing-spaces.js | 2 +- lib/rules/no-whitespace-before-property.js | 2 +- lib/rules/nonblock-statement-body-position.js | 2 +- lib/rules/object-curly-newline.js | 2 +- lib/rules/object-curly-spacing.js | 2 +- lib/rules/object-property-newline.js | 2 +- lib/rules/one-var-declaration-per-line.js | 2 +- lib/rules/operator-linebreak.js | 2 +- lib/rules/padded-blocks.js | 2 +- lib/rules/padding-line-between-statements.js | 2 +- lib/rules/quote-props.js | 2 +- lib/rules/quotes.js | 2 +- lib/rules/rest-spread-spacing.js | 2 +- lib/rules/semi-spacing.js | 2 +- lib/rules/semi-style.js | 2 +- lib/rules/semi.js | 2 +- lib/rules/space-before-blocks.js | 2 +- lib/rules/space-before-function-paren.js | 2 +- lib/rules/space-in-parens.js | 2 +- lib/rules/space-infix-ops.js | 2 +- lib/rules/space-unary-ops.js | 2 +- lib/rules/spaced-comment.js | 2 +- lib/rules/switch-colon-spacing.js | 2 +- lib/rules/template-curly-spacing.js | 2 +- lib/rules/template-tag-spacing.js | 2 +- lib/rules/wrap-iife.js | 2 +- lib/rules/wrap-regex.js | 2 +- lib/rules/yield-star-spacing.js | 2 +- tests/bin/eslint.js | 2 +- 75 files changed, 75 insertions(+), 74 deletions(-) diff --git a/lib/rules/array-bracket-newline.js b/lib/rules/array-bracket-newline.js index 3fe796bc1059..56887af130e2 100644 --- a/lib/rules/array-bracket-newline.js +++ b/lib/rules/array-bracket-newline.js @@ -19,7 +19,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/array-bracket-spacing.js b/lib/rules/array-bracket-spacing.js index edd65f9f82ef..dbe88f1b4eb5 100644 --- a/lib/rules/array-bracket-spacing.js +++ b/lib/rules/array-bracket-spacing.js @@ -18,7 +18,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/array-element-newline.js b/lib/rules/array-element-newline.js index 47e424edde4f..d687cba01a82 100644 --- a/lib/rules/array-element-newline.js +++ b/lib/rules/array-element-newline.js @@ -19,7 +19,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/arrow-parens.js b/lib/rules/arrow-parens.js index 6183246d0cc1..bbb3d3353808 100644 --- a/lib/rules/arrow-parens.js +++ b/lib/rules/arrow-parens.js @@ -35,7 +35,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/arrow-spacing.js b/lib/rules/arrow-spacing.js index 30f8be5b3c98..21b20531e667 100644 --- a/lib/rules/arrow-spacing.js +++ b/lib/rules/arrow-spacing.js @@ -22,7 +22,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/block-spacing.js b/lib/rules/block-spacing.js index 140866bee56a..009f0586e887 100644 --- a/lib/rules/block-spacing.js +++ b/lib/rules/block-spacing.js @@ -19,7 +19,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/brace-style.js b/lib/rules/brace-style.js index d4a70bc0a4b7..f4388400316e 100644 --- a/lib/rules/brace-style.js +++ b/lib/rules/brace-style.js @@ -19,7 +19,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/comma-dangle.js b/lib/rules/comma-dangle.js index 9cb72d4c9b65..121ada3ce759 100644 --- a/lib/rules/comma-dangle.js +++ b/lib/rules/comma-dangle.js @@ -78,7 +78,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/comma-spacing.js b/lib/rules/comma-spacing.js index 8f19177c69e9..521651912254 100644 --- a/lib/rules/comma-spacing.js +++ b/lib/rules/comma-spacing.js @@ -18,7 +18,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/comma-style.js b/lib/rules/comma-style.js index 39db15910684..6c8e765691a9 100644 --- a/lib/rules/comma-style.js +++ b/lib/rules/comma-style.js @@ -19,7 +19,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/computed-property-spacing.js b/lib/rules/computed-property-spacing.js index dffc387279b6..8712626463fd 100644 --- a/lib/rules/computed-property-spacing.js +++ b/lib/rules/computed-property-spacing.js @@ -18,7 +18,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/dot-location.js b/lib/rules/dot-location.js index c40da48acd48..9025a1fe2f1a 100644 --- a/lib/rules/dot-location.js +++ b/lib/rules/dot-location.js @@ -19,7 +19,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/eol-last.js b/lib/rules/eol-last.js index 046fc276da2e..4943784687d2 100644 --- a/lib/rules/eol-last.js +++ b/lib/rules/eol-last.js @@ -16,7 +16,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/func-call-spacing.js b/lib/rules/func-call-spacing.js index 8aa52abbd892..71a03d787f00 100644 --- a/lib/rules/func-call-spacing.js +++ b/lib/rules/func-call-spacing.js @@ -23,7 +23,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/function-call-argument-newline.js b/lib/rules/function-call-argument-newline.js index 2662199fd558..0ad1ca1d0284 100644 --- a/lib/rules/function-call-argument-newline.js +++ b/lib/rules/function-call-argument-newline.js @@ -17,7 +17,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/function-paren-newline.js b/lib/rules/function-paren-newline.js index 17944d0f06b9..17e5e9cf85c7 100644 --- a/lib/rules/function-paren-newline.js +++ b/lib/rules/function-paren-newline.js @@ -22,7 +22,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/generator-star-spacing.js b/lib/rules/generator-star-spacing.js index 5a3468171392..1c980baf2c9e 100644 --- a/lib/rules/generator-star-spacing.js +++ b/lib/rules/generator-star-spacing.js @@ -33,7 +33,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/implicit-arrow-linebreak.js b/lib/rules/implicit-arrow-linebreak.js index ddaf5f3f41ad..e32d0cafc9c9 100644 --- a/lib/rules/implicit-arrow-linebreak.js +++ b/lib/rules/implicit-arrow-linebreak.js @@ -17,7 +17,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/indent-legacy.js b/lib/rules/indent-legacy.js index 9261fe29697a..3c14ff767e25 100644 --- a/lib/rules/indent-legacy.js +++ b/lib/rules/indent-legacy.js @@ -35,6 +35,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "4.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/indent.js b/lib/rules/indent.js index f588ff3d7164..c6c18759a3b8 100644 --- a/lib/rules/indent.js +++ b/lib/rules/indent.js @@ -512,7 +512,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/jsx-quotes.js b/lib/rules/jsx-quotes.js index cf87cf8d3543..f435d9cbf8c0 100644 --- a/lib/rules/jsx-quotes.js +++ b/lib/rules/jsx-quotes.js @@ -44,7 +44,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/key-spacing.js b/lib/rules/key-spacing.js index e2b5734d93fc..6ab192ec6510 100644 --- a/lib/rules/key-spacing.js +++ b/lib/rules/key-spacing.js @@ -151,7 +151,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/keyword-spacing.js b/lib/rules/keyword-spacing.js index 07cefbbe89f0..0986b43619cd 100644 --- a/lib/rules/keyword-spacing.js +++ b/lib/rules/keyword-spacing.js @@ -82,7 +82,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/line-comment-position.js b/lib/rules/line-comment-position.js index 92380255dd2f..6c1640337523 100644 --- a/lib/rules/line-comment-position.js +++ b/lib/rules/line-comment-position.js @@ -18,7 +18,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "9.3.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/linebreak-style.js b/lib/rules/linebreak-style.js index 3fd3b677453a..aea1b8ce1ddd 100644 --- a/lib/rules/linebreak-style.js +++ b/lib/rules/linebreak-style.js @@ -31,7 +31,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/lines-around-comment.js b/lib/rules/lines-around-comment.js index 27b90908c4ed..7b2d0ac807d1 100644 --- a/lib/rules/lines-around-comment.js +++ b/lib/rules/lines-around-comment.js @@ -60,7 +60,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/lines-around-directive.js b/lib/rules/lines-around-directive.js index 589737ccad81..bf57154b33ad 100644 --- a/lib/rules/lines-around-directive.js +++ b/lib/rules/lines-around-directive.js @@ -56,7 +56,7 @@ module.exports = { message: "The rule was replaced with a more general rule.", url: "https://eslint.org/blog/2017/06/eslint-v4.0.0-released/", deprecatedSince: "4.0.0", - availableUntil: null, + availableUntil: "11.0.0", replacedBy: [ { message: "The new rule moved to a plugin.", diff --git a/lib/rules/lines-between-class-members.js b/lib/rules/lines-between-class-members.js index 09cd71213d8b..896169985c95 100644 --- a/lib/rules/lines-between-class-members.js +++ b/lib/rules/lines-between-class-members.js @@ -37,7 +37,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/max-len.js b/lib/rules/max-len.js index 86a41fe64dd7..108918f88cb7 100644 --- a/lib/rules/max-len.js +++ b/lib/rules/max-len.js @@ -71,7 +71,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/max-statements-per-line.js b/lib/rules/max-statements-per-line.js index 646a0cc9c91f..48b37f4fcc67 100644 --- a/lib/rules/max-statements-per-line.js +++ b/lib/rules/max-statements-per-line.js @@ -22,7 +22,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/multiline-comment-style.js b/lib/rules/multiline-comment-style.js index 1e409ee397b0..463e7a734325 100644 --- a/lib/rules/multiline-comment-style.js +++ b/lib/rules/multiline-comment-style.js @@ -18,7 +18,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "9.3.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/multiline-ternary.js b/lib/rules/multiline-ternary.js index 2f3f0ba76c99..5590fe4523ba 100644 --- a/lib/rules/multiline-ternary.js +++ b/lib/rules/multiline-ternary.js @@ -19,7 +19,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/new-parens.js b/lib/rules/new-parens.js index e27fa93acb37..e8cb8db2ace0 100644 --- a/lib/rules/new-parens.js +++ b/lib/rules/new-parens.js @@ -27,7 +27,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/newline-after-var.js b/lib/rules/newline-after-var.js index 7edf23eb3f48..76d29117c390 100644 --- a/lib/rules/newline-after-var.js +++ b/lib/rules/newline-after-var.js @@ -42,7 +42,7 @@ module.exports = { message: "The rule was replaced with a more general rule.", url: "https://eslint.org/blog/2017/06/eslint-v4.0.0-released/", deprecatedSince: "4.0.0", - availableUntil: null, + availableUntil: "11.0.0", replacedBy: [ { message: "The new rule moved to a plugin.", diff --git a/lib/rules/newline-before-return.js b/lib/rules/newline-before-return.js index 91986f7c5054..d9ebc9c18007 100644 --- a/lib/rules/newline-before-return.js +++ b/lib/rules/newline-before-return.js @@ -30,7 +30,7 @@ module.exports = { message: "The rule was replaced with a more general rule.", url: "https://eslint.org/blog/2017/06/eslint-v4.0.0-released/", deprecatedSince: "4.0.0", - availableUntil: null, + availableUntil: "11.0.0", replacedBy: [ { message: "The new rule moved to a plugin.", diff --git a/lib/rules/newline-per-chained-call.js b/lib/rules/newline-per-chained-call.js index 31f9a4b22e39..c56e946606ac 100644 --- a/lib/rules/newline-per-chained-call.js +++ b/lib/rules/newline-per-chained-call.js @@ -20,7 +20,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/no-confusing-arrow.js b/lib/rules/no-confusing-arrow.js index 3d598c02f6e6..1b3e7982888c 100644 --- a/lib/rules/no-confusing-arrow.js +++ b/lib/rules/no-confusing-arrow.js @@ -33,7 +33,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/no-extra-parens.js b/lib/rules/no-extra-parens.js index 6edfe8954262..5b534b67f74a 100644 --- a/lib/rules/no-extra-parens.js +++ b/lib/rules/no-extra-parens.js @@ -21,7 +21,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/no-extra-semi.js b/lib/rules/no-extra-semi.js index de5d520d365c..a408edaf9555 100644 --- a/lib/rules/no-extra-semi.js +++ b/lib/rules/no-extra-semi.js @@ -24,7 +24,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/no-floating-decimal.js b/lib/rules/no-floating-decimal.js index f42362969af8..569be727ec87 100644 --- a/lib/rules/no-floating-decimal.js +++ b/lib/rules/no-floating-decimal.js @@ -23,7 +23,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/no-mixed-operators.js b/lib/rules/no-mixed-operators.js index 06427e373497..73dc127a4aa5 100644 --- a/lib/rules/no-mixed-operators.js +++ b/lib/rules/no-mixed-operators.js @@ -90,7 +90,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/no-mixed-spaces-and-tabs.js b/lib/rules/no-mixed-spaces-and-tabs.js index a915ac8988f4..5983d7cfd00e 100644 --- a/lib/rules/no-mixed-spaces-and-tabs.js +++ b/lib/rules/no-mixed-spaces-and-tabs.js @@ -16,7 +16,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/no-multi-spaces.js b/lib/rules/no-multi-spaces.js index 280022d07dde..93704760a461 100644 --- a/lib/rules/no-multi-spaces.js +++ b/lib/rules/no-multi-spaces.js @@ -19,7 +19,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/no-multiple-empty-lines.js b/lib/rules/no-multiple-empty-lines.js index 1e4576dc955e..1f6d72647d96 100644 --- a/lib/rules/no-multiple-empty-lines.js +++ b/lib/rules/no-multiple-empty-lines.js @@ -17,7 +17,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/no-spaced-func.js b/lib/rules/no-spaced-func.js index 25c022110d50..037015b7fe0f 100644 --- a/lib/rules/no-spaced-func.js +++ b/lib/rules/no-spaced-func.js @@ -26,7 +26,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2016/08/eslint-v3.3.0-released/#deprecated-rules", deprecatedSince: "3.3.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/no-tabs.js b/lib/rules/no-tabs.js index 78a6d2cb4199..f35f4da0d09b 100644 --- a/lib/rules/no-tabs.js +++ b/lib/rules/no-tabs.js @@ -24,7 +24,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/no-trailing-spaces.js b/lib/rules/no-trailing-spaces.js index f101f72fdffc..14c66db4ae37 100644 --- a/lib/rules/no-trailing-spaces.js +++ b/lib/rules/no-trailing-spaces.js @@ -30,7 +30,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/no-whitespace-before-property.js b/lib/rules/no-whitespace-before-property.js index 8bd96d1c06ca..834e6f162058 100644 --- a/lib/rules/no-whitespace-before-property.js +++ b/lib/rules/no-whitespace-before-property.js @@ -22,7 +22,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/nonblock-statement-body-position.js b/lib/rules/nonblock-statement-body-position.js index caabcc45e48e..dbfd1063fbab 100644 --- a/lib/rules/nonblock-statement-body-position.js +++ b/lib/rules/nonblock-statement-body-position.js @@ -18,7 +18,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/object-curly-newline.js b/lib/rules/object-curly-newline.js index 9396fb69fe66..e0b860b3d393 100644 --- a/lib/rules/object-curly-newline.js +++ b/lib/rules/object-curly-newline.js @@ -162,7 +162,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/object-curly-spacing.js b/lib/rules/object-curly-spacing.js index 45ef4b3612b4..fbd177369ea3 100644 --- a/lib/rules/object-curly-spacing.js +++ b/lib/rules/object-curly-spacing.js @@ -18,7 +18,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/object-property-newline.js b/lib/rules/object-property-newline.js index 3b1fa2bd91a1..6921e048a6ee 100644 --- a/lib/rules/object-property-newline.js +++ b/lib/rules/object-property-newline.js @@ -17,7 +17,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/one-var-declaration-per-line.js b/lib/rules/one-var-declaration-per-line.js index 3af4e03d313c..3671e27213e4 100644 --- a/lib/rules/one-var-declaration-per-line.js +++ b/lib/rules/one-var-declaration-per-line.js @@ -16,7 +16,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/operator-linebreak.js b/lib/rules/operator-linebreak.js index de1a331078c9..f0b7d46fa2f1 100644 --- a/lib/rules/operator-linebreak.js +++ b/lib/rules/operator-linebreak.js @@ -23,7 +23,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/padded-blocks.js b/lib/rules/padded-blocks.js index 36cc725230a6..2df44f890f17 100644 --- a/lib/rules/padded-blocks.js +++ b/lib/rules/padded-blocks.js @@ -23,7 +23,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/padding-line-between-statements.js b/lib/rules/padding-line-between-statements.js index 9d6a563849bb..153bf820a452 100644 --- a/lib/rules/padding-line-between-statements.js +++ b/lib/rules/padding-line-between-statements.js @@ -393,7 +393,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/quote-props.js b/lib/rules/quote-props.js index 4c2051a4ec3f..5cbf77d56f1f 100644 --- a/lib/rules/quote-props.js +++ b/lib/rules/quote-props.js @@ -24,7 +24,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/quotes.js b/lib/rules/quotes.js index 8048937b0e66..4de678cd35bc 100644 --- a/lib/rules/quotes.js +++ b/lib/rules/quotes.js @@ -101,7 +101,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/rest-spread-spacing.js b/lib/rules/rest-spread-spacing.js index 9c371e30ed63..d9b6c74adabf 100644 --- a/lib/rules/rest-spread-spacing.js +++ b/lib/rules/rest-spread-spacing.js @@ -17,7 +17,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/semi-spacing.js b/lib/rules/semi-spacing.js index 4520c9b3dc76..f8b9b6621e8f 100644 --- a/lib/rules/semi-spacing.js +++ b/lib/rules/semi-spacing.js @@ -19,7 +19,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/semi-style.js b/lib/rules/semi-style.js index a671ee72a920..43b32e1486f7 100644 --- a/lib/rules/semi-style.js +++ b/lib/rules/semi-style.js @@ -89,7 +89,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/semi.js b/lib/rules/semi.js index 8f9e449e8af0..b6d28d88e19d 100644 --- a/lib/rules/semi.js +++ b/lib/rules/semi.js @@ -23,7 +23,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/space-before-blocks.js b/lib/rules/space-before-blocks.js index 88a439deb348..0d35276a8661 100644 --- a/lib/rules/space-before-blocks.js +++ b/lib/rules/space-before-blocks.js @@ -42,7 +42,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/space-before-function-paren.js b/lib/rules/space-before-function-paren.js index 4d0c7c5626fa..dad6fde8fd98 100644 --- a/lib/rules/space-before-function-paren.js +++ b/lib/rules/space-before-function-paren.js @@ -22,7 +22,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/space-in-parens.js b/lib/rules/space-in-parens.js index c342768d768c..623bb381f718 100644 --- a/lib/rules/space-in-parens.js +++ b/lib/rules/space-in-parens.js @@ -18,7 +18,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/space-infix-ops.js b/lib/rules/space-infix-ops.js index abcf7bf2dd6c..825ba05a4bf2 100644 --- a/lib/rules/space-infix-ops.js +++ b/lib/rules/space-infix-ops.js @@ -18,7 +18,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/space-unary-ops.js b/lib/rules/space-unary-ops.js index 2db164fbd62c..ee58714741b1 100644 --- a/lib/rules/space-unary-ops.js +++ b/lib/rules/space-unary-ops.js @@ -22,7 +22,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/spaced-comment.js b/lib/rules/spaced-comment.js index 9c246ab31bab..cb2a97822ed5 100644 --- a/lib/rules/spaced-comment.js +++ b/lib/rules/spaced-comment.js @@ -147,7 +147,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/switch-colon-spacing.js b/lib/rules/switch-colon-spacing.js index 01ff0be30a18..410345b69d91 100644 --- a/lib/rules/switch-colon-spacing.js +++ b/lib/rules/switch-colon-spacing.js @@ -23,7 +23,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/template-curly-spacing.js b/lib/rules/template-curly-spacing.js index 2cf9a47469d1..25e3aad027b5 100644 --- a/lib/rules/template-curly-spacing.js +++ b/lib/rules/template-curly-spacing.js @@ -23,7 +23,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/template-tag-spacing.js b/lib/rules/template-tag-spacing.js index ba810b162150..10ffe6804e79 100644 --- a/lib/rules/template-tag-spacing.js +++ b/lib/rules/template-tag-spacing.js @@ -17,7 +17,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/wrap-iife.js b/lib/rules/wrap-iife.js index d8cac1c8ac86..3ba53a15198e 100644 --- a/lib/rules/wrap-iife.js +++ b/lib/rules/wrap-iife.js @@ -44,7 +44,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/wrap-regex.js b/lib/rules/wrap-regex.js index ac524e02b200..def392a4c170 100644 --- a/lib/rules/wrap-regex.js +++ b/lib/rules/wrap-regex.js @@ -17,7 +17,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/yield-star-spacing.js b/lib/rules/yield-star-spacing.js index f87282a9213d..05666e2142be 100644 --- a/lib/rules/yield-star-spacing.js +++ b/lib/rules/yield-star-spacing.js @@ -17,7 +17,7 @@ module.exports = { message: "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/tests/bin/eslint.js b/tests/bin/eslint.js index e42173d013ab..fc2e0d90e45d 100644 --- a/tests/bin/eslint.js +++ b/tests/bin/eslint.js @@ -137,7 +137,7 @@ describe("bin/eslint.js", () => { "Formatting rules are being moved out of ESLint core.", url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", deprecatedSince: "8.53.0", - availableUntil: "10.0.0", + availableUntil: "11.0.0", replacedBy: [ { message: From 177f669adc0f96d14ae1a71cde7786f327515863 Mon Sep 17 00:00:00 2001 From: Francesco Trotta Date: Mon, 22 Sep 2025 21:27:55 +0200 Subject: [PATCH 123/165] perf: improve worker count calculation for `"auto"` concurrency (#20067) * perf: improve worker count calculation for `"auto"` concurrency * don't check more files than necessary * enrich and reexport `createDebug` in `eslint-helpers.js` * improve reprocessing logic * Apply suggestions from code review Co-authored-by: Milos Djermanovic * delete cache directories after tests --------- Co-authored-by: Milos Djermanovic --- lib/cli-engine/lint-result-cache.js | 76 +++++--- lib/eslint/eslint-helpers.js | 9 +- lib/eslint/eslint.js | 186 ++++++++++++++---- lib/eslint/worker.js | 4 +- tests/lib/cli.js | 2 +- tests/lib/eslint/eslint.js | 280 ++++++++++++++++++++++------ 6 files changed, 431 insertions(+), 126 deletions(-) diff --git a/lib/cli-engine/lint-result-cache.js b/lib/cli-engine/lint-result-cache.js index 1bca3e8a0ac0..48f42e19b8cc 100644 --- a/lib/cli-engine/lint-result-cache.js +++ b/lib/cli-engine/lint-result-cache.js @@ -17,6 +17,12 @@ const hash = require("./hash"); const debug = require("debug")("eslint:lint-result-cache"); +//------------------------------------------------------------------------------ +// Typedefs +//------------------------------------------------------------------------------ + +/** @typedef {import("../types").Linter.Config} Config */ + //----------------------------------------------------------------------------- // Helpers //----------------------------------------------------------------------------- @@ -40,7 +46,7 @@ function isValidCacheStrategy(cacheStrategy) { /** * Calculates the hash of the config - * @param {ConfigArray} config The config. + * @param {Config} config The config. * @returns {string} The hash of the config */ function hashOfConfigFor(config) { @@ -96,38 +102,13 @@ class LintResultCache { * cache. If the file is present and has not been changed, rebuild any * missing result information. * @param {string} filePath The file for which to retrieve lint results. - * @param {ConfigArray} config The config of the file. + * @param {Config} config The config of the file. * @returns {Object|null} The rebuilt lint results, or null if the file is * changed or not in the filesystem. */ getCachedLintResults(filePath, config) { - /* - * Cached lint results are valid if and only if: - * 1. The file is present in the filesystem - * 2. The file has not changed since the time it was previously linted - * 3. The ESLint configuration has not changed since the time the file - * was previously linted - * If any of these are not true, we will not reuse the lint results. - */ - const fileDescriptor = this.fileEntryCache.getFileDescriptor(filePath); - const hashOfConfig = hashOfConfigFor(config); - const changed = - fileDescriptor.changed || - fileDescriptor.meta.hashOfConfig !== hashOfConfig; + const cachedResults = this.getValidCachedLintResults(filePath, config); - if (fileDescriptor.notFound) { - debug(`File not found on the file system: ${filePath}`); - return null; - } - - if (changed) { - debug(`Cache entry not found or no longer valid: ${filePath}`); - return null; - } - - const cachedResults = fileDescriptor.meta.results; - - // Just in case, not sure if this can ever happen. if (!cachedResults) { return cachedResults; } @@ -151,6 +132,43 @@ class LintResultCache { return results; } + /** + * Retrieve cached lint results for a given file path, if present in the + * cache and still valid. + * @param {string} filePath The file for which to retrieve lint results. + * @param {Config} config The config of the file. + * @returns {Object|null} The cached lint results if present in the cache + * and still valid; null otherwise. + */ + getValidCachedLintResults(filePath, config) { + /* + * Cached lint results are valid if and only if: + * 1. The file is present in the filesystem + * 2. The file has not changed since the time it was previously linted + * 3. The ESLint configuration has not changed since the time the file + * was previously linted + * If any of these are not true, we will not reuse the lint results. + */ + const fileDescriptor = this.fileEntryCache.getFileDescriptor(filePath); + + if (fileDescriptor.notFound) { + debug(`File not found on the file system: ${filePath}`); + return null; + } + + const hashOfConfig = hashOfConfigFor(config); + const changed = + fileDescriptor.changed || + fileDescriptor.meta.hashOfConfig !== hashOfConfig; + + if (changed) { + debug(`Cache entry not found or no longer valid: ${filePath}`); + return null; + } + + return fileDescriptor.meta.results; + } + /** * Set the cached lint results for a given file path, after removing any * information that will be both unnecessary and difficult to serialize. @@ -158,7 +176,7 @@ class LintResultCache { * applied), to prevent potentially incorrect results if fixes are not * written to disk. * @param {string} filePath The file for which to set lint results. - * @param {ConfigArray} config The config of the file. + * @param {Config} config The config of the file. * @param {Object} result The lint result to be set for the file. * @returns {void} */ diff --git a/lib/eslint/eslint-helpers.js b/lib/eslint/eslint-helpers.js index 0e89969b228b..be3b68cf9c0b 100644 --- a/lib/eslint/eslint-helpers.js +++ b/lib/eslint/eslint-helpers.js @@ -29,6 +29,7 @@ const createDebug = require("debug"); const Minimatch = minimatch.Minimatch; const MINIMATCH_OPTIONS = { dot: true }; +const hrtimeBigint = process.hrtime.bigint; //----------------------------------------------------------------------------- // Types @@ -55,13 +56,13 @@ const MINIMATCH_OPTIONS = { dot: true }; */ //------------------------------------------------------------------------------ -// Internal Helpers +// Debug Helpers //------------------------------------------------------------------------------ -const hrtimeBigint = process.hrtime.bigint; - +// Add %t formatter to print bigint nanosecond times in milliseconds. createDebug.formatters.t = timeDiff => `${(timeDiff + 500_000n) / 1_000_000n} ms`; + const debug = createDebug( `eslint:eslint-helpers${isMainThread ? "" : `:thread-${threadId}`}`, ); @@ -1437,6 +1438,8 @@ function createConfigLoader( //----------------------------------------------------------------------------- module.exports = { + createDebug, + findFiles, isNonEmptyString, diff --git a/lib/eslint/eslint.js b/lib/eslint/eslint.js index 67aebfac01aa..e15ba2c22e4d 100644 --- a/lib/eslint/eslint.js +++ b/lib/eslint/eslint.js @@ -19,6 +19,8 @@ const { version } = require("../../package.json"); const { defaultConfig } = require("../config/default-config"); const { + createDebug, + findFiles, getCacheFile, @@ -51,11 +53,6 @@ const { } = require("../shared/naming.js"); const { resolve } = require("../shared/relative-module-resolver.js"); -/* - * This is necessary to allow overwriting writeFile for testing purposes. - * We can just use fs/promises once we drop Node.js 12 support. - */ - //------------------------------------------------------------------------------ // Typedefs //------------------------------------------------------------------------------ @@ -106,7 +103,9 @@ const { resolve } = require("../shared/relative-module-resolver.js"); // Helpers //------------------------------------------------------------------------------ -const debug = require("debug")("eslint:eslint"); +const hrtimeBigint = process.hrtime.bigint; + +const debug = createDebug("eslint:eslint"); const privateMembers = new WeakMap(); const removedFormatters = new Set([ "checkstyle", @@ -279,36 +278,155 @@ function createExtraneousResultsError(cause) { * Maximum number of files assumed to be best handled by one worker thread. * This value is a heuristic estimation that can be adjusted if required. */ -const AUTO_FILES_PER_WORKER = 35; +const AUTO_FILES_PER_WORKER = 50; + +/** + * Calculates the number of worker threads to run for "auto" concurrency depending on the number of + * files that need to be processed. + * + * The number of worker threads is calculated as the number of files that need to be processed + * (`processableFileCount`) divided by the number of files assumed to be best handled by one worker + * thread (`AUTO_FILES_PER_WORKER`), rounded up to the next integer. + * Two adjustments are made to this calculation: first, the number of workers is capped at half the + * number of available CPU cores (`maxWorkers`); second, a value of 1 is converted to 0. + * The following table shows the relationship between the number of files to be processed and the + * number of workers: + * + * Files to be processed | Workers + * -------------------------------------------------------------------|----------------- + * 0 | 0 + * 1, 2, …, AUTO_FILES_PER_WORKER | 0 (there's no 1) + * AUTO_FILES_PER_WORKER + 1, …, AUTO_FILES_PER_WORKER * 2 | 2 + * AUTO_FILES_PER_WORKER * 2 + 1, …, AUTO_FILES_PER_WORKER * 3 | 3 + * ⋯ | ⋯ + * AUTO_FILES_PER_WORKER * (𝑛 - 1) + 1, …, AUTO_FILES_PER_WORKER * 𝑛 | 𝑛 + * ⋯ | ⋯ + * AUTO_FILES_PER_WORKER * (maxWorkers - 1) + 1, … | maxWorkers + * + * The number of files to be processed should be determined by the calling function. + * @param {number} processableFileCount The number of files that need to be processed. + * @param {number} maxWorkers The maximum number of workers to run. + * @returns {number} The number of worker threads to run. + */ +function getWorkerCountFor(processableFileCount, maxWorkers) { + let workerCount = Math.ceil(processableFileCount / AUTO_FILES_PER_WORKER); + if (workerCount > maxWorkers) { + workerCount = maxWorkers; + } + if (workerCount <= 1) { + workerCount = 0; + } + return workerCount; +} + +/** + * Returns true if a file has no valid cached results or if it needs to be reprocessed because there are violations that may need fixing. + * This function will access the filesystem. + * @param {LintResultCache} lintResultCache The lint result cache. + * @param {boolean} fix The fix option. + * @param {string} filePath The file for which to retrieve lint results. + * @param {Config} config The config of the file. + * @returns {boolean} True if the file needs to be reprocessed. + */ +function needsReprocessing(lintResultCache, fix, filePath, config) { + const results = lintResultCache.getValidCachedLintResults(filePath, config); + + // This reflects the reprocessing logic of the `lintFile` helper function. + return !results || (fix && results.messages && results.messages.length > 0); +} + +/** + * Calculates the number of worker threads to run for "auto" concurrency. + * + * The number of worker threads depends on the number files that need to be processed. + * Typically, this includes all non-ignored files. + * In a cached run with "metadata" strategy, files with a valid cached result aren't counted. + * @param {ESLint} eslint ESLint instance. + * @param {string[]} filePaths File paths to lint. + * @param {number} maxWorkers The maximum number of workers to run. + * @returns {number} The number of worker threads to run for "auto" concurrency. + */ +function calculateAutoWorkerCount(eslint, filePaths, maxWorkers) { + const startTime = hrtimeBigint(); + const { + configLoader, + lintResultCache, + options: { cacheStrategy, fix }, + } = privateMembers.get(eslint); + /** True if cache is not used or if strategy is "content". */ + const countAllMatched = !lintResultCache || cacheStrategy === "content"; + + let processableFileCount = 0; + let remainingFiles = filePaths.length; + + /** The number of workers if none of the remaining files were to be counted. */ + let lowWorkerCount = 0; + + /* + * Rather than counting all files to be processed in advance, we stop iterating as soon as we reach + * a point where adding more files doesn't change the number of workers anymore. + */ + for (const filePath of filePaths) { + /** The number of workers if all of the remaining files were to be counted. */ + const highWorkerCount = getWorkerCountFor( + processableFileCount + remainingFiles, + maxWorkers, + ); + if (lowWorkerCount >= highWorkerCount) { + // The highest possible number of workers has been reached, so stop counting. + break; + } + remainingFiles--; + const configs = configLoader.getCachedConfigArrayForFile(filePath); + const config = configs.getConfig(filePath); + if (!config) { + // file is ignored + continue; + } + if ( + countAllMatched || + needsReprocessing(lintResultCache, fix, filePath, config) + ) { + processableFileCount++; + lowWorkerCount = getWorkerCountFor( + processableFileCount, + maxWorkers, + ); + } + } + debug( + "%d file(s) to process counted in %t", + processableFileCount, + hrtimeBigint() - startTime, + ); + return lowWorkerCount; +} /** * Calculates the number of workers to run based on the concurrency setting and the number of files to lint. - * @param {number | "auto" | "off"} concurrency The normalized concurrency setting. - * @param {number} fileCount The number of files to be linted. + * @param {ESLint} eslint The ESLint instance. + * @param {string[]} filePaths File paths to lint. * @param {{ availableParallelism: () => number }} [os] Node.js `os` module, or a mock for testing. * @returns {number} The effective number of worker threads to be started. A value of zero disables multithread linting. */ function calculateWorkerCount( - concurrency, - fileCount, + eslint, + filePaths, { availableParallelism } = os, ) { - let workerCount; + const { concurrency } = privateMembers.get(eslint).options; switch (concurrency) { case "off": return 0; case "auto": { - workerCount = Math.min( - availableParallelism() >> 1, - Math.ceil(fileCount / AUTO_FILES_PER_WORKER), - ); - break; + const maxWorkers = availableParallelism() >> 1; + return calculateAutoWorkerCount(eslint, filePaths, maxWorkers); + } + default: { + const workerCount = Math.min(concurrency, filePaths.length); + return workerCount > 1 ? workerCount : 0; } - default: - workerCount = Math.min(concurrency, fileCount); - break; } - return workerCount > 1 ? workerCount : 0; } // Used internally. Do not expose. @@ -360,7 +478,6 @@ async function runWorkers( }, }; - const hrtimeBigint = process.hrtime.bigint; let worstNetLintingRatio = 1; /** @@ -859,16 +976,11 @@ class ESLint { debug(`Using file patterns: ${normalizedPatterns}`); - const { - cache, - concurrency, - cwd, - globInputPaths, - errorOnUnmatchedPattern, - } = eslintOptions; + const { concurrency, cwd, globInputPaths, errorOnUnmatchedPattern } = + eslintOptions; // Delete cache file; should this be done here? - if (!cache && cacheFilePath) { + if (!lintResultCache && cacheFilePath) { debug(`Deleting cache file at ${cacheFilePath}`); try { @@ -882,7 +994,7 @@ class ESLint { } } - const startTime = Date.now(); + const startTime = hrtimeBigint(); const filePaths = await findFiles({ patterns: normalizedPatterns, cwd, @@ -891,7 +1003,9 @@ class ESLint { errorOnUnmatchedPattern, }); debug( - `${filePaths.length} files found in: ${Date.now() - startTime}ms`, + "%d file(s) found in %t", + filePaths.length, + hrtimeBigint() - startTime, ); /** @type {LintResult[]} */ @@ -899,8 +1013,8 @@ class ESLint { // The value of `module.exports.calculateWorkerCount` can be overridden in tests. const workerCount = module.exports.calculateWorkerCount( - concurrency, - filePaths.length, + this, + filePaths, ); if (workerCount) { debug(`Linting using ${workerCount} worker thread(s).`); @@ -999,7 +1113,7 @@ class ESLint { stats, } = eslintOptions; const results = []; - const startTime = Date.now(); + const startTime = hrtimeBigint(); const fixTypesSet = fixTypes ? new Set(fixTypes) : null; const resolvedFilename = path.resolve( cwd, @@ -1044,7 +1158,7 @@ class ESLint { ); } - debug(`Linting complete in: ${Date.now() - startTime}ms`); + debug("Linting complete in %t", hrtimeBigint() - startTime); return processLintReport(this, results); } diff --git a/lib/eslint/worker.js b/lib/eslint/worker.js index 78e43c90632a..2741d752ba3d 100644 --- a/lib/eslint/worker.js +++ b/lib/eslint/worker.js @@ -17,9 +17,9 @@ require("node:module").enableCompileCache?.(); //------------------------------------------------------------------------------ const { parentPort, threadId, workerData } = require("node:worker_threads"); -const createDebug = require("debug"); const { createConfigLoader, + createDebug, createDefaultConfigs, createLinter, createLintResultCache, @@ -52,8 +52,6 @@ const depsLoadedTime = hrtimeBigint(); //------------------------------------------------------------------------------ const debug = createDebug(`eslint:worker:thread-${threadId}`); -createDebug.formatters.t = timeDiff => - `${(timeDiff + 500_000n) / 1_000_000n} ms`; //------------------------------------------------------------------------------ // Main diff --git a/tests/lib/cli.js b/tests/lib/cli.js index be82e745544c..551ad3c492d0 100644 --- a/tests/lib/cli.js +++ b/tests/lib/cli.js @@ -25,7 +25,7 @@ const assert = require("chai").assert, sh = require("shelljs"), { WarningService } = require("../../lib/services/warning-service"); -const proxyquire = require("proxyquire").noCallThru().noPreserveCache(); +const proxyquire = require("proxyquire").noCallThru(); //------------------------------------------------------------------------------ // Tests diff --git a/tests/lib/eslint/eslint.js b/tests/lib/eslint/eslint.js index 752812fcc6a8..4eae4ac54566 100644 --- a/tests/lib/eslint/eslint.js +++ b/tests/lib/eslint/eslint.js @@ -26,11 +26,14 @@ const { setEnvironmentData } = require("node:worker_threads"); const escapeStringRegExp = require("escape-string-regexp"); const fCache = require("file-entry-cache"); const sinon = require("sinon"); -const proxyquire = require("proxyquire").noCallThru().noPreserveCache(); +const proxyquire = require("proxyquire").noCallThru(); const shell = require("shelljs"); const hash = require("../../../lib/cli-engine/hash"); const { unIndent, createCustomTeardown } = require("../../_utils"); -const { shouldUseFlatConfig } = require("../../../lib/eslint/eslint"); +const { + calculateWorkerCount, + shouldUseFlatConfig, +} = require("../../../lib/eslint/eslint"); const { defaultConfig } = require("../../../lib/config/default-config"); const coreRules = require("../../../lib/rules"); const espree = require("espree"); @@ -13470,6 +13473,227 @@ describe("ESLint", () => { ); }); }); + + describe("calculateWorkerCount", () => { + // This is the same value as in lib/eslint/eslint.js. + const AUTO_FILES_PER_WORKER = 50; + + /** + * Defines a test for `calculateWorkerCount` with the given parameters. + * @param {number | "auto" | "off"} concurrency The normalized concurrency setting. + * @param {number} fileCount The number of files to lint. An integer greater than 0. + * @param {number} availableCores The number of available cores. + * @param {number} expectedWorkerCount The expected return value of `calculateWorkerCount`. + * @returns {Mocha.TestFunction} A Mocha test function. + */ + function testCalculateWorkerCount( + concurrency, + fileCount, + availableCores, + expectedWorkerCount, + ) { + return it(`should return ${expectedWorkerCount} when concurrency is ${concurrency} with ${fileCount} file(s) and ${availableCores} available core(s)`, async () => { + const cwd = getFixturePath("files"); + const eslint = new ESLint({ + concurrency, + cwd, + flags, + overrideConfigFile: true, + }); + // Make sure the config array for `cwd` is loaded. + await eslint.lintText(""); + + const filePath = path.join(cwd, "foo.js"); + + const actualWorkerCount = calculateWorkerCount( + eslint, + Array(fileCount).fill(filePath), + { availableParallelism: () => availableCores }, + ); + assert.strictEqual(actualWorkerCount, expectedWorkerCount); + }); + } + + // Returns numeric `concurrency` if the number of files is not less + testCalculateWorkerCount(1, 1, 1, 0); // 1 mapped to 0 + testCalculateWorkerCount(1, 10, 8, 0); // 1 mapped to 0 + testCalculateWorkerCount(3, 10, 8, 3); + testCalculateWorkerCount(42, 42, 4, 42); + + // Returns the number of files if `concurrency` is larger + testCalculateWorkerCount(42, 1, 8, 0); // 1 mapped to 0 + testCalculateWorkerCount(4, 3, 8, 3); + + // Returns 0 if `concurrency` is "off" + testCalculateWorkerCount("off", 1000, 8, 0); + + // Returns 0 if `concurrency` is "auto" and there are only a few files to lint + testCalculateWorkerCount("auto", 15, 8, 0); + + // Returns 0 if `concurrency` is "auto" and there are less that four available cores + testCalculateWorkerCount("auto", 42, 1, 0); + testCalculateWorkerCount("auto", 1000, 2, 0); + testCalculateWorkerCount("auto", 123, 0, 0); + + // Returns half the number of available cores if `concurrency` is "auto" and there are enough files to lint + testCalculateWorkerCount( + "auto", + AUTO_FILES_PER_WORKER * 3 + 1, + 8, + 4, + ); + + // Returns less than half the number of available cores if `concurrency` is "auto" and there are not enough files to lint + testCalculateWorkerCount("auto", AUTO_FILES_PER_WORKER * 3, 8, 3); + + it('should not consider ignored files when `concurrency` is "auto"', async () => { + const cwd = getFixturePath("files"); + const eslint = new ESLint({ + concurrency: "auto", + cwd, + flags, + overrideConfigFile: true, + }); + // Make sure the config array for `cwd` is loaded. + await eslint.lintText(""); + + const filePath = path.join(cwd, "foo.js2"); // file ignored by default + + // No multitreading expected because all files are ignored. + const actualWorkerCount = calculateWorkerCount( + eslint, + Array(AUTO_FILES_PER_WORKER * 2).fill(filePath), + { availableParallelism: () => 4 }, + ); + assert.strictEqual(actualWorkerCount, 0); + }); + + describe('when `concurrency` is "auto" with caching enabled', () => { + let cacheLocation; + + beforeEach(async () => { + cacheLocation = await fsp.mkdtemp( + path.join(os.tmpdir(), "eslint-cache-"), + ); + }); + + afterEach(async () => { + if (cacheLocation) { + await fsp.rm(cacheLocation, { + recursive: true, + force: true, + }); + cacheLocation = void 0; + } + }); + + it('should not consider unchanged cached files with cache strategy "metadata"', async () => { + const cwd = getFixturePath("files"); + const eslint = new ESLint({ + cache: true, + cacheLocation, + cacheStrategy: "metadata", + concurrency: "auto", + cwd, + flags, + overrideConfigFile: true, + }); + // Make sure the config array for `cwd` is loaded and the cache is created. + const filePath = path.join(cwd, "foo.js"); + await eslint.lintFiles([filePath]); + + // No multitreading expected because files are cached. + const actualWorkerCount = calculateWorkerCount( + eslint, + Array(AUTO_FILES_PER_WORKER * 2).fill(filePath), + { availableParallelism: () => 4 }, + ); + assert.strictEqual(actualWorkerCount, 0); + }); + + it('should consider unchanged cached files with cache strategy "content"', async () => { + const cwd = getFixturePath("files"); + const eslint = new ESLint({ + cache: true, + cacheLocation, + cacheStrategy: "content", + concurrency: "auto", + cwd, + flags, + overrideConfigFile: true, + }); + // Make sure the config array for `cwd` is loaded and the cache is created. + const filePath = path.join(cwd, "foo.js"); + await eslint.lintFiles([filePath]); + + // Multitreading expected because files are cached but `cacheStrategy` is "content". + const actualWorkerCount = calculateWorkerCount( + eslint, + Array(AUTO_FILES_PER_WORKER * 2).fill(filePath), + { availableParallelism: () => 4 }, + ); + assert.strictEqual(actualWorkerCount, 2); + }); + + it('should consider uncached files with cache strategy "metadata"', async () => { + const cwd = getFixturePath("files"); + const eslint = new ESLint({ + cache: true, + cacheLocation, + cacheStrategy: "metadata", + concurrency: "auto", + cwd, + flags, + overrideConfigFile: true, + }); + // Make sure the config array for `cwd` is loaded. + await eslint.lintText(""); + + const filePath = path.join(cwd, "foo.js"); + + // Multitreading expected because files are not cached. + const actualWorkerCount = calculateWorkerCount( + eslint, + Array(AUTO_FILES_PER_WORKER * 2).fill(filePath), + { availableParallelism: () => 4 }, + ); + assert.strictEqual(actualWorkerCount, 2); + }); + + it('should consider unchanged cached files with violations with cache strategy "metadata" and autofix enabled', async () => { + const cwd = getFixturePath(); + const eslintOptions = { + baseConfig: { rules: { "unicode-bom": "error" } }, + cache: true, + cacheLocation, + cacheStrategy: "metadata", + concurrency: "auto", + cwd, + flags, + overrideConfigFile: true, + }; + const eslint = new ESLint(eslintOptions); + // Make sure the cache is created. + const filePath = path.join(cwd, "utf8-bom.js"); + await eslint.lintFiles([filePath]); + + const eslintWithFix = new ESLint({ + ...eslintOptions, + fix: true, + }); + // Make sure the config array for `cwd` is loaded. + await eslintWithFix.lintText(""); + + // Multitreading expected because files must be reprocessed due to autofix. + const actualWorkerCount = calculateWorkerCount( + eslintWithFix, + Array(AUTO_FILES_PER_WORKER * 2).fill(filePath), + { availableParallelism: () => 4 }, + ); + assert.strictEqual(actualWorkerCount, 2); + }); + }); + }); }); describe("shouldUseFlatConfig", () => { @@ -15877,56 +16101,4 @@ describe("ESLint", () => { ); }); }); - - describe("caclulateWorkerCount", () => { - const { calculateWorkerCount } = require("../../../lib/eslint/eslint"); - - /** - * Defines a test for `calculateWorkerCount` with the given parameters. - * @param {number | "auto" | "off"} concurrency The normalized concurrency setting. - * @param {number} fileCount The number of files to lint. An integer greater than 0. - * @param {number} availableCores The number of available cores. - * @param {number} expectedWorkerCount The expected return value of `calculateWorkerCount`. - * @returns {Mocha.TestFunction} A Mocha test function. - */ - function testCalculateWorkerCount( - concurrency, - fileCount, - availableCores, - expectedWorkerCount, - ) { - return it(`should return ${expectedWorkerCount} when concurrency is ${concurrency} with ${fileCount} file(s) and ${availableCores} available core(s)`, () => { - const actualWorkerCount = calculateWorkerCount( - concurrency, - fileCount, - { availableParallelism: () => availableCores }, - ); - assert.strictEqual(actualWorkerCount, expectedWorkerCount); - }); - } - - // Returns numeric `concurrency` if the number of files is not less - testCalculateWorkerCount(1, 1, 1, 0); // 1 mapped to 0 - testCalculateWorkerCount(1, 10, 8, 0); // 1 mapped to 0 - testCalculateWorkerCount(3, 10, 8, 3); - testCalculateWorkerCount(42, 42, 4, 42); - - // Returns the number of files if `concurrency` is larger - testCalculateWorkerCount(42, 1, 8, 0); // 1 mapped to 0 - testCalculateWorkerCount(4, 3, 8, 3); - - // Returns 0 if concurrency is "off" - testCalculateWorkerCount("off", 1000, 8, 0); - - // Returns 0 if concurrency is "auto" and there are only a few files to lint - testCalculateWorkerCount("auto", 15, 8, 0); - - // Returns 0 if concurrency is "auto" and there are less that four available cores - testCalculateWorkerCount("auto", 42, 1, 0); - testCalculateWorkerCount("auto", 1000, 2, 0); - testCalculateWorkerCount("auto", 123, 0, 0); - - // Returns half the number of available cores if concurrency is "auto" and there are many files to lint - testCalculateWorkerCount("auto", 1000, 8, 4); - }); }); From bb995665e32b3a958e78006c9fd75744c5604f1b Mon Sep 17 00:00:00 2001 From: Pixel998 Date: Tue, 23 Sep 2025 05:44:06 +0300 Subject: [PATCH 124/165] ci: pin `jiti` to version 2.5.1 (#20151) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ccce3a62ccce..b6288dc5b7b5 100644 --- a/package.json +++ b/package.json @@ -173,7 +173,7 @@ "globals": "^16.2.0", "got": "^11.8.3", "gray-matter": "^4.0.3", - "jiti": "^2.5.1", + "jiti": "2.5.1", "jiti-v2.0": "npm:jiti@2.0.x", "jiti-v2.1": "npm:jiti@2.1.x", "knip": "^5.60.2", From 0cb5897e24059bacadb8d2e6458184904759fda1 Mon Sep 17 00:00:00 2001 From: Milos Djermanovic Date: Tue, 23 Sep 2025 05:41:57 +0200 Subject: [PATCH 125/165] test: remove tmp dir created for circular fixes in multithread mode test (#20146) --- tests/bin/eslint.js | 61 +++++++++++++++++++++++++++++++-------------- 1 file changed, 42 insertions(+), 19 deletions(-) diff --git a/tests/bin/eslint.js b/tests/bin/eslint.js index fc2e0d90e45d..9536b2dadbff 100644 --- a/tests/bin/eslint.js +++ b/tests/bin/eslint.js @@ -1410,11 +1410,27 @@ describe("bin/eslint.js", () => { return Promise.all([exitCodeAssertion, outputAssertion]); }); - it("should warn exactly once for a file with circular fixes", async () => { - const cwd = fs.mkdtempSync( - path.join(os.tmpdir(), "eslint-circular-fixes-"), - ); - const configSrc = ` + describe("with circular fixes", () => { + let cwd; + + beforeEach(() => { + cwd = fs.mkdtempSync( + path.join(os.tmpdir(), "eslint-circular-fixes-"), + ); + }); + + afterEach(() => { + if (cwd) { + fs.rmSync(cwd, { + recursive: true, + force: true, + }); + cwd = void 0; + } + }); + + it("should warn exactly once for a file with circular fixes", async () => { + const configSrc = ` export default { plugins: { "circular-fixes": { @@ -1470,22 +1486,29 @@ describe("bin/eslint.js", () => { }, }; `; - fs.writeFileSync(path.join(cwd, "file.js"), "foo"); - fs.writeFileSync(path.join(cwd, "eslint.config.mjs"), configSrc); - const child = runESLint(["--concurrency=2", "--fix", "file.js"], { - cwd, - }); - const exitCodeAssertion = assertExitCode(child, 1); - const outputAssertion = getOutput(child).then(output => { - // The warning message should appear exactly once in stderr - assert.strictEqual( - [...output.stderr.matchAll("Circular fixes detected")] - .length, - 1, + fs.writeFileSync(path.join(cwd, "file.js"), "foo"); + fs.writeFileSync( + path.join(cwd, "eslint.config.mjs"), + configSrc, ); - }); + const child = runESLint( + ["--concurrency=2", "--fix", "file.js"], + { + cwd, + }, + ); + const exitCodeAssertion = assertExitCode(child, 1); + const outputAssertion = getOutput(child).then(output => { + // The warning message should appear exactly once in stderr + assert.strictEqual( + [...output.stderr.matchAll("Circular fixes detected")] + .length, + 1, + ); + }); - return Promise.all([exitCodeAssertion, outputAssertion]); + return Promise.all([exitCodeAssertion, outputAssertion]); + }); }); }); From 1603ae1526d9b6f557c7d5534a4f40f46842edd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Tue, 23 Sep 2025 18:21:11 +0900 Subject: [PATCH 126/165] docs: update references from `master` to `main` (#20153) --- docs/src/_data/further_reading_links.json | 2 +- docs/src/contribute/governance.md | 6 +++--- docs/src/rules/no-restricted-modules.md | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/src/_data/further_reading_links.json b/docs/src/_data/further_reading_links.json index c9bb798c2ded..71f868554292 100644 --- a/docs/src/_data/further_reading_links.json +++ b/docs/src/_data/further_reading_links.json @@ -832,4 +832,4 @@ "title": "Error types that support `cause`", "description": "Interface declarations for all the Error types in JavaScript that support passing a `cause` property." } -} +} \ No newline at end of file diff --git a/docs/src/contribute/governance.md b/docs/src/contribute/governance.md index 9f206ed1f6e2..c57dbf359088 100644 --- a/docs/src/contribute/governance.md +++ b/docs/src/contribute/governance.md @@ -35,7 +35,7 @@ Website Team Members: - Are expected to work at least two hours total per week on ESLint. - May invoice for the hours they spend working on ESLint at a rate of $50 USD per hour. - Are expected to check in on the `#team` Discord channel once per week day (excluding holidays and other time off) for team updates. -- Are expected to work on public branches of the source repository and submit pull requests from that branch to the master branch. +- Are expected to work on public branches of the source repository and submit pull requests from that branch to the main branch. - Are expected to delete their public branches when they are no longer necessary. - Must submit pull requests for all changes. - Have their work reviewed by Reviewers and TSC members before acceptance into the repository. @@ -63,7 +63,7 @@ Committers: - Are expected to work at least two hours total per week on ESLint. - May invoice for the hours they spend working on ESLint at a rate of $50 USD per hour. - Are expected to check in on the `#team` Discord channel once per week day (excluding holidays and other time off) for team updates. -- Are expected to work on public branches of the source repository and submit pull requests from that branch to the master branch. +- Are expected to work on public branches of the source repository and submit pull requests from that branch to the main branch. - Are expected to delete their public branches when they are no longer necessary. - Are expected to provide feedback on issues in the "Feedback Needed" column of the [Triage Board](https://github.com/orgs/eslint/projects/3/views/1). - Are expected to work on at least one issue in the "Ready to Implement" column of the [Triage Board](https://github.com/orgs/eslint/projects/3/views/1) that they didn't create each month. @@ -186,6 +186,6 @@ or else the discussion will continue. Simple majority wins. --- -This work is a derivative of [YUI Contributor Model](https://github.com/yui/yui3/wiki/Contributor-Model) and the [Node.js Project Governance Model](https://github.com/nodejs/node/blob/master/GOVERNANCE.md). +This work is a derivative of [YUI Contributor Model](https://github.com/yui/yui3/wiki/Contributor-Model) and the [Node.js Project Governance Model](https://github.com/nodejs/node/blob/main/GOVERNANCE.md). This work is licensed under a [Creative Commons Attribution-ShareAlike 2.0 UK: England & Wales License](https://creativecommons.org/licenses/by-sa/2.0/uk/). diff --git a/docs/src/rules/no-restricted-modules.md b/docs/src/rules/no-restricted-modules.md index c1f58e14116d..46f6585826fb 100644 --- a/docs/src/rules/no-restricted-modules.md +++ b/docs/src/rules/no-restricted-modules.md @@ -58,7 +58,7 @@ or like this: The custom message will be appended to the default error message. Please note that you may not specify custom error messages for restricted patterns as a particular module may match more than one pattern. -To restrict the use of all Node.js core modules (via ): +To restrict the use of all Node.js core modules (via ): ```json { From 347906d627c53bf45d63ba831d2fd2b83fb0a749 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 23 Sep 2025 23:45:01 +0530 Subject: [PATCH 127/165] chore: update eslint (#20149) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index b6288dc5b7b5..82accc3b1133 100644 --- a/package.json +++ b/package.json @@ -107,11 +107,11 @@ "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.0", - "@eslint/config-helpers": "^0.3.1", - "@eslint/core": "^0.15.2", + "@eslint/config-helpers": "^0.4.0", + "@eslint/core": "^0.16.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.36.0", - "@eslint/plugin-kit": "^0.3.5", + "@eslint/plugin-kit": "^0.4.0", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", From 861c6da2bd2796414e6eed782155ec34e2ed6344 Mon Sep 17 00:00:00 2001 From: Pixel998 Date: Wed, 24 Sep 2025 00:24:37 +0300 Subject: [PATCH 128/165] fix: correct `ESLint` typings (#20122) * fix: correct `ESLint` typings * add tests * clarify `DeprecatedRuleUse.info` behavior --- lib/types/index.d.ts | 11 ++++++----- tests/lib/types/types.test.ts | 6 ++++++ 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/lib/types/index.d.ts b/lib/types/index.d.ts index 6dc3e6808104..b67d00fc9b53 100644 --- a/lib/types/index.d.ts +++ b/lib/types/index.d.ts @@ -1963,7 +1963,7 @@ export class ESLint { calculateConfigForFile(filePath: string): Promise; - findConfigFile(): Promise; + findConfigFile(filePath?: string): Promise; isPathIgnored(filePath: string): Promise; @@ -2045,7 +2045,7 @@ export namespace ESLint { // Autofix fix?: boolean | ((message: Linter.LintMessage) => boolean) | undefined; - fixTypes?: FixType[] | undefined; + fixTypes?: FixType[] | null | undefined; // Cache-related cache?: boolean | undefined; @@ -2079,7 +2079,7 @@ export namespace ESLint { // Autofix fix?: boolean | ((message: Linter.LintMessage) => boolean) | undefined; - fixTypes?: FixType[] | undefined; + fixTypes?: FixType[] | null | undefined; // Cache-related cache?: boolean | undefined; @@ -2168,9 +2168,10 @@ export namespace ESLint { /** * The raw deprecated info provided by the rule. - * Unset if the rule's `meta.deprecated` property is a boolean. + * - Undefined if the rule's `meta.deprecated` property is a boolean. + * - Unset when using the legacy eslintrc configuration. */ - info?: DeprecatedInfo; + info?: DeprecatedInfo | undefined; } /** diff --git a/tests/lib/types/types.test.ts b/tests/lib/types/types.test.ts index 95be58f65437..e343afb1d90b 100644 --- a/tests/lib/types/types.test.ts +++ b/tests/lib/types/types.test.ts @@ -1507,6 +1507,7 @@ linterWithEslintrcConfig.getRules(); eslint = new ESLint({ fix: true }); eslint = new ESLint({ fix: message => false }); eslint = new ESLint({ fixTypes: ["directive", "problem"] }); + eslint = new ESLint({ fixTypes: null }); eslint = new ESLint({ flags: ["foo", "bar"] }); eslint = new ESLint({ globInputPaths: true }); eslint = new ESLint({ ignore: true }); @@ -1575,6 +1576,9 @@ linterWithEslintrcConfig.getRules(); eslint.calculateConfigForFile("./config.json"); + eslint.findConfigFile("src/index.js"); + eslint.findConfigFile(); + eslint.isPathIgnored("./dist/index.js"); let formatterPromise: Promise; @@ -1655,6 +1659,7 @@ linterWithEslintrcConfig.getRules(); eslint = new LegacyESLint({ fix: true }); eslint = new LegacyESLint({ fix: message => false }); eslint = new LegacyESLint({ fixTypes: ["directive", "problem"] }); + eslint = new LegacyESLint({ fixTypes: null }); eslint = new LegacyESLint({ flags: ["foo", "bar"] }); eslint = new LegacyESLint({ globInputPaths: true }); eslint = new LegacyESLint({ ignore: true }); @@ -1824,6 +1829,7 @@ for (const result of results) { const deprecatedRule = result.usedDeprecatedRules[0]; deprecatedRule.ruleId = "foo"; deprecatedRule.replacedBy = ["bar"]; + deprecatedRule.info = undefined; deprecatedRule.info = { message: "use bar instead", replacedBy: [ From 90a71bf5024a86fc232cd2e05f96811e2a18fd0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Wed, 24 Sep 2025 17:39:40 +0900 Subject: [PATCH 129/165] docs: update `README` files to add badge and instructions (#20115) * docs: update `README` files to enhance badge visibility and add more instructions * wip * wip: rename to x --- README.md | 2 +- packages/eslint-config-eslint/README.md | 39 ++++++++++++++++++++----- packages/js/README.md | 36 ++++++++++++++++++++++- 3 files changed, 67 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index e68b714523db..b3fc161da4d8 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ [Contribute to ESLint](https://eslint.org/docs/latest/contribute) | [Report Bugs](https://eslint.org/docs/latest/contribute/report-bugs) | [Code of Conduct](https://eslint.org/conduct) | -[Twitter](https://twitter.com/geteslint) | +[X](https://x.com/geteslint) | [Discord](https://eslint.org/chat) | [Mastodon](https://fosstodon.org/@eslint) | [Bluesky](https://bsky.app/profile/eslint.org) diff --git a/packages/eslint-config-eslint/README.md b/packages/eslint-config-eslint/README.md index 9272f5b9cac1..54f4550fa6a5 100644 --- a/packages/eslint-config-eslint/README.md +++ b/packages/eslint-config-eslint/README.md @@ -1,23 +1,49 @@ -[![npm version][npm-image]][npm-url] +[![npm version](https://img.shields.io/npm/v/eslint-config-eslint.svg)](https://www.npmjs.com/package/eslint-config-eslint) +[![Downloads](https://img.shields.io/npm/dm/eslint-config-eslint.svg)](https://www.npmjs.com/package/eslint-config-eslint) +[![Build Status](https://github.com/eslint/eslint/workflows/CI/badge.svg)](https://github.com/eslint/eslint/actions) +
+[![Open Collective Backers](https://img.shields.io/opencollective/backers/eslint)](https://opencollective.com/eslint) +[![Open Collective Sponsors](https://img.shields.io/opencollective/sponsors/eslint)](https://opencollective.com/eslint) # ESLint Configuration -[Website](https://eslint.org) | [Configure ESLint](https://eslint.org/docs/latest/use/configure) | [Rules](https://eslint.org/docs/rules/) | [Contributing](https://eslint.org/docs/latest/contribute) | [Twitter](https://twitter.com/geteslint) | [Discord](https://eslint.org/chat) | [Mastodon](https://fosstodon.org/@eslint) +[Website](https://eslint.org) | +[Configure ESLint](https://eslint.org/docs/latest/use/configure) | +[Rules](https://eslint.org/docs/rules/) | +[Contribute to ESLint](https://eslint.org/docs/latest/contribute) | +[Report Bugs](https://eslint.org/docs/latest/contribute/report-bugs) | +[Code of Conduct](https://eslint.org/conduct) | +[X](https://x.com/geteslint) | +[Discord](https://eslint.org/chat) | +[Mastodon](https://fosstodon.org/@eslint) | +[Bluesky](https://bsky.app/profile/eslint.org) Contains the ESLint configuration used for projects maintained by the ESLint team. ## Installation -You can install ESLint using npm: +You can install ESLint using npm or other package managers: ```shell -npm install eslint --save-dev +npm install eslint -D +# or +yarn add eslint -D +# or +pnpm install eslint -D +# or +bun add eslint -D ``` Then install this configuration: ```shell -npm install eslint-config-eslint --save-dev +npm install eslint-config-eslint -D +# or +yarn add eslint-config-eslint -D +# or +pnpm install eslint-config-eslint -D +# or +bun add eslint-config-eslint -D ``` ## Usage @@ -87,6 +113,3 @@ export default defineConfig([eslintConfigESLint, eslintConfigESLintFormatting]); ### Where to ask for help? Open a [discussion](https://github.com/eslint/eslint/discussions) or stop by our [Discord server](https://eslint.org/chat) instead of filing an issue. - -[npm-image]: https://img.shields.io/npm/v/eslint-config-eslint.svg?style=flat-square -[npm-url]: https://www.npmjs.com/package/eslint-config-eslint diff --git a/packages/js/README.md b/packages/js/README.md index f697dda70611..eae3d22e06c6 100644 --- a/packages/js/README.md +++ b/packages/js/README.md @@ -1,8 +1,22 @@ [![npm version](https://img.shields.io/npm/v/@eslint/js.svg)](https://www.npmjs.com/package/@eslint/js) +[![Downloads](https://img.shields.io/npm/dm/@eslint/js.svg)](https://www.npmjs.com/package/@eslint/js) +[![Build Status](https://github.com/eslint/eslint/workflows/CI/badge.svg)](https://github.com/eslint/eslint/actions) +
+[![Open Collective Backers](https://img.shields.io/opencollective/backers/eslint)](https://opencollective.com/eslint) +[![Open Collective Sponsors](https://img.shields.io/opencollective/sponsors/eslint)](https://opencollective.com/eslint) # ESLint JavaScript Plugin -[Website](https://eslint.org) | [Configure ESLint](https://eslint.org/docs/latest/use/configure) | [Rules](https://eslint.org/docs/rules/) | [Contributing](https://eslint.org/docs/latest/contribute) | [Twitter](https://twitter.com/geteslint) | [Chatroom](https://eslint.org/chat) +[Website](https://eslint.org) | +[Configure ESLint](https://eslint.org/docs/latest/use/configure) | +[Rules](https://eslint.org/docs/rules/) | +[Contribute to ESLint](https://eslint.org/docs/latest/contribute) | +[Report Bugs](https://eslint.org/docs/latest/contribute/report-bugs) | +[Code of Conduct](https://eslint.org/conduct) | +[X](https://x.com/geteslint) | +[Discord](https://eslint.org/chat) | +[Mastodon](https://fosstodon.org/@eslint) | +[Bluesky](https://bsky.app/profile/eslint.org) The beginnings of separating out JavaScript-specific functionality from ESLint. @@ -13,8 +27,28 @@ Right now, this plugin contains two configurations: ## Installation +You can install ESLint using npm or other package managers: + +```shell +npm install eslint -D +# or +yarn add eslint -D +# or +pnpm install eslint -D +# or +bun add eslint -D +``` + +Then install this plugin: + ```shell npm install @eslint/js -D +# or +yarn add @eslint/js -D +# or +pnpm install @eslint/js -D +# or +bun add @eslint/js -D ``` ## Usage From e1ac05e2fae779e738f85bd47dda1cc2b7099346 Mon Sep 17 00:00:00 2001 From: Pixel998 Date: Thu, 25 Sep 2025 11:28:58 +0300 Subject: [PATCH 130/165] refactor: mark `ESLint.findConfigFile()` as `async`, add missing docs (#20157) docs: add missing docs for `ESLint.findConfigFile()` --- docs/src/integrate/nodejs-api.md | 18 +++++++++++ lib/eslint/eslint.js | 2 +- tests/lib/eslint/eslint.js | 54 ++++++++++++++++++++++++++++++++ 3 files changed, 73 insertions(+), 1 deletion(-) diff --git a/docs/src/integrate/nodejs-api.md b/docs/src/integrate/nodejs-api.md index 6c83ac557aa1..5db95824722f 100644 --- a/docs/src/integrate/nodejs-api.md +++ b/docs/src/integrate/nodejs-api.md @@ -259,6 +259,24 @@ This method calculates the configuration for a given file, which can be useful f - (`Promise`)
The promise that will be fulfilled with a configuration object. +### ◆ eslint.findConfigFile(filePath) + +```js +const configFilePath = await eslint.findConfigFile(filePath); +``` + +This method finds the configuration file that this `ESLint` instance would use based on the options passed to the constructor. + +#### Parameters + +- `filePath` (`string`)
+ Optional. The path of a file for which to find the associated config file. If omitted, ESLint determines the config file based on the current working directory of this instance. + +#### Return Value + +- (`Promise`)
+ The promise that will be fulfilled with the absolute path to the config file being used, or `undefined` when no config file is used (for example, when `overrideConfigFile: true` is set). + ### ◆ eslint.isPathIgnored(filePath) ```js diff --git a/lib/eslint/eslint.js b/lib/eslint/eslint.js index e15ba2c22e4d..7e68c8936b16 100644 --- a/lib/eslint/eslint.js +++ b/lib/eslint/eslint.js @@ -1299,7 +1299,7 @@ class ESLint { * @returns {Promise} The path to the config file being used or * `undefined` if no config file is being used. */ - findConfigFile(filePath) { + async findConfigFile(filePath) { const options = privateMembers.get(this).options; /* diff --git a/tests/lib/eslint/eslint.js b/tests/lib/eslint/eslint.js index 4eae4ac54566..4cbb4b1463bb 100644 --- a/tests/lib/eslint/eslint.js +++ b/tests/lib/eslint/eslint.js @@ -10862,6 +10862,60 @@ describe("ESLint", () => { configFilePath, ); }); + + it("should return undefined when overrideConfigFile is true even when filePath is provided", async () => { + const engine = new ESLint({ + flags, + overrideConfigFile: true, + cwd: getFixturePath("lookup-from-file"), + }); + + const filePath = path.join("subdir", "code.js"); + assert.strictEqual( + await engine.findConfigFile(filePath), + void 0, + ); + }); + + it("should return custom config file path when overrideConfigFile is a nonempty string even when filePath is provided", async () => { + const engine = new ESLint({ + flags, + overrideConfigFile: "my-config.js", + }); + + const configFilePath = path.resolve( + __dirname, + "../../../my-config.js", + ); + + assert.strictEqual( + await engine.findConfigFile("some/file.js"), + configFilePath, + ); + }); + + it("should return the config file relative to the provided filePath when specified", async () => { + const engine = new ESLint({ + flags, + cwd: getFixturePath("lookup-from-file"), + }); + + const foundConfig = await engine.findConfigFile( + path.join("subdir", "code.js"), + ); + + const expectedConfig = flags.includes( + "v10_config_lookup_from_file", + ) + ? getFixturePath( + "lookup-from-file", + "subdir", + "eslint.config.js", + ) + : getFixturePath("lookup-from-file", "eslint.config.js"); + + assert.strictEqual(foundConfig, expectedConfig); + }); }); describe("Use stats option", () => { From f81eabc5849ece98b8ca054f96b29f038a69bcf8 Mon Sep 17 00:00:00 2001 From: Nitin Kumar Date: Thu, 25 Sep 2025 19:42:26 +0530 Subject: [PATCH 131/165] feat: support TS syntax in `no-restricted-imports` (#19562) * feat: support TS syntax in `no-restricted-imports` * fix: update test cases * docs: add typescript options * chore: fix lint * test: add more * refactor: simplify code * test: cover more cases for exports * docs: udpate description * fix: cover more cases * fix: remove unused code * chore: fix formatting * fix: cover more cases * fix: handle more cases * fix: handle more cases * fix: correct false positives * docs: add more examples * chore: fix formatting * docs: apply suggestions from code review Co-authored-by: Nicholas C. Zakas * docs: udpate description * chore: fix formatting * docs: update examples * fix: correct false positives * refactor: code & types * refactor: types * test: add more cases * refactor: apply suggestions from code review Co-authored-by: Milos Djermanovic * test: cover more cases * refactor: code * fix: resolve comments * chore: fix lint * chore: fix formatting --------- Co-authored-by: Nicholas C. Zakas Co-authored-by: Milos Djermanovic --- docs/src/rules/no-restricted-imports.md | 168 +++ lib/rules/no-restricted-imports.js | 175 ++- lib/types/rules.d.ts | 2 + tests/lib/rules/no-restricted-imports.js | 1311 ++++++++++++++++++++++ 4 files changed, 1652 insertions(+), 4 deletions(-) diff --git a/docs/src/rules/no-restricted-imports.md b/docs/src/rules/no-restricted-imports.md index 507f21c4a697..86e5dc912005 100644 --- a/docs/src/rules/no-restricted-imports.md +++ b/docs/src/rules/no-restricted-imports.md @@ -282,6 +282,61 @@ import { AllowedObject } from "foo"; ::: +#### allowTypeImports (TypeScript only) + +Whether to allow [Type-Only Imports](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html#type-only-imports-and-export) for a path. This includes type-only `export` statements, as they are equivalent to re-exporting an `import`. Default: `false`. + +Examples of **incorrect** code for `allowTypeImports` in `paths`: + +::: incorrect { "sourceType": "module" } + +```ts +/*eslint no-restricted-imports: ["error", { paths: [{ + name: "import-foo", + allowTypeImports: true, + message: "Please use only type-only imports from 'import-foo'." +}]}]*/ + +import foo from 'import-foo'; +export { Foo } from 'import-foo'; +``` + +::: + +Examples of **correct** code for `allowTypeImports` in `paths`: + +::: correct { "sourceType": "module" } + +```ts +/*eslint no-restricted-imports: ["error", { paths: [{ + name: "import-foo", + allowTypeImports: true, + message: "Please use only type-only imports from 'import-foo'." +}]}]*/ + +import type foo from 'import-foo'; +export type { Foo } from 'import-foo'; + +import type foo = require("import-foo"); +``` + +::: + +::: correct { "sourceType": "module" } + +```ts +/*eslint no-restricted-imports: ["error", { paths: [{ + name: "import-foo", + importNames: ["Baz"], + allowTypeImports: true, + message: "Please use 'Baz' from 'import-foo' as a type only." +}]}]*/ + +import { Bar, type Baz } from "import-foo"; +``` + +::: + ### patterns This is also an object option whose value is an array. This option allows you to specify multiple modules to restrict using `gitignore`-style patterns or regular expressions. @@ -773,6 +828,119 @@ import { isEmpty } from 'utils/collection-utils'; ::: +#### allowTypeImports (TypeScript only) + +Whether to allow [Type-Only Imports](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html#type-only-imports-and-export) for a path. This includes type-only `export` statements, as they are equivalent to re-exporting an `import`. Default: `false`. + +```json +"no-restricted-imports": ["error", { + "patterns": [{ + "group": ["import/private/*"], + "allowTypeImports": true, + }] +}] +``` + +Examples of **incorrect** code for `allowTypeImports` in `patterns`: + +::: incorrect { "sourceType": "module" } + +```ts +/*eslint no-restricted-imports: ["error", { patterns: [{ + group: ["import/private/*"], + allowTypeImports: true, + message: "Please use only type-only imports from 'import/private/*'." +}]}]*/ + +import { foo } from 'import/private/bar'; +export { foo } from 'import/private/bar'; +``` + +::: + +Examples of **correct** code for `allowTypeImports` in `patterns`: + +::: correct { "sourceType": "module" } + +```ts +/*eslint no-restricted-imports: ["error", { patterns: [{ + group: ["import/private/*"], + allowTypeImports: true, + message: "Please use only type-only imports from 'import/private/*'." +}]}]*/ + +import type { foo } from 'import/private/bar'; +export type { foo } from 'import/private/bar'; + +import type foo = require("import/private/bar"); +``` + +::: + +::: correct { "sourceType": "module" } + +```ts +/*eslint no-restricted-imports: ["error", { patterns: [{ + group: ["import/private/*"], + importNames: ["Baz"], + allowTypeImports: true, + message: "Please use 'Baz' from 'import/private/*' as a type only." +}]}]*/ + +import { Bar, type Baz } from "import/private/bar"; +``` + +::: + +## Known Limitations + +TypeScript [`import = require()` syntax](https://www.typescriptlang.org/docs/handbook/2/modules.html#es-module-syntax-with-commonjs-behavior) is valid and the rule can recognize and lint such instances, but with certain limitations. + +You can only fully restrict these imports, you cannot restrict them based on specific import names like `importNames`, `allowImportNames`, `importNamePattern`, or `allowImportNamePattern` options. + +Examples of **incorrect** code for TypeScript import equals declarations: + +::: incorrect { "sourceType": "module" } + +```ts +/*eslint no-restricted-imports: ["error", "disallowed-import"]*/ + +import foo = require("disallowed-import"); +``` + +::: + +::: incorrect { "sourceType": "module" } + +```ts +/*eslint no-restricted-imports: ["error", { + "paths": [{ "name": "disallowed-import" }] +}]*/ + +import foo = require("disallowed-import"); +``` + +::: + +**Note:** Import name restrictions do not apply to TypeScript import equals declarations. The following configuration will not restrict the import equals declaration: + +::: correct { "sourceType": "module" } + +```ts +/*eslint no-restricted-imports: ["error", { + "paths": [{ + "name": "foo", + "importNames": ["foo"] + }] +}]*/ + +// This import equals declaration will NOT be restricted +// even though it imports the entire module +import foo = require("foo"); +``` + +::: + ## When Not To Use It Don't use this rule or don't include a module in the list for this rule if you want to be able to import a module in your project without an ESLint error or warning. diff --git a/lib/rules/no-restricted-imports.js b/lib/rules/no-restricted-imports.js index 20ec3c2ebdcc..a52cafe393f9 100644 --- a/lib/rules/no-restricted-imports.js +++ b/lib/rules/no-restricted-imports.js @@ -41,6 +41,11 @@ const arrayOfStringsOrObjects = { type: "string", }, }, + allowTypeImports: { + type: "boolean", + description: + "Whether to allow type-only imports for a path.", + }, }, additionalProperties: false, required: ["name"], @@ -105,6 +110,11 @@ const arrayOfStringsOrObjectPatterns = { caseSensitive: { type: "boolean", }, + allowTypeImports: { + type: "boolean", + description: + "Whether to allow type-only imports for a pattern.", + }, }, additionalProperties: false, not: { @@ -137,6 +147,8 @@ const arrayOfStringsOrObjectPatterns = { module.exports = { meta: { type: "suggestion", + dialects: ["typescript", "javascript"], + language: "javascript", docs: { description: "Disallow specified modules when loaded by `import`", @@ -261,6 +273,7 @@ module.exports = { message: importSource.message, importNames: importSource.importNames, allowImportNames: importSource.allowImportNames, + allowTypeImports: importSource.allowTypeImports, }); } return memo; @@ -291,6 +304,7 @@ module.exports = { importNamePattern, allowImportNames, allowImportNamePattern, + allowTypeImports, }) => ({ ...(group ? { @@ -313,6 +327,7 @@ module.exports = { importNamePattern, allowImportNames, allowImportNamePattern, + allowTypeImports, }), ); @@ -324,6 +339,48 @@ module.exports = { return {}; } + /** + * Check if the node is a type-only import + * @param {ASTNode} node The node to check + * @returns {boolean} Whether the node is a type-only import + */ + function isTypeOnlyImport(node) { + return ( + node.importKind === "type" || + (node.specifiers?.length > 0 && + node.specifiers.every( + specifier => specifier.importKind === "type", + )) + ); + } + + /** + * Check if a specifier is type-only + * @param {ASTNode} specifier The specifier to check + * @returns {boolean} Whether the specifier is type-only + */ + function isTypeOnlySpecifier(specifier) { + return ( + specifier.importKind === "type" || + specifier.exportKind === "type" + ); + } + + /** + * Check if the node is a type-only export + * @param {ASTNode} node The node to check + * @returns {boolean} Whether the node is a type-only export + */ + function isTypeOnlyExport(node) { + return ( + node.exportKind === "type" || + (node.specifiers?.length > 0 && + node.specifiers.every( + specifier => specifier.exportKind === "type", + )) + ); + } + /** * Report a restricted path. * @param {string} importSource path of the import @@ -344,6 +401,28 @@ module.exports = { restrictedPathEntry.importNames; const allowedImportNames = restrictedPathEntry.allowImportNames; + const allowTypeImports = + restrictedPathEntry.allowTypeImports; + + // Skip if this is a type-only import and it's allowed for this specific entry + if ( + allowTypeImports && + (node.type === "ImportDeclaration" || + node.type === "TSImportEqualsDeclaration") && + isTypeOnlyImport(node) + ) { + return; + } + + // Skip if this is a type-only export and it's allowed for this specific entry + if ( + allowTypeImports && + (node.type === "ExportNamedDeclaration" || + node.type === "ExportAllDeclaration") && + isTypeOnlyExport(node) + ) { + return; + } if (!restrictedImportNames && !allowedImportNames) { context.report({ @@ -400,6 +479,14 @@ module.exports = { restrictedImportNames.includes(importName) ) { specifiers.forEach(specifier => { + // Skip if this is a type-only import specifier and type imports are allowed + if ( + allowTypeImports && + isTypeOnlySpecifier(specifier.specifier) + ) { + return; + } + context.report({ node, messageId: customMessage @@ -420,6 +507,14 @@ module.exports = { !allowedImportNames.includes(importName) ) { specifiers.forEach(specifier => { + // Skip if this is a type-only import specifier and type imports are allowed + if ( + allowTypeImports && + isTypeOnlySpecifier(specifier.specifier) + ) { + return; + } + context.report({ node, loc: specifier.loc, @@ -446,11 +541,30 @@ module.exports = { * @param {Object} group contains an Ignore instance for paths, the customMessage to show on failure, * and any restricted import names that have been specified in the config * @param {Map} importNames Map of import names that are being imported + * @param {string} importSource the import source string * @returns {void} * @private */ - function reportPathForPatterns(node, group, importNames) { - const importSource = node.source.value.trim(); + function reportPathForPatterns(node, group, importNames, importSource) { + // Skip if this is a type-only import and it's allowed + if ( + group.allowTypeImports && + (node.type === "ImportDeclaration" || + node.type === "TSImportEqualsDeclaration") && + isTypeOnlyImport(node) + ) { + return; + } + + // Skip if this is a type-only export and it's allowed + if ( + group.allowTypeImports && + (node.type === "ExportNamedDeclaration" || + node.type === "ExportAllDeclaration") && + isTypeOnlyExport(node) + ) { + return; + } const customMessage = group.customMessage; const restrictedImportNames = group.importNames; @@ -553,6 +667,14 @@ module.exports = { restrictedImportNamePattern.test(importName)) ) { specifiers.forEach(specifier => { + // Skip if this is a type-only import specifier and type imports are allowed + if ( + group.allowTypeImports && + isTypeOnlySpecifier(specifier.specifier) + ) { + return; + } + context.report({ node, messageId: customMessage @@ -573,6 +695,14 @@ module.exports = { !allowedImportNames.includes(importName) ) { specifiers.forEach(specifier => { + // Skip if this is a type-only import specifier and type imports are allowed + if ( + group.allowTypeImports && + isTypeOnlySpecifier(specifier.specifier) + ) { + return; + } + context.report({ node, messageId: customMessage @@ -592,6 +722,14 @@ module.exports = { !allowedImportNamePattern.test(importName) ) { specifiers.forEach(specifier => { + // Skip if this is a type-only import specifier and type imports are allowed + if ( + group.allowTypeImports && + isTypeOnlySpecifier(specifier.specifier) + ) { + return; + } + context.report({ node, messageId: customMessage @@ -640,7 +778,7 @@ module.exports = { } else if (node.specifiers) { for (const specifier of node.specifiers) { let name; - const specifierData = { loc: specifier.loc }; + const specifierData = { loc: specifier.loc, specifier }; if (specifier.type === "ImportDefaultSpecifier") { name = "default"; @@ -665,7 +803,12 @@ module.exports = { checkRestrictedPathAndReport(importSource, importNames, node); restrictedPatternGroups.forEach(group => { if (isRestrictedPattern(importSource, group)) { - reportPathForPatterns(node, group, importNames); + reportPathForPatterns( + node, + group, + importNames, + importSource, + ); } }); } @@ -678,6 +821,30 @@ module.exports = { } }, ExportAllDeclaration: checkNode, + // Add support for TypeScript import equals declarations + TSImportEqualsDeclaration(node) { + if (node.moduleReference.type === "TSExternalModuleReference") { + const importSource = node.moduleReference.expression.value; + const importNames = new Map(); + + // Use existing logic with the actual node + checkRestrictedPathAndReport( + importSource, + importNames, + node, + ); + restrictedPatternGroups.forEach(group => { + if (isRestrictedPattern(importSource, group)) { + reportPathForPatterns( + node, + group, + importNames, + importSource, + ); + } + }); + } + }, }; }, }; diff --git a/lib/types/rules.d.ts b/lib/types/rules.d.ts index ba3ddc466eb2..e74eaf76d04b 100644 --- a/lib/types/rules.d.ts +++ b/lib/types/rules.d.ts @@ -38,6 +38,7 @@ import { Linter } from "./index"; interface NoRestrictedImportPathCommonOptions { name: string; message?: string; + allowTypeImports?: boolean; } type EitherImportNamesOrAllowImportName = @@ -50,6 +51,7 @@ type ValidNoRestrictedImportPathOptions = NoRestrictedImportPathCommonOptions & interface NoRestrictedImportPatternCommonOptions { message?: string; caseSensitive?: boolean; + allowTypeImports?: boolean; } // Base type for group or regex constraint, ensuring mutual exclusivity diff --git a/tests/lib/rules/no-restricted-imports.js b/tests/lib/rules/no-restricted-imports.js index 89154c62f282..6e3ba6e1a193 100644 --- a/tests/lib/rules/no-restricted-imports.js +++ b/tests/lib/rules/no-restricted-imports.js @@ -3163,3 +3163,1314 @@ ruleTester.run("no-restricted-imports", rule, { }, ], }); + +const ruleTesterTypeScript = new RuleTester({ + languageOptions: { + parser: require("@typescript-eslint/parser"), + }, +}); + +ruleTesterTypeScript.run("no-restricted-imports", rule, { + valid: [ + { + code: "import foo from 'foo';", + options: ["import1", "import2"], + }, + { + code: "import foo = require('foo');", + options: ["import1", "import2"], + }, + { + code: "export { foo } from 'foo';", + options: ["import1", "import2"], + }, + { + code: "import foo from 'foo';", + options: [{ paths: ["import1", "import2"] }], + }, + { + code: "export { foo } from 'foo';", + options: [{ paths: ["import1", "import2"] }], + }, + { + code: "import 'foo';", + options: ["import1", "import2"], + }, + { + code: "import foo from 'foo';", + options: [ + { + paths: ["import1", "import2"], + patterns: [ + "import1/private/*", + "import2/*", + "!import2/good", + ], + }, + ], + }, + { + code: "export { foo } from 'foo';", + options: [ + { + paths: ["import1", "import2"], + patterns: [ + "import1/private/*", + "import2/*", + "!import2/good", + ], + }, + ], + }, + { + code: "import foo from 'foo';", + options: [ + { + paths: [ + { + message: "Please use import-bar instead.", + name: "import-foo", + }, + { + message: "Please use import-quux instead.", + name: "import-baz", + }, + ], + }, + ], + }, + { + code: "export { foo } from 'foo';", + options: [ + { + paths: [ + { + message: "Please use import-bar instead.", + name: "import-foo", + }, + { + message: "Please use import-quux instead.", + name: "import-baz", + }, + ], + }, + ], + }, + { + code: "import foo from 'foo';", + options: [ + { + paths: [ + { + importNames: ["Bar"], + message: + "Please use Bar from /import-bar/baz/ instead.", + name: "import-foo", + }, + ], + }, + ], + }, + { + code: "export { foo } from 'foo';", + options: [ + { + paths: [ + { + importNames: ["Bar"], + message: + "Please use Bar from /import-bar/baz/ instead.", + name: "import-foo", + }, + ], + }, + ], + }, + { + code: "import foo from 'foo';", + options: [ + { + patterns: [ + { + group: ["import1/private/*"], + message: + "usage of import1 private modules not allowed.", + }, + { + group: ["import2/*", "!import2/good"], + message: + "import2 is deprecated, except the modules in import2/good.", + }, + ], + }, + ], + }, + { + code: "export { foo } from 'foo';", + options: [ + { + patterns: [ + { + group: ["import1/private/*"], + message: + "usage of import1 private modules not allowed.", + }, + { + group: ["import2/*", "!import2/good"], + message: + "import2 is deprecated, except the modules in import2/good.", + }, + ], + }, + ], + }, + { + code: "import foo = require('foo');", + options: [ + { + paths: [ + { + importNames: ["foo"], + message: + "Please use Bar from /import-bar/baz/ instead.", + name: "foo", + }, + ], + }, + ], + }, + { + code: "import type foo from 'import-foo';", + options: [ + { + paths: [ + { + allowTypeImports: true, + message: "Please use import-bar instead.", + name: "import-foo", + }, + ], + }, + ], + }, + { + code: "import type _ = require('import-foo');", + options: [ + { + paths: [ + { + allowTypeImports: true, + message: "Please use import-bar instead.", + name: "import-foo", + }, + ], + }, + ], + }, + { + code: "import type { Bar } from 'import-foo';", + options: [ + { + paths: [ + { + allowTypeImports: true, + importNames: ["Bar"], + message: + "Please use Bar from /import-bar/baz/ instead.", + name: "import-foo", + }, + ], + }, + ], + }, + { + code: "export type { Bar } from 'import-foo';", + options: [ + { + paths: [ + { + allowTypeImports: true, + importNames: ["Bar"], + message: + "Please use Bar from /import-bar/baz/ instead.", + name: "import-foo", + }, + ], + }, + ], + }, + { + code: "import type foo from 'import1/private/bar';", + options: [ + { + patterns: [ + { + allowTypeImports: true, + group: ["import1/private/*"], + message: + "usage of import1 private modules not allowed.", + }, + ], + }, + ], + }, + { + code: "export type { foo } from 'import1/private/bar';", + options: [ + { + patterns: [ + { + allowTypeImports: true, + group: ["import1/private/*"], + message: + "usage of import1 private modules not allowed.", + }, + ], + }, + ], + }, + { + code: "import type { MyType } from './types';", + options: [ + { + patterns: [ + { + allowTypeImports: true, + group: ["fail"], + message: "Please do not load from 'fail'.", + }, + ], + }, + ], + }, + { + code: ` + import type { foo } from 'import1/private/bar'; + import type { foo } from 'import2/private/bar'; + `, + options: [ + { + patterns: [ + { + allowTypeImports: true, + group: ["import1/private/*"], + message: + "usage of import1 private modules not allowed.", + }, + { + allowTypeImports: true, + group: ["import2/private/*"], + message: + "usage of import2 private modules not allowed.", + }, + ], + }, + ], + }, + { + code: `import { Bar, type Baz } from "import/private/bar";`, + options: [ + { + patterns: [ + { + group: ["import/private/*"], + importNames: ["Baz"], + allowTypeImports: true, + message: + "Please use 'Baz' from 'import/private/*' as a type only.", + }, + ], + }, + ], + }, + { + code: `import type { Bar } from "import/private/bar";`, + options: [ + { + patterns: [ + { + group: ["import/private/*"], + importNames: ["Bar"], + allowTypeImports: true, + message: + "Please use 'Baz' from 'import/private/*' as a type only.", + }, + ], + }, + ], + }, + { + code: `import { Baz, type Bar } from "import/private/bar";`, + options: [ + { + patterns: [ + { + group: ["import/private/*"], + importNames: ["Bar"], + allowTypeImports: true, + message: + "Please use 'Baz' from 'import/private/*' as a type only.", + }, + ], + }, + ], + }, + { + code: `export { Baz, type Bar } from "import/private/bar";`, + options: [ + { + patterns: [ + { + group: ["import/private/*"], + importNames: ["Bar"], + allowTypeImports: true, + message: + "Please use 'Baz' from 'import/private/*' as a type only.", + }, + ], + }, + ], + }, + { + code: `import type { Bar } from "import/private/bar";`, + options: [ + { + patterns: [ + { + group: ["import/private/*"], + allowImportNames: ["Foo"], + allowTypeImports: true, + message: + "Please use 'Baz' from 'import/private/*' as a type only.", + }, + ], + }, + ], + }, + { + code: `import { Foo, type Bar } from "import/private/bar";`, + options: [ + { + patterns: [ + { + group: ["import/private/*"], + allowImportNames: ["Foo"], + allowTypeImports: true, + message: + "Please use 'Baz' from 'import/private/*' as a type only.", + }, + ], + }, + ], + }, + { + code: `export { Baz, type Bar } from "import/private/bar";`, + options: [ + { + patterns: [ + { + group: ["import/private/*"], + allowImportNames: ["Baz"], + allowTypeImports: true, + message: + "Please use 'Baz' from 'import/private/*' as a type only.", + }, + ], + }, + ], + }, + { + code: `import { Foo, type Bar } from "import/private/bar";`, + options: [ + { + patterns: [ + { + group: ["import/private/*"], + allowImportNamePattern: "^Foo", + allowTypeImports: true, + message: + "Please use 'Baz' from 'import/private/*' as a type only.", + }, + ], + }, + ], + }, + { + code: `export { Baz, type Bar } from "import/private/bar";`, + options: [ + { + patterns: [ + { + group: ["import/private/*"], + allowImportNamePattern: "^Baz", + allowTypeImports: true, + message: + "Please use 'Baz' from 'import/private/*' as a type only.", + }, + ], + }, + ], + }, + { + code: `export { bar, type baz } from "import-foo";`, + options: [ + { + paths: [ + { + name: "import-foo", + allowImportNames: ["bar"], + allowTypeImports: true, + }, + ], + }, + ], + }, + { + code: ` + import type { foo } from 'import1/private/bar'; + import type { foo } from 'import2/private/bar'; + `, + options: [ + { + patterns: [ + { + allowTypeImports: true, + message: + "usage of import1 private modules not allowed.", + regex: "import1/.*", + }, + { + allowTypeImports: true, + message: + "usage of import2 private modules not allowed.", + regex: "import2/.*", + }, + ], + }, + ], + }, + { + code: "import { foo } from 'import1/private';", + options: [ + { + patterns: [ + { + allowTypeImports: true, + caseSensitive: true, + message: + "usage of import1 private modules not allowed.", + regex: "import1/[A-Z]+", + }, + ], + }, + ], + }, + { + code: "import { type Bar } from 'import-foo';", + options: [ + { + paths: [ + { + allowTypeImports: true, + importNames: ["Bar"], + message: + "Please use Bar from /import-bar/baz/ instead.", + name: "import-foo", + }, + ], + }, + ], + }, + { + code: "export { type Bar } from 'import-foo';", + options: [ + { + paths: [ + { + allowTypeImports: true, + importNames: ["Bar"], + message: + "Please use Bar from /import-bar/baz/ instead.", + name: "import-foo", + }, + ], + }, + ], + }, + { + code: "import Bar = Foo.Bar;", + options: [ + { + paths: [ + { + allowTypeImports: true, + importNames: ["Bar"], + name: "import-foo", + }, + ], + }, + ], + }, + { + code: `export type * from "foo";`, + options: [ + { + paths: [ + { + name: "foo", + allowTypeImports: true, + }, + ], + }, + ], + }, + { + code: `import type fs = require("fs");`, + options: [ + { + patterns: [ + { + group: ["f*"], + allowTypeImports: true, + }, + ], + }, + ], + errors: [ + { + messageId: "path", + }, + ], + }, + { + code: `export { type bar, baz } from "foo";`, + options: [ + { + paths: [ + { + name: "foo", + importNames: ["bar"], + allowTypeImports: true, + }, + ], + }, + ], + }, + ], + invalid: [ + { + code: "import foo from 'import1';", + options: ["import1", "import2"], + errors: [ + { + messageId: "path", + }, + ], + }, + { + code: "import foo = require('import1');", + options: ["import1", "import2"], + errors: [ + { + messageId: "path", + }, + ], + }, + { + code: "export { foo } from 'import1';", + options: ["import1", "import2"], + errors: [ + { + messageId: "path", + }, + ], + }, + { + code: "import foo from 'import1';", + options: [{ paths: ["import1", "import2"] }], + errors: [ + { + messageId: "path", + }, + ], + }, + { + code: "export { foo } from 'import1';", + options: [{ paths: ["import1", "import2"] }], + errors: [ + { + messageId: "path", + }, + ], + }, + { + code: "import foo from 'import1/private/foo';", + options: [ + { + paths: ["import1", "import2"], + patterns: [ + "import1/private/*", + "import2/*", + "!import2/good", + ], + }, + ], + errors: [ + { + messageId: "patterns", + }, + ], + }, + { + code: "export { foo } from 'import1/private/foo';", + options: [ + { + paths: ["import1", "import2"], + patterns: [ + "import1/private/*", + "import2/*", + "!import2/good", + ], + }, + ], + errors: [ + { + messageId: "patterns", + }, + ], + }, + { + code: "import foo from 'import-foo';", + options: [ + { + paths: [ + { + message: "Please use import-bar instead.", + name: "import-foo", + }, + { + message: "Please use import-quux instead.", + name: "import-baz", + }, + ], + }, + ], + errors: [ + { + messageId: "pathWithCustomMessage", + }, + ], + }, + { + code: "export { foo } from 'import-foo';", + options: [ + { + paths: [ + { + message: "Please use import-bar instead.", + name: "import-foo", + }, + { + message: "Please use import-quux instead.", + name: "import-baz", + }, + ], + }, + ], + errors: [ + { + messageId: "pathWithCustomMessage", + }, + ], + }, + { + code: "import { Bar } from 'import-foo';", + options: [ + { + paths: [ + { + importNames: ["Bar"], + message: + "Please use Bar from /import-bar/baz/ instead.", + name: "import-foo", + }, + ], + }, + ], + errors: [ + { + messageId: "importNameWithCustomMessage", + }, + ], + }, + { + code: "export { Bar } from 'import-foo';", + options: [ + { + paths: [ + { + importNames: ["Bar"], + message: + "Please use Bar from /import-bar/baz/ instead.", + name: "import-foo", + }, + ], + }, + ], + errors: [ + { + messageId: "importNameWithCustomMessage", + }, + ], + }, + { + code: "import foo from 'import1/private/foo';", + options: [ + { + patterns: [ + { + group: ["import1/private/*"], + message: + "usage of import1 private modules not allowed.", + }, + { + group: ["import2/*", "!import2/good"], + message: + "import2 is deprecated, except the modules in import2/good.", + }, + ], + }, + ], + errors: [ + { + messageId: "patternWithCustomMessage", + }, + ], + }, + { + code: "export { foo } from 'import1/private/foo';", + options: [ + { + patterns: [ + { + group: ["import1/private/*"], + message: + "usage of import1 private modules not allowed.", + }, + { + group: ["import2/*", "!import2/good"], + message: + "import2 is deprecated, except the modules in import2/good.", + }, + ], + }, + ], + errors: [ + { + messageId: "patternWithCustomMessage", + }, + ], + }, + { + code: "import 'import-foo';", + options: [ + { + paths: [ + { + name: "import-foo", + }, + ], + }, + ], + errors: [ + { + messageId: "path", + }, + ], + }, + { + code: "import 'import-foo';", + options: [ + { + paths: [ + { + allowTypeImports: true, + name: "import-foo", + }, + ], + }, + ], + errors: [ + { + messageId: "path", + }, + ], + }, + { + code: "import foo from 'import-foo';", + options: [ + { + paths: [ + { + allowTypeImports: true, + message: "Please use import-bar instead.", + name: "import-foo", + }, + ], + }, + ], + errors: [ + { + messageId: "pathWithCustomMessage", + }, + ], + }, + { + code: "import foo = require('import-foo');", + options: [ + { + paths: [ + { + allowTypeImports: true, + message: "Please use import-bar instead.", + name: "import-foo", + }, + ], + }, + ], + errors: [ + { + messageId: "pathWithCustomMessage", + }, + ], + }, + { + code: "import { Bar } from 'import-foo';", + options: [ + { + paths: [ + { + allowTypeImports: true, + importNames: ["Bar"], + message: + "Please use Bar from /import-bar/baz/ instead.", + name: "import-foo", + }, + ], + }, + ], + errors: [ + { + messageId: "importNameWithCustomMessage", + }, + ], + }, + { + code: "export { Bar } from 'import-foo';", + options: [ + { + paths: [ + { + allowTypeImports: true, + importNames: ["Bar"], + message: + "Please use Bar from /import-bar/baz/ instead.", + name: "import-foo", + }, + ], + }, + ], + errors: [ + { + messageId: "importNameWithCustomMessage", + }, + ], + }, + { + code: "import foo from 'import1/private/bar';", + options: [ + { + patterns: [ + { + allowTypeImports: true, + group: ["import1/private/*"], + message: + "usage of import1 private modules not allowed.", + }, + ], + }, + ], + errors: [ + { + messageId: "patternWithCustomMessage", + }, + ], + }, + { + code: "export { foo } from 'import1/private/bar';", + options: [ + { + patterns: [ + { + allowTypeImports: true, + group: ["import1/private/*"], + message: + "usage of import1 private modules not allowed.", + }, + ], + }, + ], + errors: [ + { + messageId: "patternWithCustomMessage", + }, + ], + }, + { + code: "export { foo } from 'import1/private/bar';", + options: [ + { + patterns: [ + { + allowTypeImports: true, + message: + "usage of import1 private modules not allowed.", + regex: "import1/.*", + }, + ], + }, + ], + errors: [ + { + messageId: "patternWithCustomMessage", + }, + ], + }, + { + code: "import { foo } from 'import1/private-package';", + options: [ + { + patterns: [ + { + allowTypeImports: true, + caseSensitive: true, + message: + "usage of import1 private modules not allowed.", + regex: "import1/private-[a-z]*", + }, + ], + }, + ], + errors: [ + { + messageId: "patternWithCustomMessage", + }, + ], + }, + { + code: "export * from 'import1';", + options: ["import1"], + errors: [ + { + messageId: "path", + }, + ], + }, + { + code: "import type { InvalidTestCase } from '@typescript-eslint/utils/dist/ts-eslint';", + options: [ + { + patterns: ["@typescript-eslint/utils/dist/*"], + }, + ], + errors: [ + { + messageId: "patterns", + }, + ], + }, + { + code: "export type { InvalidTestCase } from '@typescript-eslint/utils/dist/ts-eslint';", + options: [ + { + patterns: ["@typescript-eslint/utils/dist/*"], + }, + ], + errors: [ + { + messageId: "patterns", + }, + ], + }, + { + code: "import { Bar, type Baz } from 'import-foo';", + options: [ + { + paths: [ + { + allowTypeImports: true, + importNames: ["Bar", "Baz"], + message: + "Please use Bar and Baz from /import-bar/baz/ instead.", + name: "import-foo", + }, + ], + }, + ], + errors: [ + { + messageId: "importNameWithCustomMessage", + line: 1, + column: 10, + data: { + importSource: "import-foo", + importName: "Bar", + customMessage: + "Please use Bar and Baz from /import-bar/baz/ instead.", + }, + }, + ], + }, + { + code: "export { Bar, type Baz } from 'import-foo';", + options: [ + { + paths: [ + { + allowTypeImports: true, + importNames: ["Bar", "Baz"], + message: + "Please use Bar and Baz from /import-bar/baz/ instead.", + name: "import-foo", + }, + ], + }, + ], + errors: [ + { + messageId: "importNameWithCustomMessage", + data: { + importName: "Bar", + importSource: "import-foo", + customMessage: + "Please use Bar and Baz from /import-bar/baz/ instead.", + }, + }, + ], + }, + { + code: ` + // Both regular and type imports should still be restricted + import { Foo } from 'restricted-path'; + import type { Bar } from 'restricted-path'; + `, + options: [ + { + paths: [ + { + name: "restricted-path", + allowTypeImports: false, + message: "This import is restricted.", + }, + ], + }, + ], + errors: [ + { + messageId: "pathWithCustomMessage", + line: 3, + data: { + importSource: "restricted-path", + customMessage: "This import is restricted.", + }, + }, + { + messageId: "pathWithCustomMessage", + line: 4, + data: { + importSource: "restricted-path", + customMessage: "This import is restricted.", + }, + }, + ], + }, + { + code: ` + // Both regular and type imports should still be restricted + export { Foo } from 'restricted-path'; + export type { Bar } from 'restricted-path'; + `, + options: [ + { + paths: [ + { + name: "restricted-path", + allowTypeImports: false, + message: "This export is restricted.", + }, + ], + }, + ], + errors: [ + { + messageId: "pathWithCustomMessage", + line: 3, + data: { + importSource: "restricted-path", + customMessage: "This export is restricted.", + }, + }, + { + messageId: "pathWithCustomMessage", + line: 4, + data: { + importSource: "restricted-path", + customMessage: "This export is restricted.", + }, + }, + ], + }, + { + code: `import type { bar } from "mod";`, + options: [ + { + paths: [ + { + name: "mod", + importNames: ["foo"], + allowTypeImports: true, + message: "import 'foo' only as type", + }, + { + name: "mod", + importNames: ["bar"], + message: "don't import 'bar' at all", + }, + ], + }, + ], + errors: [ + { + messageId: "importNameWithCustomMessage", + line: 1, + data: { + importName: "bar", + importSource: "mod", + customMessage: "don't import 'bar' at all", + }, + }, + ], + }, + { + code: `export type { bar } from "mod";`, + options: [ + { + paths: [ + { + name: "mod", + importNames: ["foo"], + allowTypeImports: true, + message: "import 'foo' only as type", + }, + { + name: "mod", + importNames: ["bar"], + message: "don't import 'bar' at all", + }, + ], + }, + ], + errors: [ + { + messageId: "importNameWithCustomMessage", + line: 1, + data: { + importName: "bar", + importSource: "mod", + customMessage: "don't import 'bar' at all", + }, + }, + ], + }, + { + code: `import fs = require("fs");`, + options: [ + { + patterns: [ + { + group: ["f*"], + }, + ], + }, + ], + errors: [ + { + messageId: "patterns", + }, + ], + }, + { + code: ` + export type * from "foo"; + export * from "foo"; + `, + options: [ + { + paths: [ + { + name: "foo", + allowTypeImports: true, + }, + ], + }, + ], + errors: [ + { + messageId: "path", + }, + ], + }, + { + code: ` + export { } from "mod"; + export type { } from "mod"; + `, + options: [ + { + paths: [ + { + name: "mod", + allowTypeImports: true, + }, + ], + }, + ], + errors: [ + { + messageId: "path", + line: 2, + }, + ], + }, + { + code: `import { baz } from "foo";`, + options: [ + { + paths: [ + { + name: "foo", + allowImportNames: ["bar"], + allowTypeImports: true, + }, + ], + }, + ], + errors: [ + { + messageId: "allowedImportName", + line: 1, + }, + ], + }, + ], +}); From 39f7fb493a6924ff7dc638fd4d6e7b3d8eb95383 Mon Sep 17 00:00:00 2001 From: Pixel998 Date: Mon, 29 Sep 2025 14:51:21 +0300 Subject: [PATCH 132/165] feat: `preserve-caught-error` should recognize all static "cause" keys (#20163) --- lib/rules/preserve-caught-error.js | 6 +-- tests/lib/rules/preserve-caught-error.js | 65 ++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 5 deletions(-) diff --git a/lib/rules/preserve-caught-error.js b/lib/rules/preserve-caught-error.js index c6c67e653119..a09c05194d38 100644 --- a/lib/rules/preserve-caught-error.js +++ b/lib/rules/preserve-caught-error.js @@ -82,11 +82,7 @@ function getErrorCause(throwStatement) { } const causeProperties = errorOptions.properties.filter( - prop => - prop.type === "Property" && - prop.key.type === "Identifier" && - prop.key.name === "cause" && - !prop.computed, // It is hard to accurately identify the value of computed props + prop => astUtils.getStaticPropertyName(prop) === "cause", ); const causeProperty = causeProperties.at(-1); diff --git a/tests/lib/rules/preserve-caught-error.js b/tests/lib/rules/preserve-caught-error.js index 70f7c4441143..a9ad1763b7df 100644 --- a/tests/lib/rules/preserve-caught-error.js +++ b/tests/lib/rules/preserve-caught-error.js @@ -23,6 +23,31 @@ ruleTester.run("preserve-caught-error", rule, { } catch (error) { throw new Error("Failed to perform error prone operations", { cause: error }); }`, + `try { + doSomething(); + } catch (error) { + throw new Error("Something failed", { 'cause': error }); + }`, + `try { + doSomething(); + } catch (error) { + throw new Error("Something failed", { "cause": error }); + }`, + `try { + doSomething(); + } catch (error) { + throw new Error("Something failed", { ['cause']: error }); + }`, + `try { + doSomething(); + } catch (error) { + throw new Error("Something failed", { ["cause"]: error }); + }`, + `try { + doSomething(); + } catch (error) { + throw new Error("Something failed", { [\`cause\`]: error }); + }`, /* No throw inside catch */ `try { doSomething(); @@ -92,6 +117,16 @@ ruleTester.run("preserve-caught-error", rule, { } catch (error) { throw new Error("Something failed", { cause: anotherError, cause: error }); }`, + `try { + doSomething(); + } catch (error) { + throw new Error("Something failed", { "cause": anotherError, "cause": error }); + }`, + `try { + doSomething(); + } catch (error) { + throw new Error("Something failed", { cause: anotherError, "cause": error }); + }`, ], invalid: [ /* 1. Throws a new Error without cause, even though an error was caught */ @@ -136,6 +171,30 @@ ruleTester.run("preserve-caught-error", rule, { } catch (err) { const unrelated = new Error("other"); throw new Error("Something failed", { cause: err }); + }`, + }, + ], + }, + ], + }, + { + code: `try { + doSomething(); + } catch (err) { + const unrelated = new Error("other"); + throw new Error("Something failed", { "cause": unrelated }); + }`, + errors: [ + { + messageId: "incorrectCause", + suggestions: [ + { + messageId: "includeCause", + output: `try { + doSomething(); + } catch (err) { + const unrelated = new Error("other"); + throw new Error("Something failed", { "cause": err }); }`, }, ], @@ -735,6 +794,12 @@ ruleTester.run("preserve-caught-error", rule, { }`, errors: [{ messageId: "incorrectCause" }], }, + { + code: `try {} catch (error) { + throw new Error("Something failed", { cause: error, "cause": anotherError }); + }`, + errors: [{ messageId: "incorrectCause" }], + }, /* 26. Getters and setters as `cause`. */ { code: `try {} catch (error) { From 5c97a04578e6280c2395f642c2d8d6bdf30eec18 Mon Sep 17 00:00:00 2001 From: Pixel998 Date: Tue, 30 Sep 2025 17:30:50 +0300 Subject: [PATCH 133/165] docs: show `availableUntil` in deprecated rule banner (#20170) * docs: show `availableUntil` in deprecated rule banner * emphasize removal version --- docs/src/_data/rules_meta.json | 152 +++++++++++++++------------- docs/src/_includes/layouts/doc.html | 8 +- 2 files changed, 85 insertions(+), 75 deletions(-) diff --git a/docs/src/_data/rules_meta.json b/docs/src/_data/rules_meta.json index 234ac4c47def..27b8444b8a8f 100644 --- a/docs/src/_data/rules_meta.json +++ b/docs/src/_data/rules_meta.json @@ -20,7 +20,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -49,7 +49,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -94,7 +94,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -136,7 +136,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -165,7 +165,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -202,7 +202,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -231,7 +231,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -335,7 +335,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -364,7 +364,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -393,7 +393,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -433,7 +433,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -541,7 +541,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -586,7 +586,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -634,7 +634,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -706,7 +706,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -735,7 +735,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -764,7 +764,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -950,7 +950,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -979,7 +979,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -1014,6 +1014,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "4.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -1050,7 +1051,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -1079,7 +1080,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -1108,7 +1109,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -1137,7 +1138,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "9.3.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -1165,7 +1166,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -1194,7 +1195,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -1230,7 +1231,7 @@ "message": "The rule was replaced with a more general rule.", "url": "https://eslint.org/blog/2017/06/eslint-v4.0.0-released/", "deprecatedSince": "4.0.0", - "availableUntil": null, + "availableUntil": "11.0.0", "replacedBy": [ { "message": "The new rule moved to a plugin.", @@ -1252,7 +1253,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -1308,7 +1309,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -1381,7 +1382,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -1409,7 +1410,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "9.3.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -1438,7 +1439,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -1496,7 +1497,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -1532,7 +1533,7 @@ "message": "The rule was replaced with a more general rule.", "url": "https://eslint.org/blog/2017/06/eslint-v4.0.0-released/", "deprecatedSince": "4.0.0", - "availableUntil": null, + "availableUntil": "11.0.0", "replacedBy": [ { "message": "The new rule moved to a plugin.", @@ -1561,7 +1562,7 @@ "message": "The rule was replaced with a more general rule.", "url": "https://eslint.org/blog/2017/06/eslint-v4.0.0-released/", "deprecatedSince": "4.0.0", - "availableUntil": null, + "availableUntil": "11.0.0", "replacedBy": [ { "message": "The new rule moved to a plugin.", @@ -1583,7 +1584,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -1760,7 +1761,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -2099,7 +2100,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -2128,7 +2129,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -2171,7 +2172,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -2446,7 +2447,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -2501,7 +2502,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -2542,7 +2543,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -2580,7 +2581,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -2990,6 +2991,11 @@ }, "no-restricted-imports": { "type": "suggestion", + "dialects": [ + "typescript", + "javascript" + ], + "language": "javascript", "docs": { "description": "Disallow specified modules when loaded by `import`", "recommended": false, @@ -3163,7 +3169,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2016/08/eslint-v3.3.0-released/#deprecated-rules", "deprecatedSince": "3.3.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -3221,7 +3227,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -3282,7 +3288,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -3695,7 +3701,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -3732,7 +3738,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -3761,7 +3767,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -3790,7 +3796,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -3819,7 +3825,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -3868,7 +3874,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -3910,7 +3916,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -3939,7 +3945,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -3968,7 +3974,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -4175,7 +4181,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -4204,7 +4210,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -4288,7 +4294,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -4317,7 +4323,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -4346,7 +4352,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -4375,7 +4381,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -4462,7 +4468,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -4491,7 +4497,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -4520,7 +4526,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -4549,7 +4555,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -4578,7 +4584,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -4607,7 +4613,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -4648,7 +4654,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -4686,7 +4692,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -4715,7 +4721,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -4794,7 +4800,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -4823,7 +4829,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -4852,7 +4858,7 @@ "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", diff --git a/docs/src/_includes/layouts/doc.html b/docs/src/_includes/layouts/doc.html index 2cb0e6d4751f..aa186c002cc1 100644 --- a/docs/src/_includes/layouts/doc.html +++ b/docs/src/_includes/layouts/doc.html @@ -94,8 +94,12 @@

{{ title }}

{% if rule_meta.deprecated %} {% set deprecated_description %} -

This rule was deprecated in ESLint v{{ rule_meta.deprecated.deprecatedSince }}. - +

This rule was deprecated in ESLint v{{ rule_meta.deprecated.deprecatedSince }}. + + {% if rule_meta.deprecated.availableUntil %} + It will be removed in v{{ rule_meta.deprecated.availableUntil }}. + {% endif %} + {% if rule_meta.deprecated.replacedBy.length === 0 %} There is no replacement rule. {% elif rule_meta.deprecated.replacedBy[0].plugin %} From 09e04fcc3f4cc963eea7c9c579391de5e231595b Mon Sep 17 00:00:00 2001 From: Pixel998 Date: Tue, 30 Sep 2025 19:03:14 +0300 Subject: [PATCH 134/165] fix: add missing AST token types (#20172) --- lib/types/index.d.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/types/index.d.ts b/lib/types/index.d.ts index b67d00fc9b53..71a8fd9949bf 100644 --- a/lib/types/index.d.ts +++ b/lib/types/index.d.ts @@ -47,12 +47,14 @@ export namespace AST { | "Boolean" | "Null" | "Identifier" + | "PrivateIdentifier" | "Keyword" | "Punctuator" | "JSXIdentifier" | "JSXText" | "Numeric" | "String" + | "Template" | "RegularExpression"; interface Token { From a129cced7a86ea2518eb9be6990fa18af39694ca Mon Sep 17 00:00:00 2001 From: Francesco Trotta Date: Wed, 1 Oct 2025 07:26:43 +0200 Subject: [PATCH 135/165] fix: correct `no-loss-of-precision` false positives for leading zeros (#20164) * fix: correct `no-loss-of-precision` false positives for leading zeros * revert accidental change --- lib/rules/no-loss-of-precision.js | 13 +++++-------- tests/lib/rules/no-loss-of-precision.js | 2 ++ 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/lib/rules/no-loss-of-precision.js b/lib/rules/no-loss-of-precision.js index 79565c8b8437..456dd2c1012f 100644 --- a/lib/rules/no-loss-of-precision.js +++ b/lib/rules/no-loss-of-precision.js @@ -124,14 +124,11 @@ module.exports = { * @returns {Object} the object containing the integer's coefficient and order of magnitude */ function normalizeInteger(stringInteger) { - const significantDigits = removeTrailingZeros( - removeLeadingZeros(stringInteger), - ); + const trimmedInteger = removeLeadingZeros(stringInteger); + const significantDigits = removeTrailingZeros(trimmedInteger); return { - magnitude: stringInteger.startsWith("0") - ? stringInteger.length - 2 - : stringInteger.length - 1, + magnitude: trimmedInteger.length - 1, coefficient: addDecimalPointToNumber(significantDigits), }; } @@ -140,7 +137,7 @@ module.exports = { * * Converts a float to an object containing the floats's coefficient and order of magnitude * @param {string} stringFloat the string representation of the float being converted - * @returns {Object} the object containing the integer's coefficient and order of magnitude + * @returns {Object} the object containing the float's coefficient and order of magnitude */ function normalizeFloat(stringFloat) { const trimmedFloat = removeLeadingZeros(stringFloat); @@ -169,7 +166,7 @@ module.exports = { * @returns {string} the number converted to scientific notation */ function convertNumberToScientificNotation(stringNumber) { - const splitNumber = stringNumber.replace("E", "e").split("e"); + const splitNumber = stringNumber.split("e"); const originalCoefficient = splitNumber[0]; const normalizedNumber = stringNumber.includes(".") ? normalizeFloat(originalCoefficient) diff --git a/tests/lib/rules/no-loss-of-precision.js b/tests/lib/rules/no-loss-of-precision.js index e0373bec6da1..62d34bdc2feb 100644 --- a/tests/lib/rules/no-loss-of-precision.js +++ b/tests/lib/rules/no-loss-of-precision.js @@ -57,6 +57,8 @@ ruleTester.run("no-loss-of-precision", rule, { "var x = 9.0000000000E10", "var x = 019.5", "var x = 0195", + "var x = 00195", + "var x = 0008", "var x = 0e5", { code: "var x = 12_34_56", languageOptions: { ecmaVersion: 2021 } }, From 29ea092b93608756350b1e9c5a4f29c8a49264ab Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Wed, 1 Oct 2025 08:10:00 +0000 Subject: [PATCH 136/165] docs: Update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b3fc161da4d8..70b5181b13ee 100644 --- a/README.md +++ b/README.md @@ -333,7 +333,7 @@ to get your logo on our READMEs and [website](https://eslint.org/sponsors).

Automattic Airbnb

Gold Sponsors

Qlty Software trunk.io Shopify

Silver Sponsors

Vite Liftoff American Express StackBlitz

Bronze Sponsors

-

Syntax Cybozu Sentry Discord GitBook Nx Mercedes-Benz Group HeroCoders LambdaTest

+

Cybozu Discord GitBook Nx Mercedes-Benz Group HeroCoders LambdaTest

Technology Sponsors

Technology sponsors allow us to use their products and services for free as part of a contribution to the open source ecosystem and our work.

Netlify Algolia 1Password

From e1574a22d38fd7e1891f86f8db0b09053f8963cb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 1 Oct 2025 15:23:50 +0200 Subject: [PATCH 137/165] chore: unpin jiti (#20173) * chore: update dependency jiti to v2.6.0 * Update version range to "^2.6.1" --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Francesco Trotta --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 82accc3b1133..ef97cdc99b5d 100644 --- a/package.json +++ b/package.json @@ -173,7 +173,7 @@ "globals": "^16.2.0", "got": "^11.8.3", "gray-matter": "^4.0.3", - "jiti": "2.5.1", + "jiti": "^2.6.1", "jiti-v2.0": "npm:jiti@2.0.x", "jiti-v2.1": "npm:jiti@2.1.x", "knip": "^5.60.2", From fc9381f6ca57b824e82d118c14631c17bea79d7e Mon Sep 17 00:00:00 2001 From: overlookmotel Date: Wed, 1 Oct 2025 16:02:10 +0100 Subject: [PATCH 138/165] chore: fix typos in comments (#20175) * fix: fix typos * Revert changes in 3 files --- lib/linter/esquery.js | 2 +- lib/rules/func-call-spacing.js | 2 +- tests/lib/config/flat-config-schema.js | 4 ++-- tests/lib/eslint/eslint.js | 12 ++++++------ tests/lib/rules/init-declarations.js | 2 +- tests/lib/rules/no-prototype-builtins.js | 4 ++-- tests/lib/rules/utils/ast-utils.js | 2 +- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/lib/linter/esquery.js b/lib/linter/esquery.js index 9f9b76f1e8b9..31d302bc6b7d 100644 --- a/lib/linter/esquery.js +++ b/lib/linter/esquery.js @@ -90,7 +90,7 @@ class ESQueryParsedSelector { } /** - * Compares this selector's specifity to another selector for sorting purposes. + * Compares this selector's specificity to another selector for sorting purposes. * @param {ESQueryParsedSelector} otherSelector The selector to compare against * @returns {number} * a value less than 0 if this selector is less specific than otherSelector diff --git a/lib/rules/func-call-spacing.js b/lib/rules/func-call-spacing.js index 71a03d787f00..1195d3f49dbb 100644 --- a/lib/rules/func-call-spacing.js +++ b/lib/rules/func-call-spacing.js @@ -105,7 +105,7 @@ module.exports = { * Check if open space is present in a function name * @param {ASTNode} node node to evaluate * @param {Token} leftToken The last token of the callee. This may be the closing parenthesis that encloses the callee. - * @param {Token} rightToken Tha first token of the arguments. this is the opening parenthesis that encloses the arguments. + * @param {Token} rightToken The first token of the arguments. this is the opening parenthesis that encloses the arguments. * @returns {void} * @private */ diff --git a/tests/lib/config/flat-config-schema.js b/tests/lib/config/flat-config-schema.js index f351667736b1..53cff7bd0697 100644 --- a/tests/lib/config/flat-config-schema.js +++ b/tests/lib/config/flat-config-schema.js @@ -18,7 +18,7 @@ const { * When eslintrc is removed, this function and its invocations can be also removed. * @param {Object} [first] The base object. * @param {Object} [second] The overrides object. - * @param {Object} [expectedResult] The expected reults of merging first and second values. + * @param {Object} [expectedResult] The expected results of merging first and second values. * @returns {void} */ function confirmLegacyMergeResult(first, second, expectedResult) { @@ -44,7 +44,7 @@ describe("merge", () => { confirmLegacyMergeResult(first, second, result); }); - it("returns an emtpy object if both values are undefined", () => { + it("returns an empty object if both values are undefined", () => { const result = merge(void 0, void 0); assert.deepStrictEqual(result, {}); diff --git a/tests/lib/eslint/eslint.js b/tests/lib/eslint/eslint.js index 4cbb4b1463bb..abc47dbb68ba 100644 --- a/tests/lib/eslint/eslint.js +++ b/tests/lib/eslint/eslint.js @@ -14611,7 +14611,7 @@ describe("ESLint", () => { "the entry for the file to be deleted should not have been in the cache", ); - // make sure that the previos assertion checks the right place + // make sure that the previous assertion checks the right place assert.notStrictEqual( typeof cache[0][badFile], "undefined", @@ -14693,7 +14693,7 @@ describe("ESLint", () => { "the cache file already exists and wasn't successfully deleted", ); - fs.writeFileSync(cacheFilePath, "[]"); // intenationally invalid to additionally make sure it isn't used + fs.writeFileSync(cacheFilePath, "[]"); // intentionally invalid to additionally make sure it isn't used eslint = new ESLint({ concurrency, @@ -14729,7 +14729,7 @@ describe("ESLint", () => { "the cache file already exists and wasn't successfully deleted", ); - fs.writeFileSync(cacheFilePath, "[]"); // intenationally invalid to additionally make sure it isn't used + fs.writeFileSync(cacheFilePath, "[]"); // intentionally invalid to additionally make sure it isn't used eslint = new ESLint({ concurrency, @@ -14805,7 +14805,7 @@ describe("ESLint", () => { "the cache file already exists and wasn't successfully deleted", ); - fs.writeFileSync(cacheFilePath, "[]"); // intenationally invalid to additionally make sure it isn't used + fs.writeFileSync(cacheFilePath, "[]"); // intentionally invalid to additionally make sure it isn't used eslint = new ESLint({ concurrency, @@ -14929,7 +14929,7 @@ describe("ESLint", () => { * Run 1: Lint result wasn't already cached. * Run 2: Lint result was already cached. The cached lint result is used but the cache is reconciled before the run ends. * Run 3: Lint result was already cached. The cached lint result was being used throughout the previous run, so possible - * mutations in the previous run that occured after the cache was reconciled may have side effects for this run. + * mutations in the previous run that occurred after the cache was reconciled may have side effects for this run. */ for (let i = 0; i < 3; i++) { const [result] = await eslint.lintFiles([filePath]); @@ -14999,7 +14999,7 @@ describe("ESLint", () => { * Run 1: Lint result wasn't already cached. * Run 2: Lint result was already cached. The cached lint result is used but the cache is reconciled before the run ends. * Run 3: Lint result was already cached. The cached lint result was being used throughout the previous run, so possible - * mutations in the previous run that occured after the cache was reconciled may have side effects for this run. + * mutations in the previous run that occurred after the cache was reconciled may have side effects for this run. */ for (let i = 0; i < 3; i++) { const [result] = await eslint.lintFiles([filePath]); diff --git a/tests/lib/rules/init-declarations.js b/tests/lib/rules/init-declarations.js index d3361769a461..a4c4217d4104 100644 --- a/tests/lib/rules/init-declarations.js +++ b/tests/lib/rules/init-declarations.js @@ -423,7 +423,7 @@ ruleTesterTypeScript.run("init-declarations", rule, { }, { code: ` - var bar: string = function (arg1: stirng): string { + var bar: string = function (arg1: string): string { return 'string'; }; `, diff --git a/tests/lib/rules/no-prototype-builtins.js b/tests/lib/rules/no-prototype-builtins.js index 7079f7bce2e6..dcaebcdfd8ff 100644 --- a/tests/lib/rules/no-prototype-builtins.js +++ b/tests/lib/rules/no-prototype-builtins.js @@ -281,7 +281,7 @@ ruleTester.run("no-prototype-builtins", rule, { }, { /* - * If hasOwnProperty is part of a ChainExpresion + * If hasOwnProperty is part of a ChainExpression * and the optional part is before it, then don't suggest the fix */ code: "foo?.hasOwnProperty('bar').baz", @@ -296,7 +296,7 @@ ruleTester.run("no-prototype-builtins", rule, { }, { /* - * If hasOwnProperty is part of a ChainExpresion + * If hasOwnProperty is part of a ChainExpression * but the optional part is after it, then the fix is safe */ code: "foo.hasOwnProperty('bar')?.baz", diff --git a/tests/lib/rules/utils/ast-utils.js b/tests/lib/rules/utils/ast-utils.js index 4c73a7285468..fa1c403e29b6 100644 --- a/tests/lib/rules/utils/ast-utils.js +++ b/tests/lib/rules/utils/ast-utils.js @@ -545,7 +545,7 @@ describe("ast-utils", () => { * in a loop or not in a loop. * @param {string} code the code to check. * @param {string} nodeType the type of the node to consider. The code - * must have exactly one node of ths type. + * must have exactly one node of this type. * @param {boolean} expectedInLoop the expected result for whether the * node is in a loop. * @returns {void} From 42498a27981d50750dd15ae8660dbe85c4f4587c Mon Sep 17 00:00:00 2001 From: Percy Ma Date: Fri, 3 Oct 2025 17:28:56 +0800 Subject: [PATCH 139/165] docs: improve ToC accessibility by hiding non-semantic character (#20181) --- docs/src/assets/scss/components/toc.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/assets/scss/components/toc.scss b/docs/src/assets/scss/components/toc.scss index 10440effd068..66bdadd0950c 100644 --- a/docs/src/assets/scss/components/toc.scss +++ b/docs/src/assets/scss/components/toc.scss @@ -55,7 +55,7 @@ } li::before { - content: "└"; + content: "└" / ""; color: var(--icon-color); position: absolute; left: -0.4rem; From b950359c5f39085483c3137a6a160e582ef32007 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A3=A8=EB=B0=80LuMir?= Date: Fri, 3 Oct 2025 21:11:30 +0900 Subject: [PATCH 140/165] docs: fix typos across the docs (#20182) --- docs/src/rules/class-methods-use-this.md | 2 +- docs/src/rules/consistent-return.md | 14 +++++++------- docs/src/rules/default-case.md | 2 +- docs/src/rules/func-names.md | 6 +++--- docs/src/rules/logical-assignment-operators.md | 4 ++-- docs/src/rules/max-lines.md | 4 ++-- docs/src/rules/new-cap.md | 4 ++-- docs/src/rules/no-case-declarations.md | 10 +++++----- docs/src/rules/no-eq-null.md | 2 +- docs/src/rules/sort-keys.md | 4 ++-- 10 files changed, 26 insertions(+), 26 deletions(-) diff --git a/docs/src/rules/class-methods-use-this.md b/docs/src/rules/class-methods-use-this.md index 34a0b58ea610..b5bbaa7d75ed 100644 --- a/docs/src/rules/class-methods-use-this.md +++ b/docs/src/rules/class-methods-use-this.md @@ -7,7 +7,7 @@ further_reading: --- -If a class method does not use `this`, it can *sometimes* be made into a static function. If you do convert the method into a static function, instances of the class that call that particular method have to be converted to a static call as well (`MyClass.callStaticMethod()`) +If a class method does not use `this`, it can *sometimes* be made into a static function. If you do convert the method into a static function, instances of the class that call that particular method have to be converted to a static call as well (`MyClass.callStaticMethod()`). It's possible to have a class method which doesn't use `this`, such as: diff --git a/docs/src/rules/consistent-return.md b/docs/src/rules/consistent-return.md index 797c9b08ca01..53ab370e113e 100644 --- a/docs/src/rules/consistent-return.md +++ b/docs/src/rules/consistent-return.md @@ -8,16 +8,16 @@ Unlike statically-typed languages which enforce that a function returns a specif A confusing aspect of JavaScript is that a function returns `undefined` if any of the following are true: -* it does not execute a `return` statement before it exits -* it executes `return` which does not specify a value explicitly -* it executes `return undefined` -* it executes `return void` followed by an expression (for example, a function call) -* it executes `return` followed by any other expression which evaluates to `undefined` +* It does not execute a `return` statement before it exits. +* It executes `return` which does not specify a value explicitly. +* It executes `return undefined`. +* It executes `return void` followed by an expression (for example, a function call). +* It executes `return` followed by any other expression which evaluates to `undefined`. If any code paths in a function return a value explicitly but some code path do not return a value explicitly, it might be a typing mistake, especially in a large function. In the following example: -* a code path through the function returns a Boolean value `true` -* another code path does not return a value explicitly, therefore returns `undefined` implicitly +* A code path through the function returns a Boolean value `true`. +* Another code path does not return a value explicitly, therefore returns `undefined` implicitly. ```js function doSomething(condition) { diff --git a/docs/src/rules/default-case.md b/docs/src/rules/default-case.md index 1bad1a0df4c4..6df38ec73284 100644 --- a/docs/src/rules/default-case.md +++ b/docs/src/rules/default-case.md @@ -104,7 +104,7 @@ switch (a) { This rule accepts a single options argument: -* Set the `commentPattern` option to a regular expression string to change the default `/^no default$/i` comment test pattern +* Set the `commentPattern` option to a regular expression string to change the default `/^no default$/i` comment test pattern. ### commentPattern diff --git a/docs/src/rules/func-names.md b/docs/src/rules/func-names.md index 370f621bca36..34ea72569265 100644 --- a/docs/src/rules/func-names.md +++ b/docs/src/rules/func-names.md @@ -23,14 +23,14 @@ This rule can enforce or disallow the use of named function expressions. This rule has a string option: -* `"always"` (default) requires function expressions to have a name +* `"always"` (default) requires function expressions to have a name. * `"as-needed"` requires function expressions to have a name, if the name isn't assigned automatically per the ECMAScript specification. -* `"never"` disallows named function expressions, except in recursive functions, where a name is needed +* `"never"` disallows named function expressions, except in recursive functions, where a name is needed. This rule has an object option: * `"generators": "always" | "as-needed" | "never"` - * `"always"` require named generators + * `"always"` require named generators. * `"as-needed"` require named generators if the name isn't assigned automatically per the ECMAScript specification. * `"never"` disallow named generators where possible. diff --git a/docs/src/rules/logical-assignment-operators.md b/docs/src/rules/logical-assignment-operators.md index 1b59cfa70bba..830cc425315f 100644 --- a/docs/src/rules/logical-assignment-operators.md +++ b/docs/src/rules/logical-assignment-operators.md @@ -22,8 +22,8 @@ String option: Object option (only available if string option is set to `"always"`): -* `"enforceForIfStatements": false`(default) Do *not* check for equivalent `if` statements -* `"enforceForIfStatements": true` Check for equivalent `if` statements +* `"enforceForIfStatements": false` (default) Do *not* check for equivalent `if` statements. +* `"enforceForIfStatements": true` Check for equivalent `if` statements. #### always diff --git a/docs/src/rules/max-lines.md b/docs/src/rules/max-lines.md index 232b788e70b0..4b5731b32e90 100644 --- a/docs/src/rules/max-lines.md +++ b/docs/src/rules/max-lines.md @@ -25,11 +25,11 @@ Please note that most editors show an additional empty line at the end if the fi This rule has a number or object option: -* `"max"` (default `300`) enforces a maximum number of lines in a file +* `"max"` (default `300`) enforces a maximum number of lines in a file. * `"skipBlankLines": true` ignore lines made up purely of whitespace. -* `"skipComments": true` ignore lines containing just comments +* `"skipComments": true` ignore lines containing just comments. ### max diff --git a/docs/src/rules/new-cap.md b/docs/src/rules/new-cap.md index 68ce9dce2554..a145aa27b999 100644 --- a/docs/src/rules/new-cap.md +++ b/docs/src/rules/new-cap.md @@ -52,8 +52,8 @@ This rule has an object option: * `"newIsCapExceptionPattern"` allows any lowercase-started function names that match the specified regex pattern to be called with the `new` operator. * `"capIsNewExceptions"` allows specified uppercase-started function names to be called without the `new` operator. * `"capIsNewExceptionPattern"` allows any uppercase-started function names that match the specified regex pattern to be called without the `new` operator. -* `"properties": true` (default) enables checks on object properties -* `"properties": false` disables checks on object properties +* `"properties": true` (default) enables checks on object properties. +* `"properties": false` disables checks on object properties. ### newIsCap diff --git a/docs/src/rules/no-case-declarations.md b/docs/src/rules/no-case-declarations.md index dcf4d74f0e04..28a00469ba4d 100644 --- a/docs/src/rules/no-case-declarations.md +++ b/docs/src/rules/no-case-declarations.md @@ -9,15 +9,15 @@ related_rules: This rule disallows lexical declarations (`let`, `const`, `function` and `class`) in `case`/`default` clauses. The reason is that the lexical declaration is visible -in the entire switch block but it only gets initialized when it is assigned, which -will only happen if the case where it is defined is reached. +in the entire `switch` block but it only gets initialized when it is assigned, which +will only happen if the `case` where it is defined is reached. -To ensure that the lexical declaration only applies to the current case clause +To ensure that the lexical declaration only applies to the current `case` clause wrap your clauses in blocks. ## Rule Details -This rule aims to prevent access to uninitialized lexical bindings as well as accessing hoisted functions across case clauses. +This rule aims to prevent access to uninitialized lexical bindings as well as accessing hoisted functions across `case` clauses. Examples of **incorrect** code for this rule: @@ -81,4 +81,4 @@ switch (foo) { ## When Not To Use It -If you depend on fall through behavior and want access to bindings introduced in the case block. +If you depend on fall through behavior and want access to bindings introduced in the `case` block. diff --git a/docs/src/rules/no-eq-null.md b/docs/src/rules/no-eq-null.md index 393c28824251..70bbf34f8c23 100644 --- a/docs/src/rules/no-eq-null.md +++ b/docs/src/rules/no-eq-null.md @@ -6,7 +6,7 @@ related_rules: --- -Comparing to `null` without a type-checking operator (`==` or `!=`), can have unintended results as the comparison will evaluate to true when comparing to not just a `null`, but also an `undefined` value. +Comparing to `null` without a type-checking operator (`==` or `!=`), can have unintended results as the comparison will evaluate to `true` when comparing to not just a `null`, but also an `undefined` value. ```js if (foo == null) { diff --git a/docs/src/rules/sort-keys.md b/docs/src/rules/sort-keys.md index 89d01a0a8c9a..4061fb41b350 100644 --- a/docs/src/rules/sort-keys.md +++ b/docs/src/rules/sort-keys.md @@ -93,14 +93,14 @@ The 2nd option is an object which has the following properties. Example for a list: -With `natural` as true, the ordering would be +With `natural` as `true`, the ordering would be 1 3 6 8 10 -With `natural` as false, the ordering would be +With `natural` as `false`, the ordering would be 1 10 3 From abee4ca1fa10da733b1cc4a7d5e765b912a9de82 Mon Sep 17 00:00:00 2001 From: Jenkins Date: Fri, 3 Oct 2025 20:08:36 +0000 Subject: [PATCH 141/165] chore: package.json update for @eslint/js release --- packages/js/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/js/package.json b/packages/js/package.json index d88cea0f6e08..d1fc9b8f45d2 100644 --- a/packages/js/package.json +++ b/packages/js/package.json @@ -1,6 +1,6 @@ { "name": "@eslint/js", - "version": "9.36.0", + "version": "9.37.0", "description": "ESLint JavaScript language implementation", "funding": "https://eslint.org/donate", "main": "./src/index.js", From afe8a1346958242031fea66fdfbb239e8bf408b7 Mon Sep 17 00:00:00 2001 From: Francesco Trotta Date: Fri, 3 Oct 2025 22:24:03 +0200 Subject: [PATCH 142/165] chore: update `@eslint/js` dependency to version 9.37.0 (#20183) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ef97cdc99b5d..1ab00b28ff2f 100644 --- a/package.json +++ b/package.json @@ -110,7 +110,7 @@ "@eslint/config-helpers": "^0.4.0", "@eslint/core": "^0.16.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.36.0", + "@eslint/js": "9.37.0", "@eslint/plugin-kit": "^0.4.0", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", From 94865ff41cdc14b90ecd325926b78c2ffc6a5206 Mon Sep 17 00:00:00 2001 From: Jenkins Date: Fri, 3 Oct 2025 20:29:44 +0000 Subject: [PATCH 143/165] Build: changelog update for 9.37.0 --- CHANGELOG.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 959d9913443a..b47f1e71eb81 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,27 @@ +v9.37.0 - October 3, 2025 + +* [`afe8a13`](https://github.com/eslint/eslint/commit/afe8a1346958242031fea66fdfbb239e8bf408b7) chore: update `@eslint/js` dependency to version 9.37.0 (#20183) (Francesco Trotta) +* [`abee4ca`](https://github.com/eslint/eslint/commit/abee4ca1fa10da733b1cc4a7d5e765b912a9de82) chore: package.json update for @eslint/js release (Jenkins) +* [`b950359`](https://github.com/eslint/eslint/commit/b950359c5f39085483c3137a6a160e582ef32007) docs: fix typos across the docs (#20182) (루밀LuMir) +* [`42498a2`](https://github.com/eslint/eslint/commit/42498a27981d50750dd15ae8660dbe85c4f4587c) docs: improve ToC accessibility by hiding non-semantic character (#20181) (Percy Ma) +* [`fc9381f`](https://github.com/eslint/eslint/commit/fc9381f6ca57b824e82d118c14631c17bea79d7e) chore: fix typos in comments (#20175) (overlookmotel) +* [`e1574a2`](https://github.com/eslint/eslint/commit/e1574a22d38fd7e1891f86f8db0b09053f8963cb) chore: unpin jiti (#20173) (renovate[bot]) +* [`29ea092`](https://github.com/eslint/eslint/commit/29ea092b93608756350b1e9c5a4f29c8a49264ab) docs: Update README (GitHub Actions Bot) +* [`a129cce`](https://github.com/eslint/eslint/commit/a129cced7a86ea2518eb9be6990fa18af39694ca) fix: correct `no-loss-of-precision` false positives for leading zeros (#20164) (Francesco Trotta) +* [`09e04fc`](https://github.com/eslint/eslint/commit/09e04fcc3f4cc963eea7c9c579391de5e231595b) fix: add missing AST token types (#20172) (Pixel998) +* [`5c97a04`](https://github.com/eslint/eslint/commit/5c97a04578e6280c2395f642c2d8d6bdf30eec18) docs: show `availableUntil` in deprecated rule banner (#20170) (Pixel998) +* [`39f7fb4`](https://github.com/eslint/eslint/commit/39f7fb493a6924ff7dc638fd4d6e7b3d8eb95383) feat: `preserve-caught-error` should recognize all static "cause" keys (#20163) (Pixel998) +* [`f81eabc`](https://github.com/eslint/eslint/commit/f81eabc5849ece98b8ca054f96b29f038a69bcf8) feat: support TS syntax in `no-restricted-imports` (#19562) (Nitin Kumar) +* [`e1ac05e`](https://github.com/eslint/eslint/commit/e1ac05e2fae779e738f85bd47dda1cc2b7099346) refactor: mark `ESLint.findConfigFile()` as `async`, add missing docs (#20157) (Pixel998) +* [`90a71bf`](https://github.com/eslint/eslint/commit/90a71bf5024a86fc232cd2e05f96811e2a18fd0f) docs: update `README` files to add badge and instructions (#20115) (루밀LuMir) +* [`861c6da`](https://github.com/eslint/eslint/commit/861c6da2bd2796414e6eed782155ec34e2ed6344) fix: correct `ESLint` typings (#20122) (Pixel998) +* [`347906d`](https://github.com/eslint/eslint/commit/347906d627c53bf45d63ba831d2fd2b83fb0a749) chore: update eslint (#20149) (renovate[bot]) +* [`1603ae1`](https://github.com/eslint/eslint/commit/1603ae1526d9b6f557c7d5534a4f40f46842edd6) docs: update references from `master` to `main` (#20153) (루밀LuMir) +* [`0cb5897`](https://github.com/eslint/eslint/commit/0cb5897e24059bacadb8d2e6458184904759fda1) test: remove tmp dir created for circular fixes in multithread mode test (#20146) (Milos Djermanovic) +* [`bb99566`](https://github.com/eslint/eslint/commit/bb995665e32b3a958e78006c9fd75744c5604f1b) ci: pin `jiti` to version 2.5.1 (#20151) (Pixel998) +* [`177f669`](https://github.com/eslint/eslint/commit/177f669adc0f96d14ae1a71cde7786f327515863) perf: improve worker count calculation for `"auto"` concurrency (#20067) (Francesco Trotta) +* [`448b57b`](https://github.com/eslint/eslint/commit/448b57bca3406ee12c4e44e9298fc0c99d3ee10c) chore: Mark deprecated formatting rules as available until v11.0.0 (#20144) (Milos Djermanovic) + v9.36.0 - September 19, 2025 * [`12411e8`](https://github.com/eslint/eslint/commit/12411e8d450ed26a5f7cca6a78ec05323c9323e8) chore: upgrade @eslint/js@9.36.0 (#20139) (Milos Djermanovic) From d5d1bdf5fdfad75197aadd3e894182135158c3b1 Mon Sep 17 00:00:00 2001 From: Jenkins Date: Fri, 3 Oct 2025 20:29:45 +0000 Subject: [PATCH 144/165] 9.37.0 --- docs/package.json | 2 +- docs/src/_data/versions.json | 2 +- .../use/formatters/html-formatter-example.html | 2 +- docs/src/use/formatters/index.md | 18 +++++++++--------- package.json | 2 +- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/package.json b/docs/package.json index 1e4dbbf7db1e..12acbfd0ffa4 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,7 +1,7 @@ { "name": "docs-eslint", "private": true, - "version": "9.36.0", + "version": "9.37.0", "description": "", "main": "index.js", "keywords": [], diff --git a/docs/src/_data/versions.json b/docs/src/_data/versions.json index dc5ef6ea7756..c6e9e3edd89a 100644 --- a/docs/src/_data/versions.json +++ b/docs/src/_data/versions.json @@ -6,7 +6,7 @@ "path": "/docs/head/" }, { - "version": "9.36.0", + "version": "9.37.0", "branch": "latest", "path": "/docs/latest/" }, diff --git a/docs/src/use/formatters/html-formatter-example.html b/docs/src/use/formatters/html-formatter-example.html index bcfac54dbd5e..6765e30dceaf 100644 --- a/docs/src/use/formatters/html-formatter-example.html +++ b/docs/src/use/formatters/html-formatter-example.html @@ -118,7 +118,7 @@

ESLint Report

- 8 problems (4 errors, 4 warnings) - Generated on Fri Sep 19 2025 14:30:46 GMT+0000 (Coordinated Universal Time) + 8 problems (4 errors, 4 warnings) - Generated on Fri Oct 03 2025 20:29:46 GMT+0000 (Coordinated Universal Time)
diff --git a/docs/src/use/formatters/index.md b/docs/src/use/formatters/index.md index 524eb52516d4..4ae535a40685 100644 --- a/docs/src/use/formatters/index.md +++ b/docs/src/use/formatters/index.md @@ -266,7 +266,7 @@ Example output (formatted for easier reading): "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -292,7 +292,7 @@ Example output (formatted for easier reading): "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -318,7 +318,7 @@ Example output (formatted for easier reading): "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -459,7 +459,7 @@ Example output (formatted for easier reading): "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -518,7 +518,7 @@ Example output (formatted for easier reading): "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -633,7 +633,7 @@ Example output (formatted for easier reading): "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -1147,7 +1147,7 @@ Example output (formatted for easier reading): "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -1173,7 +1173,7 @@ Example output (formatted for easier reading): "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", @@ -1199,7 +1199,7 @@ Example output (formatted for easier reading): "message": "Formatting rules are being moved out of ESLint core.", "url": "https://eslint.org/blog/2023/10/deprecating-formatting-rules/", "deprecatedSince": "8.53.0", - "availableUntil": "10.0.0", + "availableUntil": "11.0.0", "replacedBy": [ { "message": "ESLint Stylistic now maintains deprecated stylistic core rules.", diff --git a/package.json b/package.json index 1ab00b28ff2f..224042db2860 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "eslint", - "version": "9.36.0", + "version": "9.37.0", "author": "Nicholas C. Zakas ", "description": "An AST-based pattern checker for JavaScript.", "type": "commonjs", From 8962089edbd978b43513576387a134036b8e2d36 Mon Sep 17 00:00:00 2001 From: Pixel998 Date: Sat, 4 Oct 2025 22:29:40 +0300 Subject: [PATCH 145/165] chore: mark deprecated rules as available until v11.0.0 (#20184) --- docs/src/_data/rules_meta.json | 34 +++++++++++++++--------------- lib/rules/callback-return.js | 2 +- lib/rules/global-require.js | 2 +- lib/rules/handle-callback-err.js | 2 +- lib/rules/id-blacklist.js | 2 +- lib/rules/no-buffer-constructor.js | 2 +- lib/rules/no-catch-shadow.js | 2 +- lib/rules/no-mixed-requires.js | 2 +- lib/rules/no-native-reassign.js | 2 +- lib/rules/no-negated-in-lhs.js | 2 +- lib/rules/no-new-object.js | 2 +- lib/rules/no-new-require.js | 2 +- lib/rules/no-new-symbol.js | 2 +- lib/rules/no-path-concat.js | 2 +- lib/rules/no-process-env.js | 2 +- lib/rules/no-process-exit.js | 2 +- lib/rules/no-restricted-modules.js | 2 +- lib/rules/no-sync.js | 2 +- 18 files changed, 34 insertions(+), 34 deletions(-) diff --git a/docs/src/_data/rules_meta.json b/docs/src/_data/rules_meta.json index 27b8444b8a8f..3d1bc0d0f41e 100644 --- a/docs/src/_data/rules_meta.json +++ b/docs/src/_data/rules_meta.json @@ -260,7 +260,7 @@ "message": "Node.js rules were moved out of ESLint core.", "url": "https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules", "deprecatedSince": "7.0.0", - "availableUntil": null, + "availableUntil": "11.0.0", "replacedBy": [ { "message": "eslint-plugin-n now maintains deprecated Node.js-related rules.", @@ -807,7 +807,7 @@ "message": "Node.js rules were moved out of ESLint core.", "url": "https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules", "deprecatedSince": "7.0.0", - "availableUntil": null, + "availableUntil": "11.0.0", "replacedBy": [ { "message": "eslint-plugin-n now maintains deprecated Node.js-related rules.", @@ -856,7 +856,7 @@ "message": "Node.js rules were moved out of ESLint core.", "url": "https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules", "deprecatedSince": "7.0.0", - "availableUntil": null, + "availableUntil": "11.0.0", "replacedBy": [ { "message": "eslint-plugin-n now maintains deprecated Node.js-related rules.", @@ -883,7 +883,7 @@ "message": "The rule was renamed.", "url": "https://eslint.org/blog/2020/07/eslint-v7.5.0-released/#deprecating-id-blacklist", "deprecatedSince": "7.5.0", - "availableUntil": null, + "availableUntil": "11.0.0", "replacedBy": [ { "rule": { @@ -1667,7 +1667,7 @@ "message": "Node.js rules were moved out of ESLint core.", "url": "https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules", "deprecatedSince": "7.0.0", - "availableUntil": null, + "availableUntil": "11.0.0", "replacedBy": [ { "message": "eslint-plugin-n now maintains deprecated Node.js-related rules.", @@ -1717,7 +1717,7 @@ "message": "This rule was renamed.", "url": "https://eslint.org/blog/2018/07/eslint-v5.1.0-released/", "deprecatedSince": "5.1.0", - "availableUntil": null, + "availableUntil": "11.0.0", "replacedBy": [ { "rule": { @@ -2475,7 +2475,7 @@ "message": "Node.js rules were moved out of ESLint core.", "url": "https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules", "deprecatedSince": "7.0.0", - "availableUntil": null, + "availableUntil": "11.0.0", "replacedBy": [ { "message": "eslint-plugin-n now maintains deprecated Node.js-related rules.", @@ -2616,7 +2616,7 @@ "message": "Renamed rule.", "url": "https://eslint.org/blog/2016/08/eslint-v3.3.0-released/#deprecated-rules", "deprecatedSince": "3.3.0", - "availableUntil": null, + "availableUntil": "11.0.0", "replacedBy": [ { "rule": { @@ -2647,7 +2647,7 @@ "message": "Renamed rule.", "url": "https://eslint.org/blog/2016/08/eslint-v3.3.0-released/#deprecated-rules", "deprecatedSince": "3.3.0", - "availableUntil": null, + "availableUntil": "11.0.0", "replacedBy": [ { "rule": { @@ -2702,7 +2702,7 @@ "message": "The new rule flags more situations where object literal syntax can be used, and it does not report a problem when the `Object` constructor is invoked with an argument.", "url": "https://eslint.org/blog/2023/09/eslint-v8.50.0-released/", "deprecatedSince": "8.50.0", - "availableUntil": null, + "availableUntil": "11.0.0", "replacedBy": [ { "rule": { @@ -2718,7 +2718,7 @@ "message": "Node.js rules were moved out of ESLint core.", "url": "https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules", "deprecatedSince": "7.0.0", - "availableUntil": null, + "availableUntil": "11.0.0", "replacedBy": [ { "message": "eslint-plugin-n now maintains deprecated Node.js-related rules.", @@ -2751,7 +2751,7 @@ "message": "The rule was replaced with a more general rule.", "url": "https://eslint.org/docs/latest/use/migrate-to-9.0.0#eslint-recommended", "deprecatedSince": "9.0.0", - "availableUntil": null, + "availableUntil": "11.0.0", "replacedBy": [ { "rule": { @@ -2825,7 +2825,7 @@ "message": "Node.js rules were moved out of ESLint core.", "url": "https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules", "deprecatedSince": "7.0.0", - "availableUntil": null, + "availableUntil": "11.0.0", "replacedBy": [ { "message": "eslint-plugin-n now maintains deprecated Node.js-related rules.", @@ -2866,7 +2866,7 @@ "message": "Node.js rules were moved out of ESLint core.", "url": "https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules", "deprecatedSince": "7.0.0", - "availableUntil": null, + "availableUntil": "11.0.0", "replacedBy": [ { "message": "eslint-plugin-n now maintains deprecated Node.js-related rules.", @@ -2893,7 +2893,7 @@ "message": "Node.js rules were moved out of ESLint core.", "url": "https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules", "deprecatedSince": "7.0.0", - "availableUntil": null, + "availableUntil": "11.0.0", "replacedBy": [ { "message": "eslint-plugin-n now maintains deprecated Node.js-related rules.", @@ -3007,7 +3007,7 @@ "message": "Node.js rules were moved out of ESLint core.", "url": "https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules", "deprecatedSince": "7.0.0", - "availableUntil": null, + "availableUntil": "11.0.0", "replacedBy": [ { "message": "eslint-plugin-n now maintains deprecated Node.js-related rules.", @@ -3200,7 +3200,7 @@ "message": "Node.js rules were moved out of ESLint core.", "url": "https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules", "deprecatedSince": "7.0.0", - "availableUntil": null, + "availableUntil": "11.0.0", "replacedBy": [ { "message": "eslint-plugin-n now maintains deprecated Node.js-related rules.", diff --git a/lib/rules/callback-return.js b/lib/rules/callback-return.js index 7cf9328c2c65..471ecf2618c8 100644 --- a/lib/rules/callback-return.js +++ b/lib/rules/callback-return.js @@ -16,7 +16,7 @@ module.exports = { message: "Node.js rules were moved out of ESLint core.", url: "https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules", deprecatedSince: "7.0.0", - availableUntil: null, + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/global-require.js b/lib/rules/global-require.js index dc9bf1e36191..44b31814b93c 100644 --- a/lib/rules/global-require.js +++ b/lib/rules/global-require.js @@ -60,7 +60,7 @@ module.exports = { message: "Node.js rules were moved out of ESLint core.", url: "https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules", deprecatedSince: "7.0.0", - availableUntil: null, + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/handle-callback-err.js b/lib/rules/handle-callback-err.js index 83683b55140b..d9b0641a8cbd 100644 --- a/lib/rules/handle-callback-err.js +++ b/lib/rules/handle-callback-err.js @@ -17,7 +17,7 @@ module.exports = { message: "Node.js rules were moved out of ESLint core.", url: "https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules", deprecatedSince: "7.0.0", - availableUntil: null, + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/id-blacklist.js b/lib/rules/id-blacklist.js index 528f2e9dae4c..6a84827cfe45 100644 --- a/lib/rules/id-blacklist.js +++ b/lib/rules/id-blacklist.js @@ -101,7 +101,7 @@ module.exports = { message: "The rule was renamed.", url: "https://eslint.org/blog/2020/07/eslint-v7.5.0-released/#deprecating-id-blacklist", deprecatedSince: "7.5.0", - availableUntil: null, + availableUntil: "11.0.0", replacedBy: [ { rule: { diff --git a/lib/rules/no-buffer-constructor.js b/lib/rules/no-buffer-constructor.js index 3fa6632fe34e..6a48b55737b1 100644 --- a/lib/rules/no-buffer-constructor.js +++ b/lib/rules/no-buffer-constructor.js @@ -16,7 +16,7 @@ module.exports = { message: "Node.js rules were moved out of ESLint core.", url: "https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules", deprecatedSince: "7.0.0", - availableUntil: null, + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/no-catch-shadow.js b/lib/rules/no-catch-shadow.js index e4c0718ed1ae..b47ac3248305 100644 --- a/lib/rules/no-catch-shadow.js +++ b/lib/rules/no-catch-shadow.js @@ -32,7 +32,7 @@ module.exports = { message: "This rule was renamed.", url: "https://eslint.org/blog/2018/07/eslint-v5.1.0-released/", deprecatedSince: "5.1.0", - availableUntil: null, + availableUntil: "11.0.0", replacedBy: [ { rule: { diff --git a/lib/rules/no-mixed-requires.js b/lib/rules/no-mixed-requires.js index cbab731094dd..0d8bb5586334 100644 --- a/lib/rules/no-mixed-requires.js +++ b/lib/rules/no-mixed-requires.js @@ -17,7 +17,7 @@ module.exports = { message: "Node.js rules were moved out of ESLint core.", url: "https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules", deprecatedSince: "7.0.0", - availableUntil: null, + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/no-native-reassign.js b/lib/rules/no-native-reassign.js index b3949c2f2cf7..f4eef063276b 100644 --- a/lib/rules/no-native-reassign.js +++ b/lib/rules/no-native-reassign.js @@ -26,7 +26,7 @@ module.exports = { message: "Renamed rule.", url: "https://eslint.org/blog/2016/08/eslint-v3.3.0-released/#deprecated-rules", deprecatedSince: "3.3.0", - availableUntil: null, + availableUntil: "11.0.0", replacedBy: [ { rule: { diff --git a/lib/rules/no-negated-in-lhs.js b/lib/rules/no-negated-in-lhs.js index 4804414f0a60..f003cb306255 100644 --- a/lib/rules/no-negated-in-lhs.js +++ b/lib/rules/no-negated-in-lhs.js @@ -26,7 +26,7 @@ module.exports = { message: "Renamed rule.", url: "https://eslint.org/blog/2016/08/eslint-v3.3.0-released/#deprecated-rules", deprecatedSince: "3.3.0", - availableUntil: null, + availableUntil: "11.0.0", replacedBy: [ { rule: { diff --git a/lib/rules/no-new-object.js b/lib/rules/no-new-object.js index c564a76d6625..f18bf974f5f1 100644 --- a/lib/rules/no-new-object.js +++ b/lib/rules/no-new-object.js @@ -32,7 +32,7 @@ module.exports = { "The new rule flags more situations where object literal syntax can be used, and it does not report a problem when the `Object` constructor is invoked with an argument.", url: "https://eslint.org/blog/2023/09/eslint-v8.50.0-released/", deprecatedSince: "8.50.0", - availableUntil: null, + availableUntil: "11.0.0", replacedBy: [ { rule: { diff --git a/lib/rules/no-new-require.js b/lib/rules/no-new-require.js index 5a8ea5c2cc60..09d136c83c43 100644 --- a/lib/rules/no-new-require.js +++ b/lib/rules/no-new-require.js @@ -17,7 +17,7 @@ module.exports = { message: "Node.js rules were moved out of ESLint core.", url: "https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules", deprecatedSince: "7.0.0", - availableUntil: null, + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/no-new-symbol.js b/lib/rules/no-new-symbol.js index 6a8127fcaca7..838f502f55aa 100644 --- a/lib/rules/no-new-symbol.js +++ b/lib/rules/no-new-symbol.js @@ -25,7 +25,7 @@ module.exports = { message: "The rule was replaced with a more general rule.", url: "https://eslint.org/docs/latest/use/migrate-to-9.0.0#eslint-recommended", deprecatedSince: "9.0.0", - availableUntil: null, + availableUntil: "11.0.0", replacedBy: [ { rule: { diff --git a/lib/rules/no-path-concat.js b/lib/rules/no-path-concat.js index 7d69fc117986..230a39438557 100644 --- a/lib/rules/no-path-concat.js +++ b/lib/rules/no-path-concat.js @@ -16,7 +16,7 @@ module.exports = { message: "Node.js rules were moved out of ESLint core.", url: "https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules", deprecatedSince: "7.0.0", - availableUntil: null, + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/no-process-env.js b/lib/rules/no-process-env.js index a2e233845758..c9dc353ff7fc 100644 --- a/lib/rules/no-process-env.js +++ b/lib/rules/no-process-env.js @@ -16,7 +16,7 @@ module.exports = { message: "Node.js rules were moved out of ESLint core.", url: "https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules", deprecatedSince: "7.0.0", - availableUntil: null, + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/no-process-exit.js b/lib/rules/no-process-exit.js index aab19740e3ce..79f8153a6368 100644 --- a/lib/rules/no-process-exit.js +++ b/lib/rules/no-process-exit.js @@ -16,7 +16,7 @@ module.exports = { message: "Node.js rules were moved out of ESLint core.", url: "https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules", deprecatedSince: "7.0.0", - availableUntil: null, + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/no-restricted-modules.js b/lib/rules/no-restricted-modules.js index d6a72ec8d32a..c09cb7d9e6bb 100644 --- a/lib/rules/no-restricted-modules.js +++ b/lib/rules/no-restricted-modules.js @@ -52,7 +52,7 @@ module.exports = { message: "Node.js rules were moved out of ESLint core.", url: "https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules", deprecatedSince: "7.0.0", - availableUntil: null, + availableUntil: "11.0.0", replacedBy: [ { message: diff --git a/lib/rules/no-sync.js b/lib/rules/no-sync.js index aee74aa6dc47..50b5860ee1ed 100644 --- a/lib/rules/no-sync.js +++ b/lib/rules/no-sync.js @@ -17,7 +17,7 @@ module.exports = { message: "Node.js rules were moved out of ESLint core.", url: "https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules", deprecatedSince: "7.0.0", - availableUntil: null, + availableUntil: "11.0.0", replacedBy: [ { message: From cd3998314876a4fad6463d9011bc73778ccc1fd9 Mon Sep 17 00:00:00 2001 From: Percy Ma Date: Tue, 7 Oct 2025 04:18:59 +0800 Subject: [PATCH 146/165] docs: move `custom-formatters` type descriptions to `nodejs-api` (#20190) * docs: link the types from the `custom-formatters` page to the `nodejs-api` page * update --- docs/src/extend/custom-formatters.md | 28 +------------------------- docs/src/use/command-line-interface.md | 2 +- 2 files changed, 2 insertions(+), 28 deletions(-) diff --git a/docs/src/extend/custom-formatters.md b/docs/src/extend/custom-formatters.md index 6f2c40ebcab4..e5adc9653c26 100644 --- a/docs/src/extend/custom-formatters.md +++ b/docs/src/extend/custom-formatters.md @@ -44,7 +44,7 @@ The remainder of this section contains reference information on how to work with ### The `results` Argument -The `results` object passed into a formatter is an array of [`result`](#the-result-object) objects containing the linting results for individual files. Here's an example output: +The `results` object passed into a formatter is an array of [`LintResult`](../integrate/nodejs-api#-lintresult-type) objects containing the linting results for individual files. Here's an example output: ```js [ @@ -85,32 +85,6 @@ The `results` object passed into a formatter is an array of [`result`](#the-resu ]; ``` -#### The `result` Object - - - -Each object in the `results` array is a `result` object. Each `result` object contains the path of the file that was linted and information about linting issues that were encountered. Here are the properties available on each `result` object: - -- **filePath**: The absolute path to the file that was linted. -- **messages**: An array of [`message`](#the-message-object) objects. See below for more info about messages. -- **errorCount**: The number of errors for the given file. -- **warningCount**: The number of warnings for the given file. -- **stats**: The optional [`stats`](./stats#-stats-type) object that only exists when the `stats` option is used. -- **source**: The source code for the given file. This property is omitted if this file has no errors/warnings or if the `output` property is present. -- **output**: The source code for the given file with as many fixes applied as possible. This property is omitted if no fix is available. - -##### The `message` Object - -Each `message` object contains information about the ESLint rule that was triggered by some source code. The properties available on each `message` object are: - -- **ruleId**: the ID of the rule that produced the error or warning. If the error or warning was not produced by a rule (for example, if it's a parsing error), this is `null`. -- **severity**: the severity of the failure, `1` for warnings and `2` for errors. -- **message**: the human readable description of the error. -- **line**: the line where the issue is located. -- **column**: the column where the issue is located. -- **nodeType**: (**Deprecated:** This property will be removed in a future version of ESLint.) the type of the node in the [AST](https://github.com/estree/estree/blob/master/es5.md#node-objects) or `null` if the issue isn't related to a particular AST node. - ### The `context` Argument The formatter function receives a `context` object as its second argument. The object has the following properties: diff --git a/docs/src/use/command-line-interface.md b/docs/src/use/command-line-interface.md index f7aa139127f9..dcc41167ad0a 100644 --- a/docs/src/use/command-line-interface.md +++ b/docs/src/use/command-line-interface.md @@ -1070,7 +1070,7 @@ This option outputs the configuration to be used for the file passed. When prese #### `--stats` -This option adds a series of detailed performance statistics (see [Stats type](../extend/stats#-stats-type)) such as the _parse_-, _fix_- and _lint_-times (time per rule) to [`result`](../extend/custom-formatters#the-result-object) objects that are passed to the formatter (see [Stats CLI usage](../extend/stats#cli-usage)). +This option adds a series of detailed performance statistics (see [Stats type](../extend/stats#-stats-type)) such as the _parse_-, _fix_- and _lint_-times (time per rule) to [`result`](../integrate/nodejs-api#-lintresult-type) objects that are passed to the formatter (see [Stats CLI usage](../extend/stats#cli-usage)). - **Argument Type**: No argument. From dbb200e3604e63bba23a18d40089ca44604835ed Mon Sep 17 00:00:00 2001 From: Milos Djermanovic Date: Tue, 7 Oct 2025 14:05:37 +0200 Subject: [PATCH 147/165] chore: use team member's username when name is not available in data (#20194) --- README.md | 10 ++++++++++ tools/update-readme.js | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 70b5181b13ee..a9043fcbf120 100644 --- a/README.md +++ b/README.md @@ -287,6 +287,11 @@ fnx Josh Goldberg ✨
+ +Sweta Tanwar's Avatar
+Sweta Tanwar +
+
Tanuj Kanti's Avatar
Tanuj Kanti @@ -296,6 +301,11 @@ Tanuj Kanti 루밀LuMir's Avatar
루밀LuMir
+
+ +Pixel998's Avatar
+Pixel998 +
### Website Team diff --git a/tools/update-readme.js b/tools/update-readme.js index 74453c6533fa..b225bc0b82d1 100644 --- a/tools/update-readme.js +++ b/tools/update-readme.js @@ -63,8 +63,8 @@ function formatTeamMembers(members) { ${member.name.trim()}'s Avatar
- ${member.name.trim()} + }.png?s=75" width="75" height="75" alt="${member.name?.trim() ?? member.username}'s Avatar">
+ ${member.name?.trim() ?? member.username}
diff --git a/package.json b/package.json index 6193954ecc89..61fe32f29779 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "eslint", - "version": "9.37.0", + "version": "9.38.0", "author": "Nicholas C. Zakas ", "description": "An AST-based pattern checker for JavaScript.", "type": "commonjs", From 7b9446f7cc2054aa2cdf8e6225f4ac15a03671a8 Mon Sep 17 00:00:00 2001 From: sethamus <32633697+sethamus@users.noreply.github.com> Date: Sat, 18 Oct 2025 11:37:22 +0300 Subject: [PATCH 165/165] docs: handle empty flags sections on the feature flags page (#20222) --- docs/src/pages/flags.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/src/pages/flags.md b/docs/src/pages/flags.md index 65afe37584e5..d6aed176aa8d 100644 --- a/docs/src/pages/flags.md +++ b/docs/src/pages/flags.md @@ -34,6 +34,7 @@ The following policies apply to `unstable_` flags. ## Active Flags +{% if flags.active | length %} The following flags are currently available for use in ESLint.
@@ -49,9 +50,13 @@ The following flags are currently available for use in ESLint. {%- endfor -%}
+{% else %} +There are currently no active flags. +{% endif %} ## Inactive Flags +{% if flags.inactive | length %} The following flags were once used but are no longer active. @@ -68,6 +73,9 @@ The following flags were once used but are no longer active. {%- endfor -%}
+{% else %} +There are currently no inactive flags. +{% endif %} ## How to Use Feature Flags