diff --git a/src/language-js/needs-parens.js b/src/language-js/needs-parens.js index b6c769cf110e..522accea831b 100644 --- a/src/language-js/needs-parens.js +++ b/src/language-js/needs-parens.js @@ -79,10 +79,9 @@ function needsParens(path, options) { // `for ((let.a) of []);` if (name === "object" && node.name === "let") { - const statement = path.findAncestor( + const expression = path.findAncestor( (node) => node.type === "ForOfStatement" - ); - const expression = statement.left; + )?.left if ( expression && startsWithNoLookaheadToken( diff --git a/tests/format/js/identifier/for-of/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/identifier/for-of/__snapshots__/jsfmt.spec.js.snap index f4330e8117fc..f408f6871811 100644 --- a/tests/format/js/identifier/for-of/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/js/identifier/for-of/__snapshots__/jsfmt.spec.js.snap @@ -37,6 +37,9 @@ for (foo of let[a]); for ((let.a) of foo); for ((let[a]) of foo); +for ((let.a) in foo); +for ((let[a]) in foo); + =====================================output===================================== for ((let) of foo); for (foo of let); @@ -45,5 +48,8 @@ for (foo of let[a]); for ((let).a of foo); for ((let)[a] of foo); +for (let.a in foo); +for ((let)[a] in foo); + ================================================================================ `; diff --git a/tests/format/js/identifier/for-of/let.js b/tests/format/js/identifier/for-of/let.js index ede6a77d3664..8e40c4e48230 100644 --- a/tests/format/js/identifier/for-of/let.js +++ b/tests/format/js/identifier/for-of/let.js @@ -4,3 +4,6 @@ for (foo of let.a); for (foo of let[a]); for ((let.a) of foo); for ((let[a]) of foo); + +for ((let.a) in foo); +for ((let[a]) in foo);