From 5f88a9314fd1a1e8831acfa1f4ffb585584df66e Mon Sep 17 00:00:00 2001 From: fisker Cheung Date: Mon, 2 Feb 2026 20:15:31 +0800 Subject: [PATCH] Fix comments not printed error in debugger statement (#18840) --- changelog_unreleased/javascript/18840.md | 14 ++++ src/language-js/loc.js | 4 + src/language-js/print/ignored.js | 1 + .../no-semi/__snapshots__/format.test.js.snap | 79 +++++++++++++++++++ tests/format/js/no-semi/debugger-statement.js | 14 ++++ 5 files changed, 112 insertions(+) create mode 100644 changelog_unreleased/javascript/18840.md create mode 100644 tests/format/js/no-semi/debugger-statement.js diff --git a/changelog_unreleased/javascript/18840.md b/changelog_unreleased/javascript/18840.md new file mode 100644 index 000000000..8b423d110 --- /dev/null +++ b/changelog_unreleased/javascript/18840.md @@ -0,0 +1,14 @@ +#### Fix "comment not printed" error in debugger statement (#18840 by @fisker) + + +```jsx +// Input +debugger // Comment +; + +// Prettier stable +Error: Comment "comment" was not printed. Please report this error! + +// Prettier main +debugger; // Comment +``` diff --git a/src/language-js/loc.js b/src/language-js/loc.js index 00ed80959..698c8cd8a 100644 --- a/src/language-js/loc.js +++ b/src/language-js/loc.js @@ -34,6 +34,10 @@ function locEnd(node) { (node.type === "BreakStatement" ? "break".length : "continue".length); } + if (node.type === "DebuggerStatement") { + return locStart(node) + "debugger".length; + } + if (node.type === "VariableDeclaration") { const lastDeclaration = node.declarations.at(-1); return locEnd(lastDeclaration); diff --git a/src/language-js/print/ignored.js b/src/language-js/print/ignored.js index 19565493d..4f314c6fc 100644 --- a/src/language-js/print/ignored.js +++ b/src/language-js/print/ignored.js @@ -11,6 +11,7 @@ function printIgnored(path, options /* , print*/) { options.semi && (node.type === "BreakStatement" || node.type === "ContinueStatement" || + node.type === "DebuggerStatement" || node.type === "VariableDeclaration" || ((node.type === "ExpressionStatement" || node.type === "Directive" || diff --git a/tests/format/js/no-semi/__snapshots__/format.test.js.snap b/tests/format/js/no-semi/__snapshots__/format.test.js.snap index 5a297c469..151cee4cb 100644 --- a/tests/format/js/no-semi/__snapshots__/format.test.js.snap +++ b/tests/format/js/no-semi/__snapshots__/format.test.js.snap @@ -616,6 +616,85 @@ x; ================================================================================ `; +exports[`debugger-statement.js - {"semi":false} format 1`] = ` +====================================options===================================== +parsers: ["babel", "typescript", "flow"] +semi: false + printWidth: 80 (default) | +=====================================input====================================== +debugger + +// 11 +;[] + +debugger + +// 21 +;foo + +// prettier-ignore +debugger + +;[] + +=====================================output===================================== +debugger + +// 11 +;[] + +debugger + +// 21 +foo + +// prettier-ignore +debugger + +;[] + +================================================================================ +`; + +exports[`debugger-statement.js format 1`] = ` +====================================options===================================== +parsers: ["babel", "typescript", "flow"] + printWidth: 80 (default) | +=====================================input====================================== +debugger + +// 11 +;[] + +debugger + +// 21 +;foo + +// prettier-ignore +debugger + +;[] + +=====================================output===================================== +debugger; + +// 11 +[]; + +debugger; + +// 21 +foo; + +// prettier-ignore +debugger; + +[]; + +================================================================================ +`; + exports[`imports.js - {"semi":false} format 1`] = ` ====================================options===================================== parsers: ["babel", "typescript", "flow"] diff --git a/tests/format/js/no-semi/debugger-statement.js b/tests/format/js/no-semi/debugger-statement.js new file mode 100644 index 000000000..c88c78687 --- /dev/null +++ b/tests/format/js/no-semi/debugger-statement.js @@ -0,0 +1,14 @@ +debugger + +// 11 +;[] + +debugger + +// 21 +;foo + +// prettier-ignore +debugger + +;[]