Skip to content

Commit 48c0402

Browse files
author
Hiroki Okada
committed
fix(noUnusedImports): detect JSDoc tags on object properties
1 parent 93182ea commit 48c0402

File tree

10 files changed

+95
-6
lines changed

10 files changed

+95
-6
lines changed

.changeset/silent-bottles-film.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
---
2+
"@biomejs/biome": patch
3+
---
4+
5+
Fixed [#8300](https://github.com/biomejs/biome/issues/8300): [`noUnusedImports`](https://biomejs.dev/linter/rules/no-unused-imports/) now detects JSDoc tags on object properties.
6+
7+
```js
8+
import type LinkOnObjectProperty from "mod";
9+
10+
const testLinkOnObjectProperty = {
11+
/**
12+
* {@link LinkOnObjectProperty}
13+
*/
14+
property: 0,
15+
};
16+
```

crates/biome_js_analyze/src/lint/correctness/no_unused_imports.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ use biome_js_factory::make::{js_identifier_binding, js_module, js_module_item_li
1818
use biome_js_semantic::{ReferencesExtensions, SemanticModel};
1919
use biome_js_syntax::{
2020
AnyJsBinding, AnyJsClassMember, AnyJsCombinedSpecifier, AnyJsDeclaration, AnyJsImportClause,
21-
AnyJsNamedImportSpecifier, AnyTsTypeMember, JsExport, JsLanguage, JsNamedImportSpecifiers,
22-
JsStaticMemberAssignment, JsSyntaxNode, T, TsEnumMember,
21+
AnyJsNamedImportSpecifier, AnyJsObjectMember, AnyTsTypeMember, JsExport, JsLanguage,
22+
JsNamedImportSpecifiers, JsStaticMemberAssignment, JsSyntaxNode, T, TsEnumMember,
2323
};
2424
use biome_jsdoc_comment::JsdocComment;
2525
use biome_rowan::{
@@ -133,7 +133,7 @@ struct JsDocTypeCollectorVisitor {
133133
}
134134

135135
declare_node_union! {
136-
pub AnyJsWithTypeReferencingJsDoc = AnyJsDeclaration | AnyJsClassMember | AnyTsTypeMember | TsEnumMember | JsExport | JsStaticMemberAssignment
136+
pub AnyJsWithTypeReferencingJsDoc = AnyJsDeclaration | AnyJsClassMember | AnyJsObjectMember | AnyTsTypeMember | TsEnumMember | JsExport | JsStaticMemberAssignment
137137
}
138138

139139
impl Visitor for JsDocTypeCollectorVisitor {

crates/biome_js_analyze/tests/specs/correctness/noUnusedImports/issue_4677_jsdoc.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import TypeOnGlobalVariable from "mod";
99
import TypeOnFunctionVariable from "mod";
1010
import TypeOnTypeDef from "mod";
1111
import TypeOnExportedFunction from "mod";
12+
import TypeOnObjectProperty from "mod";
1213

1314
/**
1415
* @typedef {TypeOnTypeDef} TestTypeOnTypeDef
@@ -58,3 +59,10 @@ function testTypeOnFunctionVariable() {
5859
*/
5960
let testTypeOnFunctionVariable;
6061
}
62+
63+
const testTypeOnObjectProperty = {
64+
/**
65+
* {@linkcode TypeOnObjectProperty}
66+
*/
67+
property: 0,
68+
};

crates/biome_js_analyze/tests/specs/correctness/noUnusedImports/issue_4677_jsdoc.js.snap

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import TypeOnGlobalVariable from "mod";
1515
import TypeOnFunctionVariable from "mod";
1616
import TypeOnTypeDef from "mod";
1717
import TypeOnExportedFunction from "mod";
18+
import TypeOnObjectProperty from "mod";
1819
1920
/**
2021
* @typedef {TypeOnTypeDef} TestTypeOnTypeDef
@@ -65,4 +66,11 @@ function testTypeOnFunctionVariable() {
6566
let testTypeOnFunctionVariable;
6667
}
6768
69+
const testTypeOnObjectProperty = {
70+
/**
71+
* {@linkcode TypeOnObjectProperty}
72+
*/
73+
property: 0,
74+
};
75+
6876
```

crates/biome_js_analyze/tests/specs/correctness/noUnusedImports/issue_4677_tsdoc.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ import type LinkOnInterfaceIndexer from "mod";
2020
import type LinkOnEnum from "mod";
2121
import type LinkOnEnumMember from "mod";
2222

23+
import type LinkOnObjectProperty from "mod";
24+
2325

2426
/**
2527
* {@link LinkOnFunction}
@@ -108,4 +110,11 @@ enum TestLinkOnEnumMember {
108110
* {@link LinkOnEnumMember}
109111
*/
110112
member
111-
}
113+
}
114+
115+
const testLinkOnObjectProperty = {
116+
/**
117+
* {@link LinkOnObjectProperty}
118+
*/
119+
property: 0,
120+
};

crates/biome_js_analyze/tests/specs/correctness/noUnusedImports/issue_4677_tsdoc.ts.snap

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ import type LinkOnInterfaceIndexer from "mod";
2626
import type LinkOnEnum from "mod";
2727
import type LinkOnEnumMember from "mod";
2828
29+
import type LinkOnObjectProperty from "mod";
30+
2931
3032
/**
3133
* {@link LinkOnFunction}
@@ -115,4 +117,12 @@ enum TestLinkOnEnumMember {
115117
*/
116118
member
117119
}
120+
121+
const testLinkOnObjectProperty = {
122+
/**
123+
* {@link LinkOnObjectProperty}
124+
*/
125+
property: 0,
126+
};
127+
118128
```

crates/biome_js_analyze/tests/specs/correctness/noUnusedImports/issue_7876_tsdoc_linkcode.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ import type LinkOnInterfaceIndexer from "mod";
2020
import type LinkOnEnum from "mod";
2121
import type LinkOnEnumMember from "mod";
2222

23+
import type LinkOnObjectProperty from "mod";
24+
2325

2426
/**
2527
* {@linkcode LinkOnFunction}
@@ -108,4 +110,11 @@ enum TestLinkOnEnumMember {
108110
* {@linkcode LinkOnEnumMember}
109111
*/
110112
member
111-
}
113+
}
114+
115+
const testLinkOnObjectProperty = {
116+
/**
117+
* {@linkcode LinkOnObjectProperty}
118+
*/
119+
property: 0,
120+
};

crates/biome_js_analyze/tests/specs/correctness/noUnusedImports/issue_7876_tsdoc_linkcode.ts.snap

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ import type LinkOnInterfaceIndexer from "mod";
2626
import type LinkOnEnum from "mod";
2727
import type LinkOnEnumMember from "mod";
2828
29+
import type LinkOnObjectProperty from "mod";
30+
2931
3032
/**
3133
* {@linkcode LinkOnFunction}
@@ -115,4 +117,12 @@ enum TestLinkOnEnumMember {
115117
*/
116118
member
117119
}
120+
121+
const testLinkOnObjectProperty = {
122+
/**
123+
* {@linkcode LinkOnObjectProperty}
124+
*/
125+
property: 0,
126+
};
127+
118128
```

crates/biome_js_analyze/tests/specs/correctness/noUnusedImports/issue_7876_tsdoc_linkplain.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ import type LinkOnInterfaceIndexer from "mod";
2020
import type LinkOnEnum from "mod";
2121
import type LinkOnEnumMember from "mod";
2222

23+
import type LinkOnObjectProperty from "mod";
24+
2325

2426
/**
2527
* {@linkplain LinkOnFunction}
@@ -108,4 +110,11 @@ enum TestLinkOnEnumMember {
108110
* {@linkplain LinkOnEnumMember}
109111
*/
110112
member
111-
}
113+
}
114+
115+
const testLinkOnObjectProperty = {
116+
/**
117+
* {@linkplain LinkOnObjectProperty}
118+
*/
119+
property: 0,
120+
};

crates/biome_js_analyze/tests/specs/correctness/noUnusedImports/issue_7876_tsdoc_linkplain.ts.snap

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ import type LinkOnInterfaceIndexer from "mod";
2626
import type LinkOnEnum from "mod";
2727
import type LinkOnEnumMember from "mod";
2828
29+
import type LinkOnObjectProperty from "mod";
30+
2931
3032
/**
3133
* {@linkplain LinkOnFunction}
@@ -115,4 +117,12 @@ enum TestLinkOnEnumMember {
115117
*/
116118
member
117119
}
120+
121+
const testLinkOnObjectProperty = {
122+
/**
123+
* {@linkplain LinkOnObjectProperty}
124+
*/
125+
property: 0,
126+
};
127+
118128
```

0 commit comments

Comments
 (0)