From c364ec4d01509986a672a4bf19735f331b5ad791 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Sun, 13 Aug 2017 13:44:42 -0400 Subject: [PATCH] deshadow aliased imports (#1550) --- src/ast/scopes/ModuleScope.js | 4 ++++ .../deshadowed-namespaced-import-renamed/_config.js | 3 +++ .../deshadowed-namespaced-import-renamed/foo.js | 1 + .../deshadowed-namespaced-import-renamed/main.js | 10 ++++++++++ .../samples/deshadowed-namespaced-import-renamed/ns.js | 3 +++ 5 files changed, 21 insertions(+) create mode 100644 test/function/samples/deshadowed-namespaced-import-renamed/_config.js create mode 100644 test/function/samples/deshadowed-namespaced-import-renamed/foo.js create mode 100644 test/function/samples/deshadowed-namespaced-import-renamed/main.js create mode 100644 test/function/samples/deshadowed-namespaced-import-renamed/ns.js diff --git a/src/ast/scopes/ModuleScope.js b/src/ast/scopes/ModuleScope.js index 5a9541e55c5..517fa2bc117 100644 --- a/src/ast/scopes/ModuleScope.js +++ b/src/ast/scopes/ModuleScope.js @@ -50,6 +50,10 @@ export default class ModuleScope extends Scope { if ( name !== specifier.name ) { names.add( declaration.getName( true ) ); } + + if ( specifier.name !== 'default' && specifier.specifier.imported.name !== specifier.specifier.local.name ) { + names.add( specifier.specifier.imported.name ); + } } }); diff --git a/test/function/samples/deshadowed-namespaced-import-renamed/_config.js b/test/function/samples/deshadowed-namespaced-import-renamed/_config.js new file mode 100644 index 00000000000..779b7cac89f --- /dev/null +++ b/test/function/samples/deshadowed-namespaced-import-renamed/_config.js @@ -0,0 +1,3 @@ +module.exports = { + description: '#1550' +}; \ No newline at end of file diff --git a/test/function/samples/deshadowed-namespaced-import-renamed/foo.js b/test/function/samples/deshadowed-namespaced-import-renamed/foo.js new file mode 100644 index 00000000000..7b47b675c59 --- /dev/null +++ b/test/function/samples/deshadowed-namespaced-import-renamed/foo.js @@ -0,0 +1 @@ +export * from './ns.js'; \ No newline at end of file diff --git a/test/function/samples/deshadowed-namespaced-import-renamed/main.js b/test/function/samples/deshadowed-namespaced-import-renamed/main.js new file mode 100644 index 00000000000..b9fb45c9dbc --- /dev/null +++ b/test/function/samples/deshadowed-namespaced-import-renamed/main.js @@ -0,0 +1,10 @@ +import { foo as doFoo } from './foo.js'; + +assert.equal((() => { + function foo() { + return doFoo(); + } + + return foo(); +})(), 42); + diff --git a/test/function/samples/deshadowed-namespaced-import-renamed/ns.js b/test/function/samples/deshadowed-namespaced-import-renamed/ns.js new file mode 100644 index 00000000000..19ae356d4ec --- /dev/null +++ b/test/function/samples/deshadowed-namespaced-import-renamed/ns.js @@ -0,0 +1,3 @@ +export function foo() { + return 42; +} \ No newline at end of file