diff --git a/scripts/fuzzer2.js b/scripts/fuzzer2.js new file mode 100644 index 000000000..e69de29bb diff --git a/src/printer.js b/src/printer.js index cf6d547bc..43654c1f1 100644 --- a/src/printer.js +++ b/src/printer.js @@ -2588,12 +2588,13 @@ function genericPrintNoParens(path, options, print, args) { parts.push(printTypeScriptModifiers(path, options, print)); // Global declaration looks like this: - // declare global { ... } + // (declare)? global { ... } const isGlobalDeclaration = n.name.type === "Identifier" && n.name.name === "global" && - n.modifiers && - n.modifiers.some(modifier => modifier.type === "TSDeclareKeyword"); + !/namespace|module/.test( + options.originalText.slice(util.locStart(n), util.locStart(n.name)) + ); if (!isGlobalDeclaration) { parts.push(isExternalModule ? "module " : "namespace "); diff --git a/tests/typescript_module/__snapshots__/jsfmt.spec.js.snap b/tests/typescript_module/__snapshots__/jsfmt.spec.js.snap index 05e6f82d3..6ec7da40b 100644 --- a/tests/typescript_module/__snapshots__/jsfmt.spec.js.snap +++ b/tests/typescript_module/__snapshots__/jsfmt.spec.js.snap @@ -6,3 +6,24 @@ declare module 'autoprefixer'; declare module "autoprefixer"; `; + +exports[`global.js 1`] = ` +namespace global {} +module global {} +global {} +declare global {} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +namespace global { + +} +namespace global { + +} +global { + +} +declare global { + +} + +`; diff --git a/tests/typescript_module/global.js b/tests/typescript_module/global.js new file mode 100644 index 000000000..24b44687f --- /dev/null +++ b/tests/typescript_module/global.js @@ -0,0 +1,4 @@ +namespace global {} +module global {} +global {} +declare global {}