Skip to content

Commit a51363f

Browse files
authored
fix(no-unused-class-name): detect duplicated class names (#1260)
1 parent 41e959d commit a51363f

File tree

4 files changed

+24
-4
lines changed

4 files changed

+24
-4
lines changed

.changeset/dry-colts-open.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'eslint-plugin-svelte': patch
3+
---
4+
5+
fix(no-unused-class-name): detect duplicated class names

packages/eslint-plugin-svelte/src/rules/no-unused-class-name.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,10 @@ export default createRule('no-unused-class-name', {
3636
return {};
3737
}
3838
const allowedClassNames = context.options[0]?.allowedClassNames ?? [];
39-
const classesUsedInTemplate: Record<string, AST.SourceLocation> = {};
39+
const classesUsedInTemplate: {
40+
className: string;
41+
loc: AST.SourceLocation;
42+
}[] = [];
4043

4144
return {
4245
SvelteElement(node) {
@@ -45,7 +48,7 @@ export default createRule('no-unused-class-name', {
4548
}
4649
const classes = node.startTag.attributes.flatMap(findClassesInAttribute);
4750
for (const className of classes) {
48-
classesUsedInTemplate[className] = node.startTag.loc;
51+
classesUsedInTemplate.push({ className, loc: node.startTag.loc });
4952
}
5053
},
5154
'Program:exit'() {
@@ -57,15 +60,16 @@ export default createRule('no-unused-class-name', {
5760
styleContext.status === 'success'
5861
? findClassesInPostCSSNode(styleContext.sourceAst, sourceCode.parserServices)
5962
: [];
60-
for (const className in classesUsedInTemplate) {
63+
64+
for (const { className, loc } of classesUsedInTemplate) {
6165
if (
6266
!allowedClassNames.some((allowedClassName: string) =>
6367
toRegExp(allowedClassName).test(className)
6468
) &&
6569
!classesUsedInStyle.includes(className)
6670
) {
6771
context.report({
68-
loc: classesUsedInTemplate[className],
72+
loc,
6973
message: `Unused class "${className}".`
7074
});
7175
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
- message: Unused class "div-class".
2+
line: 1
3+
column: 1
4+
suggestions: null
5+
- message: Unused class "div-class".
6+
line: 3
7+
column: 1
8+
suggestions: null
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<div class="div-class">Hello</div>
2+
3+
<span class="div-class">World!</span>

0 commit comments

Comments
 (0)