diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d4d920a4c..4488a3c6c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,9 @@ This change log adheres to standards from [Keep a CHANGELOG](https://keepachange ## [Unreleased] +### Changed +- [`no-default-import`]: report on the token "default" instead of the entire node ([#2299], [@pmcelhaney]) + ## [2.25.3] - 2021-11-09 ### Fixed @@ -942,6 +945,7 @@ for info on changes for earlier releases. [`memo-parser`]: ./memo-parser/README.md +[#2299]: https://github.com/import-js/eslint-plugin-import/pull/2299 [#2297]: https://github.com/import-js/eslint-plugin-import/pull/2297 [#2287]: https://github.com/import-js/eslint-plugin-import/pull/2287 [#2282]: https://github.com/import-js/eslint-plugin-import/pull/2282 diff --git a/src/rules/no-default-export.js b/src/rules/no-default-export.js index bcdca1ccac..5f00ee8c94 100644 --- a/src/rules/no-default-export.js +++ b/src/rules/no-default-export.js @@ -20,15 +20,17 @@ module.exports = { return { ExportDefaultDeclaration(node) { - context.report({ node, message: preferNamed }); + const { loc } = context.getSourceCode().getFirstTokens(node)[1]; + context.report({ node, message: preferNamed, loc }); }, ExportNamedDeclaration(node) { node.specifiers.filter(specifier => specifier.exported.name === 'default').forEach(specifier => { + const { loc } = context.getSourceCode().getFirstTokens(node)[1]; if (specifier.type === 'ExportDefaultSpecifier') { - context.report({ node, message: preferNamed }); + context.report({ node, message: preferNamed, loc }); } else if (specifier.type === 'ExportSpecifier') { - context.report({ node, message: noAliasDefault(specifier) }); + context.report({ node, message: noAliasDefault(specifier), loc }); } }); }, diff --git a/tests/src/rules/no-default-export.js b/tests/src/rules/no-default-export.js index bc0119a019..55ca65ba46 100644 --- a/tests/src/rules/no-default-export.js +++ b/tests/src/rules/no-default-export.js @@ -91,6 +91,8 @@ ruleTester.run('no-default-export', rule, { errors: [{ type: 'ExportDefaultDeclaration', message: 'Prefer named exports.', + line: 1, + column: 8, }], }), test({ @@ -100,6 +102,35 @@ ruleTester.run('no-default-export', rule, { errors: [{ type: 'ExportDefaultDeclaration', message: 'Prefer named exports.', + line: 3, + column: 16, + }], + }), + test({ + code: 'export default class Bar {};', + errors: [{ + type: 'ExportDefaultDeclaration', + message: 'Prefer named exports.', + line: 1, + column: 8, + }], + }), + test({ + code: 'export default function() {};', + errors: [{ + type: 'ExportDefaultDeclaration', + message: 'Prefer named exports.', + line: 1, + column: 8, + }], + }), + test({ + code: 'export default class {};', + errors: [{ + type: 'ExportDefaultDeclaration', + message: 'Prefer named exports.', + line: 1, + column: 8, }], }), test({