-
-
Notifications
You must be signed in to change notification settings - Fork 794
fix: resolve parse errors in ruledoc code blocks #7544
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
| let parse = biome_css_parser::parse_css(code, CssParserOptions::default()); | ||
| let parse_options = CssParserOptions::default() | ||
| .allow_css_modules() | ||
| .allow_tailwind_directives(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The CSS parser options are updated here too: biomejs/website#3130
I'm thinking we may want to do even more code sharing here...
WalkthroughThis PR primarily updates documentation code blocks across multiple lint/assist rules (language tags, expectations, examples) without changing rule behaviour. It tightens code-block attribute validation in biome_ruledoc_utils (early bail on unknown attributes). It refactors xtask/rules_check: simplifies DiagnosticWriter (defaultable, internal state), introduces write_parse_error, adjusts final diagnostics evaluation, changes parse_rule_options signature (test -> block), and enables CSS modules/Tailwind during CSS parsing. Possibly related PRs
Suggested labels
Suggested reviewers
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✨ Finishing touches
🧪 Generate unit tests
Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (7)
crates/biome_ruledoc_utils/src/codeblock.rs (1)
141-155: Clarify error and avoid redundant lookups (optional).Minor tidy-up: compute the file source once and use a clearer message that covers both attributes and language tags.
Apply this diff:
- if DocumentFileSource::from_extension(token) == DocumentFileSource::Unknown - { - bail!("Unrecognised attribute in code block: {token}"); - } - - if code_block.document_file_source() != DocumentFileSource::Unknown { + let token_source = DocumentFileSource::from_extension(token); + if token_source == DocumentFileSource::Unknown { + bail!("Unrecognised attribute or language tag in code block: {token}"); + } + if !code_block.tag.is_empty() { bail!( "Only one language tag is accepted per code block. Found '{}' and '{}'", code_block.tag, token ); } - - code_block.tag = token.to_string(); + code_block.tag = token.to_owned();If the repository prefers US English, consider “Unrecognized” instead. Up to you—just be consistent.
crates/biome_js_analyze/src/lint/complexity/no_static_only_class.rs (1)
85-93: Doc typo: variable name mismatch (mutableFieldvsmutableCount)Both functions should reference
mutableCount.Apply this diff in the “Do this instead” snippet:
export function getMutableCount() { - return mutableField; + return mutableCount; } export function incrementCount() { - mutableField += 1; + mutableCount += 1; }crates/biome_js_analyze/src/assist/source/use_sorted_keys.rs (1)
65-65: Should this example assert a diff?This object looks unsorted and would typically trigger the assist. If that’s the intent, consider annotating with
expect_diffso the ruledoc test verifies the fix is produced.Apply this if appropriate:
-/// ```js +/// ```js,expect_diffxtask/rules_check/src/lib.rs (4)
402-430: Result evaluation flow reads well; wording nitThe new fail-fast on parse errors and the “exactly one diagnostic” rule for
expect_diagnosticare solid. Forexpect_diff, you now check for any diagnostic; if you ever want to assert an actual code action, consider tightening this later. Minor copy tweak: “returned no diagnostics” would be more precise than “returned no diff”.
479-485: Grammar fix in error textSmall wording nit in the bail message.
- "The following non-JSON code block for '{group}/{}' was marked as containing configuration options. Only JSON code blocks can used to provide configuration options.\n\n{code}", + "The following non-JSON code block for '{group}/{}' was marked as containing configuration options. Only JSON code blocks can be used to provide configuration options.\n\n{code}",
624-631: LGTM: explicit none-case for configurationClear error when deserialisation yields
None. Consider including a hint that this often means an unexpected shape that doesn’t match the schema.
151-166: Make print_all_diagnostics take &self; import TextSize from biome_rowan
- print_all_diagnostics doesn't mutate self — change signature.
- fn print_all_diagnostics(&mut self) { + fn print_all_diagnostics(&self) { let mut console = biome_console::EnvConsole::default(); for diag in self.all_diagnostics.iter() { console.println( biome_console::LogLevel::Error, markup! { {PrintDiagnostic::verbose(diag)} }, ); } }
- Decouple JS-specific types: biome_rowan re-exports TextSize (crates/biome_rowan/src/lib.rs:39), so prefer importing it from biome_rowan.
-use biome_js_syntax::{EmbeddingKind, JsFileSource, JsLanguage, TextSize}; +use biome_js_syntax::{EmbeddingKind, JsFileSource, JsLanguage}; +use biome_rowan::TextSize;
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (13)
crates/biome_css_analyze/src/lint/suspicious/no_irregular_whitespace.rs(0 hunks)crates/biome_js_analyze/src/assist/source/use_sorted_keys.rs(3 hunks)crates/biome_js_analyze/src/lint/complexity/no_static_only_class.rs(1 hunks)crates/biome_js_analyze/src/lint/complexity/no_useless_constructor.rs(1 hunks)crates/biome_js_analyze/src/lint/complexity/no_useless_type_constraint.rs(1 hunks)crates/biome_js_analyze/src/lint/correctness/no_invalid_use_before_declaration.rs(1 hunks)crates/biome_js_analyze/src/lint/correctness/no_unused_imports.rs(1 hunks)crates/biome_js_analyze/src/lint/nursery/use_sorted_classes.rs(1 hunks)crates/biome_js_analyze/src/lint/style/no_restricted_imports.rs(1 hunks)crates/biome_js_analyze/src/lint/style/use_block_statements.rs(0 hunks)crates/biome_json_analyze/src/assist/source/use_sorted_keys.rs(2 hunks)crates/biome_ruledoc_utils/src/codeblock.rs(1 hunks)xtask/rules_check/src/lib.rs(11 hunks)
💤 Files with no reviewable changes (2)
- crates/biome_css_analyze/src/lint/suspicious/no_irregular_whitespace.rs
- crates/biome_js_analyze/src/lint/style/use_block_statements.rs
🧰 Additional context used
📓 Path-based instructions (3)
crates/biome_*_{syntax,parser,formatter,analyze,factory,semantic}/**
📄 CodeRabbit inference engine (CLAUDE.md)
Maintain the per-language crate structure: biome_{lang}_{syntax,parser,formatter,analyze,factory,semantic}
Files:
crates/biome_js_analyze/src/lint/complexity/no_useless_constructor.rscrates/biome_js_analyze/src/lint/complexity/no_useless_type_constraint.rscrates/biome_js_analyze/src/lint/correctness/no_invalid_use_before_declaration.rscrates/biome_js_analyze/src/assist/source/use_sorted_keys.rscrates/biome_js_analyze/src/lint/complexity/no_static_only_class.rscrates/biome_js_analyze/src/lint/nursery/use_sorted_classes.rscrates/biome_js_analyze/src/lint/correctness/no_unused_imports.rscrates/biome_json_analyze/src/assist/source/use_sorted_keys.rscrates/biome_js_analyze/src/lint/style/no_restricted_imports.rs
crates/biome_*/**
📄 CodeRabbit inference engine (CLAUDE.md)
Place core crates under /crates/biome_*/
Files:
crates/biome_js_analyze/src/lint/complexity/no_useless_constructor.rscrates/biome_ruledoc_utils/src/codeblock.rscrates/biome_js_analyze/src/lint/complexity/no_useless_type_constraint.rscrates/biome_js_analyze/src/lint/correctness/no_invalid_use_before_declaration.rscrates/biome_js_analyze/src/assist/source/use_sorted_keys.rscrates/biome_js_analyze/src/lint/complexity/no_static_only_class.rscrates/biome_js_analyze/src/lint/nursery/use_sorted_classes.rscrates/biome_js_analyze/src/lint/correctness/no_unused_imports.rscrates/biome_json_analyze/src/assist/source/use_sorted_keys.rscrates/biome_js_analyze/src/lint/style/no_restricted_imports.rs
**/*.rs
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Format all Rust source files before committing (just f)
Files:
crates/biome_js_analyze/src/lint/complexity/no_useless_constructor.rscrates/biome_ruledoc_utils/src/codeblock.rscrates/biome_js_analyze/src/lint/complexity/no_useless_type_constraint.rscrates/biome_js_analyze/src/lint/correctness/no_invalid_use_before_declaration.rscrates/biome_js_analyze/src/assist/source/use_sorted_keys.rscrates/biome_js_analyze/src/lint/complexity/no_static_only_class.rscrates/biome_js_analyze/src/lint/nursery/use_sorted_classes.rscrates/biome_js_analyze/src/lint/correctness/no_unused_imports.rscrates/biome_json_analyze/src/assist/source/use_sorted_keys.rsxtask/rules_check/src/lib.rscrates/biome_js_analyze/src/lint/style/no_restricted_imports.rs
🧠 Learnings (16)
📓 Common learnings
Learnt from: CR
PR: biomejs/biome#0
File: CONTRIBUTING.md:0-0
Timestamp: 2025-09-07T17:35:00.517Z
Learning: Update documentation when features change; for rules/assists/options, use inline Rust rustdoc
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2025-09-10T08:05:22.867Z
Learning: Applies to crates/biome_analyze/**/src/{lint,assist}/**/*.rs : Code blocks in rule docs must specify language; invalid snippets require `expect_diagnostic`; use `options`/`full_options`/`use_options` markers as appropriate
📚 Learning: 2025-09-10T08:05:22.867Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2025-09-10T08:05:22.867Z
Learning: Applies to crates/biome_analyze/crates/biome_js_analyze/lib/src/{lint,assist}/**/*.rs : When banning globals (e.g., `noConsoleLog`), check the semantic model to avoid false positives from locally shadowed bindings
Applied to files:
crates/biome_js_analyze/src/lint/complexity/no_useless_constructor.rscrates/biome_js_analyze/src/lint/complexity/no_useless_type_constraint.rscrates/biome_js_analyze/src/lint/correctness/no_invalid_use_before_declaration.rscrates/biome_js_analyze/src/assist/source/use_sorted_keys.rscrates/biome_js_analyze/src/lint/complexity/no_static_only_class.rscrates/biome_js_analyze/src/lint/correctness/no_unused_imports.rscrates/biome_js_analyze/src/lint/style/no_restricted_imports.rs
📚 Learning: 2025-09-10T08:05:22.867Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2025-09-10T08:05:22.867Z
Learning: Applies to crates/biome_analyze/**/src/{lint,assist}/**/*.rs : Code blocks in rule docs must specify language; invalid snippets require `expect_diagnostic`; use `options`/`full_options`/`use_options` markers as appropriate
Applied to files:
crates/biome_ruledoc_utils/src/codeblock.rscrates/biome_js_analyze/src/lint/complexity/no_useless_type_constraint.rscrates/biome_js_analyze/src/lint/correctness/no_invalid_use_before_declaration.rscrates/biome_js_analyze/src/assist/source/use_sorted_keys.rscrates/biome_js_analyze/src/lint/nursery/use_sorted_classes.rscrates/biome_js_analyze/src/lint/correctness/no_unused_imports.rscrates/biome_json_analyze/src/assist/source/use_sorted_keys.rsxtask/rules_check/src/lib.rscrates/biome_js_analyze/src/lint/style/no_restricted_imports.rs
📚 Learning: 2025-09-10T08:05:22.867Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2025-09-10T08:05:22.867Z
Learning: Applies to crates/biome_analyze/**/src/{lint,assist}/**/*.rs : Avoid avoidable string allocations: prefer comparing `&str` or using `TokenText` over calling `to_string()`
Applied to files:
crates/biome_ruledoc_utils/src/codeblock.rs
📚 Learning: 2025-08-11T11:48:52.001Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_js_formatter/CONTRIBUTING.md:0-0
Timestamp: 2025-08-11T11:48:52.001Z
Learning: Applies to crates/biome_js_formatter/**/*.rs : Do not attempt to fix code: if a mandatory token/node is missing, return None instead
Applied to files:
crates/biome_ruledoc_utils/src/codeblock.rs
📚 Learning: 2025-09-07T17:35:00.517Z
Learnt from: CR
PR: biomejs/biome#0
File: CONTRIBUTING.md:0-0
Timestamp: 2025-09-07T17:35:00.517Z
Learning: Update documentation when features change; for rules/assists/options, use inline Rust rustdoc
Applied to files:
crates/biome_js_analyze/src/lint/complexity/no_useless_type_constraint.rscrates/biome_js_analyze/src/lint/correctness/no_invalid_use_before_declaration.rscrates/biome_js_analyze/src/assist/source/use_sorted_keys.rscrates/biome_js_analyze/src/lint/correctness/no_unused_imports.rscrates/biome_json_analyze/src/assist/source/use_sorted_keys.rs
📚 Learning: 2025-09-10T08:05:22.867Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2025-09-10T08:05:22.867Z
Learning: Applies to crates/biome_analyze/**/src/{lint,assist}/**/*.rs : In declare_lint_rule! macros, set `version: "next"` for new or updated rules
Applied to files:
crates/biome_js_analyze/src/lint/complexity/no_useless_type_constraint.rscrates/biome_js_analyze/src/lint/correctness/no_invalid_use_before_declaration.rscrates/biome_js_analyze/src/lint/style/no_restricted_imports.rs
📚 Learning: 2025-09-10T08:05:22.867Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2025-09-10T08:05:22.867Z
Learning: Applies to crates/biome_analyze/**/src/{lint,assist}/**/*.rs : Follow rule naming conventions: use `no<Concept>` to forbid and `use<Concept>` to mandate; prefer consistent prefixes (e.g., `noDuplicate<Concept>`, `useConsistent<Concept>`)
Applied to files:
crates/biome_js_analyze/src/lint/complexity/no_useless_type_constraint.rs
📚 Learning: 2025-09-10T08:05:22.867Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2025-09-10T08:05:22.867Z
Learning: Applies to crates/biome_analyze/**/src/{lint,assist}/**/*.rs : Documentation for rules: first paragraph must be a single line; include `## Examples` with `### Invalid` first then `### Valid`
Applied to files:
crates/biome_js_analyze/src/lint/complexity/no_useless_type_constraint.rscrates/biome_js_analyze/src/lint/correctness/no_invalid_use_before_declaration.rscrates/biome_js_analyze/src/assist/source/use_sorted_keys.rscrates/biome_js_analyze/src/lint/nursery/use_sorted_classes.rscrates/biome_js_analyze/src/lint/correctness/no_unused_imports.rscrates/biome_js_analyze/src/lint/style/no_restricted_imports.rs
📚 Learning: 2025-09-10T08:05:22.867Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2025-09-10T08:05:22.867Z
Learning: Applies to crates/biome_analyze/**/src/{lint,assist}/**/*.rs : Avoid deep indentation and panics; prefer `?`, `ok()?`, and combinators (`map`, `and_then`, `filter`) over nested `if let`/`unwrap`/`expect`
Applied to files:
crates/biome_js_analyze/src/lint/complexity/no_useless_type_constraint.rscrates/biome_js_analyze/src/lint/correctness/no_invalid_use_before_declaration.rscrates/biome_js_analyze/src/assist/source/use_sorted_keys.rscrates/biome_json_analyze/src/assist/source/use_sorted_keys.rs
📚 Learning: 2025-09-10T08:05:22.867Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2025-09-10T08:05:22.867Z
Learning: Applies to crates/biome_analyze/**/src/{lint,assist}/**/*.rs : If a rule returns a code action (implements `action`), add `fix_kind` in `declare_lint_rule!` and use `ctx.metadata().applicability()` when building the action
Applied to files:
crates/biome_js_analyze/src/lint/complexity/no_useless_type_constraint.rs
📚 Learning: 2025-08-11T11:50:12.090Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_js_type_info/CONTRIBUTING.md:0-0
Timestamp: 2025-08-11T11:50:12.090Z
Learning: Applies to crates/biome_js_type_info/src/**/*.rs : Use TypeData::Unknown for unimplemented inference and TypeData::UnknownKeyword for the explicit TypeScript unknown keyword; treat them semantically the same but keep them distinct for measurement
Applied to files:
crates/biome_js_analyze/src/lint/complexity/no_useless_type_constraint.rs
📚 Learning: 2025-08-11T11:50:12.090Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_js_type_info/CONTRIBUTING.md:0-0
Timestamp: 2025-08-11T11:50:12.090Z
Learning: Applies to crates/biome_js_type_info/src/**/*.rs : Represent links between types using TypeReference (not Arc) to avoid cross-module retention and recursive structures; store type data in linear vectors
Applied to files:
crates/biome_js_analyze/src/lint/complexity/no_useless_type_constraint.rs
📚 Learning: 2025-08-11T11:46:05.836Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_diagnostics/CONTRIBUTING.md:0-0
Timestamp: 2025-08-11T11:46:05.836Z
Learning: Applies to crates/biome_diagnostics/**/*.rs : Use helper advice types from biome_diagnostics::v2 (CodeFrameAdvice, CommandAdvice, DiffAdvice, LogAdvice) when suitable
Applied to files:
crates/biome_js_analyze/src/assist/source/use_sorted_keys.rscrates/biome_json_analyze/src/assist/source/use_sorted_keys.rs
📚 Learning: 2025-09-10T08:05:22.867Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2025-09-10T08:05:22.867Z
Learning: Applies to crates/biome_analyze/crates/biome_js_analyze/tests/quick_test.rs : Quick test: edit `tests/quick_test.rs`, remove or comment `#[ignore]`, set `SOURCE`, and adjust `RuleFilter`
Applied to files:
crates/biome_js_analyze/src/assist/source/use_sorted_keys.rs
📚 Learning: 2025-09-10T08:05:22.867Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2025-09-10T08:05:22.867Z
Learning: Applies to crates/biome_analyze/**/src/{lint,assist}/**/*.rs : Set the `language` field in `declare_lint_rule!` to the primary language (`js`, `jsx`, `ts`, or `tsx`) the rule targets
Applied to files:
crates/biome_js_analyze/src/lint/correctness/no_unused_imports.rscrates/biome_js_analyze/src/lint/style/no_restricted_imports.rs
🧬 Code graph analysis (2)
crates/biome_ruledoc_utils/src/codeblock.rs (1)
crates/biome_service/src/file_handlers/mod.rs (1)
from_extension(176-178)
xtask/rules_check/src/lib.rs (3)
crates/biome_service/src/file_handlers/css.rs (1)
parse(397-438)crates/biome_service/src/file_handlers/json.rs (1)
parse(381-396)crates/biome_css_parser/src/lib.rs (1)
parse_css(27-30)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (23)
- GitHub Check: Documentation
- GitHub Check: Check Dependencies
- GitHub Check: Test (depot-windows-2022-16)
- GitHub Check: Test (depot-ubuntu-24.04-arm-16)
- GitHub Check: Lint project (depot-ubuntu-24.04-arm-16)
- GitHub Check: Lint project (depot-windows-2022)
- GitHub Check: Bench (biome_module_graph)
- GitHub Check: Bench (biome_package)
- GitHub Check: Bench (biome_html_parser)
- GitHub Check: Bench (biome_configuration)
- GitHub Check: Bench (biome_html_formatter)
- GitHub Check: Bench (biome_graphql_formatter)
- GitHub Check: Bench (biome_graphql_parser)
- GitHub Check: Bench (biome_css_analyze)
- GitHub Check: Bench (biome_json_analyze)
- GitHub Check: Bench (biome_js_formatter)
- GitHub Check: Bench (biome_css_formatter)
- GitHub Check: Bench (biome_json_formatter)
- GitHub Check: Bench (biome_css_parser)
- GitHub Check: Bench (biome_json_parser)
- GitHub Check: Bench (biome_js_analyze)
- GitHub Check: Bench (biome_js_parser)
- GitHub Check: autofix
🔇 Additional comments (17)
crates/biome_ruledoc_utils/src/codeblock.rs (2)
141-145: Early bail on unknown tokens: nice tightening.This prevents silently accepting typos in attributes/tags. Good call.
160-161: Do we still require a language tag?With the late “unknown tag” check gone, a block with only attributes (e.g.
ignore) now parses without a language. If policy is “code blocks must specify language” (per CONTRIBUTING), add a final guard.Apply this diff:
} - Ok(code_block) + if code_block.document_file_source() == DocumentFileSource::Unknown { + bail!("Missing or unsupported language tag in code block"); + } + Ok(code_block)crates/biome_js_analyze/src/lint/nursery/use_sorted_classes.rs (1)
63-63: Doc example now parses (self‑closing JSX) — LGTMConsistent with the other JSX example. Nice tidy‑up.
crates/biome_js_analyze/src/lint/complexity/no_useless_type_constraint.rs (1)
61-61: Closed fence fixes the snippet — LGTMThis removes a silent parse failure in the ruledoc block.
crates/biome_js_analyze/src/lint/complexity/no_useless_constructor.rs (1)
59-72: Switching the example totsis correct hereProtected constructor requires TS; example now parses. All good.
crates/biome_json_analyze/src/assist/source/use_sorted_keys.rs (2)
49-56: Useexpect_difffor assists — spot onAlso removed trailing comma, so JSON parses under stricter checks.
68-75: Consistentexpect_diffin lexicographic example — LGTMMatches the action’s behaviour and keeps the docs executable.
crates/biome_js_analyze/src/lint/correctness/no_invalid_use_before_declaration.rs (1)
27-27: Useletinstead ofconst— correct
const x;is invalid;let x;makes the invalid‑usage example parseable.crates/biome_js_analyze/src/lint/style/no_restricted_imports.rs (1)
264-265: Import sample normalised — LGTMKeeps the example syntactically sound under the stricter ruledoc parser.
crates/biome_js_analyze/src/lint/correctness/no_unused_imports.rs (1)
69-75: Great: added TS case showing comment handlingDemonstrates the “associated comments” behaviour clearly. Looks good.
crates/biome_js_analyze/src/lint/complexity/no_static_only_class.rs (1)
37-45: TS fence for TS‑only example — LGTMThe class with
readonlyis TS; fence matches content.crates/biome_js_analyze/src/assist/source/use_sorted_keys.rs (2)
103-111: LGTM: options + expect_diff pairing is correct.Natural order example now asserts a produced fix. Looks right.
122-130: LGTM: options + expect_diff pairing is correct.Lexicographic order example also asserts a fix. All good.
xtask/rules_check/src/lib.rs (4)
315-319: LGTM: CSS parser accommodates common ruledoc patterns.Enabling CSS Modules and Tailwind directives here should eliminate false parse errors in docs.
548-566: LGTM: synthetic JSON wrapper is correctGood layering of
{linter|assist}.{rules|actions}.{group}.{rule}and preservation of BOM/EOF.
579-582: LGTM: precise span offset adjustmentThe zipped/checked subtraction guards against underflow; neat.
606-622: LGTM: deserialisation diagnostics surfaced clearlyCollecting and printing before bailing makes failures actionable.
CodSpeed Performance ReportMerging #7544 will not alter performanceComparing Summary
|
Summary
Several ruledoc code blocks still contained parse errors, which were silently ignored by
just lint-rules. This tightens the validation and resolves parse errors in various rule documentation examples.Test Plan
just lint-rulesshould still be green.Docs
N/A