Skip to content

Commit 4396496

Browse files
authored
fix(migrate): preserve trivia in recommended migration (#10734)
1 parent bd2364e commit 4396496

5 files changed

Lines changed: 59 additions & 5 deletions

File tree

.changeset/sad-signs-brush.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@biomejs/biome": patch
3+
---
4+
5+
Fixed [#10708](https://github.com/biomejs/biome/issues/10708): `biome migrate` now preserves trivia when migrating the deprecated `recommended` option to `preset`.

crates/biome_cli/tests/snapshots/main_cases_migrate_v2/should_migrate_nested_config.snap

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ expression: redactor(content)
2828
i Configuration file can be updated.
2929
3030
- {·"linter":·{·"rules":·{·"recommended"true·}·}·}
31-
+ {·"root"false,"linter":·{·"rules":·{·"preset"·:"none"·}·}·}
31+
+ {·"root"false,"linter":·{·"rules":·{·"preset""none"·}·}·}
3232
3333
3434
```
@@ -39,7 +39,7 @@ expression: redactor(content)
3939
i Configuration file can be updated.
4040
4141
- {·"linter":·{·"rules":·{·"recommended"true·}·}·}
42-
+ {·"linter":·{·"rules":·{·"preset"·:"none"·}·}·}
42+
+ {·"linter":·{·"rules":·{·"preset""none"·}·}·}
4343
4444
4545
```
@@ -50,7 +50,7 @@ expression: redactor(content)
5050
i Configuration file can be updated.
5151
5252
- {·"linter":·{·"rules":·{·"recommended"true·}·}·}
53-
+ {·"root"false,"linter":·{·"rules":·{·"preset"·:"none"·}·}·}
53+
+ {·"root"false,"linter":·{·"rules":·{·"preset""none"·}·}·}
5454
5555
5656
```

crates/biome_migrate/src/analyzers/recommended.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,12 +75,12 @@ impl Rule for Recommended {
7575
json_member_name(
7676
json_string_literal("preset")
7777
.with_leading_trivia_pieces(name.leading_trivia().pieces())
78-
.with_trailing_trivia_pieces(name.leading_trivia().pieces()),
78+
.with_trailing_trivia_pieces(name.trailing_trivia().pieces()),
7979
)
8080
.into(),
8181
token(T![:])
8282
.with_leading_trivia_pieces(node.colon_token().ok()?.leading_trivia().pieces())
83-
.with_leading_trivia_pieces(node.colon_token().ok()?.trailing_trivia().pieces()),
83+
.with_trailing_trivia_pieces(node.colon_token().ok()?.trailing_trivia().pieces()),
8484
AnyJsonValue::JsonStringValue(new_value.clone()),
8585
);
8686

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"linter": {
3+
"rules": {
4+
// keep this comment before the key
5+
"recommended" /* keep this comment after the key */: true
6+
}
7+
}
8+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
---
2+
source: crates/biome_migrate/tests/spec_tests.rs
3+
expression: trivia.jsonc
4+
---
5+
# Input
6+
```json
7+
{
8+
"linter": {
9+
"rules": {
10+
// keep this comment before the key
11+
"recommended" /* keep this comment after the key */: true
12+
}
13+
}
14+
}
15+
16+
```
17+
18+
# Diagnostics
19+
```
20+
trivia.jsonc:5:7 migrate FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
21+
22+
! The recommended option is deprecated.
23+
24+
3 │ "rules": {
25+
4// keep this comment before the key
26+
> 5"recommended" /* keep this comment after the key */: true
27+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
28+
6}
29+
7 │ }
30+
31+
i Safe fix: Use the new preset field instead.
32+
33+
3 3 │ "rules": {
34+
4 4// keep this comment before the key
35+
5- ······"recommended"·/*·keep·this·comment·after·the·key·*/true
36+
5+ ······"preset"·/*·keep·this·comment·after·the·key·*/"recommended"
37+
6 6}
38+
7 7 │ }
39+
40+
41+
```

0 commit comments

Comments
 (0)