From 0ec17896ea4358dc5c06473dfe2695d36e58d417 Mon Sep 17 00:00:00 2001 From: Nate Bailey Date: Sat, 1 Oct 2016 08:00:39 -0700 Subject: [PATCH] Simplify rule logic, add new test, fix syntax error in docs --- docs/rules/no-named-default.md | 2 +- src/rules/no-named-default.js | 34 ++++++++++------------------- tests/src/rules/no-named-default.js | 28 +++++++++++++++--------- 3 files changed, 31 insertions(+), 33 deletions(-) diff --git a/docs/rules/no-named-default.md b/docs/rules/no-named-default.md index aaf845407..335572867 100644 --- a/docs/rules/no-named-default.md +++ b/docs/rules/no-named-default.md @@ -19,7 +19,7 @@ export const bar = 'baz'; ...these would be valid: ```js import foo from './foo.js'; -import foo { bar } from './foo.js'; +import foo, { bar } from './foo.js'; ``` ...and these would be reported: diff --git a/src/rules/no-named-default.js b/src/rules/no-named-default.js index b38f3ee39..6fac381b6 100644 --- a/src/rules/no-named-default.js +++ b/src/rules/no-named-default.js @@ -4,29 +4,19 @@ module.exports = { }, create: function (context) { - function checkSpecifiers(type, node) { - if (node.source == null) return - - const hasImportSpecifier = node.specifiers.some(function (im) { - return im.type === type - }) - - if (!hasImportSpecifier) { - return - } - - node.specifiers.forEach(function (im) { - if (im.type !== type) return - - if (im.imported.name === 'default') { - context.report(im.local, - 'Using name \'' + im.local.name + - '\' as identifier for default export.') - } - }) - } return { - 'ImportDeclaration': checkSpecifiers.bind(null, 'ImportSpecifier'), + 'ImportDeclaration': function (node) { + if (node.source == null) return + + node.specifiers.forEach(function (im) { + if (im.type === 'ImportSpecifier' && im.imported.name === 'default') { + context.report({ + node: im.local, + message: 'Use default import syntax to ' + + 'import \'' + im.local.name + '\'.' }) + } + }) + }, } }, } diff --git a/tests/src/rules/no-named-default.js b/tests/src/rules/no-named-default.js index 45b0c1d66..8ca26f860 100644 --- a/tests/src/rules/no-named-default.js +++ b/tests/src/rules/no-named-default.js @@ -9,23 +9,31 @@ ruleTester.run('no-named-default', rule, { test({code: 'import bar from "./bar";'}), test({code: 'import bar, { foo } from "./bar";'}), - // es7 - test({ code: 'import bar from "./bar";', parser: 'babel-eslint' }), - test({ code: 'import bar, { foo } from "./bar";', parser: 'babel-eslint' }), - ...SYNTAX_CASES, ], invalid: [ + test({ + code: 'import { default } from "./bar";', + errors: [{ + message: 'Use default import syntax to import \'default\'.', + type: 'Identifier', + }], + parser: 'babel-eslint', + }), test({ code: 'import { default as bar } from "./bar";', - errors: [ { - message: 'Using name \'bar\' as identifier for default export.' - , type: 'Identifier' } ] }), + errors: [{ + message: 'Use default import syntax to import \'bar\'.', + type: 'Identifier', + }], + }), test({ code: 'import { foo, default as bar } from "./bar";', - errors: [ { - message: 'Using name \'bar\' as identifier for default export.' - , type: 'Identifier' } ] }), + errors: [{ + message: 'Use default import syntax to import \'bar\'.', + type: 'Identifier', + }], + }), ], })