diff --git a/src/language-js/needs-parens.js b/src/language-js/needs-parens.js index 02b8bf7ac1a6..dfecf3426dbc 100644 --- a/src/language-js/needs-parens.js +++ b/src/language-js/needs-parens.js @@ -70,9 +70,8 @@ function needsParens(path, options) { // `for ((async) of []);` and `for ((let) of []);` if ( name === "left" && - (node.name === "async" || node.name === "let") && - parent.type === "ForOfStatement" && - !parent.await + ((node.name === "async" && !parent.await) || node.name === "let") && + parent.type === "ForOfStatement" ) { return true; } 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 1ccc4806b684..1a376e0823a1 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 @@ -7,6 +7,7 @@ printWidth: 80 | printWidth =====================================input====================================== async function a() { + for await((let) of foo); for await((let).a of foo); for await((let)[a] of foo); for await((let)()[a] of foo); @@ -14,6 +15,7 @@ async function a() { =====================================output===================================== async function a() { + for await ((let) of foo); for await ((let).a of foo); for await ((let)[a] of foo); for await ((let)()[a] of foo); @@ -40,6 +42,8 @@ for (letFoo of foo); for ((let.a) in foo); for ((let[a]) in foo); +for (let of of let); + =====================================output===================================== for ((let) of foo); for (foo of let); @@ -53,5 +57,7 @@ for (letFoo of foo); for (let.a in foo); for ((let)[a] in foo); +for (let of of let); + ================================================================================ `; diff --git a/tests/format/js/identifier/for-of/await.js b/tests/format/js/identifier/for-of/await.js index 0fa9d0a508f1..af916b3ce95e 100644 --- a/tests/format/js/identifier/for-of/await.js +++ b/tests/format/js/identifier/for-of/await.js @@ -1,4 +1,5 @@ async function a() { + for await((let) of foo); for await((let).a of foo); for await((let)[a] of foo); for await((let)()[a] of foo); diff --git a/tests/format/js/identifier/for-of/let.js b/tests/format/js/identifier/for-of/let.js index 5c2398ee26e0..ae49197b8222 100644 --- a/tests/format/js/identifier/for-of/let.js +++ b/tests/format/js/identifier/for-of/let.js @@ -9,3 +9,5 @@ for (letFoo of foo); for ((let.a) in foo); for ((let[a]) in foo); + +for (let of of let);