From 918567d52d2c2cc21932bda88f2b5e359e6c7821 Mon Sep 17 00:00:00 2001 From: Zhibin Liu Date: Sun, 18 Nov 2018 21:36:13 +0800 Subject: [PATCH] [fix] `namespace`: add check for null ExportMap Fixes #1144. --- src/rules/namespace.js | 6 +++++- tests/files/re-export-common.js | 1 + tests/src/rules/namespace.js | 5 +++++ 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 tests/files/re-export-common.js diff --git a/src/rules/namespace.js b/src/rules/namespace.js index 598b530d0..dd840b86f 100644 --- a/src/rules/namespace.js +++ b/src/rules/namespace.js @@ -187,7 +187,11 @@ module.exports = { } path.push(property.key.name) - testKey(property.value, namespace.get(property.key.name).namespace, path) + const dependencyExportMap = namespace.get(property.key.name) + // could be null when ignored or ambiguous + if (dependencyExportMap !== null) { + testKey(property.value, dependencyExportMap.namespace, path) + } path.pop() } } diff --git a/tests/files/re-export-common.js b/tests/files/re-export-common.js new file mode 100644 index 000000000..3c47cd8c1 --- /dev/null +++ b/tests/files/re-export-common.js @@ -0,0 +1 @@ +export { a as foo } from './common' diff --git a/tests/src/rules/namespace.js b/tests/src/rules/namespace.js index 7fa8cfcdb..e642a2b48 100644 --- a/tests/src/rules/namespace.js +++ b/tests/src/rules/namespace.js @@ -104,6 +104,11 @@ const valid = [ parser: 'babel-eslint', }), + // #1144: should handle re-export CommonJS as namespace + test({ + code: `import * as ns from './re-export-common'; const {foo} = ns;`, + }), + // JSX test({ code: 'import * as Names from "./named-exports"; const Foo = ',