diff --git a/.changeset/spotty-buckets-hang.md b/.changeset/spotty-buckets-hang.md new file mode 100644 index 000000000000..07b7af8e439d --- /dev/null +++ b/.changeset/spotty-buckets-hang.md @@ -0,0 +1,32 @@ +--- +"@biomejs/biome": major +--- + +Reworked some recommended rules recommended to be less pedantic and blocking. This is a **breaking change** if your project relied on those rules to block the CI in case of violations, you should raise their diagnostic to **error**. + +Some rules aren't recommended anymore, and some others return a different severity: + +The following rules return a **warning** diagnostic: +- `noDelete` +- `noForEach` +- `noSuspiciousSemicolonInJsx` +- `noThisInStatic` +- `noUnusedLabels` + +The following rules return an **information** diagnostic: +- `noUselessCatch` +- `noUselessConstructor` +- `noUselessEmptyExport` +- `noUselessFragments` +- `noUselessLabel` +- `noUselessLoneBlockStatements` +- `noUselessSwitchCase` +- `noUselessTernary` +- `noUselessThisAlias` +- `noUselessTypeConstraint` + +The following rules aren't recommended anymore: +- `noDelete` +- `noForEach` + +The rule `noRenderReturnValue` is only recommended when the `react` domain is enabled. diff --git a/crates/biome_analyze/src/rule.rs b/crates/biome_analyze/src/rule.rs index acc1a8f0f282..c7b9f267b85e 100644 --- a/crates/biome_analyze/src/rule.rs +++ b/crates/biome_analyze/src/rule.rs @@ -414,7 +414,7 @@ impl RuleSource { pub fn to_rule_url(&self) -> String { match self { - Self::Clippy(rule_name) => format!("https://rust-lang.github.io/rust-clippy/master/#/{rule_name}"), + Self::Clippy(rule_name) => format!("https://rust-lang.github.io/rust-clippy/master/#{rule_name}"), Self::Eslint(rule_name) => format!("https://eslint.org/docs/latest/rules/{rule_name}"), Self::EslintGraphql(rule_name) => format!("https://the-guild.dev/graphql/eslint/rules/{rule_name}"), Self::EslintGraphqlSchemaLinter(rule_name) => format!("https://github.com/cjoudrey/graphql-schema-linter?tab=readme-ov-file#{rule_name}"), diff --git a/crates/biome_css_analyze/tests/plugin/useLowercaseColors.grit.snap b/crates/biome_css_analyze/tests/plugin/useLowercaseColors.grit.snap index e761b93a799c..9c92c944d84f 100644 --- a/crates/biome_css_analyze/tests/plugin/useLowercaseColors.grit.snap +++ b/crates/biome_css_analyze/tests/plugin/useLowercaseColors.grit.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: useLowercaseColors.grit +snapshot_kind: text --- # Input ```css @@ -16,7 +17,7 @@ div { ``` useLowercaseColors.grit:3:12 plugin ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Prefer lowercase colors + i Prefer lowercase colors 1 │ div { 2 │ color: red; diff --git a/crates/biome_css_analyze/tests/spec_tests.rs b/crates/biome_css_analyze/tests/spec_tests.rs index 41f4d2d6e946..9b873185951f 100644 --- a/crates/biome_css_analyze/tests/spec_tests.rs +++ b/crates/biome_css_analyze/tests/spec_tests.rs @@ -4,7 +4,6 @@ use biome_analyze::{ use biome_css_parser::{parse_css, CssParserOptions}; use biome_css_syntax::{CssFileSource, CssLanguage}; use biome_diagnostics::advice::CodeSuggestionAdvice; -use biome_diagnostics::{DiagnosticExt, Severity}; use biome_fs::OsFileSystem; use biome_plugin_loader::AnalyzerGritPlugin; use biome_rowan::AstNode; @@ -146,8 +145,7 @@ pub(crate) fn analyze_and_snap( } } - let error = diag.with_severity(Severity::Warning); - diagnostics.push(diagnostic_to_string(file_name, input_code, error)); + diagnostics.push(diagnostic_to_string(file_name, input_code, diag.into())); return ControlFlow::Continue(()); } diff --git a/crates/biome_css_analyze/tests/specs/a11y/useGenericFontNames/invalid.css.snap b/crates/biome_css_analyze/tests/specs/a11y/useGenericFontNames/invalid.css.snap index e8761f203d4f..d69b8d5e7611 100644 --- a/crates/biome_css_analyze/tests/specs/a11y/useGenericFontNames/invalid.css.snap +++ b/crates/biome_css_analyze/tests/specs/a11y/useGenericFontNames/invalid.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalid.css +snapshot_kind: text --- # Input ```css @@ -17,7 +18,7 @@ a { font: 1em Lucida Grande, Arial, "sans-serif" } ``` invalid.css:1:18 lint/a11y/useGenericFontNames ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Generic font family missing. + × Generic font family missing. > 1 │ a { font-family: Arial; } │ ^^^^^ @@ -39,7 +40,7 @@ invalid.css:1:18 lint/a11y/useGenericFontNames ━━━━━━━━━━━ ``` invalid.css:2:44 lint/a11y/useGenericFontNames ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Generic font family missing. + × Generic font family missing. 1 │ a { font-family: Arial; } > 2 │ a { font-family: 'Arial', "Lucida Grande", Arial; } @@ -62,7 +63,7 @@ invalid.css:2:44 lint/a11y/useGenericFontNames ━━━━━━━━━━━ ``` invalid.css:3:18 lint/a11y/useGenericFontNames ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Generic font family missing. + × Generic font family missing. 1 │ a { font-family: Arial; } 2 │ a { font-family: 'Arial', "Lucida Grande", Arial; } @@ -86,7 +87,7 @@ invalid.css:3:18 lint/a11y/useGenericFontNames ━━━━━━━━━━━ ``` invalid.css:4:18 lint/a11y/useGenericFontNames ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Generic font family missing. + × Generic font family missing. 2 │ a { font-family: 'Arial', "Lucida Grande", Arial; } 3 │ a { fOnT-fAmIlY: ' Lucida Grande '; } @@ -110,7 +111,7 @@ invalid.css:4:18 lint/a11y/useGenericFontNames ━━━━━━━━━━━ ``` invalid.css:5:39 lint/a11y/useGenericFontNames ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Generic font family missing. + × Generic font family missing. 3 │ a { fOnT-fAmIlY: ' Lucida Grande '; } 4 │ a { font-family: Times; } @@ -134,7 +135,7 @@ invalid.css:5:39 lint/a11y/useGenericFontNames ━━━━━━━━━━━ ``` invalid.css:6:43 lint/a11y/useGenericFontNames ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Generic font family missing. + × Generic font family missing. 4 │ a { font-family: Times; } 5 │ a { FONT: italic 300 16px/30px Arial, " Arial"; } @@ -157,7 +158,7 @@ invalid.css:6:43 lint/a11y/useGenericFontNames ━━━━━━━━━━━ ``` invalid.css:7:37 lint/a11y/useGenericFontNames ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Generic font family missing. + × Generic font family missing. 5 │ a { FONT: italic 300 16px/30px Arial, " Arial"; } 6 │ a { font: normal 14px/32px -apple-system, BlinkMacSystemFont; } diff --git a/crates/biome_css_analyze/tests/specs/correctness/noInvalidDirectionInLinearGradient/invalid.css.snap b/crates/biome_css_analyze/tests/specs/correctness/noInvalidDirectionInLinearGradient/invalid.css.snap index cdaf1abae2a7..73d1b5edf861 100644 --- a/crates/biome_css_analyze/tests/specs/correctness/noInvalidDirectionInLinearGradient/invalid.css.snap +++ b/crates/biome_css_analyze/tests/specs/correctness/noInvalidDirectionInLinearGradient/invalid.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalid.css +snapshot_kind: text --- # Input ```css @@ -94,7 +95,7 @@ expression: invalid.css ``` invalid.css:2:30 lint/correctness/noInvalidDirectionInLinearGradient ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected nonstandard direction + × Unexpected nonstandard direction 1 │ .foo { > 2 │ background: linear-gradient(bottom, #fff, #000); @@ -112,7 +113,7 @@ invalid.css:2:30 lint/correctness/noInvalidDirectionInLinearGradient ━━━ ``` invalid.css:5:30 lint/correctness/noInvalidDirectionInLinearGradient ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected nonstandard direction + × Unexpected nonstandard direction 3 │ } 4 │ .foo { @@ -131,7 +132,7 @@ invalid.css:5:30 lint/correctness/noInvalidDirectionInLinearGradient ━━━ ``` invalid.css:8:30 lint/correctness/noInvalidDirectionInLinearGradient ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected nonstandard direction + × Unexpected nonstandard direction 6 │ } 7 │ .foo { @@ -150,7 +151,7 @@ invalid.css:8:30 lint/correctness/noInvalidDirectionInLinearGradient ━━━ ``` invalid.css:11:30 lint/correctness/noInvalidDirectionInLinearGradient ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected nonstandard direction + × Unexpected nonstandard direction 9 │ } 10 │ .foo { @@ -169,7 +170,7 @@ invalid.css:11:30 lint/correctness/noInvalidDirectionInLinearGradient ━━━ ``` invalid.css:14:30 lint/correctness/noInvalidDirectionInLinearGradient ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected nonstandard direction + × Unexpected nonstandard direction 12 │ } 13 │ .foo { @@ -188,7 +189,7 @@ invalid.css:14:30 lint/correctness/noInvalidDirectionInLinearGradient ━━━ ``` invalid.css:17:30 lint/correctness/noInvalidDirectionInLinearGradient ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected nonstandard direction + × Unexpected nonstandard direction 15 │ } 16 │ .foo { @@ -207,7 +208,7 @@ invalid.css:17:30 lint/correctness/noInvalidDirectionInLinearGradient ━━━ ``` invalid.css:20:30 lint/correctness/noInvalidDirectionInLinearGradient ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected nonstandard direction + × Unexpected nonstandard direction 18 │ } 19 │ .foo { @@ -226,7 +227,7 @@ invalid.css:20:30 lint/correctness/noInvalidDirectionInLinearGradient ━━━ ``` invalid.css:23:30 lint/correctness/noInvalidDirectionInLinearGradient ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected nonstandard direction + × Unexpected nonstandard direction 21 │ } 22 │ .foo { @@ -245,7 +246,7 @@ invalid.css:23:30 lint/correctness/noInvalidDirectionInLinearGradient ━━━ ``` invalid.css:26:30 lint/correctness/noInvalidDirectionInLinearGradient ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected nonstandard direction + × Unexpected nonstandard direction 24 │ } 25 │ .foo { @@ -264,7 +265,7 @@ invalid.css:26:30 lint/correctness/noInvalidDirectionInLinearGradient ━━━ ``` invalid.css:29:30 lint/correctness/noInvalidDirectionInLinearGradient ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected nonstandard direction + × Unexpected nonstandard direction 27 │ } 28 │ .foo { @@ -283,7 +284,7 @@ invalid.css:29:30 lint/correctness/noInvalidDirectionInLinearGradient ━━━ ``` invalid.css:32:30 lint/correctness/noInvalidDirectionInLinearGradient ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected nonstandard direction + × Unexpected nonstandard direction 30 │ } 31 │ .foo { @@ -302,7 +303,7 @@ invalid.css:32:30 lint/correctness/noInvalidDirectionInLinearGradient ━━━ ``` invalid.css:35:30 lint/correctness/noInvalidDirectionInLinearGradient ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected nonstandard direction + × Unexpected nonstandard direction 33 │ } 34 │ .foo { @@ -321,7 +322,7 @@ invalid.css:35:30 lint/correctness/noInvalidDirectionInLinearGradient ━━━ ``` invalid.css:38:30 lint/correctness/noInvalidDirectionInLinearGradient ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected nonstandard direction + × Unexpected nonstandard direction 36 │ } 37 │ .foo { @@ -340,7 +341,7 @@ invalid.css:38:30 lint/correctness/noInvalidDirectionInLinearGradient ━━━ ``` invalid.css:41:38 lint/correctness/noInvalidDirectionInLinearGradient ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected nonstandard direction + × Unexpected nonstandard direction 39 │ } 40 │ .foo { @@ -359,7 +360,7 @@ invalid.css:41:38 lint/correctness/noInvalidDirectionInLinearGradient ━━━ ``` invalid.css:44:35 lint/correctness/noInvalidDirectionInLinearGradient ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected nonstandard direction + × Unexpected nonstandard direction 42 │ } 43 │ .foo { @@ -378,7 +379,7 @@ invalid.css:44:35 lint/correctness/noInvalidDirectionInLinearGradient ━━━ ``` invalid.css:47:33 lint/correctness/noInvalidDirectionInLinearGradient ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected nonstandard direction + × Unexpected nonstandard direction 45 │ } 46 │ .foo { @@ -397,7 +398,7 @@ invalid.css:47:33 lint/correctness/noInvalidDirectionInLinearGradient ━━━ ``` invalid.css:50:52 lint/correctness/noInvalidDirectionInLinearGradient ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected nonstandard direction + × Unexpected nonstandard direction 48 │ } 49 │ .foo { @@ -416,7 +417,7 @@ invalid.css:50:52 lint/correctness/noInvalidDirectionInLinearGradient ━━━ ``` invalid.css:53:49 lint/correctness/noInvalidDirectionInLinearGradient ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected nonstandard direction + × Unexpected nonstandard direction 51 │ } 52 │ .foo { @@ -435,7 +436,7 @@ invalid.css:53:49 lint/correctness/noInvalidDirectionInLinearGradient ━━━ ``` invalid.css:56:47 lint/correctness/noInvalidDirectionInLinearGradient ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected nonstandard direction + × Unexpected nonstandard direction 54 │ } 55 │ .foo { @@ -454,7 +455,7 @@ invalid.css:56:47 lint/correctness/noInvalidDirectionInLinearGradient ━━━ ``` invalid.css:59:38 lint/correctness/noInvalidDirectionInLinearGradient ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected nonstandard direction + × Unexpected nonstandard direction 57 │ } 58 │ .foo { @@ -473,7 +474,7 @@ invalid.css:59:38 lint/correctness/noInvalidDirectionInLinearGradient ━━━ ``` invalid.css:62:49 lint/correctness/noInvalidDirectionInLinearGradient ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected nonstandard direction + × Unexpected nonstandard direction 60 │ } 61 │ .foo { @@ -492,7 +493,7 @@ invalid.css:62:49 lint/correctness/noInvalidDirectionInLinearGradient ━━━ ``` invalid.css:66:33 lint/correctness/noInvalidDirectionInLinearGradient ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected nonstandard direction + × Unexpected nonstandard direction 64 │ } 65 │ .foo { @@ -511,7 +512,7 @@ invalid.css:66:33 lint/correctness/noInvalidDirectionInLinearGradient ━━━ ``` invalid.css:69:52 lint/correctness/noInvalidDirectionInLinearGradient ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected nonstandard direction + × Unexpected nonstandard direction 67 │ } 68 │ .foo { @@ -530,7 +531,7 @@ invalid.css:69:52 lint/correctness/noInvalidDirectionInLinearGradient ━━━ ``` invalid.css:73:49 lint/correctness/noInvalidDirectionInLinearGradient ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected nonstandard direction + × Unexpected nonstandard direction 71 │ } 72 │ .foo { @@ -549,7 +550,7 @@ invalid.css:73:49 lint/correctness/noInvalidDirectionInLinearGradient ━━━ ``` invalid.css:77:47 lint/correctness/noInvalidDirectionInLinearGradient ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected nonstandard direction + × Unexpected nonstandard direction 75 │ } 76 │ .foo { @@ -568,7 +569,7 @@ invalid.css:77:47 lint/correctness/noInvalidDirectionInLinearGradient ━━━ ``` invalid.css:81:48 lint/correctness/noInvalidDirectionInLinearGradient ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected nonstandard direction + × Unexpected nonstandard direction 79 │ } 80 │ .foo { diff --git a/crates/biome_css_analyze/tests/specs/correctness/noInvalidGridAreas/invalid.css.snap b/crates/biome_css_analyze/tests/specs/correctness/noInvalidGridAreas/invalid.css.snap index c438f9931320..f91251ba7da8 100644 --- a/crates/biome_css_analyze/tests/specs/correctness/noInvalidGridAreas/invalid.css.snap +++ b/crates/biome_css_analyze/tests/specs/correctness/noInvalidGridAreas/invalid.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalid.css +snapshot_kind: text --- # Input ```css @@ -39,7 +40,7 @@ a { grid-template-areas: "a a a" ``` invalid.css:1:26 lint/correctness/noInvalidGridAreas ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Empty grid areas are not allowed. + × Empty grid areas are not allowed. > 1 │ a { grid-template-areas: "" } │ ^^^ @@ -54,7 +55,7 @@ invalid.css:1:26 lint/correctness/noInvalidGridAreas ━━━━━━━━━ ``` invalid.css:2:26 lint/correctness/noInvalidGridAreas ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Inconsistent cell count in grid areas are not allowed. + × Inconsistent cell count in grid areas are not allowed. 1 │ a { grid-template-areas: "" } > 2 │ a { grid-template-areas: "a a" @@ -70,7 +71,7 @@ invalid.css:2:26 lint/correctness/noInvalidGridAreas ━━━━━━━━━ ``` invalid.css:4:33 lint/correctness/noInvalidGridAreas ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Empty grid areas are not allowed. + × Empty grid areas are not allowed. 2 │ a { grid-template-areas: "a a" 3 │ "b b b"; } @@ -89,7 +90,7 @@ invalid.css:4:33 lint/correctness/noInvalidGridAreas ━━━━━━━━━ ``` invalid.css:6:33 lint/correctness/noInvalidGridAreas ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate filled in rectangle are not allowed. + × Duplicate filled in rectangle are not allowed. 4 │ a { grid-template-areas: "b b b" 5 │ ""; } @@ -108,7 +109,7 @@ invalid.css:6:33 lint/correctness/noInvalidGridAreas ━━━━━━━━━ ``` invalid.css:11:33 lint/correctness/noInvalidGridAreas ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate filled in rectangle are not allowed. + × Duplicate filled in rectangle are not allowed. 9 │ "b b b" 10 │ "c c c" @@ -127,7 +128,7 @@ invalid.css:11:33 lint/correctness/noInvalidGridAreas ━━━━━━━━ ``` invalid.css:15:33 lint/correctness/noInvalidGridAreas ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate filled in rectangle are not allowed. + × Duplicate filled in rectangle are not allowed. 13 │ a { grid-template-areas: "a a a" 14 │ "b b b"; } @@ -146,7 +147,7 @@ invalid.css:15:33 lint/correctness/noInvalidGridAreas ━━━━━━━━ ``` invalid.css:17:35 lint/correctness/noInvalidGridAreas ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate filled in rectangle are not allowed. + × Duplicate filled in rectangle are not allowed. 15 │ a { grid-template-areas: "a a a" 16 │ "a . a"; } @@ -165,7 +166,7 @@ invalid.css:17:35 lint/correctness/noInvalidGridAreas ━━━━━━━━ ``` invalid.css:21:35 lint/correctness/noInvalidGridAreas ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Inconsistent cell count in grid areas are not allowed. + × Inconsistent cell count in grid areas are not allowed. 19 │ "q q , q"; } 20 │ a { grid-template-areas: "s s t t" @@ -184,7 +185,7 @@ invalid.css:21:35 lint/correctness/noInvalidGridAreas ━━━━━━━━ ``` invalid.css:24:33 lint/correctness/noInvalidGridAreas ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate filled in rectangle are not allowed. + × Duplicate filled in rectangle are not allowed. 22 │ "u v v" 23 │ "u u v v"; } @@ -203,7 +204,7 @@ invalid.css:24:33 lint/correctness/noInvalidGridAreas ━━━━━━━━ ``` invalid.css:27:33 lint/correctness/noInvalidGridAreas ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate filled in rectangle are not allowed. + × Duplicate filled in rectangle are not allowed. 25 │ "b z a"; } 26 │ a { grid-template-areas: "a a a" diff --git a/crates/biome_css_analyze/tests/specs/correctness/noInvalidPositionAtImportRule/invalid.css.snap b/crates/biome_css_analyze/tests/specs/correctness/noInvalidPositionAtImportRule/invalid.css.snap index be5b162f21bb..700ae53c9fb4 100644 --- a/crates/biome_css_analyze/tests/specs/correctness/noInvalidPositionAtImportRule/invalid.css.snap +++ b/crates/biome_css_analyze/tests/specs/correctness/noInvalidPositionAtImportRule/invalid.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalid.css +snapshot_kind: text --- # Input ```css @@ -14,7 +15,7 @@ a {} ``` invalid.css:2:2 lint/correctness/noInvalidPositionAtImportRule ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! This @import is in the wrong position. + × This @import is in the wrong position. 1 │ a {} > 2 │ @import 'foo.css'; @@ -32,7 +33,7 @@ invalid.css:2:2 lint/correctness/noInvalidPositionAtImportRule ━━━━━ ``` invalid.css:3:2 lint/correctness/noInvalidPositionAtImportRule ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! This @import is in the wrong position. + × This @import is in the wrong position. 1 │ a {} 2 │ @import 'foo.css'; diff --git a/crates/biome_css_analyze/tests/specs/correctness/noInvalidPositionAtImportRule/invalidBetweenImport.css.snap b/crates/biome_css_analyze/tests/specs/correctness/noInvalidPositionAtImportRule/invalidBetweenImport.css.snap index 5c9fa97586c1..358caf4473f3 100644 --- a/crates/biome_css_analyze/tests/specs/correctness/noInvalidPositionAtImportRule/invalidBetweenImport.css.snap +++ b/crates/biome_css_analyze/tests/specs/correctness/noInvalidPositionAtImportRule/invalidBetweenImport.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalidBetweenImport.css +snapshot_kind: text --- # Input ```css @@ -18,7 +19,7 @@ a {} ``` invalidBetweenImport.css:3:2 lint/correctness/noInvalidPositionAtImportRule ━━━━━━━━━━━━━━━━━━━━━━━━ - ! This @import is in the wrong position. + × This @import is in the wrong position. 1 │ @import 'foo.css'; 2 │ a {} @@ -37,7 +38,7 @@ invalidBetweenImport.css:3:2 lint/correctness/noInvalidPositionAtImportRule ━ ``` invalidBetweenImport.css:4:2 lint/correctness/noInvalidPositionAtImportRule ━━━━━━━━━━━━━━━━━━━━━━━━ - ! This @import is in the wrong position. + × This @import is in the wrong position. 2 │ a {} 3 │ @import 'bar1.css'; @@ -56,7 +57,7 @@ invalidBetweenImport.css:4:2 lint/correctness/noInvalidPositionAtImportRule ━ ``` invalidBetweenImport.css:6:2 lint/correctness/noInvalidPositionAtImportRule ━━━━━━━━━━━━━━━━━━━━━━━━ - ! This @import is in the wrong position. + × This @import is in the wrong position. 4 │ @import 'bar2.css'; 5 │ a {} @@ -75,7 +76,7 @@ invalidBetweenImport.css:6:2 lint/correctness/noInvalidPositionAtImportRule ━ ``` invalidBetweenImport.css:7:2 lint/correctness/noInvalidPositionAtImportRule ━━━━━━━━━━━━━━━━━━━━━━━━ - ! This @import is in the wrong position. + × This @import is in the wrong position. 5 │ a {} 6 │ @import 'bar3.css'; diff --git a/crates/biome_css_analyze/tests/specs/correctness/noInvalidPositionAtImportRule/invalidMediaImport.css.snap b/crates/biome_css_analyze/tests/specs/correctness/noInvalidPositionAtImportRule/invalidMediaImport.css.snap index ba3533f93b23..0148771d6aed 100644 --- a/crates/biome_css_analyze/tests/specs/correctness/noInvalidPositionAtImportRule/invalidMediaImport.css.snap +++ b/crates/biome_css_analyze/tests/specs/correctness/noInvalidPositionAtImportRule/invalidMediaImport.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalidMediaImport.css +snapshot_kind: text --- # Input ```css @@ -13,7 +14,7 @@ expression: invalidMediaImport.css ``` invalidMediaImport.css:2:2 lint/correctness/noInvalidPositionAtImportRule ━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! This @import is in the wrong position. + × This @import is in the wrong position. 1 │ @media print {} > 2 │ @import url('foo.css'); diff --git a/crates/biome_css_analyze/tests/specs/correctness/noInvalidPositionAtImportRule/invalidMediaImportUpperCase.css.snap b/crates/biome_css_analyze/tests/specs/correctness/noInvalidPositionAtImportRule/invalidMediaImportUpperCase.css.snap index 7f10260094f9..9d9cf1155ce2 100644 --- a/crates/biome_css_analyze/tests/specs/correctness/noInvalidPositionAtImportRule/invalidMediaImportUpperCase.css.snap +++ b/crates/biome_css_analyze/tests/specs/correctness/noInvalidPositionAtImportRule/invalidMediaImportUpperCase.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalidMediaImportUpperCase.css +snapshot_kind: text --- # Input ```css @@ -13,7 +14,7 @@ expression: invalidMediaImportUpperCase.css ``` invalidMediaImportUpperCase.css:2:2 lint/correctness/noInvalidPositionAtImportRule ━━━━━━━━━━━━━━━━━ - ! This @import is in the wrong position. + × This @import is in the wrong position. 1 │ @media print {} > 2 │ @imPort URl('foo.css'); diff --git a/crates/biome_css_analyze/tests/specs/correctness/noUnknownFunction/invalid.css.snap b/crates/biome_css_analyze/tests/specs/correctness/noUnknownFunction/invalid.css.snap index 77f09cf8dbbf..6603d3d3549c 100644 --- a/crates/biome_css_analyze/tests/specs/correctness/noUnknownFunction/invalid.css.snap +++ b/crates/biome_css_analyze/tests/specs/correctness/noUnknownFunction/invalid.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalid.css +snapshot_kind: text --- # Input ```css @@ -13,7 +14,7 @@ a { width: calc(10% * unknown(1)); } ``` invalid.css:1:16 lint/correctness/noUnknownFunction ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown function: unknown + × Unexpected unknown function: unknown > 1 │ a { transform: unknown(4); } │ ^^^^^^^ @@ -30,7 +31,7 @@ invalid.css:1:16 lint/correctness/noUnknownFunction ━━━━━━━━━ ``` invalid.css:2:16 lint/correctness/noUnknownFunction ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown function: UNKNOWN + × Unexpected unknown function: UNKNOWN 1 │ a { transform: unknown(4); } > 2 │ a { transform: UNKNOWN(4); } @@ -47,7 +48,7 @@ invalid.css:2:16 lint/correctness/noUnknownFunction ━━━━━━━━━ ``` invalid.css:3:23 lint/correctness/noUnknownFunction ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown function: unknown + × Unexpected unknown function: unknown 1 │ a { transform: unknown(4); } 2 │ a { transform: UNKNOWN(4); } diff --git a/crates/biome_css_analyze/tests/specs/correctness/noUnknownMediaFeatureName/invalid.css.snap b/crates/biome_css_analyze/tests/specs/correctness/noUnknownMediaFeatureName/invalid.css.snap index 74ab858b6747..7c9bd8871d68 100644 --- a/crates/biome_css_analyze/tests/specs/correctness/noUnknownMediaFeatureName/invalid.css.snap +++ b/crates/biome_css_analyze/tests/specs/correctness/noUnknownMediaFeatureName/invalid.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalid.css +snapshot_kind: text --- # Input ```css @@ -28,7 +29,7 @@ expression: invalid.css ``` invalid.css:1:8 lint/correctness/noUnknownMediaFeatureName ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Don't use unknown media feature names. + × Don't use unknown media feature names. > 1 │ @media screen and (unknown) { │ ^^^^^^^^^^^^^^^^^^^^ @@ -45,7 +46,7 @@ invalid.css:1:8 lint/correctness/noUnknownMediaFeatureName ━━━━━━━ ``` invalid.css:4:8 lint/correctness/noUnknownMediaFeatureName ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Don't use unknown media feature names. + × Don't use unknown media feature names. 2 │ } 3 │ @@ -64,7 +65,7 @@ invalid.css:4:8 lint/correctness/noUnknownMediaFeatureName ━━━━━━━ ``` invalid.css:7:8 lint/correctness/noUnknownMediaFeatureName ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Don't use unknown media feature names. + × Don't use unknown media feature names. 5 │ } 6 │ @@ -83,7 +84,7 @@ invalid.css:7:8 lint/correctness/noUnknownMediaFeatureName ━━━━━━━ ``` invalid.css:10:8 lint/correctness/noUnknownMediaFeatureName ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Don't use unknown media feature names. + × Don't use unknown media feature names. 8 │ } 9 │ @@ -102,7 +103,7 @@ invalid.css:10:8 lint/correctness/noUnknownMediaFeatureName ━━━━━━ ``` invalid.css:13:8 lint/correctness/noUnknownMediaFeatureName ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Don't use unknown media feature names. + × Don't use unknown media feature names. 11 │ } 12 │ @@ -121,7 +122,7 @@ invalid.css:13:8 lint/correctness/noUnknownMediaFeatureName ━━━━━━ ``` invalid.css:16:8 lint/correctness/noUnknownMediaFeatureName ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Don't use unknown media feature names. + × Don't use unknown media feature names. 14 │ } 15 │ diff --git a/crates/biome_css_analyze/tests/specs/correctness/noUnknownProperty/invalid.css.snap b/crates/biome_css_analyze/tests/specs/correctness/noUnknownProperty/invalid.css.snap index da1be6eab6e0..3c05c0510026 100644 --- a/crates/biome_css_analyze/tests/specs/correctness/noUnknownProperty/invalid.css.snap +++ b/crates/biome_css_analyze/tests/specs/correctness/noUnknownProperty/invalid.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalid.css +snapshot_kind: text --- # Input ```css @@ -18,7 +19,7 @@ a { ``` invalid.css:2:3 lint/correctness/noUnknownProperty ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unknown property is not allowed. + × Unknown property is not allowed. 1 │ a { > 2 │ colr: blue; @@ -36,7 +37,7 @@ invalid.css:2:3 lint/correctness/noUnknownProperty ━━━━━━━━━ ``` invalid.css:6:3 lint/correctness/noUnknownProperty ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unknown property is not allowed. + × Unknown property is not allowed. 5 │ a { > 6 │ my-property: 1; diff --git a/crates/biome_css_analyze/tests/specs/correctness/noUnknownUnit/invalid.css.snap b/crates/biome_css_analyze/tests/specs/correctness/noUnknownUnit/invalid.css.snap index 123c449c2753..7d6ae4b40c99 100644 --- a/crates/biome_css_analyze/tests/specs/correctness/noUnknownUnit/invalid.css.snap +++ b/crates/biome_css_analyze/tests/specs/correctness/noUnknownUnit/invalid.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalid.css +snapshot_kind: text --- # Input ```css @@ -38,7 +39,7 @@ a { unicode-range: U+0100-024F; } ``` invalid.css:1:18 lint/correctness/noUnknownUnit ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown unit: pp + × Unexpected unknown unit: pp > 1 │ a { font-size: 13pp; } │ ^^ @@ -60,7 +61,7 @@ invalid.css:1:18 lint/correctness/noUnknownUnit ━━━━━━━━━━ ``` invalid.css:2:15 lint/correctness/noUnknownUnit ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown unit: xpx + × Unexpected unknown unit: xpx 1 │ a { font-size: 13pp; } > 2 │ a { margin: 13xpx; } @@ -83,7 +84,7 @@ invalid.css:2:15 lint/correctness/noUnknownUnit ━━━━━━━━━━ ``` invalid.css:3:18 lint/correctness/noUnknownUnit ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown unit: remm + × Unexpected unknown unit: remm 1 │ a { font-size: 13pp; } 2 │ a { margin: 13xpx; } @@ -107,7 +108,7 @@ invalid.css:3:18 lint/correctness/noUnknownUnit ━━━━━━━━━━ ``` invalid.css:4:19 lint/correctness/noUnknownUnit ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown unit: remm + × Unexpected unknown unit: remm 2 │ a { margin: 13xpx; } 3 │ a { font-size: .5remm; } @@ -131,7 +132,7 @@ invalid.css:4:19 lint/correctness/noUnknownUnit ━━━━━━━━━━ ``` invalid.css:5:19 lint/correctness/noUnknownUnit ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown unit: pix + × Unexpected unknown unit: pix 3 │ a { font-size: .5remm; } 4 │ a { font-size: 0.5remm; } @@ -155,7 +156,7 @@ invalid.css:5:19 lint/correctness/noUnknownUnit ━━━━━━━━━━ ``` invalid.css:6:19 lint/correctness/noUnknownUnit ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown unit: pix + × Unexpected unknown unit: pix 4 │ a { font-size: 0.5remm; } 5 │ a { color: rgb(255pix, 0, 51); } @@ -179,7 +180,7 @@ invalid.css:6:19 lint/correctness/noUnknownUnit ━━━━━━━━━━ ``` invalid.css:7:20 lint/correctness/noUnknownUnit ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown unit: pix + × Unexpected unknown unit: pix 5 │ a { color: rgb(255pix, 0, 51); } 6 │ a { color: hsl(255pix, 0, 51); } @@ -203,7 +204,7 @@ invalid.css:7:20 lint/correctness/noUnknownUnit ━━━━━━━━━━ ``` invalid.css:8:20 lint/correctness/noUnknownUnit ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown unit: pix + × Unexpected unknown unit: pix 6 │ a { color: hsl(255pix, 0, 51); } 7 │ a { color: rgba(255pix, 0, 51, 1); } @@ -227,7 +228,7 @@ invalid.css:8:20 lint/correctness/noUnknownUnit ━━━━━━━━━━ ``` invalid.css:9:20 lint/correctness/noUnknownUnit ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown unit: pix + × Unexpected unknown unit: pix 7 │ a { color: rgba(255pix, 0, 51, 1); } 8 │ a { color: hsla(255pix, 0, 51, 1); } @@ -251,7 +252,7 @@ invalid.css:9:20 lint/correctness/noUnknownUnit ━━━━━━━━━━ ``` invalid.css:10:20 lint/correctness/noUnknownUnit ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown unit: pix + × Unexpected unknown unit: pix 8 │ a { color: hsla(255pix, 0, 51, 1); } 9 │ a { margin: calc(13pix + 10px); } @@ -275,7 +276,7 @@ invalid.css:10:20 lint/correctness/noUnknownUnit ━━━━━━━━━━ ``` invalid.css:11:22 lint/correctness/noUnknownUnit ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown unit: pix + × Unexpected unknown unit: pix 9 │ a { margin: calc(13pix + 10px); } 10 │ a { margin: calc(10pix*2); } @@ -299,7 +300,7 @@ invalid.css:11:22 lint/correctness/noUnknownUnit ━━━━━━━━━━ ``` invalid.css:12:33 lint/correctness/noUnknownUnit ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown unit: pix + × Unexpected unknown unit: pix 10 │ a { margin: calc(10pix*2); } 11 │ a { margin: calc(2*10pix); } @@ -323,7 +324,7 @@ invalid.css:12:33 lint/correctness/noUnknownUnit ━━━━━━━━━━ ``` invalid.css:13:28 lint/correctness/noUnknownUnit ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown unit: pix + × Unexpected unknown unit: pix 11 │ a { margin: calc(2*10pix); } 12 │ a { -webkit-transition-delay: 10pix; } @@ -347,7 +348,7 @@ invalid.css:13:28 lint/correctness/noUnknownUnit ━━━━━━━━━━ ``` invalid.css:14:29 lint/correctness/noUnknownUnit ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown unit: pix + × Unexpected unknown unit: pix 12 │ a { -webkit-transition-delay: 10pix; } 13 │ a { margin: -webkit-calc(13pix + 10px); } @@ -371,7 +372,7 @@ invalid.css:14:29 lint/correctness/noUnknownUnit ━━━━━━━━━━ ``` invalid.css:15:20 lint/correctness/noUnknownUnit ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown unit: pix + × Unexpected unknown unit: pix 13 │ a { margin: -webkit-calc(13pix + 10px); } 14 │ a { margin: some-function(13pix + 10px); } @@ -395,7 +396,7 @@ invalid.css:15:20 lint/correctness/noUnknownUnit ━━━━━━━━━━ ``` invalid.css:16:22 lint/correctness/noUnknownUnit ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown unit: pix + × Unexpected unknown unit: pix 14 │ a { margin: some-function(13pix + 10px); } 15 │ root { --margin: 10pix; } @@ -419,7 +420,7 @@ invalid.css:16:22 lint/correctness/noUnknownUnit ━━━━━━━━━━ ``` invalid.css:17:47 lint/correctness/noUnknownUnit ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown unit: PIX + × Unexpected unknown unit: PIX 15 │ root { --margin: 10pix; } 16 │ @media (min-width: 13pix) {} @@ -443,7 +444,7 @@ invalid.css:17:47 lint/correctness/noUnknownUnit ━━━━━━━━━━ ``` invalid.css:18:22 lint/correctness/noUnknownUnit ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown unit: REMS + × Unexpected unknown unit: REMS 16 │ @media (min-width: 13pix) {} 17 │ @media (min-width: 10px)\n and (max-width: 20PIX) {} @@ -467,7 +468,7 @@ invalid.css:18:22 lint/correctness/noUnknownUnit ━━━━━━━━━━ ``` invalid.css:19:15 lint/correctness/noUnknownUnit ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown unit: pz + × Unexpected unknown unit: pz 17 │ @media (min-width: 10px)\n and (max-width: 20PIX) {} 18 │ @media (width < 10.01REMS) {} @@ -491,7 +492,7 @@ invalid.css:19:15 lint/correctness/noUnknownUnit ━━━━━━━━━━ ``` invalid.css:20:14 lint/correctness/noUnknownUnit ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown unit: r9 + × Unexpected unknown unit: r9 18 │ @media (width < 10.01REMS) {} 19 │ a { width: 1e4pz; } @@ -515,7 +516,7 @@ invalid.css:20:14 lint/correctness/noUnknownUnit ━━━━━━━━━━ ``` invalid.css:21:15 lint/correctness/noUnknownUnit ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown unit: x + × Unexpected unknown unit: x 19 │ a { width: 1e4pz; } 20 │ a { flex: 0 9r9 auto; } @@ -539,7 +540,7 @@ invalid.css:21:15 lint/correctness/noUnknownUnit ━━━━━━━━━━ ``` invalid.css:22:44 lint/correctness/noUnknownUnit ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown unit: x + × Unexpected unknown unit: x 20 │ a { flex: 0 9r9 auto; } 21 │ a { width: 400x; } @@ -563,7 +564,7 @@ invalid.css:22:44 lint/correctness/noUnknownUnit ━━━━━━━━━━ ``` invalid.css:23:60 lint/correctness/noUnknownUnit ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown unit: x + × Unexpected unknown unit: x 21 │ a { width: 400x; } 22 │ @media (resolution: 2x) and (min-width: 200x) {} @@ -587,7 +588,7 @@ invalid.css:23:60 lint/correctness/noUnknownUnit ━━━━━━━━━━ ``` invalid.css:24:66 lint/correctness/noUnknownUnit ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown unit: x + × Unexpected unknown unit: x 22 │ @media (resolution: 2x) and (min-width: 200x) {} 23 │ @media ( resolution: /* comment */ 2x ) and (min-width: 200x) {} @@ -611,7 +612,7 @@ invalid.css:24:66 lint/correctness/noUnknownUnit ━━━━━━━━━━ ``` invalid.css:25:80 lint/correctness/noUnknownUnit ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown unit: x + × Unexpected unknown unit: x 23 │ @media ( resolution: /* comment */ 2x ) and (min-width: 200x) {} 24 │ a { background: image-set('img1x.png' 1x, 'img2x.png' 2x) left 20x / 15% 60% repeat-x; } @@ -635,7 +636,7 @@ invalid.css:25:80 lint/correctness/noUnknownUnit ━━━━━━━━━━ ``` invalid.css:26:46 lint/correctness/noUnknownUnit ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown unit: pix + × Unexpected unknown unit: pix 24 │ a { background: image-set('img1x.png' 1x, 'img2x.png' 2x) left 20x / 15% 60% repeat-x; } 25 │ a { background: /* comment */ image-set('img1x.png' 1x, 'img2x.png' 2x) left 20x / 15% 60% repeat-x; } diff --git a/crates/biome_css_analyze/tests/specs/correctness/noUnmatchableAnbSelector/invalid.css.snap b/crates/biome_css_analyze/tests/specs/correctness/noUnmatchableAnbSelector/invalid.css.snap index 80881ffccaba..c4473ca5f992 100644 --- a/crates/biome_css_analyze/tests/specs/correctness/noUnmatchableAnbSelector/invalid.css.snap +++ b/crates/biome_css_analyze/tests/specs/correctness/noUnmatchableAnbSelector/invalid.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalid.css +snapshot_kind: text --- # Input ```css @@ -25,7 +26,7 @@ a:nth-last-child(0),a:nth-last-child(n+5) ~ li {} ``` invalid.css:1:13 lint/correctness/noUnmatchableAnbSelector ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! This selector will never match any elements. + × This selector will never match any elements. > 1 │ a:nth-child(0) {} │ ^ @@ -42,7 +43,7 @@ invalid.css:1:13 lint/correctness/noUnmatchableAnbSelector ━━━━━━━ ``` invalid.css:2:13 lint/correctness/noUnmatchableAnbSelector ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! This selector will never match any elements. + × This selector will never match any elements. 1 │ a:nth-child(0) {} > 2 │ a:nth-child(0n) {} @@ -60,7 +61,7 @@ invalid.css:2:13 lint/correctness/noUnmatchableAnbSelector ━━━━━━━ ``` invalid.css:3:13 lint/correctness/noUnmatchableAnbSelector ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! This selector will never match any elements. + × This selector will never match any elements. 1 │ a:nth-child(0) {} 2 │ a:nth-child(0n) {} @@ -79,7 +80,7 @@ invalid.css:3:13 lint/correctness/noUnmatchableAnbSelector ━━━━━━━ ``` invalid.css:4:13 lint/correctness/noUnmatchableAnbSelector ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! This selector will never match any elements. + × This selector will never match any elements. 2 │ a:nth-child(0n) {} 3 │ a:nth-child(+0n) {} @@ -98,7 +99,7 @@ invalid.css:4:13 lint/correctness/noUnmatchableAnbSelector ━━━━━━━ ``` invalid.css:5:13 lint/correctness/noUnmatchableAnbSelector ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! This selector will never match any elements. + × This selector will never match any elements. 3 │ a:nth-child(+0n) {} 4 │ a:nth-child(-0n) {} @@ -117,7 +118,7 @@ invalid.css:5:13 lint/correctness/noUnmatchableAnbSelector ━━━━━━━ ``` invalid.css:6:13 lint/correctness/noUnmatchableAnbSelector ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! This selector will never match any elements. + × This selector will never match any elements. 4 │ a:nth-child(-0n) {} 5 │ a:nth-child(0n+0) {} @@ -136,7 +137,7 @@ invalid.css:6:13 lint/correctness/noUnmatchableAnbSelector ━━━━━━━ ``` invalid.css:7:13 lint/correctness/noUnmatchableAnbSelector ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! This selector will never match any elements. + × This selector will never match any elements. 5 │ a:nth-child(0n+0) {} 6 │ a:nth-child(0n-0) {} @@ -155,7 +156,7 @@ invalid.css:7:13 lint/correctness/noUnmatchableAnbSelector ━━━━━━━ ``` invalid.css:8:13 lint/correctness/noUnmatchableAnbSelector ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! This selector will never match any elements. + × This selector will never match any elements. 6 │ a:nth-child(0n-0) {} 7 │ a:nth-child(-0n-0) {} @@ -174,7 +175,7 @@ invalid.css:8:13 lint/correctness/noUnmatchableAnbSelector ━━━━━━━ ``` invalid.css:9:13 lint/correctness/noUnmatchableAnbSelector ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! This selector will never match any elements. + × This selector will never match any elements. 7 │ a:nth-child(-0n-0) {} 8 │ a:nth-child(0 of a) {} @@ -193,7 +194,7 @@ invalid.css:9:13 lint/correctness/noUnmatchableAnbSelector ━━━━━━━ ``` invalid.css:10:18 lint/correctness/noUnmatchableAnbSelector ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! This selector will never match any elements. + × This selector will never match any elements. 8 │ a:nth-child(0 of a) {} 9 │ a:nth-child(0), a:nth-child(1) {} @@ -212,7 +213,7 @@ invalid.css:10:18 lint/correctness/noUnmatchableAnbSelector ━━━━━━ ``` invalid.css:11:15 lint/correctness/noUnmatchableAnbSelector ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! This selector will never match any elements. + × This selector will never match any elements. 9 │ a:nth-child(0), a:nth-child(1) {} 10 │ a:nth-last-child(0) {} @@ -231,7 +232,7 @@ invalid.css:11:15 lint/correctness/noUnmatchableAnbSelector ━━━━━━ ``` invalid.css:12:20 lint/correctness/noUnmatchableAnbSelector ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! This selector will never match any elements. + × This selector will never match any elements. 10 │ a:nth-last-child(0) {} 11 │ a:nth-of-type(0) {} @@ -250,7 +251,7 @@ invalid.css:12:20 lint/correctness/noUnmatchableAnbSelector ━━━━━━ ``` invalid.css:13:13 lint/correctness/noUnmatchableAnbSelector ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! This selector will never match any elements. + × This selector will never match any elements. 11 │ a:nth-of-type(0) {} 12 │ a:nth-last-of-type(0) {} @@ -269,7 +270,7 @@ invalid.css:13:13 lint/correctness/noUnmatchableAnbSelector ━━━━━━ ``` invalid.css:14:18 lint/correctness/noUnmatchableAnbSelector ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! This selector will never match any elements. + × This selector will never match any elements. 12 │ a:nth-last-of-type(0) {} 13 │ a:nth-child(0n):nth-child(-n+5) {} diff --git a/crates/biome_css_analyze/tests/specs/nursery/noDescendingSpecificity/complex_selector.invalid.css.snap b/crates/biome_css_analyze/tests/specs/nursery/noDescendingSpecificity/complex_selector.invalid.css.snap index e860dea23937..cb3ee881c295 100644 --- a/crates/biome_css_analyze/tests/specs/nursery/noDescendingSpecificity/complex_selector.invalid.css.snap +++ b/crates/biome_css_analyze/tests/specs/nursery/noDescendingSpecificity/complex_selector.invalid.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: complex_selector.invalid.css +snapshot_kind: text --- # Input ```css @@ -18,7 +19,7 @@ a { ``` complex_selector.invalid.css:5:1 lint/nursery/noDescendingSpecificity ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Descending specificity selector found. This selector specificity is (0, 0, 1) + × Descending specificity selector found. This selector specificity is (0, 0, 1) 3 │ } 4 │ diff --git a/crates/biome_css_analyze/tests/specs/nursery/noDescendingSpecificity/function_pseudo_selector.invalid.css.snap b/crates/biome_css_analyze/tests/specs/nursery/noDescendingSpecificity/function_pseudo_selector.invalid.css.snap index 03b6d35bb478..b72f4a596390 100644 --- a/crates/biome_css_analyze/tests/specs/nursery/noDescendingSpecificity/function_pseudo_selector.invalid.css.snap +++ b/crates/biome_css_analyze/tests/specs/nursery/noDescendingSpecificity/function_pseudo_selector.invalid.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: function_pseudo_selector.invalid.css +snapshot_kind: text --- # Input ```css @@ -25,7 +26,7 @@ expression: function_pseudo_selector.invalid.css ``` function_pseudo_selector.invalid.css:5:1 lint/nursery/noDescendingSpecificity ━━━━━━━━━━━━━━━━━━━━━━ - ! Descending specificity selector found. This selector specificity is (0, 0, 2) + × Descending specificity selector found. This selector specificity is (0, 0, 2) 3 │ } 4 │ @@ -49,7 +50,7 @@ function_pseudo_selector.invalid.css:5:1 lint/nursery/noDescendingSpecificity ``` function_pseudo_selector.invalid.css:13:1 lint/nursery/noDescendingSpecificity ━━━━━━━━━━━━━━━━━━━━━ - ! Descending specificity selector found. This selector specificity is (0, 0, 1) + × Descending specificity selector found. This selector specificity is (0, 0, 1) 11 │ } 12 │ diff --git a/crates/biome_css_analyze/tests/specs/nursery/noDescendingSpecificity/nested.invalid.css.snap b/crates/biome_css_analyze/tests/specs/nursery/noDescendingSpecificity/nested.invalid.css.snap index 8cadc52ec585..bf49e7ba52be 100644 --- a/crates/biome_css_analyze/tests/specs/nursery/noDescendingSpecificity/nested.invalid.css.snap +++ b/crates/biome_css_analyze/tests/specs/nursery/noDescendingSpecificity/nested.invalid.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: nested.invalid.css +snapshot_kind: text --- # Input ```css @@ -19,7 +20,7 @@ b { ``` nested.invalid.css:7:1 lint/nursery/noDescendingSpecificity ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Descending specificity selector found. This selector specificity is (0, 0, 1) + × Descending specificity selector found. This selector specificity is (0, 0, 1) 5 │ } 6 │ diff --git a/crates/biome_css_analyze/tests/specs/nursery/noDescendingSpecificity/simple_pseudo_selector.invalid.css.snap b/crates/biome_css_analyze/tests/specs/nursery/noDescendingSpecificity/simple_pseudo_selector.invalid.css.snap index d33be5459b12..aae3ec78b731 100644 --- a/crates/biome_css_analyze/tests/specs/nursery/noDescendingSpecificity/simple_pseudo_selector.invalid.css.snap +++ b/crates/biome_css_analyze/tests/specs/nursery/noDescendingSpecificity/simple_pseudo_selector.invalid.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: simple_pseudo_selector.invalid.css +snapshot_kind: text --- # Input ```css @@ -18,7 +19,7 @@ a #b { ``` simple_pseudo_selector.invalid.css:5:1 lint/nursery/noDescendingSpecificity ━━━━━━━━━━━━━━━━━━━━━━━━ - ! Descending specificity selector found. This selector specificity is (1, 0, 1) + × Descending specificity selector found. This selector specificity is (1, 0, 1) 3 │ } 4 │ diff --git a/crates/biome_css_analyze/tests/specs/nursery/noDuplicateCustomProperties/invalid.css.snap b/crates/biome_css_analyze/tests/specs/nursery/noDuplicateCustomProperties/invalid.css.snap index b1ea1dbd07b9..5208ec979ac1 100644 --- a/crates/biome_css_analyze/tests/specs/nursery/noDuplicateCustomProperties/invalid.css.snap +++ b/crates/biome_css_analyze/tests/specs/nursery/noDuplicateCustomProperties/invalid.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalid.css +snapshot_kind: text --- # Input ```css @@ -19,7 +20,7 @@ a { --custom-property: pink; @media { --custom-property: orange; .foo { --custom ``` invalid.css:1:27 lint/nursery/noDuplicateCustomProperties ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate custom properties can lead to unexpected behavior and may override previous declarations unintentionally. + × Duplicate custom properties can lead to unexpected behavior and may override previous declarations unintentionally. > 1 │ a { --custom-property: 1; --custom-property: 2; } │ ^^^^^^^^^^^^^^^^^ @@ -41,7 +42,7 @@ invalid.css:1:27 lint/nursery/noDuplicateCustomProperties ━━━━━━━ ``` invalid.css:2:40 lint/nursery/noDuplicateCustomProperties ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate custom properties can lead to unexpected behavior and may override previous declarations unintentionally. + × Duplicate custom properties can lead to unexpected behavior and may override previous declarations unintentionally. 1 │ a { --custom-property: 1; --custom-property: 2; } > 2 │ a { --custom-property: 1; color: pink; --custom-property: 1; } @@ -65,7 +66,7 @@ invalid.css:2:40 lint/nursery/noDuplicateCustomProperties ━━━━━━━ ``` invalid.css:3:62 lint/nursery/noDuplicateCustomProperties ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate custom properties can lead to unexpected behavior and may override previous declarations unintentionally. + × Duplicate custom properties can lead to unexpected behavior and may override previous declarations unintentionally. 1 │ a { --custom-property: 1; --custom-property: 2; } 2 │ a { --custom-property: 1; color: pink; --custom-property: 1; } @@ -91,7 +92,7 @@ invalid.css:3:62 lint/nursery/noDuplicateCustomProperties ━━━━━━━ ``` invalid.css:4:69 lint/nursery/noDuplicateCustomProperties ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate custom properties can lead to unexpected behavior and may override previous declarations unintentionally. + × Duplicate custom properties can lead to unexpected behavior and may override previous declarations unintentionally. 2 │ a { --custom-property: 1; color: pink; --custom-property: 1; } 3 │ a { --custom-property: 1; --cUstOm-prOpErtY: 1; color: pink; --cUstOm-prOpErtY: 1; } @@ -117,7 +118,7 @@ invalid.css:4:69 lint/nursery/noDuplicateCustomProperties ━━━━━━━ ``` invalid.css:5:66 lint/nursery/noDuplicateCustomProperties ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate custom properties can lead to unexpected behavior and may override previous declarations unintentionally. + × Duplicate custom properties can lead to unexpected behavior and may override previous declarations unintentionally. 3 │ a { --custom-property: 1; --cUstOm-prOpErtY: 1; color: pink; --cUstOm-prOpErtY: 1; } 4 │ a { --custom-property: pink; { &:hover { --custom-property: orange; --custom-property: black; } } } @@ -143,7 +144,7 @@ invalid.css:5:66 lint/nursery/noDuplicateCustomProperties ━━━━━━━ ``` invalid.css:6:70 lint/nursery/noDuplicateCustomProperties ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate custom properties can lead to unexpected behavior and may override previous declarations unintentionally. + × Duplicate custom properties can lead to unexpected behavior and may override previous declarations unintentionally. 4 │ a { --custom-property: pink; { &:hover { --custom-property: orange; --custom-property: black; } } } 5 │ a { --custom-property: pink; @media { --custom-property: orange; --custom-property: black; } } @@ -169,7 +170,7 @@ invalid.css:6:70 lint/nursery/noDuplicateCustomProperties ━━━━━━━ ``` invalid.css:7:104 lint/nursery/noDuplicateCustomProperties ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate custom properties can lead to unexpected behavior and may override previous declarations unintentionally. + × Duplicate custom properties can lead to unexpected behavior and may override previous declarations unintentionally. 5 │ a { --custom-property: pink; @media { --custom-property: orange; --custom-property: black; } } 6 │ @media { --custom-property: orange; .foo { --custom-property: black; --custom-property: white; } } @@ -195,7 +196,7 @@ invalid.css:7:104 lint/nursery/noDuplicateCustomProperties ━━━━━━━ ``` invalid.css:8:99 lint/nursery/noDuplicateCustomProperties ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate custom properties can lead to unexpected behavior and may override previous declarations unintentionally. + × Duplicate custom properties can lead to unexpected behavior and may override previous declarations unintentionally. 6 │ @media { --custom-property: orange; .foo { --custom-property: black; --custom-property: white; } } 7 │ a { --custom-property: pink; @media { --custom-property: orange; &::before { --custom-property: black; --custom-property: white; } } } diff --git a/crates/biome_css_analyze/tests/specs/nursery/noDuplicateProperties/invalid.css.snap b/crates/biome_css_analyze/tests/specs/nursery/noDuplicateProperties/invalid.css.snap index 060af68b3b48..71d08b0d9ca2 100644 --- a/crates/biome_css_analyze/tests/specs/nursery/noDuplicateProperties/invalid.css.snap +++ b/crates/biome_css_analyze/tests/specs/nursery/noDuplicateProperties/invalid.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalid.css +snapshot_kind: text --- # Input ```css @@ -72,7 +73,7 @@ a { ``` invalid.css:3:5 lint/nursery/noDuplicateProperties ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally. + × Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally. 1 │ a { 2 │ color: pink; @@ -97,7 +98,7 @@ invalid.css:3:5 lint/nursery/noDuplicateProperties ━━━━━━━━━ ``` invalid.css:8:5 lint/nursery/noDuplicateProperties ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally. + × Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally. 6 │ a { 7 │ color: pink; @@ -122,7 +123,7 @@ invalid.css:8:5 lint/nursery/noDuplicateProperties ━━━━━━━━━ ``` invalid.css:14:5 lint/nursery/noDuplicateProperties ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally. + × Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally. 12 │ a { 13 │ color: pink; @@ -147,7 +148,7 @@ invalid.css:14:5 lint/nursery/noDuplicateProperties ━━━━━━━━━ ``` invalid.css:21:5 lint/nursery/noDuplicateProperties ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally. + × Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally. 19 │ color: pink; 20 │ background: orange; @@ -172,7 +173,7 @@ invalid.css:21:5 lint/nursery/noDuplicateProperties ━━━━━━━━━ ``` invalid.css:27:5 lint/nursery/noDuplicateProperties ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally. + × Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally. 25 │ color: pink; 26 │ background: orange; @@ -198,7 +199,7 @@ invalid.css:27:5 lint/nursery/noDuplicateProperties ━━━━━━━━━ ``` invalid.css:30:45 lint/nursery/noDuplicateProperties ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally. + × Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally. 28 │ } 29 │ @@ -224,7 +225,7 @@ invalid.css:30:45 lint/nursery/noDuplicateProperties ━━━━━━━━━ ``` invalid.css:32:42 lint/nursery/noDuplicateProperties ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally. + × Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally. 30 │ a { color: pink; { &:hover { color: orange; color: black; } } } 31 │ @@ -250,7 +251,7 @@ invalid.css:32:42 lint/nursery/noDuplicateProperties ━━━━━━━━━ ``` invalid.css:34:46 lint/nursery/noDuplicateProperties ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally. + × Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally. 32 │ a { color: pink; @media { color: orange; color: black; } } 33 │ @@ -276,7 +277,7 @@ invalid.css:34:46 lint/nursery/noDuplicateProperties ━━━━━━━━━ ``` invalid.css:36:68 lint/nursery/noDuplicateProperties ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally. + × Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally. 34 │ @media { color: orange; .foo { color: black; color: white; } } 35 │ @@ -302,7 +303,7 @@ invalid.css:36:68 lint/nursery/noDuplicateProperties ━━━━━━━━━ ``` invalid.css:38:63 lint/nursery/noDuplicateProperties ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally. + × Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally. 36 │ a { color: pink; @media { color: orange; &::before { color: black; color: white; } } } 37 │ @@ -328,7 +329,7 @@ invalid.css:38:63 lint/nursery/noDuplicateProperties ━━━━━━━━━ ``` invalid.css:40:34 lint/nursery/noDuplicateProperties ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally. + × Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally. 38 │ a { color: pink; @media { color: orange; .foo { color: black; color: white; } } } 39 │ @@ -354,7 +355,7 @@ invalid.css:40:34 lint/nursery/noDuplicateProperties ━━━━━━━━━ ``` invalid.css:42:28 lint/nursery/noDuplicateProperties ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally. + × Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally. 40 │ a { -webkit-border-radius: 12px; -webkit-border-radius: 10px; } 41 │ @@ -380,7 +381,7 @@ invalid.css:42:28 lint/nursery/noDuplicateProperties ━━━━━━━━━ ``` invalid.css:44:28 lint/nursery/noDuplicateProperties ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally. + × Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally. 42 │ a { color: red !important; color: blue; } 43 │ @@ -406,7 +407,7 @@ invalid.css:44:28 lint/nursery/noDuplicateProperties ━━━━━━━━━ ``` invalid.css:49:9 lint/nursery/noDuplicateProperties ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally. + × Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally. 47 │ @supports (color: pink) { 48 │ color: pink; @@ -432,7 +433,7 @@ invalid.css:49:9 lint/nursery/noDuplicateProperties ━━━━━━━━━ ``` invalid.css:58:13 lint/nursery/noDuplicateProperties ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally. + × Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally. 56 │ &:hover { 57 │ color: orange; diff --git a/crates/biome_css_analyze/tests/specs/nursery/noIrregularWhitespace/invalid.css.snap b/crates/biome_css_analyze/tests/specs/nursery/noIrregularWhitespace/invalid.css.snap index 77f568bd3877..8b5bec611325 100644 --- a/crates/biome_css_analyze/tests/specs/nursery/noIrregularWhitespace/invalid.css.snap +++ b/crates/biome_css_analyze/tests/specs/nursery/noIrregularWhitespace/invalid.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalid.css +snapshot_kind: text --- # Input ```css @@ -108,7 +109,7 @@ expression: invalid.css ``` invalid.css:2:2 lint/nursery/noIrregularWhitespace ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Irregular whitespace found. + i Irregular whitespace found. 1 │ /* \u{b} */ > 2 │ @import␋ 'a.css'; @@ -124,7 +125,7 @@ invalid.css:2:2 lint/nursery/noIrregularWhitespace ━━━━━━━━━ ``` invalid.css:4:2 lint/nursery/noIrregularWhitespace ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Irregular whitespace found. + i Irregular whitespace found. 2 │ @import␋ 'a.css'; 3 │ /* \u{c} */ @@ -141,7 +142,7 @@ invalid.css:4:2 lint/nursery/noIrregularWhitespace ━━━━━━━━━ ``` invalid.css:6:2 lint/nursery/noIrregularWhitespace ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Irregular whitespace found. + i Irregular whitespace found. 4 │ @layer↡module, state; 5 │ /* \u{feff} */ @@ -158,7 +159,7 @@ invalid.css:6:2 lint/nursery/noIrregularWhitespace ━━━━━━━━━ ``` invalid.css:18:12 lint/nursery/noIrregularWhitespace ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Irregular whitespace found. + i Irregular whitespace found. 16 │ } 17 │ /* \u{2000} */ @@ -175,7 +176,7 @@ invalid.css:18:12 lint/nursery/noIrregularWhitespace ━━━━━━━━━ ``` invalid.css:23:9 lint/nursery/noIrregularWhitespace ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Irregular whitespace found. + i Irregular whitespace found. 21 │ /* \u{2001} */ 22 │ .firstClass .secondClass { @@ -192,7 +193,7 @@ invalid.css:23:9 lint/nursery/noIrregularWhitespace ━━━━━━━━━ ``` invalid.css:30:25 lint/nursery/noIrregularWhitespace ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Irregular whitespace found. + i Irregular whitespace found. 28 │ } 29 │ /* \u{2003} */ @@ -209,7 +210,7 @@ invalid.css:30:25 lint/nursery/noIrregularWhitespace ━━━━━━━━━ ``` invalid.css:34:12 lint/nursery/noIrregularWhitespace ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Irregular whitespace found. + i Irregular whitespace found. 32 │ } 33 │ /* \u{2004} */ @@ -226,7 +227,7 @@ invalid.css:34:12 lint/nursery/noIrregularWhitespace ━━━━━━━━━ ``` invalid.css:38:12 lint/nursery/noIrregularWhitespace ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Irregular whitespace found. + i Irregular whitespace found. 36 │ } 37 │ /* \u{2005} */ @@ -243,7 +244,7 @@ invalid.css:38:12 lint/nursery/noIrregularWhitespace ━━━━━━━━━ ``` invalid.css:42:12 lint/nursery/noIrregularWhitespace ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Irregular whitespace found. + i Irregular whitespace found. 40 │ } 41 │ /* \u{2006} */ @@ -260,7 +261,7 @@ invalid.css:42:12 lint/nursery/noIrregularWhitespace ━━━━━━━━━ ``` invalid.css:46:12 lint/nursery/noIrregularWhitespace ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Irregular whitespace found. + i Irregular whitespace found. 44 │ } 45 │ /* \u{2007} */ @@ -277,7 +278,7 @@ invalid.css:46:12 lint/nursery/noIrregularWhitespace ━━━━━━━━━ ``` invalid.css:51:14 lint/nursery/noIrregularWhitespace ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Irregular whitespace found. + i Irregular whitespace found. 49 │ /* \u{2008} */ 50 │ @view-transition { @@ -294,7 +295,7 @@ invalid.css:51:14 lint/nursery/noIrregularWhitespace ━━━━━━━━━ ``` invalid.css:56:11 lint/nursery/noIrregularWhitespace ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Irregular whitespace found. + i Irregular whitespace found. 54 │ @layer state { 55 │ body { @@ -311,7 +312,7 @@ invalid.css:56:11 lint/nursery/noIrregularWhitespace ━━━━━━━━━ ``` invalid.css:56:11 lint/nursery/noIrregularWhitespace ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Irregular whitespace found. + i Irregular whitespace found. 54 │ @layer state { 55 │ body { @@ -328,7 +329,7 @@ invalid.css:56:11 lint/nursery/noIrregularWhitespace ━━━━━━━━━ ``` invalid.css:60:7 lint/nursery/noIrregularWhitespace ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Irregular whitespace found. + i Irregular whitespace found. 58 │ } 59 │ /* \u{200a} */ @@ -345,7 +346,7 @@ invalid.css:60:7 lint/nursery/noIrregularWhitespace ━━━━━━━━━ ``` invalid.css:67:6 lint/nursery/noIrregularWhitespace ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Irregular whitespace found. + i Irregular whitespace found. 65 │ /* \u{200b} */ 66 │ @keyframes slidein { @@ -362,7 +363,7 @@ invalid.css:67:6 lint/nursery/noIrregularWhitespace ━━━━━━━━━ ``` invalid.css:76:11 lint/nursery/noIrregularWhitespace ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Irregular whitespace found. + i Irregular whitespace found. 74 │ } 75 │ /* \u{202f} */ @@ -379,7 +380,7 @@ invalid.css:76:11 lint/nursery/noIrregularWhitespace ━━━━━━━━━ ``` invalid.css:85:11 lint/nursery/noIrregularWhitespace ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Irregular whitespace found. + i Irregular whitespace found. 83 │ } 84 │ /* \u{205f} */ @@ -396,7 +397,7 @@ invalid.css:85:11 lint/nursery/noIrregularWhitespace ━━━━━━━━━ ``` invalid.css:95:11 lint/nursery/noIrregularWhitespace ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Irregular whitespace found. + i Irregular whitespace found. 93 │ } 94 │ /* \u{3000} */ diff --git a/crates/biome_css_analyze/tests/specs/nursery/noMissingVarFunction/invalid.css.snap b/crates/biome_css_analyze/tests/specs/nursery/noMissingVarFunction/invalid.css.snap index c9dddb017ca4..9ff514f77ce8 100644 --- a/crates/biome_css_analyze/tests/specs/nursery/noMissingVarFunction/invalid.css.snap +++ b/crates/biome_css_analyze/tests/specs/nursery/noMissingVarFunction/invalid.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalid.css +snapshot_kind: text --- # Input ```css @@ -80,7 +81,7 @@ a { ``` invalid.css:4:12 lint/nursery/noMissingVarFunction ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! CSS variables '--foo' is used without the 'var()' function + × CSS variables '--foo' is used without the 'var()' function 2 │ a { 3 │ --foo: red; @@ -97,7 +98,7 @@ invalid.css:4:12 lint/nursery/noMissingVarFunction ━━━━━━━━━ ``` invalid.css:10:12 lint/nursery/noMissingVarFunction ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! CSS variables '--bar' is used without the 'var()' function + × CSS variables '--bar' is used without the 'var()' function 8 │ @property --bar {} 9 │ a { @@ -114,7 +115,7 @@ invalid.css:10:12 lint/nursery/noMissingVarFunction ━━━━━━━━━ ``` invalid.css:18:12 lint/nursery/noMissingVarFunction ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! CSS variables '--baz' is used without the 'var()' function + × CSS variables '--baz' is used without the 'var()' function 16 │ } 17 │ a { @@ -131,7 +132,7 @@ invalid.css:18:12 lint/nursery/noMissingVarFunction ━━━━━━━━━ ``` invalid.css:26:30 lint/nursery/noMissingVarFunction ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! CSS variables '--aaaa' is used without the 'var()' function + × CSS variables '--aaaa' is used without the 'var()' function 24 │ } 25 │ a { @@ -148,7 +149,7 @@ invalid.css:26:30 lint/nursery/noMissingVarFunction ━━━━━━━━━ ``` invalid.css:34:12 lint/nursery/noMissingVarFunction ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! CSS variables '--bbbb' is used without the 'var()' function + × CSS variables '--bbbb' is used without the 'var()' function 32 │ } 33 │ a { @@ -165,7 +166,7 @@ invalid.css:34:12 lint/nursery/noMissingVarFunction ━━━━━━━━━ ``` invalid.css:42:18 lint/nursery/noMissingVarFunction ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! CSS variables '--cccc' is used without the 'var()' function + × CSS variables '--cccc' is used without the 'var()' function 40 │ } 41 │ a { @@ -182,7 +183,7 @@ invalid.css:42:18 lint/nursery/noMissingVarFunction ━━━━━━━━━ ``` invalid.css:51:12 lint/nursery/noMissingVarFunction ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! CSS variables '--dddd' is used without the 'var()' function + × CSS variables '--dddd' is used without the 'var()' function 49 │ } 50 │ a { @@ -199,7 +200,7 @@ invalid.css:51:12 lint/nursery/noMissingVarFunction ━━━━━━━━━ ``` invalid.css:52:12 lint/nursery/noMissingVarFunction ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! CSS variables '--eeee' is used without the 'var()' function + × CSS variables '--eeee' is used without the 'var()' function 50 │ a { 51 │ --foo: --dddd; @@ -216,7 +217,7 @@ invalid.css:52:12 lint/nursery/noMissingVarFunction ━━━━━━━━━ ``` invalid.css:59:12 lint/nursery/noMissingVarFunction ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! CSS variables '--ffff' is used without the 'var()' function + × CSS variables '--ffff' is used without the 'var()' function 57 │ @property --gggg {} 58 │ a { @@ -233,7 +234,7 @@ invalid.css:59:12 lint/nursery/noMissingVarFunction ━━━━━━━━━ ``` invalid.css:60:12 lint/nursery/noMissingVarFunction ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! CSS variables '--gggg' is used without the 'var()' function + × CSS variables '--gggg' is used without the 'var()' function 58 │ a { 59 │ --foo: --ffff; @@ -250,7 +251,7 @@ invalid.css:60:12 lint/nursery/noMissingVarFunction ━━━━━━━━━ ``` invalid.css:67:14 lint/nursery/noMissingVarFunction ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! CSS variables '--foo' is used without the 'var()' function + × CSS variables '--foo' is used without the 'var()' function 65 │ --foo: red; 66 │ .child { diff --git a/crates/biome_css_analyze/tests/specs/nursery/noUnknownAtRule/invalid.css.snap b/crates/biome_css_analyze/tests/specs/nursery/noUnknownAtRule/invalid.css.snap index fd79f5aad0be..e68f1afe9271 100644 --- a/crates/biome_css_analyze/tests/specs/nursery/noUnknownAtRule/invalid.css.snap +++ b/crates/biome_css_analyze/tests/specs/nursery/noUnknownAtRule/invalid.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalid.css +snapshot_kind: text --- # Input ```css @@ -17,7 +18,7 @@ expression: invalid.css ``` invalid.css:1:2 lint/nursery/noUnknownAtRule ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown at-rule: unknown-rule + i Unexpected unknown at-rule: unknown-rule > 1 │ @unknown-rule 'UTF-8'; │ ^^^^^^^^^^^^ @@ -36,7 +37,7 @@ invalid.css:1:2 lint/nursery/noUnknownAtRule ━━━━━━━━━━━ ``` invalid.css:2:2 lint/nursery/noUnknownAtRule ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown at-rule: uNkNoWn + i Unexpected unknown at-rule: uNkNoWn 1 │ @unknown-rule 'UTF-8'; > 2 │ @uNkNoWn {} @@ -56,7 +57,7 @@ invalid.css:2:2 lint/nursery/noUnknownAtRule ━━━━━━━━━━━ ``` invalid.css:3:2 lint/nursery/noUnknownAtRule ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown at-rule: UNKNOWN + i Unexpected unknown at-rule: UNKNOWN 1 │ @unknown-rule 'UTF-8'; 2 │ @uNkNoWn {} @@ -77,7 +78,7 @@ invalid.css:3:2 lint/nursery/noUnknownAtRule ━━━━━━━━━━━ ``` invalid.css:4:2 lint/nursery/noUnknownAtRule ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown at-rule: unknown-at-rule + i Unexpected unknown at-rule: unknown-at-rule 2 │ @uNkNoWn {} 3 │ @UNKNOWN {} @@ -98,7 +99,7 @@ invalid.css:4:2 lint/nursery/noUnknownAtRule ━━━━━━━━━━━ ``` invalid.css:5:2 lint/nursery/noUnknownAtRule ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown at-rule: unknown + i Unexpected unknown at-rule: unknown 3 │ @UNKNOWN {} 4 │ @unknown-at-rule {} @@ -119,7 +120,7 @@ invalid.css:5:2 lint/nursery/noUnknownAtRule ━━━━━━━━━━━ ``` invalid.css:5:13 lint/nursery/noUnknownAtRule ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown at-rule: unknown-at-rule + i Unexpected unknown at-rule: unknown-at-rule 3 │ @UNKNOWN {} 4 │ @unknown-at-rule {} @@ -140,7 +141,7 @@ invalid.css:5:13 lint/nursery/noUnknownAtRule ━━━━━━━━━━━ ``` invalid.css:6:2 lint/nursery/noUnknownAtRule ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown at-rule: MY-other-at-rule + i Unexpected unknown at-rule: MY-other-at-rule 4 │ @unknown-at-rule {} 5 │ @unknown { @unknown-at-rule { font-size: 14px; } } @@ -160,7 +161,7 @@ invalid.css:6:2 lint/nursery/noUnknownAtRule ━━━━━━━━━━━ ``` invalid.css:7:2 lint/nursery/noUnknownAtRule ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown at-rule: not-my-at-rule + i Unexpected unknown at-rule: not-my-at-rule 5 │ @unknown { @unknown-at-rule { font-size: 14px; } } 6 │ @MY-other-at-rule {} diff --git a/crates/biome_css_analyze/tests/specs/nursery/noUnknownPseudoClass/invalid.css.snap b/crates/biome_css_analyze/tests/specs/nursery/noUnknownPseudoClass/invalid.css.snap index 5bb7c790d47b..9b4398313ac9 100644 --- a/crates/biome_css_analyze/tests/specs/nursery/noUnknownPseudoClass/invalid.css.snap +++ b/crates/biome_css_analyze/tests/specs/nursery/noUnknownPseudoClass/invalid.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalid.css +snapshot_kind: text --- # Input ```css @@ -26,7 +27,7 @@ b > .foo:error { } ``` invalid.css:1:3 lint/nursery/noUnknownPseudoClass ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown pseudo-class unknown + × Unexpected unknown pseudo-class unknown > 1 │ a:unknown { } │ ^^^^^^^ @@ -41,7 +42,7 @@ invalid.css:1:3 lint/nursery/noUnknownPseudoClass ━━━━━━━━━━ ``` invalid.css:2:3 lint/nursery/noUnknownPseudoClass ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown pseudo-class Unknown + × Unexpected unknown pseudo-class Unknown 1 │ a:unknown { } > 2 │ a:Unknown { } @@ -57,7 +58,7 @@ invalid.css:2:3 lint/nursery/noUnknownPseudoClass ━━━━━━━━━━ ``` invalid.css:3:3 lint/nursery/noUnknownPseudoClass ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown pseudo-class uNkNoWn + × Unexpected unknown pseudo-class uNkNoWn 1 │ a:unknown { } 2 │ a:Unknown { } @@ -74,7 +75,7 @@ invalid.css:3:3 lint/nursery/noUnknownPseudoClass ━━━━━━━━━━ ``` invalid.css:4:3 lint/nursery/noUnknownPseudoClass ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown pseudo-class UNKNOWN + × Unexpected unknown pseudo-class UNKNOWN 2 │ a:Unknown { } 3 │ a:uNkNoWn { } @@ -91,7 +92,7 @@ invalid.css:4:3 lint/nursery/noUnknownPseudoClass ━━━━━━━━━━ ``` invalid.css:5:3 lint/nursery/noUnknownPseudoClass ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown pseudo-class pseudo-class + × Unexpected unknown pseudo-class pseudo-class 3 │ a:uNkNoWn { } 4 │ a:UNKNOWN { } @@ -108,7 +109,7 @@ invalid.css:5:3 lint/nursery/noUnknownPseudoClass ━━━━━━━━━━ ``` invalid.css:6:15 lint/nursery/noUnknownPseudoClass ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown pseudo-class noot + × Unexpected unknown pseudo-class noot 4 │ a:UNKNOWN { } 5 │ a:pseudo-class { } @@ -125,7 +126,7 @@ invalid.css:6:15 lint/nursery/noUnknownPseudoClass ━━━━━━━━━ ``` invalid.css:7:3 lint/nursery/noUnknownPseudoClass ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown pseudo-class unknown + × Unexpected unknown pseudo-class unknown 5 │ a:pseudo-class { } 6 │ body:not(div):noot(span) {} @@ -142,7 +143,7 @@ invalid.css:7:3 lint/nursery/noUnknownPseudoClass ━━━━━━━━━━ ``` invalid.css:9:10 lint/nursery/noUnknownPseudoClass ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown pseudo-class error + × Unexpected unknown pseudo-class error 7 │ a:unknown::before { } 8 │ a, @@ -159,7 +160,7 @@ invalid.css:9:10 lint/nursery/noUnknownPseudoClass ━━━━━━━━━ ``` invalid.css:10:39 lint/nursery/noUnknownPseudoClass ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown pseudo-class unknown + × Unexpected unknown pseudo-class unknown 8 │ a, 9 │ b > .foo:error { } @@ -176,7 +177,7 @@ invalid.css:10:39 lint/nursery/noUnknownPseudoClass ━━━━━━━━━ ``` invalid.css:11:2 lint/nursery/noUnknownPseudoClass ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown pseudo-class first + × Unexpected unknown pseudo-class first 9 │ b > .foo:error { } 10 │ ::-webkit-scrollbar-button:horizontal:unknown {} @@ -193,7 +194,7 @@ invalid.css:11:2 lint/nursery/noUnknownPseudoClass ━━━━━━━━━ ``` invalid.css:12:2 lint/nursery/noUnknownPseudoClass ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown pseudo-class slotted + × Unexpected unknown pseudo-class slotted 10 │ ::-webkit-scrollbar-button:horizontal:unknown {} 11 │ :first { } @@ -210,7 +211,7 @@ invalid.css:12:2 lint/nursery/noUnknownPseudoClass ━━━━━━━━━ ``` invalid.css:13:2 lint/nursery/noUnknownPseudoClass ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown pseudo-class placeholder + × Unexpected unknown pseudo-class placeholder 11 │ :first { } 12 │ :slotted {} @@ -227,7 +228,7 @@ invalid.css:13:2 lint/nursery/noUnknownPseudoClass ━━━━━━━━━ ``` invalid.css:14:14 lint/nursery/noUnknownPseudoClass ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown pseudo-class unknown + × Unexpected unknown pseudo-class unknown 12 │ :slotted {} 13 │ :placeholder {} @@ -244,7 +245,7 @@ invalid.css:14:14 lint/nursery/noUnknownPseudoClass ━━━━━━━━━ ``` invalid.css:15:11 lint/nursery/noUnknownPseudoClass ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown pseudo-class unknown + × Unexpected unknown pseudo-class unknown 13 │ :placeholder {} 14 │ @page :blank:unknown { } @@ -260,7 +261,7 @@ invalid.css:15:11 lint/nursery/noUnknownPseudoClass ━━━━━━━━━ ``` invalid.css:16:2 lint/nursery/noUnknownPseudoClass ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown pseudo-class horizontal + × Unexpected unknown pseudo-class horizontal 14 │ @page :blank:unknown { } 15 │ @page foo:unknown { } @@ -275,7 +276,7 @@ invalid.css:16:2 lint/nursery/noUnknownPseudoClass ━━━━━━━━━ ``` invalid.css:16:13 lint/nursery/noUnknownPseudoClass ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown pseudo-class decrement + × Unexpected unknown pseudo-class decrement 14 │ @page :blank:unknown { } 15 │ @page foo:unknown { } diff --git a/crates/biome_css_analyze/tests/specs/nursery/noUnknownPseudoElement/invalid.css.snap b/crates/biome_css_analyze/tests/specs/nursery/noUnknownPseudoElement/invalid.css.snap index 5cb24cf12b84..7033e082b9b5 100644 --- a/crates/biome_css_analyze/tests/specs/nursery/noUnknownPseudoElement/invalid.css.snap +++ b/crates/biome_css_analyze/tests/specs/nursery/noUnknownPseudoElement/invalid.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalid.css +snapshot_kind: text --- # Input ```css @@ -19,7 +20,7 @@ b > .foo::error { } ``` invalid.css:1:4 lint/nursery/noUnknownPseudoElement ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown pseudo-elements: pseudo + × Unexpected unknown pseudo-elements: pseudo > 1 │ a::pseudo { } │ ^^^^^^ @@ -41,7 +42,7 @@ invalid.css:1:4 lint/nursery/noUnknownPseudoElement ━━━━━━━━━ ``` invalid.css:2:4 lint/nursery/noUnknownPseudoElement ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown pseudo-elements: Pseudo + × Unexpected unknown pseudo-elements: Pseudo 1 │ a::pseudo { } > 2 │ a::Pseudo { } @@ -64,7 +65,7 @@ invalid.css:2:4 lint/nursery/noUnknownPseudoElement ━━━━━━━━━ ``` invalid.css:3:4 lint/nursery/noUnknownPseudoElement ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown pseudo-elements: pSeUdO + × Unexpected unknown pseudo-elements: pSeUdO 1 │ a::pseudo { } 2 │ a::Pseudo { } @@ -88,7 +89,7 @@ invalid.css:3:4 lint/nursery/noUnknownPseudoElement ━━━━━━━━━ ``` invalid.css:4:4 lint/nursery/noUnknownPseudoElement ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown pseudo-elements: PSEUDO + × Unexpected unknown pseudo-elements: PSEUDO 2 │ a::Pseudo { } 3 │ a::pSeUdO { } @@ -112,7 +113,7 @@ invalid.css:4:4 lint/nursery/noUnknownPseudoElement ━━━━━━━━━ ``` invalid.css:5:4 lint/nursery/noUnknownPseudoElement ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown pseudo-elements: element + × Unexpected unknown pseudo-elements: element 3 │ a::pSeUdO { } 4 │ a::PSEUDO { } @@ -136,7 +137,7 @@ invalid.css:5:4 lint/nursery/noUnknownPseudoElement ━━━━━━━━━ ``` invalid.css:6:10 lint/nursery/noUnknownPseudoElement ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown pseudo-elements: element + × Unexpected unknown pseudo-elements: element 4 │ a::PSEUDO { } 5 │ a::element { } @@ -160,7 +161,7 @@ invalid.css:6:10 lint/nursery/noUnknownPseudoElement ━━━━━━━━━ ``` invalid.css:8:11 lint/nursery/noUnknownPseudoElement ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected unknown pseudo-elements: error + × Unexpected unknown pseudo-elements: error 6 │ a:hover::element { } 7 │ a, diff --git a/crates/biome_css_analyze/tests/specs/nursery/noUnknownTypeSelector/invalid.css.snap b/crates/biome_css_analyze/tests/specs/nursery/noUnknownTypeSelector/invalid.css.snap index ec89dee08aef..1f5609b95052 100644 --- a/crates/biome_css_analyze/tests/specs/nursery/noUnknownTypeSelector/invalid.css.snap +++ b/crates/biome_css_analyze/tests/specs/nursery/noUnknownTypeSelector/invalid.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalid.css +snapshot_kind: text --- # Input ```css @@ -36,7 +37,7 @@ x-Foo { ``` invalid.css:1:1 lint/nursery/noUnknownTypeSelector ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unknown type selector is not allowed. + × Unknown type selector is not allowed. > 1 │ unknown { │ ^^^^^^^ @@ -53,7 +54,7 @@ invalid.css:1:1 lint/nursery/noUnknownTypeSelector ━━━━━━━━━ ``` invalid.css:4:4 lint/nursery/noUnknownTypeSelector ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unknown type selector is not allowed. + × Unknown type selector is not allowed. 2 │ } 3 │ @@ -72,7 +73,7 @@ invalid.css:4:4 lint/nursery/noUnknownTypeSelector ━━━━━━━━━ ``` invalid.css:7:1 lint/nursery/noUnknownTypeSelector ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unknown type selector is not allowed. + × Unknown type selector is not allowed. 5 │ } 6 │ @@ -91,7 +92,7 @@ invalid.css:7:1 lint/nursery/noUnknownTypeSelector ━━━━━━━━━ ``` invalid.css:10:6 lint/nursery/noUnknownTypeSelector ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unknown type selector is not allowed. + × Unknown type selector is not allowed. 8 │ } 9 │ @@ -110,7 +111,7 @@ invalid.css:10:6 lint/nursery/noUnknownTypeSelector ━━━━━━━━━ ``` invalid.css:13:1 lint/nursery/noUnknownTypeSelector ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unknown type selector is not allowed. + × Unknown type selector is not allowed. 11 │ } 12 │ @@ -129,7 +130,7 @@ invalid.css:13:1 lint/nursery/noUnknownTypeSelector ━━━━━━━━━ ``` invalid.css:17:1 lint/nursery/noUnknownTypeSelector ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unknown type selector is not allowed. + × Unknown type selector is not allowed. 16 │ table, > 17 │ unknown { @@ -147,7 +148,7 @@ invalid.css:17:1 lint/nursery/noUnknownTypeSelector ━━━━━━━━━ ``` invalid.css:20:1 lint/nursery/noUnknownTypeSelector ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unknown type selector is not allowed. + × Unknown type selector is not allowed. 18 │ } 19 │ @@ -166,7 +167,7 @@ invalid.css:20:1 lint/nursery/noUnknownTypeSelector ━━━━━━━━━ ``` invalid.css:24:1 lint/nursery/noUnknownTypeSelector ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unknown type selector is not allowed. + × Unknown type selector is not allowed. 22 │ } 23 │ diff --git a/crates/biome_css_analyze/tests/specs/nursery/noValueAtRule/invalid.module.css.snap b/crates/biome_css_analyze/tests/specs/nursery/noValueAtRule/invalid.module.css.snap index 998bf787f5fa..594ec18e88a8 100644 --- a/crates/biome_css_analyze/tests/specs/nursery/noValueAtRule/invalid.module.css.snap +++ b/crates/biome_css_analyze/tests/specs/nursery/noValueAtRule/invalid.module.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalid.module.css +snapshot_kind: text --- # Input ```css @@ -28,7 +29,7 @@ expression: invalid.module.css ``` invalid.module.css:2:1 lint/nursery/noValueAtRule ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Use of @value rule is disallowed + i Use of @value rule is disallowed 1 │ /* css variables */ > 2 │ @value primary: #BF4040; @@ -46,7 +47,7 @@ invalid.module.css:2:1 lint/nursery/noValueAtRule ━━━━━━━━━━ ``` invalid.module.css:3:1 lint/nursery/noValueAtRule ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Use of @value rule is disallowed + i Use of @value rule is disallowed 1 │ /* css variables */ 2 │ @value primary: #BF4040; @@ -65,7 +66,7 @@ invalid.module.css:3:1 lint/nursery/noValueAtRule ━━━━━━━━━━ ``` invalid.module.css:6:1 lint/nursery/noValueAtRule ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Use of @value rule is disallowed + i Use of @value rule is disallowed 5 │ /* breakpoints */ > 6 │ @value small: (max-width: 599px); @@ -83,7 +84,7 @@ invalid.module.css:6:1 lint/nursery/noValueAtRule ━━━━━━━━━━ ``` invalid.module.css:7:1 lint/nursery/noValueAtRule ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Use of @value rule is disallowed + i Use of @value rule is disallowed 5 │ /* breakpoints */ 6 │ @value small: (max-width: 599px); @@ -102,7 +103,7 @@ invalid.module.css:7:1 lint/nursery/noValueAtRule ━━━━━━━━━━ ``` invalid.module.css:8:1 lint/nursery/noValueAtRule ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Use of @value rule is disallowed + i Use of @value rule is disallowed 6 │ @value small: (max-width: 599px); 7 │ @value medium: (min-width: 600px) and (max-width: 959px); @@ -121,7 +122,7 @@ invalid.module.css:8:1 lint/nursery/noValueAtRule ━━━━━━━━━━ ``` invalid.module.css:11:1 lint/nursery/noValueAtRule ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Use of @value rule is disallowed + i Use of @value rule is disallowed 10 │ /* alias paths for other values or composition */ > 11 │ @value colors: "./colors.css"; @@ -139,7 +140,7 @@ invalid.module.css:11:1 lint/nursery/noValueAtRule ━━━━━━━━━ ``` invalid.module.css:13:1 lint/nursery/noValueAtRule ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Use of @value rule is disallowed + i Use of @value rule is disallowed 11 │ @value colors: "./colors.css"; 12 │ /* import multiple from a single file */ @@ -158,7 +159,7 @@ invalid.module.css:13:1 lint/nursery/noValueAtRule ━━━━━━━━━ ``` invalid.module.css:15:1 lint/nursery/noValueAtRule ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Use of @value rule is disallowed + i Use of @value rule is disallowed 13 │ @value primary, secondary from colors; 14 │ /* make local aliases to imported values */ @@ -177,7 +178,7 @@ invalid.module.css:15:1 lint/nursery/noValueAtRule ━━━━━━━━━ ``` invalid.module.css:17:1 lint/nursery/noValueAtRule ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Use of @value rule is disallowed + i Use of @value rule is disallowed 15 │ @value small as bp-small, large as bp-large from "./breakpoints.css"; 16 │ /* value as selector name */ diff --git a/crates/biome_css_analyze/tests/specs/suspicious/noDuplicateAtImportRules/invalid.css.snap b/crates/biome_css_analyze/tests/specs/suspicious/noDuplicateAtImportRules/invalid.css.snap index 8adb62b1a8fe..0d2b3098348e 100644 --- a/crates/biome_css_analyze/tests/specs/suspicious/noDuplicateAtImportRules/invalid.css.snap +++ b/crates/biome_css_analyze/tests/specs/suspicious/noDuplicateAtImportRules/invalid.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalid.css +snapshot_kind: text --- # Input ```css @@ -14,7 +15,7 @@ expression: invalid.css ``` invalid.css:3:2 lint/suspicious/noDuplicateAtImportRules ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Each @import should be unique unless differing by media queries. + × Each @import should be unique unless differing by media queries. 1 │ @import "a.css"; 2 │ @import "b.css"; diff --git a/crates/biome_css_analyze/tests/specs/suspicious/noDuplicateAtImportRules/invalidMedia.css.snap b/crates/biome_css_analyze/tests/specs/suspicious/noDuplicateAtImportRules/invalidMedia.css.snap index 6d867ef7eea6..65073b674b9c 100644 --- a/crates/biome_css_analyze/tests/specs/suspicious/noDuplicateAtImportRules/invalidMedia.css.snap +++ b/crates/biome_css_analyze/tests/specs/suspicious/noDuplicateAtImportRules/invalidMedia.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalidMedia.css +snapshot_kind: text --- # Input ```css @@ -14,7 +15,7 @@ expression: invalidMedia.css ``` invalidMedia.css:3:2 lint/suspicious/noDuplicateAtImportRules ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Each @import should be unique unless differing by media queries. + × Each @import should be unique unless differing by media queries. 1 │ @import url("a.css") tv; 2 │ @import url("a.css") projection; diff --git a/crates/biome_css_analyze/tests/specs/suspicious/noDuplicateAtImportRules/invalidMultipleMedia.css.snap b/crates/biome_css_analyze/tests/specs/suspicious/noDuplicateAtImportRules/invalidMultipleMedia.css.snap index d7cdb9f0eb6e..fb42420e256d 100644 --- a/crates/biome_css_analyze/tests/specs/suspicious/noDuplicateAtImportRules/invalidMultipleMedia.css.snap +++ b/crates/biome_css_analyze/tests/specs/suspicious/noDuplicateAtImportRules/invalidMultipleMedia.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalidMultipleMedia.css +snapshot_kind: text --- # Input ```css @@ -14,7 +15,7 @@ expression: invalidMultipleMedia.css ``` invalidMultipleMedia.css:3:2 lint/suspicious/noDuplicateAtImportRules ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Each @import should be unique unless differing by media queries. + × Each @import should be unique unless differing by media queries. 1 │ @import url("a.css") tv, projection; 2 │ @import url("a.css") mobile; diff --git a/crates/biome_css_analyze/tests/specs/suspicious/noDuplicateAtImportRules/invalidQuotes.css.snap b/crates/biome_css_analyze/tests/specs/suspicious/noDuplicateAtImportRules/invalidQuotes.css.snap index d1fe1076e8cc..ea7235b8f9e6 100644 --- a/crates/biome_css_analyze/tests/specs/suspicious/noDuplicateAtImportRules/invalidQuotes.css.snap +++ b/crates/biome_css_analyze/tests/specs/suspicious/noDuplicateAtImportRules/invalidQuotes.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalidQuotes.css +snapshot_kind: text --- # Input ```css @@ -13,7 +14,7 @@ expression: invalidQuotes.css ``` invalidQuotes.css:2:2 lint/suspicious/noDuplicateAtImportRules ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Each @import should be unique unless differing by media queries. + × Each @import should be unique unless differing by media queries. 1 │ @import "a.css"; > 2 │ @import 'a.css'; diff --git a/crates/biome_css_analyze/tests/specs/suspicious/noDuplicateAtImportRules/invalidUrls.css.snap b/crates/biome_css_analyze/tests/specs/suspicious/noDuplicateAtImportRules/invalidUrls.css.snap index bd2c89e63277..33c0b41e9432 100644 --- a/crates/biome_css_analyze/tests/specs/suspicious/noDuplicateAtImportRules/invalidUrls.css.snap +++ b/crates/biome_css_analyze/tests/specs/suspicious/noDuplicateAtImportRules/invalidUrls.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalidUrls.css +snapshot_kind: text --- # Input ```css @@ -13,7 +14,7 @@ expression: invalidUrls.css ``` invalidUrls.css:2:2 lint/suspicious/noDuplicateAtImportRules ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Each @import should be unique unless differing by media queries. + × Each @import should be unique unless differing by media queries. 1 │ @import url("c.css"); > 2 │ @import url("c.css"); diff --git a/crates/biome_css_analyze/tests/specs/suspicious/noDuplicateFontNames/invalid.css.snap b/crates/biome_css_analyze/tests/specs/suspicious/noDuplicateFontNames/invalid.css.snap index cbf365515186..d615a343b2fc 100644 --- a/crates/biome_css_analyze/tests/specs/suspicious/noDuplicateFontNames/invalid.css.snap +++ b/crates/biome_css_analyze/tests/specs/suspicious/noDuplicateFontNames/invalid.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalid.css +snapshot_kind: text --- # Input ```css @@ -16,7 +17,7 @@ b { font: normal 14px/32px -apple-system, BlinkMacSystemFont, sans-serif, sans-s ``` invalid.css:1:56 lint/suspicious/noDuplicateFontNames ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate font names are redundant and unnecessary: sans-serif + × Duplicate font names are redundant and unnecessary: sans-serif > 1 │ a { font-family: "Lucida Grande", 'Arial', sans-serif, sans-serif; } │ ^^^^^^^^^^ @@ -31,7 +32,7 @@ invalid.css:1:56 lint/suspicious/noDuplicateFontNames ━━━━━━━━ ``` invalid.css:2:44 lint/suspicious/noDuplicateFontNames ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate font names are redundant and unnecessary: Arial + × Duplicate font names are redundant and unnecessary: Arial 1 │ a { font-family: "Lucida Grande", 'Arial', sans-serif, sans-serif; } > 2 │ a { font-family: 'Arial', "Lucida Grande", Arial, sans-serif; } @@ -47,7 +48,7 @@ invalid.css:2:44 lint/suspicious/noDuplicateFontNames ━━━━━━━━ ``` invalid.css:3:35 lint/suspicious/noDuplicateFontNames ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate font names are redundant and unnecessary: LucidaGrande + × Duplicate font names are redundant and unnecessary: LucidaGrande 1 │ a { font-family: "Lucida Grande", 'Arial', sans-serif, sans-serif; } 2 │ a { font-family: 'Arial', "Lucida Grande", Arial, sans-serif; } @@ -64,7 +65,7 @@ invalid.css:3:35 lint/suspicious/noDuplicateFontNames ━━━━━━━━ ``` invalid.css:4:27 lint/suspicious/noDuplicateFontNames ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate font names are redundant and unnecessary: Times + × Duplicate font names are redundant and unnecessary: Times 2 │ a { font-family: 'Arial', "Lucida Grande", Arial, sans-serif; } 3 │ a { fOnT-fAmIlY: "Lucida Grande", ' Lucida Grande ', sans-serif; } @@ -81,7 +82,7 @@ invalid.css:4:27 lint/suspicious/noDuplicateFontNames ━━━━━━━━ ``` invalid.css:5:39 lint/suspicious/noDuplicateFontNames ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate font names are redundant and unnecessary: Arial + × Duplicate font names are redundant and unnecessary: Arial 3 │ a { fOnT-fAmIlY: "Lucida Grande", ' Lucida Grande ', sans-serif; } 4 │ a { font-family: 'Times', Times } @@ -97,7 +98,7 @@ invalid.css:5:39 lint/suspicious/noDuplicateFontNames ━━━━━━━━ ``` invalid.css:6:75 lint/suspicious/noDuplicateFontNames ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate font names are redundant and unnecessary: sans-serif + × Duplicate font names are redundant and unnecessary: sans-serif 4 │ a { font-family: 'Times', Times } 5 │ a { FONT: italic 300 16px/30px Arial, " Arial", serif; } diff --git a/crates/biome_css_analyze/tests/specs/suspicious/noDuplicateSelectorsKeyframeBlock/invalid.css.snap b/crates/biome_css_analyze/tests/specs/suspicious/noDuplicateSelectorsKeyframeBlock/invalid.css.snap index d9b2f9c98070..be41e98a80c7 100644 --- a/crates/biome_css_analyze/tests/specs/suspicious/noDuplicateSelectorsKeyframeBlock/invalid.css.snap +++ b/crates/biome_css_analyze/tests/specs/suspicious/noDuplicateSelectorsKeyframeBlock/invalid.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalid.css +snapshot_kind: text --- # Input ```css @@ -23,7 +24,7 @@ expression: invalid.css ``` invalid.css:1:26 lint/suspicious/noDuplicateSelectorsKeyframeBlock ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! The duplicate keyframe selector is overwritten by later one. + × The duplicate keyframe selector is overwritten by later one. > 1 │ @keyframes foo { from {} from {}} │ ^^^^ @@ -38,7 +39,7 @@ invalid.css:1:26 lint/suspicious/noDuplicateSelectorsKeyframeBlock ━━━━ ``` invalid.css:3:26 lint/suspicious/noDuplicateSelectorsKeyframeBlock ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! The duplicate keyframe selector is overwritten by later one. + × The duplicate keyframe selector is overwritten by later one. 1 │ @keyframes foo { from {} from {}} 2 │ @@ -55,7 +56,7 @@ invalid.css:3:26 lint/suspicious/noDuplicateSelectorsKeyframeBlock ━━━━ ``` invalid.css:5:24 lint/suspicious/noDuplicateSelectorsKeyframeBlock ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! The duplicate keyframe selector is overwritten by later one. + × The duplicate keyframe selector is overwritten by later one. 3 │ @keyframes foo { from {} FROM {}} 4 │ @@ -72,7 +73,7 @@ invalid.css:5:24 lint/suspicious/noDuplicateSelectorsKeyframeBlock ━━━━ ``` invalid.css:7:32 lint/suspicious/noDuplicateSelectorsKeyframeBlock ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! The duplicate keyframe selector is overwritten by later one. + × The duplicate keyframe selector is overwritten by later one. 5 │ @keyframes foo { 0% {} 0% {}} 6 │ @@ -89,7 +90,7 @@ invalid.css:7:32 lint/suspicious/noDuplicateSelectorsKeyframeBlock ━━━━ ``` invalid.css:9:24 lint/suspicious/noDuplicateSelectorsKeyframeBlock ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! The duplicate keyframe selector is overwritten by later one. + × The duplicate keyframe selector is overwritten by later one. 7 │ @keyframes foo { from {} to {} to {} } 8 │ @@ -106,7 +107,7 @@ invalid.css:9:24 lint/suspicious/noDuplicateSelectorsKeyframeBlock ━━━━ ``` invalid.css:11:32 lint/suspicious/noDuplicateSelectorsKeyframeBlock ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! The duplicate keyframe selector is overwritten by later one. + × The duplicate keyframe selector is overwritten by later one. 9 │ @keyframes foo { 0% {} 0% {} 100% {} } 10 │ @@ -123,7 +124,7 @@ invalid.css:11:32 lint/suspicious/noDuplicateSelectorsKeyframeBlock ━━━━ ``` invalid.css:13:29 lint/suspicious/noDuplicateSelectorsKeyframeBlock ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! The duplicate keyframe selector is overwritten by later one. + × The duplicate keyframe selector is overwritten by later one. 11 │ @-webkit-keyframes foo { 0% {} 0% {} 100% {} } 12 │ diff --git a/crates/biome_css_analyze/tests/specs/suspicious/noEmptyBlock/invalid.css.snap b/crates/biome_css_analyze/tests/specs/suspicious/noEmptyBlock/invalid.css.snap index 35fb8ed6f1a1..c564288a9d2b 100644 --- a/crates/biome_css_analyze/tests/specs/suspicious/noEmptyBlock/invalid.css.snap +++ b/crates/biome_css_analyze/tests/specs/suspicious/noEmptyBlock/invalid.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalid.css +snapshot_kind: text --- # Input ```css @@ -65,7 +66,7 @@ a { ``` invalid.css:2:3 lint/suspicious/noEmptyBlock ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 1 │ /* CssDeclarationOrRuleBlock */ > 2 │ a {} @@ -81,7 +82,7 @@ invalid.css:2:3 lint/suspicious/noEmptyBlock ━━━━━━━━━━━ ``` invalid.css:3:3 lint/suspicious/noEmptyBlock ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 1 │ /* CssDeclarationOrRuleBlock */ 2 │ a {} @@ -98,7 +99,7 @@ invalid.css:3:3 lint/suspicious/noEmptyBlock ━━━━━━━━━━━ ``` invalid.css:4:3 lint/suspicious/noEmptyBlock ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 2 │ a {} 3 │ a { } @@ -118,7 +119,7 @@ invalid.css:4:3 lint/suspicious/noEmptyBlock ━━━━━━━━━━━ ``` invalid.css:8:4 lint/suspicious/noEmptyBlock ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 6 │ } 7 │ @@ -135,7 +136,7 @@ invalid.css:8:4 lint/suspicious/noEmptyBlock ━━━━━━━━━━━ ``` invalid.css:9:4 lint/suspicious/noEmptyBlock ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 8 │ .b {} > 9 │ .b { } @@ -151,7 +152,7 @@ invalid.css:9:4 lint/suspicious/noEmptyBlock ━━━━━━━━━━━ ``` invalid.css:10:4 lint/suspicious/noEmptyBlock ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 8 │ .b {} 9 │ .b { } @@ -171,7 +172,7 @@ invalid.css:10:4 lint/suspicious/noEmptyBlock ━━━━━━━━━━━ ``` invalid.css:15:14 lint/suspicious/noEmptyBlock ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 14 │ /* CssRuleBlock */ > 15 │ @media print {} @@ -187,7 +188,7 @@ invalid.css:15:14 lint/suspicious/noEmptyBlock ━━━━━━━━━━━ ``` invalid.css:16:14 lint/suspicious/noEmptyBlock ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 14 │ /* CssRuleBlock */ 15 │ @media print {} @@ -207,7 +208,7 @@ invalid.css:16:14 lint/suspicious/noEmptyBlock ━━━━━━━━━━━ ``` invalid.css:19:18 lint/suspicious/noEmptyBlock ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 18 │ } > 19 │ @media print { a {} } @@ -223,7 +224,7 @@ invalid.css:19:18 lint/suspicious/noEmptyBlock ━━━━━━━━━━━ ``` invalid.css:22:30 lint/suspicious/noEmptyBlock ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 21 │ /* CssDeclarationBlock */ > 22 │ @font-palette-values --ident {} @@ -239,7 +240,7 @@ invalid.css:22:30 lint/suspicious/noEmptyBlock ━━━━━━━━━━━ ``` invalid.css:23:12 lint/suspicious/noEmptyBlock ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 21 │ /* CssDeclarationBlock */ 22 │ @font-palette-values --ident {} @@ -256,7 +257,7 @@ invalid.css:23:12 lint/suspicious/noEmptyBlock ━━━━━━━━━━━ ``` invalid.css:26:20 lint/suspicious/noEmptyBlock ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 25 │ /* CssKeyframesBlock */ > 26 │ @keyframes slidein {} @@ -272,7 +273,7 @@ invalid.css:26:20 lint/suspicious/noEmptyBlock ━━━━━━━━━━━ ``` invalid.css:28:10 lint/suspicious/noEmptyBlock ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 26 │ @keyframes slidein {} 27 │ @keyframes slidein { @@ -291,7 +292,7 @@ invalid.css:28:10 lint/suspicious/noEmptyBlock ━━━━━━━━━━━ ``` invalid.css:38:13 lint/suspicious/noEmptyBlock ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 36 │ /* CssFontFeatureValuesBlock */ 37 │ @font-feature-values Font One { @@ -311,7 +312,7 @@ invalid.css:38:13 lint/suspicious/noEmptyBlock ━━━━━━━━━━━ ``` invalid.css:44:7 lint/suspicious/noEmptyBlock ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 43 │ /* CssPageAtRuleBlock */ > 44 │ @page {} @@ -327,7 +328,7 @@ invalid.css:44:7 lint/suspicious/noEmptyBlock ━━━━━━━━━━━ ``` invalid.css:45:14 lint/suspicious/noEmptyBlock ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 43 │ /* CssPageAtRuleBlock */ 44 │ @page {} @@ -345,7 +346,7 @@ invalid.css:45:14 lint/suspicious/noEmptyBlock ━━━━━━━━━━━ ``` invalid.css:50:28 lint/suspicious/noEmptyBlock ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 49 │ /* CssDeclarationOrAtRuleBlock */ > 50 │ @page :left { @left-middle {} background: red; } @@ -361,7 +362,7 @@ invalid.css:50:28 lint/suspicious/noEmptyBlock ━━━━━━━━━━━ ``` invalid.css:52:16 lint/suspicious/noEmptyBlock ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 50 │ @page :left { @left-middle {} background: red; } 51 │ @page { diff --git a/crates/biome_css_analyze/tests/specs/suspicious/noImportantInKeyframe/invalid.css.snap b/crates/biome_css_analyze/tests/specs/suspicious/noImportantInKeyframe/invalid.css.snap index cac42f18d8d3..bd6dd32ae992 100644 --- a/crates/biome_css_analyze/tests/specs/suspicious/noImportantInKeyframe/invalid.css.snap +++ b/crates/biome_css_analyze/tests/specs/suspicious/noImportantInKeyframe/invalid.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalid.css +snapshot_kind: text --- # Input ```css @@ -18,7 +19,7 @@ expression: invalid.css ``` invalid.css:6:16 lint/suspicious/noImportantInKeyframe ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Using !important within keyframes declaration is completely ignored in some browsers. + × Using !important within keyframes declaration is completely ignored in some browsers. 4 │ } 5 │ to { diff --git a/crates/biome_css_analyze/tests/specs/suspicious/noShorthandPropertyOverrides/invalid.css.snap b/crates/biome_css_analyze/tests/specs/suspicious/noShorthandPropertyOverrides/invalid.css.snap index 8d5b19e31ab4..ec3c8d2f87f8 100644 --- a/crates/biome_css_analyze/tests/specs/suspicious/noShorthandPropertyOverrides/invalid.css.snap +++ b/crates/biome_css_analyze/tests/specs/suspicious/noShorthandPropertyOverrides/invalid.css.snap @@ -1,6 +1,7 @@ --- source: crates/biome_css_analyze/tests/spec_tests.rs expression: invalid.css +snapshot_kind: text --- # Input ```css @@ -48,7 +49,7 @@ a { padding-left: 10px; padding-right: 10px; padding: 20px; } ``` invalid.css:1:25 lint/suspicious/noShorthandPropertyOverrides ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected shorthand property padding after padding-left + × Unexpected shorthand property padding after padding-left > 1 │ a { padding-left: 10px; padding: 20px; } │ ^^^^^^^ @@ -61,7 +62,7 @@ invalid.css:1:25 lint/suspicious/noShorthandPropertyOverrides ━━━━━━ ``` invalid.css:3:25 lint/suspicious/noShorthandPropertyOverrides ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected shorthand property border after border-width + × Unexpected shorthand property border after border-width 1 │ a { padding-left: 10px; padding: 20px; } 2 │ @@ -76,7 +77,7 @@ invalid.css:3:25 lint/suspicious/noShorthandPropertyOverrides ━━━━━━ ``` invalid.css:5:24 lint/suspicious/noShorthandPropertyOverrides ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected shorthand property border after border-color + × Unexpected shorthand property border after border-color 3 │ a { border-width: 20px; border: 1px solid black; } 4 │ @@ -91,7 +92,7 @@ invalid.css:5:24 lint/suspicious/noShorthandPropertyOverrides ━━━━━━ ``` invalid.css:7:27 lint/suspicious/noShorthandPropertyOverrides ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected shorthand property border after border-style + × Unexpected shorthand property border after border-style 5 │ a { border-color: red; border: 1px solid black; } 6 │ @@ -106,7 +107,7 @@ invalid.css:7:27 lint/suspicious/noShorthandPropertyOverrides ━━━━━━ ``` invalid.css:9:35 lint/suspicious/noShorthandPropertyOverrides ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected shorthand property border after border-image + × Unexpected shorthand property border after border-image 7 │ a { border-style: dotted; border: 1px solid black; } 8 │ @@ -121,7 +122,7 @@ invalid.css:9:35 lint/suspicious/noShorthandPropertyOverrides ━━━━━━ ``` invalid.css:11:42 lint/suspicious/noShorthandPropertyOverrides ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected shorthand property border after border-image-source + × Unexpected shorthand property border after border-image-source 9 │ a { border-image: url("foo.png"); border: 1px solid black; } 10 │ @@ -136,7 +137,7 @@ invalid.css:11:42 lint/suspicious/noShorthandPropertyOverrides ━━━━━ ``` invalid.css:13:25 lint/suspicious/noShorthandPropertyOverrides ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected shorthand property pAdDiNg after pAdDiNg-lEfT + × Unexpected shorthand property pAdDiNg after pAdDiNg-lEfT 11 │ a { border-image-source: url("foo.png"); border: 1px solid black; } 12 │ @@ -151,7 +152,7 @@ invalid.css:13:25 lint/suspicious/noShorthandPropertyOverrides ━━━━━ ``` invalid.css:15:25 lint/suspicious/noShorthandPropertyOverrides ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected shorthand property PADDING after PADDING-LEFT + × Unexpected shorthand property PADDING after PADDING-LEFT 13 │ a { pAdDiNg-lEfT: 10Px; pAdDiNg: 20Px; } 14 │ @@ -166,7 +167,7 @@ invalid.css:15:25 lint/suspicious/noShorthandPropertyOverrides ━━━━━ ``` invalid.css:17:49 lint/suspicious/noShorthandPropertyOverrides ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected shorthand property border after border-top-width + × Unexpected shorthand property border after border-top-width 15 │ a { PADDING-LEFT: 10PX; PADDING: 20PX; } 16 │ @@ -181,7 +182,7 @@ invalid.css:17:49 lint/suspicious/noShorthandPropertyOverrides ━━━━━ ``` invalid.css:19:35 lint/suspicious/noShorthandPropertyOverrides ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected shorthand property transition after transition-property + × Unexpected shorthand property transition after transition-property 17 │ a { border-top-width: 1px; top: 0; bottom: 3px; border: 2px solid blue; } 18 │ @@ -196,7 +197,7 @@ invalid.css:19:35 lint/suspicious/noShorthandPropertyOverrides ━━━━━ ``` invalid.css:21:35 lint/suspicious/noShorthandPropertyOverrides ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected shorthand property background after background-repeat + × Unexpected shorthand property background after background-repeat 19 │ a { transition-property: opacity; transition: opacity 1s linear; } 20 │ @@ -211,7 +212,7 @@ invalid.css:21:35 lint/suspicious/noShorthandPropertyOverrides ━━━━━ ``` invalid.css:23:52 lint/suspicious/noShorthandPropertyOverrides ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected shorthand property background after background-repeat + × Unexpected shorthand property background after background-repeat 21 │ a { background-repeat: no-repeat; background: url(lion.png); } 22 │ @@ -226,7 +227,7 @@ invalid.css:23:52 lint/suspicious/noShorthandPropertyOverrides ━━━━━ ``` invalid.css:25:43 lint/suspicious/noShorthandPropertyOverrides ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected shorthand property -webkit-transition after -webkit-transition-property + × Unexpected shorthand property -webkit-transition after -webkit-transition-property 23 │ @media (color) { a { background-repeat: no-repeat; background: url(lion.png); }} 24 │ @@ -241,7 +242,7 @@ invalid.css:25:43 lint/suspicious/noShorthandPropertyOverrides ━━━━━ ``` invalid.css:27:43 lint/suspicious/noShorthandPropertyOverrides ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected shorthand property -webKIT-transition after -WEBKIT-transition-property + × Unexpected shorthand property -webKIT-transition after -WEBKIT-transition-property 25 │ a { -webkit-transition-property: opacity; -webkit-transition: opacity 1s linear; } 26 │ @@ -256,7 +257,7 @@ invalid.css:27:43 lint/suspicious/noShorthandPropertyOverrides ━━━━━ ``` invalid.css:29:31 lint/suspicious/noShorthandPropertyOverrides ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected shorthand property font after font-variant + × Unexpected shorthand property font after font-variant 27 │ a { -WEBKIT-transition-property: opacity; -webKIT-transition: opacity 1s linear; } 28 │ @@ -271,7 +272,7 @@ invalid.css:29:31 lint/suspicious/noShorthandPropertyOverrides ━━━━━ ``` invalid.css:31:35 lint/suspicious/noShorthandPropertyOverrides ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected shorthand property font after font-variant + × Unexpected shorthand property font after font-variant 29 │ a { font-variant: small-caps; font: sans-serif; } 30 │ @@ -286,7 +287,7 @@ invalid.css:31:35 lint/suspicious/noShorthandPropertyOverrides ━━━━━ ``` invalid.css:33:30 lint/suspicious/noShorthandPropertyOverrides ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected shorthand property font after font-size-adjust + × Unexpected shorthand property font after font-size-adjust 31 │ a { font-variant: all-small-caps; font: sans-serif; } 32 │ @@ -301,7 +302,7 @@ invalid.css:33:30 lint/suspicious/noShorthandPropertyOverrides ━━━━━ ``` invalid.css:35:25 lint/suspicious/noShorthandPropertyOverrides ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected shorthand property padding after padding-left + × Unexpected shorthand property padding after padding-left 33 │ a { font-size-adjust: 0.545; font: Verdana; } 34 │ @@ -316,7 +317,7 @@ invalid.css:35:25 lint/suspicious/noShorthandPropertyOverrides ━━━━━ ``` invalid.css:35:60 lint/suspicious/noShorthandPropertyOverrides ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected shorthand property border after border-width + × Unexpected shorthand property border after border-width 33 │ a { font-size-adjust: 0.545; font: Verdana; } 34 │ @@ -331,7 +332,7 @@ invalid.css:35:60 lint/suspicious/noShorthandPropertyOverrides ━━━━━ ``` invalid.css:37:46 lint/suspicious/noShorthandPropertyOverrides ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected shorthand property padding after padding-left + × Unexpected shorthand property padding after padding-left 35 │ a { padding-left: 10px; padding: 20px; border-width: 20px; border: 1px solid black; } 36 │ @@ -345,7 +346,7 @@ invalid.css:37:46 lint/suspicious/noShorthandPropertyOverrides ━━━━━ ``` invalid.css:37:46 lint/suspicious/noShorthandPropertyOverrides ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Unexpected shorthand property padding after padding-right + × Unexpected shorthand property padding after padding-right 35 │ a { padding-left: 10px; padding: 20px; border-width: 20px; border: 1px solid black; } 36 │ diff --git a/crates/biome_css_analyze/tests/suppression/suspicious/noDuplicateFontNames/noDuplicateFontNames.css.snap b/crates/biome_css_analyze/tests/suppression/suspicious/noDuplicateFontNames/noDuplicateFontNames.css.snap index fe30e2c72572..263565d65f1f 100644 --- a/crates/biome_css_analyze/tests/suppression/suspicious/noDuplicateFontNames/noDuplicateFontNames.css.snap +++ b/crates/biome_css_analyze/tests/suppression/suspicious/noDuplicateFontNames/noDuplicateFontNames.css.snap @@ -17,7 +17,7 @@ b { font: normal 14px/32px -apple-system, BlinkMacSystemFont, sans-serif, sans-s ``` noDuplicateFontNames.css:1:56 lint/suspicious/noDuplicateFontNames FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate font names are redundant and unnecessary: sans-serif + × Duplicate font names are redundant and unnecessary: sans-serif > 1 │ a { font-family: "Lucida Grande", 'Arial', sans-serif, sans-serif; } │ ^^^^^^^^^^ @@ -47,7 +47,7 @@ noDuplicateFontNames.css:1:56 lint/suspicious/noDuplicateFontNames FIXABLE ━ ``` noDuplicateFontNames.css:2:44 lint/suspicious/noDuplicateFontNames FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate font names are redundant and unnecessary: Arial + × Duplicate font names are redundant and unnecessary: Arial 1 │ a { font-family: "Lucida Grande", 'Arial', sans-serif, sans-serif; } > 2 │ a { font-family: 'Arial', "Lucida Grande", Arial, sans-serif; } @@ -79,7 +79,7 @@ noDuplicateFontNames.css:2:44 lint/suspicious/noDuplicateFontNames FIXABLE ━ ``` noDuplicateFontNames.css:3:35 lint/suspicious/noDuplicateFontNames FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate font names are redundant and unnecessary: LucidaGrande + × Duplicate font names are redundant and unnecessary: LucidaGrande 1 │ a { font-family: "Lucida Grande", 'Arial', sans-serif, sans-serif; } 2 │ a { font-family: 'Arial', "Lucida Grande", Arial, sans-serif; } @@ -113,7 +113,7 @@ noDuplicateFontNames.css:3:35 lint/suspicious/noDuplicateFontNames FIXABLE ━ ``` noDuplicateFontNames.css:4:27 lint/suspicious/noDuplicateFontNames FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate font names are redundant and unnecessary: Times + × Duplicate font names are redundant and unnecessary: Times 2 │ a { font-family: 'Arial', "Lucida Grande", Arial, sans-serif; } 3 │ a { fOnT-fAmIlY: "Lucida Grande", ' Lucida Grande ', sans-serif; } @@ -147,7 +147,7 @@ noDuplicateFontNames.css:4:27 lint/suspicious/noDuplicateFontNames FIXABLE ━ ``` noDuplicateFontNames.css:5:39 lint/suspicious/noDuplicateFontNames FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate font names are redundant and unnecessary: Arial + × Duplicate font names are redundant and unnecessary: Arial 3 │ a { fOnT-fAmIlY: "Lucida Grande", ' Lucida Grande ', sans-serif; } 4 │ a { font-family: 'Times', Times } @@ -179,7 +179,7 @@ noDuplicateFontNames.css:5:39 lint/suspicious/noDuplicateFontNames FIXABLE ━ ``` noDuplicateFontNames.css:6:75 lint/suspicious/noDuplicateFontNames FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━ - ! Duplicate font names are redundant and unnecessary: sans-serif + × Duplicate font names are redundant and unnecessary: sans-serif 4 │ a { font-family: 'Times', Times } 5 │ a { FONT: italic 300 16px/30px Arial, " Arial", serif; } diff --git a/crates/biome_css_analyze/tests/suppression/suspicious/noEmptyBlock/noEmptyBlock.css.snap b/crates/biome_css_analyze/tests/suppression/suspicious/noEmptyBlock/noEmptyBlock.css.snap index b66abb6b9b65..8acef973cba9 100644 --- a/crates/biome_css_analyze/tests/suppression/suspicious/noEmptyBlock/noEmptyBlock.css.snap +++ b/crates/biome_css_analyze/tests/suppression/suspicious/noEmptyBlock/noEmptyBlock.css.snap @@ -66,7 +66,7 @@ a { ``` noEmptyBlock.css:2:3 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 1 │ /* CssDeclarationOrRuleBlock */ > 2 │ a {} @@ -99,7 +99,7 @@ noEmptyBlock.css:2:3 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━ ``` noEmptyBlock.css:3:3 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 1 │ /* CssDeclarationOrRuleBlock */ 2 │ a {} @@ -134,7 +134,7 @@ noEmptyBlock.css:3:3 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━ ``` noEmptyBlock.css:4:3 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 2 │ a {} 3 │ a { } @@ -172,7 +172,7 @@ noEmptyBlock.css:4:3 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━ ``` noEmptyBlock.css:8:4 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 6 │ } 7 │ @@ -205,7 +205,7 @@ noEmptyBlock.css:8:4 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━ ``` noEmptyBlock.css:9:4 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 8 │ .b {} > 9 │ .b { } @@ -237,7 +237,7 @@ noEmptyBlock.css:9:4 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━ ``` noEmptyBlock.css:10:4 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 8 │ .b {} 9 │ .b { } @@ -273,7 +273,7 @@ noEmptyBlock.css:10:4 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━ ``` noEmptyBlock.css:15:14 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 14 │ /* CssRuleBlock */ > 15 │ @media print {} @@ -305,7 +305,7 @@ noEmptyBlock.css:15:14 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━ ``` noEmptyBlock.css:16:14 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 14 │ /* CssRuleBlock */ 15 │ @media print {} @@ -341,7 +341,7 @@ noEmptyBlock.css:16:14 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━ ``` noEmptyBlock.css:19:18 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 18 │ } > 19 │ @media print { a {} } @@ -373,7 +373,7 @@ noEmptyBlock.css:19:18 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━ ``` noEmptyBlock.css:22:30 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 21 │ /* CssDeclarationBlock */ > 22 │ @font-palette-values --ident {} @@ -405,7 +405,7 @@ noEmptyBlock.css:22:30 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━ ``` noEmptyBlock.css:23:12 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 21 │ /* CssDeclarationBlock */ 22 │ @font-palette-values --ident {} @@ -438,7 +438,7 @@ noEmptyBlock.css:23:12 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━ ``` noEmptyBlock.css:26:20 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 25 │ /* CssKeyframesBlock */ > 26 │ @keyframes slidein {} @@ -470,7 +470,7 @@ noEmptyBlock.css:26:20 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━ ``` noEmptyBlock.css:28:10 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 26 │ @keyframes slidein {} 27 │ @keyframes slidein { @@ -507,7 +507,7 @@ noEmptyBlock.css:28:10 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━ ``` noEmptyBlock.css:38:13 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 36 │ /* CssFontFeatureValuesBlock */ 37 │ @font-feature-values Font One { @@ -545,7 +545,7 @@ noEmptyBlock.css:38:13 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━ ``` noEmptyBlock.css:44:7 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 43 │ /* CssPageAtRuleBlock */ > 44 │ @page {} @@ -577,7 +577,7 @@ noEmptyBlock.css:44:7 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━ ``` noEmptyBlock.css:45:14 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 43 │ /* CssPageAtRuleBlock */ 44 │ @page {} @@ -611,7 +611,7 @@ noEmptyBlock.css:45:14 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━ ``` noEmptyBlock.css:50:28 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 49 │ /* CssDeclarationOrAtRuleBlock */ > 50 │ @page :left { @left-middle {} background: red; } @@ -643,7 +643,7 @@ noEmptyBlock.css:50:28 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━ ``` noEmptyBlock.css:52:16 lint/suspicious/noEmptyBlock FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! An empty block isn't allowed. + × An empty block isn't allowed. 50 │ @page :left { @left-middle {} background: red; } 51 │ @page { diff --git a/crates/biome_graphql_analyze/tests/spec_tests.rs b/crates/biome_graphql_analyze/tests/spec_tests.rs index 5ba7d5fd70fb..730dba5f5238 100644 --- a/crates/biome_graphql_analyze/tests/spec_tests.rs +++ b/crates/biome_graphql_analyze/tests/spec_tests.rs @@ -1,6 +1,5 @@ use biome_analyze::{AnalysisFilter, AnalyzerAction, ControlFlow, Never, RuleFilter}; use biome_diagnostics::advice::CodeSuggestionAdvice; -use biome_diagnostics::{DiagnosticExt, Severity}; use biome_graphql_parser::parse_graphql; use biome_graphql_syntax::{GraphqlFileSource, GraphqlLanguage}; use biome_rowan::AstNode; @@ -119,8 +118,7 @@ pub(crate) fn analyze_and_snap( } } - let error = diag.with_severity(Severity::Warning); - diagnostics.push(diagnostic_to_string(file_name, input_code, error)); + diagnostics.push(diagnostic_to_string(file_name, input_code, diag.into())); return ControlFlow::Continue(()); } diff --git a/crates/biome_graphql_analyze/tests/specs/nursery/noDuplicatedFields/invalid.graphql.snap b/crates/biome_graphql_analyze/tests/specs/nursery/noDuplicatedFields/invalid.graphql.snap index 149b449cbe16..05d355409a2f 100644 --- a/crates/biome_graphql_analyze/tests/specs/nursery/noDuplicatedFields/invalid.graphql.snap +++ b/crates/biome_graphql_analyze/tests/specs/nursery/noDuplicatedFields/invalid.graphql.snap @@ -1,6 +1,7 @@ --- source: crates/biome_graphql_analyze/tests/spec_tests.rs expression: invalid.graphql +snapshot_kind: text --- # Input ```graphql @@ -38,7 +39,7 @@ query test { ``` invalid.graphql:1:36 lint/nursery/noDuplicatedFields ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Variable `v` defined multiple times. + i Variable `v` defined multiple times. > 1 │ query test($v: String, $t: String, $v: String) { │ ^^^^^^^^^^ @@ -53,7 +54,7 @@ invalid.graphql:1:36 lint/nursery/noDuplicatedFields ━━━━━━━━━ ``` invalid.graphql:6:48 lint/nursery/noDuplicatedFields ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Argument `first` defined multiple times. + i Argument `first` defined multiple times. 5 │ query test { > 6 │ users(first: 100, after: 10, filter: "test", first: 50) { @@ -69,7 +70,7 @@ invalid.graphql:6:48 lint/nursery/noDuplicatedFields ━━━━━━━━━ ``` invalid.graphql:16:5 lint/nursery/noDuplicatedFields ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Field `name` defined multiple times. + i Field `name` defined multiple times. 14 │ name 15 │ email @@ -86,7 +87,7 @@ invalid.graphql:16:5 lint/nursery/noDuplicatedFields ━━━━━━━━━ ``` invalid.graphql:25:5 lint/nursery/noDuplicatedFields ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Field `email` defined multiple times. + i Field `email` defined multiple times. 23 │ name 24 │ email diff --git a/crates/biome_graphql_analyze/tests/specs/nursery/useDeprecatedReason/invalid.graphql.snap b/crates/biome_graphql_analyze/tests/specs/nursery/useDeprecatedReason/invalid.graphql.snap index 958708f2512a..0726f7f7bd5d 100644 --- a/crates/biome_graphql_analyze/tests/specs/nursery/useDeprecatedReason/invalid.graphql.snap +++ b/crates/biome_graphql_analyze/tests/specs/nursery/useDeprecatedReason/invalid.graphql.snap @@ -1,6 +1,7 @@ --- source: crates/biome_graphql_analyze/tests/spec_tests.rs expression: invalid.graphql +snapshot_kind: text --- # Input ```graphql @@ -24,7 +25,7 @@ query { ``` invalid.graphql:2:10 lint/nursery/useDeprecatedReason ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! The directive `@deprecated` should have a `reason` argument. + i The directive `@deprecated` should have a `reason` argument. 1 │ query { > 2 │ member @deprecated { @@ -40,7 +41,7 @@ invalid.graphql:2:10 lint/nursery/useDeprecatedReason ━━━━━━━━ ``` invalid.graphql:8:10 lint/nursery/useDeprecatedReason ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! The directive `@deprecated` should have a `reason` argument. + i The directive `@deprecated` should have a `reason` argument. 7 │ query { > 8 │ member @deprecated() @@ -56,7 +57,7 @@ invalid.graphql:8:10 lint/nursery/useDeprecatedReason ━━━━━━━━ ``` invalid.graphql:12:10 lint/nursery/useDeprecatedReason ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! The directive `@deprecated` should have a `reason` argument. + i The directive `@deprecated` should have a `reason` argument. 11 │ query { > 12 │ member @deprecated(abc: 123) diff --git a/crates/biome_graphql_analyze/tests/specs/nursery/useNamedOperation/invalid.graphql.snap b/crates/biome_graphql_analyze/tests/specs/nursery/useNamedOperation/invalid.graphql.snap index 87e26fd85473..9cb6d0401692 100644 --- a/crates/biome_graphql_analyze/tests/specs/nursery/useNamedOperation/invalid.graphql.snap +++ b/crates/biome_graphql_analyze/tests/specs/nursery/useNamedOperation/invalid.graphql.snap @@ -1,6 +1,7 @@ --- source: crates/biome_graphql_analyze/tests/spec_tests.rs expression: invalid.graphql +snapshot_kind: text --- # Input ```graphql @@ -14,7 +15,7 @@ subscription {} ``` invalid.graphql:1:1 lint/nursery/useNamedOperation FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Anonymous GraphQL operations are forbidden. Make sure to name your query. + i Anonymous GraphQL operations are forbidden. Make sure to name your query. > 1 │ query { human } │ ^^^^^ @@ -33,7 +34,7 @@ invalid.graphql:1:1 lint/nursery/useNamedOperation FIXABLE ━━━━━━ ``` invalid.graphql:2:1 lint/nursery/useNamedOperation FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Anonymous GraphQL operations are forbidden. Make sure to name your mutation. + i Anonymous GraphQL operations are forbidden. Make sure to name your mutation. 1 │ query { human } > 2 │ mutation { ...Type } @@ -53,7 +54,7 @@ invalid.graphql:2:1 lint/nursery/useNamedOperation FIXABLE ━━━━━━ ``` invalid.graphql:3:1 lint/nursery/useNamedOperation FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Anonymous GraphQL operations are forbidden. Make sure to name your subscription. + i Anonymous GraphQL operations are forbidden. Make sure to name your subscription. 1 │ query { human } 2 │ mutation { ...Type } diff --git a/crates/biome_graphql_analyze/tests/specs/nursery/useNamingConvention/invalid.graphql.snap b/crates/biome_graphql_analyze/tests/specs/nursery/useNamingConvention/invalid.graphql.snap index 088b281343c3..09f336ba6e4d 100644 --- a/crates/biome_graphql_analyze/tests/specs/nursery/useNamingConvention/invalid.graphql.snap +++ b/crates/biome_graphql_analyze/tests/specs/nursery/useNamingConvention/invalid.graphql.snap @@ -15,7 +15,7 @@ enum Status { ``` invalid.graphql:2:2 lint/nursery/useNamingConvention ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Enum values should be in all caps. + i Enum values should be in all caps. 1 │ enum Status { > 2 │ Active diff --git a/crates/biome_graphql_analyze/tests/suppression/nursery/noDuplicatedFields/noDuplicatedFields.graphql.snap b/crates/biome_graphql_analyze/tests/suppression/nursery/noDuplicatedFields/noDuplicatedFields.graphql.snap index 7df51ba1f2eb..810535279868 100644 --- a/crates/biome_graphql_analyze/tests/suppression/nursery/noDuplicatedFields/noDuplicatedFields.graphql.snap +++ b/crates/biome_graphql_analyze/tests/suppression/nursery/noDuplicatedFields/noDuplicatedFields.graphql.snap @@ -40,7 +40,7 @@ query test { ``` noDuplicatedFields.graphql:1:36 lint/nursery/noDuplicatedFields FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Variable `v` defined multiple times. + i Variable `v` defined multiple times. > 1 │ query test($v: String, $t: String, $v: String) { │ ^^^^^^^^^^ @@ -70,7 +70,7 @@ noDuplicatedFields.graphql:1:36 lint/nursery/noDuplicatedFields FIXABLE ━━ ``` noDuplicatedFields.graphql:6:48 lint/nursery/noDuplicatedFields FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Argument `first` defined multiple times. + i Argument `first` defined multiple times. 5 │ query test { > 6 │ users(first: 100, after: 10, filter: "test", first: 50) { @@ -103,7 +103,7 @@ noDuplicatedFields.graphql:6:48 lint/nursery/noDuplicatedFields FIXABLE ━━ ``` noDuplicatedFields.graphql:16:5 lint/nursery/noDuplicatedFields FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Field `name` defined multiple times. + i Field `name` defined multiple times. 14 │ name 15 │ email diff --git a/crates/biome_graphql_analyze/tests/suppression/nursery/useDeprecatedReason/useDeprecatedReason.graphql.snap b/crates/biome_graphql_analyze/tests/suppression/nursery/useDeprecatedReason/useDeprecatedReason.graphql.snap index 3cd7b9e005a8..420da214a484 100644 --- a/crates/biome_graphql_analyze/tests/suppression/nursery/useDeprecatedReason/useDeprecatedReason.graphql.snap +++ b/crates/biome_graphql_analyze/tests/suppression/nursery/useDeprecatedReason/useDeprecatedReason.graphql.snap @@ -32,7 +32,7 @@ query { ``` useDeprecatedReason.graphql:2:10 lint/nursery/useDeprecatedReason FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━ - ! The directive `@deprecated` should have a `reason` argument. + i The directive `@deprecated` should have a `reason` argument. 1 │ query { > 2 │ member @deprecated { @@ -64,7 +64,7 @@ useDeprecatedReason.graphql:2:10 lint/nursery/useDeprecatedReason FIXABLE ━ ``` useDeprecatedReason.graphql:8:10 lint/nursery/useDeprecatedReason FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━ - ! The directive `@deprecated` should have a `reason` argument. + i The directive `@deprecated` should have a `reason` argument. 7 │ query { > 8 │ member @deprecated() @@ -97,7 +97,7 @@ useDeprecatedReason.graphql:8:10 lint/nursery/useDeprecatedReason FIXABLE ━ ``` useDeprecatedReason.graphql:13:3 lint/nursery/useDeprecatedReason FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━ - ! The directive `@deprecated` should have a `reason` argument. + i The directive `@deprecated` should have a `reason` argument. 11 │ query { 12 │ member diff --git a/crates/biome_js_analyze/src/lint/complexity/no_for_each.rs b/crates/biome_js_analyze/src/lint/complexity/no_for_each.rs index df8cdab7a91e..03e5686d12fc 100644 --- a/crates/biome_js_analyze/src/lint/complexity/no_for_each.rs +++ b/crates/biome_js_analyze/src/lint/complexity/no_for_each.rs @@ -99,8 +99,7 @@ declare_lint_rule! { RuleSource::EslintUnicorn("no-array-for-each"), RuleSource::Clippy("needless_for_each"), ], - recommended: true, - severity: Severity::Error, + severity: Severity::Warning, } } diff --git a/crates/biome_js_analyze/src/lint/complexity/no_this_in_static.rs b/crates/biome_js_analyze/src/lint/complexity/no_this_in_static.rs index 0f1ae1da17c1..2cfb2bb02496 100644 --- a/crates/biome_js_analyze/src/lint/complexity/no_this_in_static.rs +++ b/crates/biome_js_analyze/src/lint/complexity/no_this_in_static.rs @@ -83,7 +83,7 @@ declare_lint_rule! { language: "js", sources: &[RuleSource::EslintMysticatea("no-this-in-static")], recommended: true, - severity: Severity::Error, + severity: Severity::Warning, fix_kind: FixKind::Unsafe, } } diff --git a/crates/biome_js_analyze/src/lint/complexity/no_useless_catch.rs b/crates/biome_js_analyze/src/lint/complexity/no_useless_catch.rs index 3d0be8e5c226..3d0c75765ecb 100644 --- a/crates/biome_js_analyze/src/lint/complexity/no_useless_catch.rs +++ b/crates/biome_js_analyze/src/lint/complexity/no_useless_catch.rs @@ -70,7 +70,7 @@ declare_lint_rule! { language: "js", sources: &[RuleSource::Eslint("no-useless-catch")], recommended: true, - severity: Severity::Error, + severity: Severity::Information, fix_kind: FixKind::Unsafe, } } diff --git a/crates/biome_js_analyze/src/lint/complexity/no_useless_constructor.rs b/crates/biome_js_analyze/src/lint/complexity/no_useless_constructor.rs index 1b302e17ac1d..68a73d17e46a 100644 --- a/crates/biome_js_analyze/src/lint/complexity/no_useless_constructor.rs +++ b/crates/biome_js_analyze/src/lint/complexity/no_useless_constructor.rs @@ -123,7 +123,7 @@ declare_lint_rule! { RuleSource::EslintTypeScript("no-useless-constructor"), ], recommended: true, - severity: Severity::Error, + severity: Severity::Information, fix_kind: FixKind::Unsafe, } } diff --git a/crates/biome_js_analyze/src/lint/complexity/no_useless_empty_export.rs b/crates/biome_js_analyze/src/lint/complexity/no_useless_empty_export.rs index b88ed330cc1f..49591910eed8 100644 --- a/crates/biome_js_analyze/src/lint/complexity/no_useless_empty_export.rs +++ b/crates/biome_js_analyze/src/lint/complexity/no_useless_empty_export.rs @@ -47,7 +47,7 @@ declare_lint_rule! { language: "ts", sources: &[RuleSource::EslintTypeScript("no-useless-empty-export")], recommended: true, - severity: Severity::Error, + severity: Severity::Information, fix_kind: FixKind::Safe, } } diff --git a/crates/biome_js_analyze/src/lint/complexity/no_useless_fragments.rs b/crates/biome_js_analyze/src/lint/complexity/no_useless_fragments.rs index dcd927bdc637..e1decac34aa0 100644 --- a/crates/biome_js_analyze/src/lint/complexity/no_useless_fragments.rs +++ b/crates/biome_js_analyze/src/lint/complexity/no_useless_fragments.rs @@ -66,7 +66,7 @@ declare_lint_rule! { language: "jsx", sources: &[RuleSource::EslintReact("jsx-no-useless-fragment")], recommended: true, - severity: Severity::Error, + severity: Severity::Information, fix_kind: FixKind::Unsafe, } } @@ -444,7 +444,7 @@ impl Rule for NoUselessFragments { rule_category!(), node.syntax().text_trimmed_range(), markup! { - "Avoid using unnecessary ""Fragment""." + "This fragment is unnecessary." }, ).note(markup! { "A fragment is redundant if it contains only one child, or if it is the child of a html element, and is not a keyed ""fragment""." diff --git a/crates/biome_js_analyze/src/lint/complexity/no_useless_label.rs b/crates/biome_js_analyze/src/lint/complexity/no_useless_label.rs index 31173c63494c..58b6e23d2083 100644 --- a/crates/biome_js_analyze/src/lint/complexity/no_useless_label.rs +++ b/crates/biome_js_analyze/src/lint/complexity/no_useless_label.rs @@ -38,7 +38,7 @@ declare_lint_rule! { language: "js", sources: &[RuleSource::Eslint("no-extra-label")], recommended: true, - severity: Severity::Error, + severity: Severity::Information, fix_kind: FixKind::Safe, } } diff --git a/crates/biome_js_analyze/src/lint/complexity/no_useless_lone_block_statements.rs b/crates/biome_js_analyze/src/lint/complexity/no_useless_lone_block_statements.rs index 3eb9a1ac0175..b7ac0ed8c009 100644 --- a/crates/biome_js_analyze/src/lint/complexity/no_useless_lone_block_statements.rs +++ b/crates/biome_js_analyze/src/lint/complexity/no_useless_lone_block_statements.rs @@ -48,7 +48,7 @@ declare_lint_rule! { language: "js", sources: &[RuleSource::Eslint("no-lone-blocks")], recommended: true, - severity: Severity::Error, + severity: Severity::Information, fix_kind: FixKind::Safe, } } diff --git a/crates/biome_js_analyze/src/lint/complexity/no_useless_switch_case.rs b/crates/biome_js_analyze/src/lint/complexity/no_useless_switch_case.rs index e6979800e838..b76e430bcb87 100644 --- a/crates/biome_js_analyze/src/lint/complexity/no_useless_switch_case.rs +++ b/crates/biome_js_analyze/src/lint/complexity/no_useless_switch_case.rs @@ -63,7 +63,7 @@ declare_lint_rule! { language: "js", sources: &[RuleSource::EslintUnicorn("no-useless-switch-case")], recommended: true, - severity: Severity::Error, + severity: Severity::Information, fix_kind: FixKind::Unsafe, } } diff --git a/crates/biome_js_analyze/src/lint/complexity/no_useless_ternary.rs b/crates/biome_js_analyze/src/lint/complexity/no_useless_ternary.rs index 0c479e7a12c2..d881f9d1db58 100644 --- a/crates/biome_js_analyze/src/lint/complexity/no_useless_ternary.rs +++ b/crates/biome_js_analyze/src/lint/complexity/no_useless_ternary.rs @@ -58,7 +58,7 @@ declare_lint_rule! { language: "js", sources: &[RuleSource::Eslint("no-unneeded-ternary")], recommended: true, - severity: Severity::Error, + severity: Severity::Information, fix_kind: FixKind::Unsafe, } } diff --git a/crates/biome_js_analyze/src/lint/complexity/no_useless_this_alias.rs b/crates/biome_js_analyze/src/lint/complexity/no_useless_this_alias.rs index b33ae1743a15..d3d938525313 100644 --- a/crates/biome_js_analyze/src/lint/complexity/no_useless_this_alias.rs +++ b/crates/biome_js_analyze/src/lint/complexity/no_useless_this_alias.rs @@ -58,7 +58,7 @@ declare_lint_rule! { sources: &[RuleSource::EslintTypeScript("no-this-alias")], source_kind: RuleSourceKind::Inspired, recommended: true, - severity: Severity::Error, + severity: Severity::Information, fix_kind: FixKind::Safe, } } diff --git a/crates/biome_js_analyze/src/lint/complexity/no_useless_type_constraint.rs b/crates/biome_js_analyze/src/lint/complexity/no_useless_type_constraint.rs index 9885f41c074b..2173ea760551 100644 --- a/crates/biome_js_analyze/src/lint/complexity/no_useless_type_constraint.rs +++ b/crates/biome_js_analyze/src/lint/complexity/no_useless_type_constraint.rs @@ -82,7 +82,7 @@ declare_lint_rule! { language: "ts", sources: &[RuleSource::EslintTypeScript("no-unnecessary-type-constraint")], recommended: true, - severity: Severity::Error, + severity: Severity::Information, fix_kind: FixKind::Safe, } } diff --git a/crates/biome_js_analyze/src/lint/complexity/use_arrow_function.rs b/crates/biome_js_analyze/src/lint/complexity/use_arrow_function.rs index e4e095eecb3d..e1b56838c665 100644 --- a/crates/biome_js_analyze/src/lint/complexity/use_arrow_function.rs +++ b/crates/biome_js_analyze/src/lint/complexity/use_arrow_function.rs @@ -73,7 +73,7 @@ declare_lint_rule! { sources: &[RuleSource::Eslint("prefer-arrow-callback")], source_kind: RuleSourceKind::Inspired, recommended: true, - severity: Severity::Error, + severity: Severity::Warning, fix_kind: FixKind::Safe, } } diff --git a/crates/biome_js_analyze/src/lint/complexity/use_optional_chain.rs b/crates/biome_js_analyze/src/lint/complexity/use_optional_chain.rs index 85f76fadaa66..eb0f7f90a873 100644 --- a/crates/biome_js_analyze/src/lint/complexity/use_optional_chain.rs +++ b/crates/biome_js_analyze/src/lint/complexity/use_optional_chain.rs @@ -77,7 +77,7 @@ declare_lint_rule! { language: "js", sources: &[RuleSource::EslintTypeScript("prefer-optional-chain")], recommended: true, - severity: Severity::Error, + severity: Severity::Warning, fix_kind: FixKind::Unsafe, } } diff --git a/crates/biome_js_analyze/src/lint/correctness/no_render_return_value.rs b/crates/biome_js_analyze/src/lint/correctness/no_render_return_value.rs index 9322517ebb52..e0526e3a118f 100644 --- a/crates/biome_js_analyze/src/lint/correctness/no_render_return_value.rs +++ b/crates/biome_js_analyze/src/lint/correctness/no_render_return_value.rs @@ -1,7 +1,7 @@ use crate::react::{is_react_call_api, ReactLibrary}; use crate::services::semantic::Semantic; use biome_analyze::context::RuleContext; -use biome_analyze::{declare_lint_rule, Rule, RuleDiagnostic}; +use biome_analyze::{declare_lint_rule, Rule, RuleDiagnostic, RuleDomain}; use biome_console::markup; use biome_diagnostics::Severity; use biome_js_syntax::{JsCallExpression, JsExpressionStatement}; @@ -35,6 +35,7 @@ declare_lint_rule! { name: "noRenderReturnValue", language: "jsx", recommended: true, + domains: &[RuleDomain::React], severity: Severity::Error, } } diff --git a/crates/biome_js_analyze/src/lint/correctness/no_self_assign.rs b/crates/biome_js_analyze/src/lint/correctness/no_self_assign.rs index fd709abd8646..dd211f67423e 100644 --- a/crates/biome_js_analyze/src/lint/correctness/no_self_assign.rs +++ b/crates/biome_js_analyze/src/lint/correctness/no_self_assign.rs @@ -122,7 +122,10 @@ impl Rule for NoSelfAssign { markup! { "This is where is assigned." }, - ), + ) + .note(markup! { + "Self assignments have no effect and can be removed." + }), ) } } diff --git a/crates/biome_js_analyze/src/lint/correctness/no_unused_labels.rs b/crates/biome_js_analyze/src/lint/correctness/no_unused_labels.rs index 173c3288cea2..6bfcaedb4dd1 100644 --- a/crates/biome_js_analyze/src/lint/correctness/no_unused_labels.rs +++ b/crates/biome_js_analyze/src/lint/correctness/no_unused_labels.rs @@ -65,7 +65,7 @@ declare_lint_rule! { language: "js", sources: &[RuleSource::Eslint("no-unused-labels")], recommended: true, - severity: Severity::Error, + severity: Severity::Warning, fix_kind: FixKind::Safe, } } diff --git a/crates/biome_js_analyze/src/lint/performance/no_delete.rs b/crates/biome_js_analyze/src/lint/performance/no_delete.rs index 9e8c05a1a0c8..21f6f4d54df1 100644 --- a/crates/biome_js_analyze/src/lint/performance/no_delete.rs +++ b/crates/biome_js_analyze/src/lint/performance/no_delete.rs @@ -60,8 +60,7 @@ declare_lint_rule! { version: "1.0.0", name: "noDelete", language: "js", - recommended: true, - severity: Severity::Error, + severity: Severity::Warning, fix_kind: FixKind::Unsafe, } } diff --git a/crates/biome_js_analyze/src/lint/suspicious/no_sparse_array.rs b/crates/biome_js_analyze/src/lint/suspicious/no_sparse_array.rs index e67efc139a13..6075fa407a07 100644 --- a/crates/biome_js_analyze/src/lint/suspicious/no_sparse_array.rs +++ b/crates/biome_js_analyze/src/lint/suspicious/no_sparse_array.rs @@ -10,7 +10,16 @@ use biome_rowan::{AstNode, AstNodeExt, AstSeparatedList, BatchMutationExt}; use crate::JsRuleAction; declare_lint_rule! { - /// Disallow sparse arrays + /// Prevents the use of sparse arrays (arrays with holes). + /// + /// Sparse arrays may contain empty slots due to the use of multiple commas between two items, like the following: + /// ```js + /// const items = [a,,,b]; + /// ``` + /// Arrays with holes might yield incorrect information. For example, the previous snippet, `items` has a length of `4`, but did the user + /// really intended to have an array with four items? Or was it a typo. + /// + /// This rule enforce the user to explicitly an `undefined` in places where there's a hole. /// /// ## Examples /// @@ -19,6 +28,12 @@ declare_lint_rule! { /// ```js,expect_diagnostic /// [1,,2] /// ``` + /// + /// ### Valid + /// + /// ```js + /// [1, undefined, 2] + /// ``` pub NoSparseArray { version: "1.0.0", name: "noSparseArray", @@ -55,10 +70,10 @@ impl Rule for NoSparseArray { Some(RuleDiagnostic::new(rule_category!(), node.syntax().text_trimmed_range(), markup! { - "This ""array"" contains an ""empty slot""." + "This ""array"" contains an ""empty slots.""." } .to_owned() - )) + ).note("The presences of empty slots may cause incorrect information and might be a typo.")) } fn action(ctx: &RuleContext, _state: &Self::State) -> Option { diff --git a/crates/biome_js_analyze/src/lint/suspicious/no_suspicious_semicolon_in_jsx.rs b/crates/biome_js_analyze/src/lint/suspicious/no_suspicious_semicolon_in_jsx.rs index 555b07baf1e0..3bde02013532 100644 --- a/crates/biome_js_analyze/src/lint/suspicious/no_suspicious_semicolon_in_jsx.rs +++ b/crates/biome_js_analyze/src/lint/suspicious/no_suspicious_semicolon_in_jsx.rs @@ -46,9 +46,9 @@ declare_lint_rule! { pub NoSuspiciousSemicolonInJsx { version: "1.6.0", name: "noSuspiciousSemicolonInJsx", - language: "js", + language: "jsx", recommended: true, - severity: Severity::Error, + severity: Severity::Warning, } } diff --git a/crates/biome_js_analyze/src/lint/suspicious/use_valid_typeof.rs b/crates/biome_js_analyze/src/lint/suspicious/use_valid_typeof.rs index b8e042442391..2ab9f316bb1e 100644 --- a/crates/biome_js_analyze/src/lint/suspicious/use_valid_typeof.rs +++ b/crates/biome_js_analyze/src/lint/suspicious/use_valid_typeof.rs @@ -16,7 +16,7 @@ use biome_string_case::StrLikeExtension; use crate::JsRuleAction; declare_lint_rule! { - /// This rule checks that the result of a `typeof' expression is compared to a valid value. + /// This rule checks that the result of a `typeof` expression is compared to a valid value. /// /// ## Examples /// diff --git a/crates/biome_js_analyze/tests/plugin/preferObjectSpread.grit.snap b/crates/biome_js_analyze/tests/plugin/preferObjectSpread.grit.snap index 84c08e00a26d..37a543360d66 100644 --- a/crates/biome_js_analyze/tests/plugin/preferObjectSpread.grit.snap +++ b/crates/biome_js_analyze/tests/plugin/preferObjectSpread.grit.snap @@ -17,7 +17,7 @@ Object.assign({ foo: 'bar'}, baz); ``` preferObjectSpread.grit:1:15 plugin ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Prefer object spread instead of `Object.assign()` + i Prefer object spread instead of `Object.assign()` > 1 │ Object.assign({}, foo); │ ^^^^^^^ @@ -30,7 +30,7 @@ preferObjectSpread.grit:1:15 plugin ━━━━━━━━━━━━━━ ``` preferObjectSpread.grit:3:15 plugin ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Prefer object spread instead of `Object.assign()` + i Prefer object spread instead of `Object.assign()` 1 │ Object.assign({}, foo); 2 │ @@ -45,7 +45,7 @@ preferObjectSpread.grit:3:15 plugin ━━━━━━━━━━━━━━ ``` preferObjectSpread.grit:5:15 plugin ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Prefer object spread instead of `Object.assign()` + i Prefer object spread instead of `Object.assign()` 3 │ Object.assign({}, {foo: 'bar'}); 4 │ diff --git a/crates/biome_js_analyze/tests/spec_tests.rs b/crates/biome_js_analyze/tests/spec_tests.rs index c83004ef4957..45686f844cdc 100644 --- a/crates/biome_js_analyze/tests/spec_tests.rs +++ b/crates/biome_js_analyze/tests/spec_tests.rs @@ -2,7 +2,7 @@ use biome_analyze::{ AnalysisFilter, AnalyzerAction, AnalyzerPlugin, ControlFlow, Never, RuleFilter, }; use biome_diagnostics::advice::CodeSuggestionAdvice; -use biome_diagnostics::{DiagnosticExt, Severity}; +use biome_diagnostics::{DiagnosticExt, Error, Severity}; use biome_fs::OsFileSystem; use biome_js_analyze::JsAnalyzerServices; use biome_js_parser::{parse, JsParserOptions}; @@ -171,8 +171,11 @@ pub(crate) fn analyze_and_snap( } } - let error = diag.with_severity(Severity::Warning); - diagnostics.push(diagnostic_to_string(file_name, input_code, error)); + diagnostics.push(diagnostic_to_string( + file_name, + input_code, + Error::from(diag), + )); return ControlFlow::Continue(()); } diff --git a/crates/biome_js_analyze/tests/specs/a11y/noAccessKey/invalid.jsx.snap b/crates/biome_js_analyze/tests/specs/a11y/noAccessKey/invalid.jsx.snap index fd529a50c2e9..71db143ade88 100644 --- a/crates/biome_js_analyze/tests/specs/a11y/noAccessKey/invalid.jsx.snap +++ b/crates/biome_js_analyze/tests/specs/a11y/noAccessKey/invalid.jsx.snap @@ -1,6 +1,7 @@ --- source: crates/biome_js_analyze/tests/spec_tests.rs expression: invalid.jsx +snapshot_kind: text --- # Input ```jsx @@ -21,7 +22,7 @@ expression: invalid.jsx ``` invalid.jsx:1:22 lint/a11y/noAccessKey FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Avoid the accessKey attribute to reduce inconsistencies between keyboard shortcuts and screen reader keyboard comments. + × Avoid the accessKey attribute to reduce inconsistencies between keyboard shortcuts and screen reader keyboard comments. > 1 │ ; │ ^^^^^^^^^^^^^ @@ -40,7 +41,7 @@ invalid.jsx:1:22 lint/a11y/noAccessKey FIXABLE ━━━━━━━━━━ ``` invalid.jsx:2:9 lint/a11y/noAccessKey FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Avoid the accessKey attribute to reduce inconsistencies between keyboard shortcuts and screen reader keyboard comments. + × Avoid the accessKey attribute to reduce inconsistencies between keyboard shortcuts and screen reader keyboard comments. 1 │ ; > 2 │ ; @@ -60,7 +61,7 @@ invalid.jsx:2:9 lint/a11y/noAccessKey FIXABLE ━━━━━━━━━━ ``` invalid.jsx:3:6 lint/a11y/noAccessKey FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Avoid the accessKey attribute to reduce inconsistencies between keyboard shortcuts and screen reader keyboard comments. + × Avoid the accessKey attribute to reduce inconsistencies between keyboard shortcuts and screen reader keyboard comments. 1 │ ; 2 │ ; @@ -81,7 +82,7 @@ invalid.jsx:3:6 lint/a11y/noAccessKey FIXABLE ━━━━━━━━━━ ``` invalid.jsx:4:6 lint/a11y/noAccessKey FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Avoid the accessKey attribute to reduce inconsistencies between keyboard shortcuts and screen reader keyboard comments. + × Avoid the accessKey attribute to reduce inconsistencies between keyboard shortcuts and screen reader keyboard comments. 2 │ ; 3 │
; @@ -102,7 +103,7 @@ invalid.jsx:4:6 lint/a11y/noAccessKey FIXABLE ━━━━━━━━━━ ``` invalid.jsx:5:6 lint/a11y/noAccessKey FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Avoid the accessKey attribute to reduce inconsistencies between keyboard shortcuts and screen reader keyboard comments. + × Avoid the accessKey attribute to reduce inconsistencies between keyboard shortcuts and screen reader keyboard comments. 3 │
; 4 │
; @@ -123,7 +124,7 @@ invalid.jsx:5:6 lint/a11y/noAccessKey FIXABLE ━━━━━━━━━━ ``` invalid.jsx:6:6 lint/a11y/noAccessKey FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Avoid the accessKey attribute to reduce inconsistencies between keyboard shortcuts and screen reader keyboard comments. + × Avoid the accessKey attribute to reduce inconsistencies between keyboard shortcuts and screen reader keyboard comments. 4 │
; 5 │
; @@ -144,7 +145,7 @@ invalid.jsx:6:6 lint/a11y/noAccessKey FIXABLE ━━━━━━━━━━ ``` invalid.jsx:7:6 lint/a11y/noAccessKey FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Avoid the accessKey attribute to reduce inconsistencies between keyboard shortcuts and screen reader keyboard comments. + × Avoid the accessKey attribute to reduce inconsistencies between keyboard shortcuts and screen reader keyboard comments. 5 │
; 6 │
; @@ -165,7 +166,7 @@ invalid.jsx:7:6 lint/a11y/noAccessKey FIXABLE ━━━━━━━━━━ ``` invalid.jsx:8:6 lint/a11y/noAccessKey FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Avoid the accessKey attribute to reduce inconsistencies between keyboard shortcuts and screen reader keyboard comments. + × Avoid the accessKey attribute to reduce inconsistencies between keyboard shortcuts and screen reader keyboard comments. 6 │
; 7 │
; @@ -186,7 +187,7 @@ invalid.jsx:8:6 lint/a11y/noAccessKey FIXABLE ━━━━━━━━━━ ``` invalid.jsx:9:6 lint/a11y/noAccessKey FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Avoid the accessKey attribute to reduce inconsistencies between keyboard shortcuts and screen reader keyboard comments. + × Avoid the accessKey attribute to reduce inconsistencies between keyboard shortcuts and screen reader keyboard comments. 7 │
; 8 │
; @@ -207,7 +208,7 @@ invalid.jsx:9:6 lint/a11y/noAccessKey FIXABLE ━━━━━━━━━━ ``` invalid.jsx:10:6 lint/a11y/noAccessKey FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Avoid the accessKey attribute to reduce inconsistencies between keyboard shortcuts and screen reader keyboard comments. + × Avoid the accessKey attribute to reduce inconsistencies between keyboard shortcuts and screen reader keyboard comments. 8 │
; 9 │
; @@ -223,5 +224,3 @@ invalid.jsx:10:6 lint/a11y/noAccessKey FIXABLE ━━━━━━━━━━ │ --------------------------------------- ``` - - diff --git a/crates/biome_js_analyze/tests/specs/a11y/noAriaHiddenOnFocusable/invalid.jsx.snap b/crates/biome_js_analyze/tests/specs/a11y/noAriaHiddenOnFocusable/invalid.jsx.snap index 40de5c91e23a..e25e9f34438e 100644 --- a/crates/biome_js_analyze/tests/specs/a11y/noAriaHiddenOnFocusable/invalid.jsx.snap +++ b/crates/biome_js_analyze/tests/specs/a11y/noAriaHiddenOnFocusable/invalid.jsx.snap @@ -1,6 +1,7 @@ --- source: crates/biome_js_analyze/tests/spec_tests.rs expression: invalid.jsx +snapshot_kind: text --- # Input ```jsx @@ -18,7 +19,7 @@ expression: invalid.jsx ``` invalid.jsx:2:3 lint/a11y/noAriaHiddenOnFocusable FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Disallow aria-hidden="true" from being set on focusable elements. + × Disallow aria-hidden="true" from being set on focusable elements. 1 │ <> > 2 │