diff --git a/src/language-js/printer-estree.js b/src/language-js/printer-estree.js index 51b6b6444..35dc6cbe9 100644 --- a/src/language-js/printer-estree.js +++ b/src/language-js/printer-estree.js @@ -1716,10 +1716,9 @@ function printPathNoParens(path, options, print, args) { ]) ); case "ForInStatement": - // Note: esprima can't actually parse "for each (". return group( concat([ - n.each ? "for each (" : "for (", + "for (", path.call(print, "left"), " in ", path.call(print, "right"), diff --git a/tests/misc/errors/invalid/__snapshots__/jsfmt.spec.js.snap b/tests/misc/errors/invalid/__snapshots__/jsfmt.spec.js.snap new file mode 100644 index 000000000..0c8fd5a18 --- /dev/null +++ b/tests/misc/errors/invalid/__snapshots__/jsfmt.spec.js.snap @@ -0,0 +1,37 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`snippet: #0 error test 1`] = ` +"Unexpected token, expected \\"(\\" (1:5) +> 1 | for each (a in b) {} + | ^" +`; + +exports[`snippet: #0 error test 2`] = ` +"Unexpected identifier, expected the token \`(\` (1:5) +> 1 | for each (a in b) {} + | ^^^^" +`; + +exports[`snippet: #0 error test 3`] = ` +"'(' expected. (1:5) +> 1 | for each (a in b) {} + | ^" +`; + +exports[`snippet: #0 error test 4`] = ` +"Unexpected token, expected \\"(\\" (1:5) +> 1 | for each (a in b) {} + | ^" +`; + +exports[`snippet: #0 error test 5`] = ` +"Unexpected token, expected \\"(\\" (1:5) +> 1 | for each (a in b) {} + | ^" +`; + +exports[`snippet: #0 error test 6`] = ` +"Unexpected token each (1:5) +> 1 | for each (a in b) {} + | ^" +`; diff --git a/tests/misc/errors/invalid/jsfmt.spec.js b/tests/misc/errors/invalid/jsfmt.spec.js new file mode 100644 index 000000000..a8e44852b --- /dev/null +++ b/tests/misc/errors/invalid/jsfmt.spec.js @@ -0,0 +1,16 @@ +for (const parser of [ + "babel", + "flow", + "typescript", + "babel-flow", + "babel-ts", + "espree", +]) { + run_spec( + { + dirname: __dirname, + snippets: ["for each (a in b) {}"], + }, + [parser] + ); +}