Skip to content

Commit

Permalink
[Fix] extensions: ignore unresolvable type-only imports
Browse files Browse the repository at this point in the history
  • Loading branch information
jablko authored and ljharb committed Oct 25, 2021
1 parent 46c4709 commit 0481dcf
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 8 deletions.
3 changes: 2 additions & 1 deletion CHANGELOG.md
Expand Up @@ -7,7 +7,7 @@ This change log adheres to standards from [Keep a CHANGELOG](http://keepachangel
## [Unreleased]

### Fixed
- [`extensions`]: ignore type-only imports ([#2270], [@jablko])
- [`extensions`]: ignore unresolveable type-only imports ([#2270], [#2271], [@jablko])

## [2.25.2] - 2021-10-12

Expand Down Expand Up @@ -932,6 +932,7 @@ for info on changes for earlier releases.

[`memo-parser`]: ./memo-parser/README.md

[#2271]: https://github.com/import-js/eslint-plugin-import/pull/2271
[#2270]: https://github.com/import-js/eslint-plugin-import/pull/2270
[#2240]: https://github.com/import-js/eslint-plugin-import/pull/2240
[#2233]: https://github.com/import-js/eslint-plugin-import/pull/2233
Expand Down
7 changes: 2 additions & 5 deletions src/rules/extensions.js
Expand Up @@ -136,11 +136,6 @@ module.exports = {
}

function checkFileExtension(source, node) {
// ignore type-only imports
if (node.importKind === 'type') {
return;
}

// bail if the declaration doesn't have a source, e.g. "export { foo };", or if it's only partially typed like in an editor
if (!source || !source.value) return;

Expand Down Expand Up @@ -170,6 +165,8 @@ module.exports = {
) || isScoped(importPath);

if (!extension || !importPath.endsWith(`.${extension}`)) {
// ignore type-only imports
if (node.importKind === 'type') return;
const extensionRequired = isUseOfExtensionRequired(extension, isPackage);
const extensionForbidden = isUseOfExtensionForbidden(extension);
if (extensionRequired && !extensionForbidden) {
Expand Down
4 changes: 2 additions & 2 deletions tests/src/rules/extensions.js
Expand Up @@ -606,7 +606,7 @@ describe('TypeScript', () => {
ruleTester.run(`${parser}: extensions ignore type-only`, rule, {
valid: [
test({
code: 'import type { T } from "./typescript-declare";',
code: 'import type T from "./typescript-declare";',
options: [
'always',
{ ts: 'never', tsx: 'never', js: 'never', jsx: 'never' },
Expand All @@ -616,7 +616,7 @@ describe('TypeScript', () => {
],
invalid: [
test({
code: 'import { T } from "./typescript-declare";',
code: 'import T from "./typescript-declare";',
errors: ['Missing file extension for "./typescript-declare"'],
options: [
'always',
Expand Down

0 comments on commit 0481dcf

Please sign in to comment.