-
-
Notifications
You must be signed in to change notification settings - Fork 501
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
fix(linter): unicorn/switch-case-braces mangles code when applying fix #8758
fix(linter): unicorn/switch-case-braces mangles code when applying fix #8758
Conversation
How to use the Graphite Merge QueueAdd either label to this PR to merge it via the merge queue:
You must have a Graphite account in order to use the merge queue. Sign up using this link. An organization admin has enabled the Graphite Merge Queue in this repository. Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue. |
CodSpeed Performance ReportMerging #8758 will not alter performanceComparing Summary
|
You could use |
## [0.15.9] - 2025-02-01 ### Features - 1a41181 linter: Implement `eslint/prefer-object-spread` (#8216) (tbashiyy) - adb8ebd linter: Implement no-useless-call rule (#8789) (keita hino) - 3790933 linter: Add vitest/prefer-lowercase-title rule (#8152) (Tyler Earls) - e8e6917 linter: Unicorn/switch-cases-braces support options (#8704) (1zumii) ### Bug Fixes - 8ce21d1 linter: Can't disable `no-nested-ternary` rule anymore (#8600) (dalaoshu) - e929f26 linter: Output `LintCommandInfo` for `CliRunResult::LintNoFilesFound` (#8714) (Sysix) - 4f30a17 linter: Unicorn/switch-case-braces mangles code when applying fix (#8758) (Tyler Earls) - 9cc9d5f linter: `ignorePatterns` does not work when files are provided as command arguments (#8590) (dalaoshu) - 1de6f85 linter: No-lone-blocks erroring on block statements containing comments (#8720) (Tyler Earls) - 77ef61a linter: Fix diagnostic spans for `oxc/no-async-await` (#8721) (camchenry) - f15bdce linter: Catch `Promise` in `typescript/array-type` rule (#8702) (Rintaro Itokawa) - 5041cb3 vscode: Fix commands by reverting commit `259a47b` (#8819) (Alexander S.) ### Performance - d318238 linter: Remove sorting of rules in cache (#8718) (camchenry) ### Documentation - 57b7ca8 ast: Add documentation for all remaining JS AST methods (#8820) (Cam McHenry) ### Refactor - c2fdfc4 linter: Correctly handle loose options for `eslint/eqeqeq` (#8798) (dalaoshu) - 0aeaedd linter: Support loose options for `eslint/eqeqeq` (#8790) (dalaoshu) - 194a5ff linter: Remove `LintResult` (#8712) (Sysix) - 4a2f2a9 linter: Move default `all_rules` output to trait (#8710) (Sysix) - 741fb40 linter: Move stdout outside LintRunner (#8694) (Sysix) - 10e5920 linter: Move finishing default diagnostic message to `GraphicalReporter` (#8683) (Sysix) - 9731c56 oxlint: Move output from `CliRunResult::InvalidOption` to outside and use more Enums for different invalid options (#8778) (Sysix) - fe45bee oxlint: Create different `CliRunResult` instead of passing `ExitCode` to it (#8777) (Sysix) - 2378fef oxlint: Move ConfigFileInit output outside CliRunResult, exit code 1 when it fails (#8776) (Sysix) - f4cecb5 oxlint: Remove unused `CliRunResult::PathNotFound` (#8775) (Sysix) ### Testing - ad35e82 linter: Use snapshot testing instead of LintResult (#8711) (Sysix) - bf895eb linter: Add diagnostic format test snapshots (#8696) (Alexander S.) - 34d3d72 linter: Add snapshot tester for cli (#8695) (Sysix) - 0bf2bcf oxlint: Test two real rules with same name but from different plugins (#8821) (dalaoshu) - 2b83b71 oxlint: Improve disabling "no-nested-ternary" tests (#8814) (Alexander S.) - 45648e7 oxlint: Fix InvalidOptionTsConfig tests for windows (#8791) (Alexander S.) - 48bfed9 oxlint: Ignore windows path mismatch (Boshen) - 6f4a023 oxlint: Remove "--print-config" test (#8792) (Sysix) - 55c2025 oxlint: Add `CliRunResult` to snapshot (#8780) (Sysix) Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
Got it, thanks for the info! |
Fixes #8491.
Essentially, the fix was ensuring that we track the indentation of a
StatementExpression
orBreakStatement
when we apply a fix for this lint rule, and to make sure we add these statements on a new line with the proper indentation. I also made sure we're indenting the closing case brackets correctly.To do this, I added a
get_preceding_indent_str
fn to theast_utils
that handles getting the preceding indentation of aSpan
in asource_text
&str. It returns an Option in case no indentation is found, or if the statement is not the only one on a given line.This new fn was useful when addressing this particular bug, but I figure it might be useful for other fixer use cases, too. I added some documentation for this fn for clarity.