From ea41978bc152417bcd2abb25f39548895cebf8e3 Mon Sep 17 00:00:00 2001 From: Tristan Rasmussen Date: Sat, 27 Jan 2024 20:32:23 -0800 Subject: [PATCH 1/3] fix(eslint-plugin): account for imports without specifiers in consistent-type-imports --- .../src/rules/consistent-type-imports.ts | 1 + .../rules/consistent-type-imports.test.ts | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/packages/eslint-plugin/src/rules/consistent-type-imports.ts b/packages/eslint-plugin/src/rules/consistent-type-imports.ts index 4bceed75f740..768596b44417 100644 --- a/packages/eslint-plugin/src/rules/consistent-type-imports.ts +++ b/packages/eslint-plugin/src/rules/consistent-type-imports.ts @@ -142,6 +142,7 @@ export default createRule({ } else { if ( !sourceImports.valueOnlyNamedImport && + node.specifiers.length && node.specifiers.every( specifier => specifier.type === AST_NODE_TYPES.ImportSpecifier, diff --git a/packages/eslint-plugin/tests/rules/consistent-type-imports.test.ts b/packages/eslint-plugin/tests/rules/consistent-type-imports.test.ts index 055f8473ee28..762d51b6f5f9 100644 --- a/packages/eslint-plugin/tests/rules/consistent-type-imports.test.ts +++ b/packages/eslint-plugin/tests/rules/consistent-type-imports.test.ts @@ -2230,5 +2230,25 @@ let baz: D; }, ], }, + // https://github.com/typescript-eslint/typescript-eslint/issues/7209 + { + code: ` +import 'foo'; +import type { Foo, Bar } from 'foo'; +@deco +class A { + constructor(foo: Foo) {} +}`, + output: ` +import 'foo'; +import { Foo} from 'foo'; +import type { Bar } from 'foo'; +@deco +class A { + constructor(foo: Foo) {} +}`, + errors: [{ messageId: 'aImportInDecoMeta', line: 3, column: 1 }], + parserOptions: withMetaConfigParserOptions, + }, ], }); From dc5d1db8bead48b98f22311c539823bd49429497 Mon Sep 17 00:00:00 2001 From: Tristan Rasmussen Date: Sat, 27 Jan 2024 20:45:04 -0800 Subject: [PATCH 2/3] chore(eslint-plugin): apply lint fixes --- .../tests/rules/consistent-type-imports.test.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/eslint-plugin/tests/rules/consistent-type-imports.test.ts b/packages/eslint-plugin/tests/rules/consistent-type-imports.test.ts index 762d51b6f5f9..db72b28583e8 100644 --- a/packages/eslint-plugin/tests/rules/consistent-type-imports.test.ts +++ b/packages/eslint-plugin/tests/rules/consistent-type-imports.test.ts @@ -2238,7 +2238,8 @@ import type { Foo, Bar } from 'foo'; @deco class A { constructor(foo: Foo) {} -}`, +} + `, output: ` import 'foo'; import { Foo} from 'foo'; @@ -2246,7 +2247,8 @@ import type { Bar } from 'foo'; @deco class A { constructor(foo: Foo) {} -}`, +} + `, errors: [{ messageId: 'aImportInDecoMeta', line: 3, column: 1 }], parserOptions: withMetaConfigParserOptions, }, From 719c1da749e8d94a9c771794e1ce4dbb88f3f857 Mon Sep 17 00:00:00 2001 From: Tristan Rasmussen Date: Mon, 29 Jan 2024 21:52:41 -0800 Subject: [PATCH 3/3] test(eslint-plugin): add test for import with no specifiers --- .../rules/consistent-type-imports.test.ts | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/packages/eslint-plugin/tests/rules/consistent-type-imports.test.ts b/packages/eslint-plugin/tests/rules/consistent-type-imports.test.ts index db72b28583e8..09b99d5135e9 100644 --- a/packages/eslint-plugin/tests/rules/consistent-type-imports.test.ts +++ b/packages/eslint-plugin/tests/rules/consistent-type-imports.test.ts @@ -2245,6 +2245,27 @@ import 'foo'; import { Foo} from 'foo'; import type { Bar } from 'foo'; @deco +class A { + constructor(foo: Foo) {} +} + `, + errors: [{ messageId: 'aImportInDecoMeta', line: 3, column: 1 }], + parserOptions: withMetaConfigParserOptions, + }, + { + code: ` +import {} from 'foo'; +import type { Foo, Bar } from 'foo'; +@deco +class A { + constructor(foo: Foo) {} +} + `, + output: ` +import {} from 'foo'; +import { Foo} from 'foo'; +import type { Bar } from 'foo'; +@deco class A { constructor(foo: Foo) {} }