From 6394c732090efdf7798e0c8dc44c46583b4131c3 Mon Sep 17 00:00:00 2001 From: fisker Cheung Date: Thu, 9 Jul 2026 12:57:47 +0800 Subject: [PATCH] Align empty module declaration with TS (#19568) --- changelog_unreleased/flow/19568.md | 14 ++++++++++++++ src/language-js/print/block.js | 1 + .../coverage/__snapshots__/format.test.js.snap | 15 +++++---------- .../__snapshots__/format.test.js.snap | 6 ++---- .../__snapshots__/format.test.js.snap | 14 ++++++++++++++ .../declare/declare-module-empty/empty.ts | 1 + .../declare/declare-module-empty/format.test.js | 1 + 7 files changed, 38 insertions(+), 14 deletions(-) create mode 100644 changelog_unreleased/flow/19568.md create mode 100644 tests/format/typescript/declare/declare-module-empty/__snapshots__/format.test.js.snap create mode 100644 tests/format/typescript/declare/declare-module-empty/empty.ts create mode 100644 tests/format/typescript/declare/declare-module-empty/format.test.js diff --git a/changelog_unreleased/flow/19568.md b/changelog_unreleased/flow/19568.md new file mode 100644 index 000000000..46ba1b247 --- /dev/null +++ b/changelog_unreleased/flow/19568.md @@ -0,0 +1,14 @@ +#### Stop enforcing empty module declaration to break (#19568 by @fisker) + + +```flow +// Input +declare module "foo" {} + +// Prettier stable +declare module "foo" { +} + +// Prettier main +declare module "foo" {} +``` diff --git a/src/language-js/print/block.js b/src/language-js/print/block.js index 74d91620c..0e9886f92 100644 --- a/src/language-js/print/block.js +++ b/src/language-js/print/block.js @@ -48,6 +48,7 @@ function printBlock(path, options, print) { parent.type === "ModuleExpression" || (parent.type === "CatchClause" && !parentParent.finalizer) || parent.type === "TSModuleDeclaration" || + parent.type === "DeclareModule" || parent.type === "MatchStatementCase" || node.type === "StaticBlock" )) { diff --git a/tests/format/flow/flow-repo/coverage/__snapshots__/format.test.js.snap b/tests/format/flow/flow-repo/coverage/__snapshots__/format.test.js.snap index 14e909f53..c1b4762b5 100644 --- a/tests/format/flow/flow-repo/coverage/__snapshots__/format.test.js.snap +++ b/tests/format/flow/flow-repo/coverage/__snapshots__/format.test.js.snap @@ -22,11 +22,9 @@ declare module bar { // that we implicitly assume in type-at-pos and coverage implementations. In // particular, when unchecked it causes a crash with coverage --color. -declare module foo { -} +declare module foo {} -declare module bar { -} +declare module bar {} // TODO @@ -46,8 +44,7 @@ declare module foo { =====================================output===================================== // check coverage of declare module -declare module foo { -} +declare module foo {} ================================================================================ `; @@ -92,11 +89,9 @@ declare class qux { // that we implicitly assume in type-at-pos and coverage implementations. In // particular, when unchecked it causes non-termination with coverage --color. -declare module foo { -} +declare module foo {} -declare module bar { -} +declare module bar {} // TODO diff --git a/tests/format/flow/type-declarations/__snapshots__/format.test.js.snap b/tests/format/flow/type-declarations/__snapshots__/format.test.js.snap index db4a8766e..ddf787553 100644 --- a/tests/format/flow/type-declarations/__snapshots__/format.test.js.snap +++ b/tests/format/flow/type-declarations/__snapshots__/format.test.js.snap @@ -44,8 +44,7 @@ declare module "foo" { declare var bar: string } -declare module baz { -} +declare module baz {} ================================================================================ `; @@ -66,8 +65,7 @@ declare module "foo" { declare var bar: string; } -declare module baz { -} +declare module baz {} ================================================================================ `; diff --git a/tests/format/typescript/declare/declare-module-empty/__snapshots__/format.test.js.snap b/tests/format/typescript/declare/declare-module-empty/__snapshots__/format.test.js.snap new file mode 100644 index 000000000..04c380b7a --- /dev/null +++ b/tests/format/typescript/declare/declare-module-empty/__snapshots__/format.test.js.snap @@ -0,0 +1,14 @@ +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing + +exports[`empty.ts format 1`] = ` +====================================options===================================== +parsers: ["typescript", "flow"] + printWidth: 80 (default) | +=====================================input====================================== +declare module "foo" {} + +=====================================output===================================== +declare module "foo" {} + +================================================================================ +`; diff --git a/tests/format/typescript/declare/declare-module-empty/empty.ts b/tests/format/typescript/declare/declare-module-empty/empty.ts new file mode 100644 index 000000000..3945956c2 --- /dev/null +++ b/tests/format/typescript/declare/declare-module-empty/empty.ts @@ -0,0 +1 @@ +declare module "foo" {} diff --git a/tests/format/typescript/declare/declare-module-empty/format.test.js b/tests/format/typescript/declare/declare-module-empty/format.test.js new file mode 100644 index 000000000..0e7a632d1 --- /dev/null +++ b/tests/format/typescript/declare/declare-module-empty/format.test.js @@ -0,0 +1 @@ +runFormatTest(import.meta, ["typescript", "flow"]);