From 678964b8def9ac32ef59e01ed24be7db5d704218 Mon Sep 17 00:00:00 2001 From: Lucas Azzola Date: Thu, 29 Jun 2017 00:53:10 +1000 Subject: [PATCH] fix(typescript): don't add namespace keyword to global declaration, fixes #2327 (#2329) --- scripts/fuzzer2.js | 0 src/printer.js | 7 ++++--- .../__snapshots__/jsfmt.spec.js.snap | 21 +++++++++++++++++++ tests/typescript_module/global.js | 4 ++++ 4 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 scripts/fuzzer2.js create mode 100644 tests/typescript_module/global.js 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 {}