diff --git a/lib/rules/keyword-spacing.js b/lib/rules/keyword-spacing.js
index 67054cb8ed0..458d15e1fdb 100644
--- a/lib/rules/keyword-spacing.js
+++ b/lib/rules/keyword-spacing.js
@@ -403,7 +403,15 @@ module.exports = {
*/
function checkSpacingForForInStatement(node) {
checkSpacingAroundFirstToken(node);
- checkSpacingAroundTokenBefore(node.right);
+
+ const inToken = sourceCode.getTokenBefore(node.right, astUtils.isNotOpeningParenToken);
+ const previousToken = sourceCode.getTokenBefore(inToken);
+
+ if (previousToken.type !== "PrivateIdentifier") {
+ checkSpacingBefore(inToken);
+ }
+
+ checkSpacingAfter(inToken);
}
/**
@@ -419,7 +427,15 @@ module.exports = {
} else {
checkSpacingAroundFirstToken(node);
}
- checkSpacingAround(sourceCode.getTokenBefore(node.right, astUtils.isNotOpeningParenToken));
+
+ const ofToken = sourceCode.getTokenBefore(node.right, astUtils.isNotOpeningParenToken);
+ const previousToken = sourceCode.getTokenBefore(ofToken);
+
+ if (previousToken.type !== "PrivateIdentifier") {
+ checkSpacingBefore(ofToken);
+ }
+
+ checkSpacingAfter(ofToken);
}
/**
diff --git a/tests/lib/rules/keyword-spacing.js b/tests/lib/rules/keyword-spacing.js
index 821a2b262fd..0dfcae6431c 100644
--- a/tests/lib/rules/keyword-spacing.js
+++ b/tests/lib/rules/keyword-spacing.js
@@ -379,6 +379,10 @@ ruleTester.run("keyword-spacing", rule, {
{ code: "", parserOptions: { ecmaVersion: 6, ecmaFeatures: { jsx: true } } },
{ code: "", options: [NEITHER], parserOptions: { ecmaVersion: 6, ecmaFeatures: { jsx: true } } },
+ // private names
+ { code: "class C {\n#x;\nfoo() {\nfor (this.#x of bar){}}}", options: [{ before: false }], parserOptions: { ecmaVersion: 2022 } },
+ { code: "class C {\n#x;\nfoo() {\nfor (this.#x in bar){}}}", options: [{ before: false }], parserOptions: { ecmaVersion: 2022 } },
+
//----------------------------------------------------------------------
// const
//----------------------------------------------------------------------