diff --git a/src/printer.js b/src/printer.js index a9d5f695b..01f8c1371 100644 --- a/src/printer.js +++ b/src/printer.js @@ -874,7 +874,15 @@ function genericPrintNoParens(path, options, print) { return group(concat(parts)); case "ForStatement": - // TODO Get the for (;;) case right. + const body = adjustClause(path.call(print, "body"), options); + + if (!n.init && !n.test && !n.update) { + return concat([ + 'for (;;)', + body, + ]); + } + return concat([ "for (", group( @@ -896,7 +904,7 @@ function genericPrintNoParens(path, options, print) { ]) ), ")", - adjustClause(path.call(print, "body"), options) + body, ]); case "WhileStatement": return concat([ diff --git a/tests/for/__snapshots__/jsfmt.spec.js.snap b/tests/for/__snapshots__/jsfmt.spec.js.snap index 13b0549ec..2f651c203 100644 --- a/tests/for/__snapshots__/jsfmt.spec.js.snap +++ b/tests/for/__snapshots__/jsfmt.spec.js.snap @@ -280,3 +280,12 @@ function corge(x: boolean) { } " `; + +exports[`test for.js 1`] = ` +"for (;;) {} +for (var i = 0; i < 10; ++i) {} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +for (;;) {} +for (var i = 0; i < 10; ++i) {} +" +`; diff --git a/tests/for/for.js b/tests/for/for.js new file mode 100644 index 000000000..2f4f7ad1a --- /dev/null +++ b/tests/for/for.js @@ -0,0 +1,2 @@ +for (;;) {} +for (var i = 0; i < 10; ++i) {}