diff --git a/packages/babel-plugin-transform-es2015-typeof-symbol/src/index.js b/packages/babel-plugin-transform-es2015-typeof-symbol/src/index.js index 08df2600a8..210dfdb17d 100644 --- a/packages/babel-plugin-transform-es2015-typeof-symbol/src/index.js +++ b/packages/babel-plugin-transform-es2015-typeof-symbol/src/index.js @@ -3,6 +3,14 @@ export default function ({ types: t }) { return { visitor: { + Scope({ scope }) { + if (!scope.getBinding("Symbol")) { + return; + } + + scope.rename("Symbol"); + }, + UnaryExpression(path) { let { node, parent } = path; if (node[IGNORE]) return; diff --git a/packages/babel-plugin-transform-es2015-typeof-symbol/test/fixtures/symbols/shadow/actual.js b/packages/babel-plugin-transform-es2015-typeof-symbol/test/fixtures/symbols/shadow/actual.js new file mode 100644 index 0000000000..5bf0d8b678 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-typeof-symbol/test/fixtures/symbols/shadow/actual.js @@ -0,0 +1,3 @@ +var Symbol = foo(); +typeof s; +foo(Symbol); diff --git a/packages/babel-plugin-transform-es2015-typeof-symbol/test/fixtures/symbols/shadow/expected.js b/packages/babel-plugin-transform-es2015-typeof-symbol/test/fixtures/symbols/shadow/expected.js new file mode 100644 index 0000000000..0e6479c445 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-typeof-symbol/test/fixtures/symbols/shadow/expected.js @@ -0,0 +1,5 @@ +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; + +var _Symbol = foo(); +typeof s === "undefined" ? "undefined" : _typeof(s); +foo(_Symbol); diff --git a/packages/babel-plugin-transform-es2015-typeof-symbol/test/fixtures/symbols/shadow/options.json b/packages/babel-plugin-transform-es2015-typeof-symbol/test/fixtures/symbols/shadow/options.json new file mode 100644 index 0000000000..a9b95ca6a3 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-typeof-symbol/test/fixtures/symbols/shadow/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["transform-es2015-typeof-symbol"] +}