From 33d4e6dd4a3374f4956c5f56a3c706a917b57f6a Mon Sep 17 00:00:00 2001 From: Conduitry Date: Tue, 9 Jan 2018 21:53:53 -0500 Subject: [PATCH] use acorn-globals to avoid collisions with implied globals (#1079) --- package.json | 1 + src/generators/Generator.ts | 4 ++++ yarn.lock | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index fd97fce5b3..6f0da33f6f 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "@types/node": "^8.0.17", "acorn": "^5.1.1", "acorn-dynamic-import": "^2.0.2", + "acorn-globals": "^4.1.0", "chalk": "^2.0.1", "codecov": "^2.2.0", "console-group": "^0.3.2", diff --git a/src/generators/Generator.ts b/src/generators/Generator.ts index f0c36f8062..02df7cd066 100644 --- a/src/generators/Generator.ts +++ b/src/generators/Generator.ts @@ -1,6 +1,7 @@ import MagicString, { Bundle } from 'magic-string'; import { walk, childKeys } from 'estree-walker'; import { getLocator } from 'locate-character'; +import detectGlobals from 'acorn-globals'; import deindent from '../utils/deindent'; import CodeBuilder from '../utils/CodeBuilder'; import getCodeFrame from '../utils/getCodeFrame'; @@ -414,6 +415,9 @@ export default class Generator { scope.declarations.forEach(name => { this.userVars.add(name); }); + detectGlobals(js.content).forEach(({ name }) => { + this.userVars.add(name); + }); const body = js.content.body.slice(); // slice, because we're going to be mutating the original diff --git a/yarn.lock b/yarn.lock index bf6229baef..da3be26ea4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -28,7 +28,7 @@ acorn-dynamic-import@^2.0.2: dependencies: acorn "^4.0.3" -acorn-globals@^4.0.0: +acorn-globals@^4.0.0, acorn-globals@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.1.0.tgz#ab716025dbe17c54d3ef81d32ece2b2d99fe2538" dependencies: