From e2fe7ef7ea0458de56bed4e4c3d5f71aaebd3f28 Mon Sep 17 00:00:00 2001 From: Yosuke Ota Date: Sun, 21 Nov 2021 14:22:31 +0900 Subject: [PATCH] feat: support for private-in syntax (fixes #14811) (#15060) --- lib/rules/utils/ast-utils.js | 4 ++++ tests/lib/rules/space-unary-ops.js | 18 ++++++++++++++++++ tests/lib/rules/utils/ast-utils.js | 5 ++++- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/lib/rules/utils/ast-utils.js b/lib/rules/utils/ast-utils.js index 17ab533b366..16d7b811571 100644 --- a/lib/rules/utils/ast-utils.js +++ b/lib/rules/utils/ast-utils.js @@ -1833,6 +1833,10 @@ module.exports = { return true; } + if (rightToken.type === "PrivateIdentifier") { + return true; + } + return false; }, diff --git a/tests/lib/rules/space-unary-ops.js b/tests/lib/rules/space-unary-ops.js index c56e0135d5e..ccee19c663d 100644 --- a/tests/lib/rules/space-unary-ops.js +++ b/tests/lib/rules/space-unary-ops.js @@ -250,6 +250,11 @@ ruleTester.run("space-unary-ops", rule, { code: "function *foo () { yield(0) }", options: [{ words: false, overrides: { yield: false } }], parserOptions: { ecmaVersion: 6 } + }, + { + code: "class C { #x; *foo(bar) { yield#x in bar; } }", + options: [{ words: false }], + parserOptions: { ecmaVersion: 2022 } } ], @@ -805,6 +810,19 @@ ruleTester.run("space-unary-ops", rule, { line: 1, column: 24 }] + }, + { + code: "class C { #x; *foo(bar) { yield #x in bar; } }", + output: "class C { #x; *foo(bar) { yield#x in bar; } }", + options: [{ words: false }], + parserOptions: { ecmaVersion: 2022 }, + errors: [{ + messageId: "unexpectedAfterWord", + data: { word: "yield" }, + type: "YieldExpression", + line: 1, + column: 27 + }] } ] }); diff --git a/tests/lib/rules/utils/ast-utils.js b/tests/lib/rules/utils/ast-utils.js index 0d2954f5b6c..7789de7742c 100644 --- a/tests/lib/rules/utils/ast-utils.js +++ b/tests/lib/rules/utils/ast-utils.js @@ -1495,7 +1495,10 @@ describe("ast-utils", () => { [["(", "123invalidtoken"], false], [["(", "1n"], true], [["1n", "+"], true], - [["1n", "in"], false] + [["1n", "in"], false], + [["return", "#x"], true], + [["yield", "#x"], true], + [["get", "#x"], true] ]); CASES.forEach((expectedResult, tokenStrings) => {