Skip to content

Commit fc4eba1

Browse files
committed
fix: update noDuplicateImports rule to handle import defer statements without auto-fix suggestions
1 parent 6d516fb commit fc4eba1

File tree

2 files changed

+38
-25
lines changed

2 files changed

+38
-25
lines changed

packages/tsl-module/src/rules/no-duplicate-imports.test.ts

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -48,22 +48,16 @@ test("no-duplicate-import", () => {
4848
],
4949
},
5050
{
51+
// invalid import defer syntax, but for test purpose
5152
code: tsx`
52-
import defer { foo } from 'module';
53-
import defer { foo } from 'module';
53+
import defer { foo1 } from 'module';
54+
import defer { foo2 } from 'module';
5455
`,
5556
errors: [
5657
{
5758
line: 2,
5859
message: messages.noDuplicateImports({ source: "'module'" }),
59-
suggestions: [
60-
{
61-
message: "Merge duplicate imports",
62-
output: tsx`
63-
import defer { foo } from 'module';\n
64-
`,
65-
},
66-
],
60+
suggestions: [],
6761
},
6862
],
6963
},
@@ -102,6 +96,19 @@ test("no-duplicate-import", () => {
10296
},
10397
],
10498
},
99+
{
100+
code: tsx`
101+
import defer * as ns1 from "mod";
102+
import defer * as ns2 from "mod";
103+
`,
104+
errors: [
105+
{
106+
line: 2,
107+
message: messages.noDuplicateImports({ source: '"mod"' }),
108+
suggestions: [],
109+
},
110+
],
111+
},
105112
],
106113
ruleFn: noDuplicateImports,
107114
tsx: true,
@@ -111,11 +118,15 @@ test("no-duplicate-import", () => {
111118
import { A } from 'module2';
112119
import { A } from 'module3';
113120
`,
121+
// invalid import defer syntax, but for test purpose
114122
tsx`
115123
import { A } from 'module';
116124
import type { A } from 'module';
117125
import defer { A } from 'module';
118126
`,
127+
tsx`
128+
import defer * as ns from "mod";
129+
`,
119130
],
120131
});
121132
expect(ret).toBe(false);

packages/tsl-module/src/rules/no-duplicate-imports.ts

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -71,21 +71,23 @@ export const noDuplicateImports = defineRule(() => {
7171
ctx.report({
7272
node,
7373
message: messages.noDuplicateImports({ source: importInfo.source }),
74-
suggestions: [
75-
{
76-
message: "Merge duplicate imports",
77-
changes: [
78-
{
79-
node,
80-
newText: "",
81-
},
82-
{
83-
node: duplicateImport.node,
84-
newText: buildMergedImport(duplicateImport, importInfo),
85-
},
86-
],
87-
},
88-
],
74+
suggestions: importKind > 1
75+
? [] // no auto fix for two import defer statements
76+
: [
77+
{
78+
message: "Merge duplicate imports",
79+
changes: [
80+
{
81+
node,
82+
newText: "",
83+
},
84+
{
85+
node: duplicateImport.node,
86+
newText: buildMergedImport(duplicateImport, importInfo),
87+
},
88+
],
89+
},
90+
],
8991
});
9092
return;
9193
}

0 commit comments

Comments
 (0)