Skip to content

Commit 050047f

Browse files
authored
fix(lint/useNamingConvention): check property shorthand (#6480)
1 parent 4209030 commit 050047f

File tree

9 files changed

+65
-162
lines changed

9 files changed

+65
-162
lines changed

.changeset/little-things-brush.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"@biomejs/biome": patch
3+
---
4+
5+
Fixed [#6371](https://github.com/biomejs/biome/issues/6371).
6+
[useNamingConvention](https://biomejs.dev/linter/rules/use-naming-convention/) now checks the string case of objects' property shorthand.

crates/biome_js_analyze/src/lint/style/use_naming_convention.rs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,11 @@ use biome_js_semantic::{CanBeImportedExported, SemanticModel};
2323
use biome_js_syntax::{
2424
AnyJsClassMember, AnyJsObjectMember, AnyJsVariableDeclaration, AnyTsTypeMember, JsFileSource,
2525
JsIdentifierBinding, JsLiteralExportName, JsLiteralMemberName, JsMethodModifierList,
26-
JsModuleItemList, JsPrivateClassMemberName, JsPropertyModifierList, JsSyntaxKind,
27-
JsSyntaxToken, JsVariableDeclarator, JsVariableKind, Modifier, TsDeclarationModule,
28-
TsIdentifierBinding, TsIndexSignatureModifierList, TsLiteralEnumMemberName,
29-
TsMethodSignatureModifierList, TsPropertySignatureModifierList, TsTypeParameterName,
26+
JsModuleItemList, JsPrivateClassMemberName, JsPropertyModifierList,
27+
JsShorthandPropertyObjectMember, JsSyntaxKind, JsSyntaxToken, JsVariableDeclarator,
28+
JsVariableKind, Modifier, TsDeclarationModule, TsIdentifierBinding,
29+
TsIndexSignatureModifierList, TsLiteralEnumMemberName, TsMethodSignatureModifierList,
30+
TsPropertySignatureModifierList, TsTypeParameterName,
3031
binding_ext::{AnyJsBindingDeclaration, AnyJsIdentifierBinding},
3132
};
3233
use biome_rowan::{
@@ -1002,6 +1003,7 @@ declare_node_union! {
10021003
pub AnyIdentifierBindingLike =
10031004
JsIdentifierBinding |
10041005
JsLiteralMemberName |
1006+
JsShorthandPropertyObjectMember |
10051007
JsPrivateClassMemberName |
10061008
JsLiteralExportName |
10071009
TsIdentifierBinding |
@@ -1013,6 +1015,7 @@ impl AnyIdentifierBindingLike {
10131015
match self {
10141016
Self::JsIdentifierBinding(binding) => binding.name_token(),
10151017
Self::JsLiteralMemberName(member_name) => member_name.value(),
1018+
Self::JsShorthandPropertyObjectMember(member_name) => member_name.name()?.value_token(),
10161019
Self::JsPrivateClassMemberName(member_name) => member_name.id_token(),
10171020
Self::JsLiteralExportName(export_name) => export_name.value(),
10181021
Self::TsIdentifierBinding(binding) => binding.name_token(),
@@ -1038,6 +1041,7 @@ impl TryFrom<&AnyIdentifierBindingLike> for AnyJsIdentifierBinding {
10381041
Ok(Self::TsTypeParameterName(binding.clone()))
10391042
}
10401043
AnyIdentifierBindingLike::JsLiteralMemberName(_)
1044+
| AnyIdentifierBindingLike::JsShorthandPropertyObjectMember(_)
10411045
| AnyIdentifierBindingLike::JsPrivateClassMemberName(_)
10421046
| AnyIdentifierBindingLike::JsLiteralExportName(_) => Err(()),
10431047
}
@@ -1358,6 +1362,9 @@ impl Selector {
13581362
None
13591363
}
13601364
}
1365+
AnyIdentifierBindingLike::JsShorthandPropertyObjectMember(_) => {
1366+
Some(Kind::ObjectLiteralProperty.into())
1367+
}
13611368
AnyIdentifierBindingLike::JsPrivateClassMemberName(member_name) => {
13621369
Self::from_class_member(&member_name.parent::<AnyJsClassMember>()?)
13631370
}

crates/biome_js_analyze/tests/specs/style/useNamingConvention/invalidLocalVariable.js.snap

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
---
22
source: crates/biome_js_analyze/tests/spec_tests.rs
33
expression: invalidLocalVariable.js
4-
snapshot_kind: text
54
---
65
# Input
76
```js
@@ -147,3 +146,18 @@ invalidLocalVariable.js:12:11 lint/style/useNamingConvention FIXABLE ━━━
147146
148147
149148
```
149+
150+
```
151+
invalidLocalVariable.js:15:9 lint/style/useNamingConvention ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
152+
153+
i This object property name should be in camelCase.
154+
155+
13console.log(a_var);
156+
14return {
157+
> 15 │ a_var // comment
158+
│ ^^^^^
159+
16 │ };
160+
17 │ }
161+
162+
163+
```
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const SERVICE_NAME = "my-service" as const;
2+
3+
const SERVICE = {
4+
SERVICE_NAME,
5+
} as const;
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
---
2+
source: crates/biome_js_analyze/tests/spec_tests.rs
3+
expression: invalidPorpertyShorthyand.ts
4+
---
5+
# Input
6+
```ts
7+
const SERVICE_NAME = "my-service" as const;
8+
9+
const SERVICE = {
10+
SERVICE_NAME,
11+
} as const;
12+
13+
```
14+
15+
# Diagnostics
16+
```
17+
invalidPorpertyShorthyand.ts:4:3 lint/style/useNamingConvention ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
18+
19+
i This object property name should be in camelCase.
20+
21+
3 │ const SERVICE = {
22+
> 4SERVICE_NAME,
23+
^^^^^^^^^^^^
24+
5} as const;
25+
6 │
26+
27+
28+
```

crates/biome_json_analyze/tests/specs/source/useSortedKeys/invalid.json.snap.new

Lines changed: 0 additions & 40 deletions
This file was deleted.

crates/biome_json_analyze/tests/specs/suspicious/noDuplicateObjectKeys/invalid.json.snap.new

Lines changed: 0 additions & 90 deletions
This file was deleted.

crates/biome_json_analyze/tests/specs/suspicious/noDuplicateObjectKeys/valid.json.snap.new

Lines changed: 0 additions & 13 deletions
This file was deleted.

crates/biome_json_analyze/tests/suppression/source/useSortedKeys/unsorted.jsonc.snap.new

Lines changed: 0 additions & 14 deletions
This file was deleted.

0 commit comments

Comments
 (0)