Skip to content

Commit

Permalink
Handle the text in the diagnostics.
Browse files Browse the repository at this point in the history
  • Loading branch information
abidjappie committed May 8, 2024
1 parent f453e8c commit 911eacf
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 31 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ impl Rule for NoDuplicateSelectors {
}
}
} else {
// TODO: Can't use a node union here
// Union node with CssSelectorList and CssRelativeSelectorList does not have overlapping From/Into
let selector_lists = node.rules().syntax().descendants().filter(|x|
x.clone().cast::<CssSelectorList>().is_some() || x.clone().cast::<CssRelativeSelectorList>().is_some()
);
Expand Down Expand Up @@ -233,8 +233,16 @@ impl Rule for NoDuplicateSelectors {
}

fn diagnostic(_: &RuleContext<Self>, node: &Self::State) -> Option<RuleDiagnostic> {
// TODO: type this with a union node
let duplicate_text = node.duplicate.to_string();
let duplicate_text = if let Some(duplicate) = AnySelectorLike::cast_ref(&node.duplicate) {
duplicate.text()
} else if let Some(duplicate) = CssSelectorList::cast_ref(&node.duplicate) {
duplicate.text()
} else if let Some(duplicate) = CssRelativeSelectorList::cast_ref(&node.duplicate) {
duplicate.text()
}
else {
node.duplicate.to_string()
};

Some(
RuleDiagnostic::new(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ v w, x>test {} v { w {} } x > test {}
```
disallowInList.css:8:21 lint/nursery/noDuplicateSelectors ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

! Duplicate selectors may result in unintentionally overriding rules: textarea
! Duplicate selectors may result in unintentionally overriding rules: textarea

7 │ /* duplicate within a grouping selector */
> 8 │ input, textarea {}; textarea {}
Expand All @@ -54,7 +54,7 @@ disallowInList.css:8:21 lint/nursery/noDuplicateSelectors ━━━━━━━
```
disallowInList.css:11:22 lint/nursery/noDuplicateSelectors ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

! Duplicate selectors may result in unintentionally overriding rules: button
! Duplicate selectors may result in unintentionally overriding rules: button

10 │ /* duplicate within a grouping selector, reversed */
> 11 │ button {}; selector, button {}
Expand All @@ -78,8 +78,7 @@ disallowInList.css:11:22 lint/nursery/noDuplicateSelectors ━━━━━━━
```
disallowInList.css:16:1 lint/nursery/noDuplicateSelectors ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

! Duplicate selectors may result in unintentionally overriding rules:
h1
! Duplicate selectors may result in unintentionally overriding rules: h1

14 │ span, div {};
15 │ h1, section {};
Expand All @@ -105,7 +104,7 @@ disallowInList.css:16:1 lint/nursery/noDuplicateSelectors ━━━━━━━
```
disallowInList.css:19:20 lint/nursery/noDuplicateSelectors ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

! Duplicate selectors may result in unintentionally overriding rules: w
! Duplicate selectors may result in unintentionally overriding rules: w

18 │ /* test regular case for regression */
> 19 │ v w, x>test {} v { w {} } x > test {}
Expand All @@ -125,7 +124,7 @@ disallowInList.css:19:20 lint/nursery/noDuplicateSelectors ━━━━━━━
```
disallowInList.css:19:27 lint/nursery/noDuplicateSelectors ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

! Duplicate selectors may result in unintentionally overriding rules: x > test
! Duplicate selectors may result in unintentionally overriding rules: x > test

18 │ /* test regular case for regression */
> 19 │ v w, x>test {} v { w {} } x > test {}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ x { & {} }
```
invalid.css:2:4 lint/nursery/noDuplicateSelectors ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

! Duplicate selectors may result in unintentionally overriding rules: a
! Duplicate selectors may result in unintentionally overriding rules: a

1 │ /* duplicate within one rule's selector list */
> 2 │ a, a {}
Expand All @@ -86,8 +86,7 @@ invalid.css:2:4 lint/nursery/noDuplicateSelectors ━━━━━━━━━━
```
invalid.css:6:1 lint/nursery/noDuplicateSelectors ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

! Duplicate selectors may result in unintentionally overriding rules:
b
! Duplicate selectors may result in unintentionally overriding rules: b

4 │ /* duplicate within one rule's selector list. multiline */
5 │ b,
Expand All @@ -112,8 +111,7 @@ invalid.css:6:1 lint/nursery/noDuplicateSelectors ━━━━━━━━━━
```
invalid.css:11:1 lint/nursery/noDuplicateSelectors ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

! Duplicate selectors may result in unintentionally overriding rules:
d
! Duplicate selectors may result in unintentionally overriding rules: d

9 │ c,
10 │ d,
Expand All @@ -139,8 +137,7 @@ invalid.css:11:1 lint/nursery/noDuplicateSelectors ━━━━━━━━━
```
invalid.css:15:1 lint/nursery/noDuplicateSelectors ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

! Duplicate selectors may result in unintentionally overriding rules:
.e
! Duplicate selectors may result in unintentionally overriding rules: .e

13 │ /* duplicated selectors within one rule's selector list. 2 duplicates */
14 │ .e,
Expand All @@ -165,8 +162,7 @@ invalid.css:15:1 lint/nursery/noDuplicateSelectors ━━━━━━━━━
```
invalid.css:16:1 lint/nursery/noDuplicateSelectors ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

! Duplicate selectors may result in unintentionally overriding rules:
.e
! Duplicate selectors may result in unintentionally overriding rules: .e

14 │ .e,
15 │ .e,
Expand All @@ -191,7 +187,7 @@ invalid.css:16:1 lint/nursery/noDuplicateSelectors ━━━━━━━━━
```
invalid.css:19:11 lint/nursery/noDuplicateSelectors ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

! Duplicate selectors may result in unintentionally overriding rules: f
! Duplicate selectors may result in unintentionally overriding rules: f

18 │ /* duplicate simple selectors with another rule between */
> 19 │ f {} g {} f {}
Expand All @@ -215,8 +211,7 @@ invalid.css:19:11 lint/nursery/noDuplicateSelectors ━━━━━━━━━
```
invalid.css:24:1 lint/nursery/noDuplicateSelectors ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

! Duplicate selectors may result in unintentionally overriding rules:
h
! Duplicate selectors may result in unintentionally overriding rules: h

22 │ h {}
23 │ i {}
Expand All @@ -241,7 +236,7 @@ invalid.css:24:1 lint/nursery/noDuplicateSelectors ━━━━━━━━━
```
invalid.css:27:9 lint/nursery/noDuplicateSelectors ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

! Duplicate selectors may result in unintentionally overriding rules: k, j
! Duplicate selectors may result in unintentionally overriding rules: k, j

26 │ /* duplicate selector lists with different order */
> 27 │ j, k {} k, j {}
Expand All @@ -265,8 +260,7 @@ invalid.css:27:9 lint/nursery/noDuplicateSelectors ━━━━━━━━━
```
invalid.css:31:1 lint/nursery/noDuplicateSelectors ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

! Duplicate selectors may result in unintentionally overriding rules:
m n
! Duplicate selectors may result in unintentionally overriding rules: m n

29 │ /* duplicate selectors with multiple components */
30 │ m n {}
Expand All @@ -291,9 +285,8 @@ invalid.css:31:1 lint/nursery/noDuplicateSelectors ━━━━━━━━━
```
invalid.css:36:3 lint/nursery/noDuplicateSelectors ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

! Duplicate selectors may result in unintentionally overriding rules:
#baz,
.foo p,q>.bar
! Duplicate selectors may result in unintentionally overriding rules: #baz,
.foo p,q>.bar

34 │ .foo p, q > .bar,
35 │ #baz {}
Expand Down Expand Up @@ -322,7 +315,7 @@ invalid.css:36:3 lint/nursery/noDuplicateSelectors ━━━━━━━━━
```
invalid.css:41:19 lint/nursery/noDuplicateSelectors ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

! Duplicate selectors may result in unintentionally overriding rules: s
! Duplicate selectors may result in unintentionally overriding rules: s

39 │ /* duplicate within a media query, in the same rule */
40 │ s {}
Expand All @@ -348,7 +341,7 @@ invalid.css:41:19 lint/nursery/noDuplicateSelectors ━━━━━━━━━
```
invalid.css:45:45 lint/nursery/noDuplicateSelectors ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

! Duplicate selectors may result in unintentionally overriding rules: t
! Duplicate selectors may result in unintentionally overriding rules: t

43 │ /* duplicate within a media query, in different rules */
44 │ t {}
Expand All @@ -374,7 +367,7 @@ invalid.css:45:45 lint/nursery/noDuplicateSelectors ━━━━━━━━━
```
invalid.css:48:12 lint/nursery/noDuplicateSelectors ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

! Duplicate selectors may result in unintentionally overriding rules: w
! Duplicate selectors may result in unintentionally overriding rules: w

47 │ /* duplicate caused by nesting */
> 48 │ v w {} v { w {} }
Expand All @@ -398,7 +391,7 @@ invalid.css:48:12 lint/nursery/noDuplicateSelectors ━━━━━━━━━
```
invalid.css:51:5 lint/nursery/noDuplicateSelectors ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

! Duplicate selectors may result in unintentionally overriding rules: &
! Duplicate selectors may result in unintentionally overriding rules: &

50 │ /* duplicate caused by &-parent selector */
> 51 │ x { & {} }
Expand Down

0 comments on commit 911eacf

Please sign in to comment.