Skip to content

Commit 744ef52

Browse files
fix(linter): correct array-type handling of default: 'array-simple' (#12607)
Fixes #12605
1 parent a6ff113 commit 744ef52

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

crates/oxc_linter/src/rules/typescript/array_type.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -511,7 +511,7 @@ fn is_simple_type(ts_type: &TSType) -> bool {
511511
if node.type_arguments.is_some() {
512512
return false;
513513
}
514-
if let TSTypeName::IdentifierReference(_) = &node.type_name {
514+
if node.type_name.is_identifier() || node.type_name.is_qualified_name() {
515515
return true;
516516
}
517517
return false;
@@ -970,9 +970,17 @@ export const test = testFn<{name: string}>({name: 'test'});",
970970
const instance = new MyClass<number>(42);",
971971
Some(serde_json::json!([{"default":"generic"}])),
972972
),
973+
// https://github.com/oxc-project/oxc/issues/12605
974+
("let a: factories.User[] = [];", Some(serde_json::json!([{"default":"array-simple"}]))),
975+
("let a: factories.TT.User[] = [];", Some(serde_json::json!([{"default":"array-simple"}]))),
976+
(
977+
"let z: readonly factories.User[] = [];",
978+
Some(serde_json::json!([{"readonly":"array-simple"}])),
979+
),
973980
];
974981

975982
let fail = vec![
983+
("let a: factories.User[] = [];", Some(serde_json::json!([{"default":"generic"}]))),
976984
("let a: Array<number> = [];", Some(serde_json::json!([{"default":"array"}]))),
977985
("let a: Array<string | number> = [];", Some(serde_json::json!([{"default":"array"}]))),
978986
("let a: ReadonlyArray<number> = [];", Some(serde_json::json!([{"default":"array"}]))),

crates/oxc_linter/src/snapshots/typescript_array_type.snap

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
---
22
source: crates/oxc_linter/src/tester.rs
33
---
4+
⚠ typescript-eslint(array-type): Array type using 'factories.User[]' is forbidden. Use 'Array<factories.User>' instead.
5+
╭─[array_type.ts:1:8]
6+
1 │ let a: factories.User[] = [];
7+
· ────────────────
8+
╰────
9+
help: Replace `factories.User[]` with `Array<factories.User>`.
10+
411
⚠ typescript-eslint(array-type): Array type using 'Array<number>' is forbidden. Use 'number[]' instead.
512
╭─[array_type.ts:1:8]
613
1 │ let a: Array<number> = [];

0 commit comments

Comments
 (0)