Skip to content

Commit b36dc92

Browse files
committed
refactor(linter): refactor large arrays to reduce binary size (#12603)
This is not successful but still a good change? ``` just oxlint ls -l ./target/release/oxlint ``` 6794656 bytes -> 6794592 bytes part of #9998
1 parent 5642b29 commit b36dc92

File tree

4 files changed

+51
-49
lines changed

4 files changed

+51
-49
lines changed

crates/oxc_linter/src/rules/jsx_a11y/role_has_required_aria_props.rs

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ use oxc_ast::{
55
use oxc_diagnostics::OxcDiagnostic;
66
use oxc_macros::declare_oxc_lint;
77
use oxc_span::Span;
8-
use phf::{phf_map, phf_set};
98

109
use crate::{AstNode, context::LintContext, rule::Rule, utils::has_jsx_prop_ignore_case};
1110

@@ -44,18 +43,21 @@ declare_oxc_lint!(
4443
correctness
4544
);
4645

47-
static ROLE_TO_REQUIRED_ARIA_PROPS: phf::Map<&'static str, phf::Set<&'static str>> = phf_map! {
48-
"checkbox" => phf_set!{"aria-checked"},
49-
"radio" => phf_set!{"aria-checked"},
50-
"menuitemcheckbox" => phf_set!{"aria-checked"},
51-
"menuitemradio" => phf_set!{"aria-checked"},
52-
"combobox" => phf_set!{"aria-controls", "aria-expanded"},
53-
"tab" => phf_set!{"aria-selected"},
54-
"slider" => phf_set!{"aria-valuemax", "aria-valuemin", "aria-valuenow"},
55-
"scrollbar" => phf_set!{"aria-valuemax", "aria-valuemin", "aria-valuenow", "aria-orientation", "aria-controls"},
56-
"heading" => phf_set!{"aria-level"},
57-
"option" => phf_set!{"aria-selected"},
58-
};
46+
static ROLE_TO_REQUIRED_ARIA_PROPS: &[(&str, &[&str])] = &[
47+
("checkbox", &["aria-checked"]),
48+
("combobox", &["aria-controls", "aria-expanded"]),
49+
("heading", &["aria-level"]),
50+
("menuitemcheckbox", &["aria-checked"]),
51+
("menuitemradio", &["aria-checked"]),
52+
("option", &["aria-selected"]),
53+
("radio", &["aria-checked"]),
54+
(
55+
"scrollbar",
56+
&["aria-valuemax", "aria-valuemin", "aria-valuenow", "aria-orientation", "aria-controls"],
57+
),
58+
("slider", &["aria-valuemax", "aria-valuemin", "aria-valuenow"]),
59+
("tab", &["aria-selected"]),
60+
];
5961

6062
impl Rule for RoleHasRequiredAriaProps {
6163
fn run<'a>(&self, node: &AstNode<'a>, ctx: &LintContext<'a>) {
@@ -71,8 +73,8 @@ impl Rule for RoleHasRequiredAriaProps {
7173
};
7274
let roles = role_values.value.split_whitespace();
7375
for role in roles {
74-
if let Some(props) = ROLE_TO_REQUIRED_ARIA_PROPS.get(role) {
75-
for prop in props {
76+
if let Some(props) = ROLE_TO_REQUIRED_ARIA_PROPS.iter().find(|r| r.0 == role) {
77+
for prop in props.1 {
7678
if has_jsx_prop_ignore_case(jsx_el, prop).is_none() {
7779
ctx.diagnostic(role_has_required_aria_props_diagnostic(
7880
attr.span, role, prop,

crates/oxc_linter/src/rules/unicorn/no_useless_undefined.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ declare_oxc_lint!(
5858
);
5959

6060
// Create a static set for all function names
61-
static FUNCTION_NAMES: [&str; 27] = [
61+
static FUNCTION_NAMES: &[&str] = &[
6262
"add",
6363
// `React.createContext(undefined)`
6464
"createContext",

crates/oxc_linter/src/snapshots/jsx_a11y_role_has_required_aria_props.snap

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,6 @@ source: crates/oxc_linter/src/tester.rs
88
╰────
99
help: Add missing aria props `aria-valuemax` to the element with `slider` role.
1010

11-
eslint-plugin-jsx-a11y(role-has-required-aria-props): `slider` role is missing required aria props `aria-valuenow`.
12-
╭─[role_has_required_aria_props.tsx:1:6]
13-
1<div role='slider' />
14-
· ─────────────
15-
╰────
16-
help: Add missing aria props `aria-valuenow` to the element with `slider` role.
17-
1811
eslint-plugin-jsx-a11y(role-has-required-aria-props): `slider` role is missing required aria props `aria-valuemin`.
1912
╭─[role_has_required_aria_props.tsx:1:6]
2013
1<div role='slider' />
@@ -24,7 +17,7 @@ source: crates/oxc_linter/src/tester.rs
2417

2518
eslint-plugin-jsx-a11y(role-has-required-aria-props): `slider` role is missing required aria props `aria-valuenow`.
2619
╭─[role_has_required_aria_props.tsx:1:6]
27-
1<div role='slider' aria-valuemax />
20+
1<div role='slider' />
2821
· ─────────────
2922
╰────
3023
help: Add missing aria props `aria-valuenow` to the element with `slider` role.
@@ -36,6 +29,13 @@ source: crates/oxc_linter/src/tester.rs
3629
╰────
3730
help: Add missing aria props `aria-valuemin` to the element with `slider` role.
3831

32+
eslint-plugin-jsx-a11y(role-has-required-aria-props): `slider` role is missing required aria props `aria-valuenow`.
33+
╭─[role_has_required_aria_props.tsx:1:6]
34+
1<div role='slider' aria-valuemax />
35+
· ─────────────
36+
╰────
37+
help: Add missing aria props `aria-valuenow` to the element with `slider` role.
38+
3939
eslint-plugin-jsx-a11y(role-has-required-aria-props): `slider` role is missing required aria props `aria-valuenow`.
4040
╭─[role_has_required_aria_props.tsx:1:6]
4141
1<div role='slider' aria-valuemax aria-valuemin />
@@ -113,19 +113,12 @@ source: crates/oxc_linter/src/tester.rs
113113
╰────
114114
help: Add missing aria props `aria-expanded` to the element with `combobox` role.
115115

116-
eslint-plugin-jsx-a11y(role-has-required-aria-props): `scrollbar` role is missing required aria props `aria-orientation`.
117-
╭─[role_has_required_aria_props.tsx:1:6]
118-
1<div role='scrollbar' />
119-
· ────────────────
120-
╰────
121-
help: Add missing aria props `aria-orientation` to the element with `scrollbar` role.
122-
123-
eslint-plugin-jsx-a11y(role-has-required-aria-props): `scrollbar` role is missing required aria props `aria-controls`.
116+
eslint-plugin-jsx-a11y(role-has-required-aria-props): `scrollbar` role is missing required aria props `aria-valuemax`.
124117
╭─[role_has_required_aria_props.tsx:1:6]
125118
1<div role='scrollbar' />
126119
· ────────────────
127120
╰────
128-
help: Add missing aria props `aria-controls` to the element with `scrollbar` role.
121+
help: Add missing aria props `aria-valuemax` to the element with `scrollbar` role.
129122

130123
eslint-plugin-jsx-a11y(role-has-required-aria-props): `scrollbar` role is missing required aria props `aria-valuemin`.
131124
╭─[role_has_required_aria_props.tsx:1:6]
@@ -141,23 +134,16 @@ source: crates/oxc_linter/src/tester.rs
141134
╰────
142135
help: Add missing aria props `aria-valuenow` to the element with `scrollbar` role.
143136

144-
eslint-plugin-jsx-a11y(role-has-required-aria-props): `scrollbar` role is missing required aria props `aria-valuemax`.
145-
╭─[role_has_required_aria_props.tsx:1:6]
146-
1<div role='scrollbar' />
147-
· ────────────────
148-
╰────
149-
help: Add missing aria props `aria-valuemax` to the element with `scrollbar` role.
150-
151137
eslint-plugin-jsx-a11y(role-has-required-aria-props): `scrollbar` role is missing required aria props `aria-orientation`.
152138
╭─[role_has_required_aria_props.tsx:1:6]
153-
1<div role='scrollbar' aria-valuemax />
139+
1<div role='scrollbar' />
154140
· ────────────────
155141
╰────
156142
help: Add missing aria props `aria-orientation` to the element with `scrollbar` role.
157143

158144
eslint-plugin-jsx-a11y(role-has-required-aria-props): `scrollbar` role is missing required aria props `aria-controls`.
159145
╭─[role_has_required_aria_props.tsx:1:6]
160-
1<div role='scrollbar' aria-valuemax />
146+
1<div role='scrollbar' />
161147
· ────────────────
162148
╰────
163149
help: Add missing aria props `aria-controls` to the element with `scrollbar` role.
@@ -178,14 +164,14 @@ source: crates/oxc_linter/src/tester.rs
178164

179165
eslint-plugin-jsx-a11y(role-has-required-aria-props): `scrollbar` role is missing required aria props `aria-orientation`.
180166
╭─[role_has_required_aria_props.tsx:1:6]
181-
1<div role='scrollbar' aria-valuemax aria-valuemin />
167+
1<div role='scrollbar' aria-valuemax />
182168
· ────────────────
183169
╰────
184170
help: Add missing aria props `aria-orientation` to the element with `scrollbar` role.
185171

186172
eslint-plugin-jsx-a11y(role-has-required-aria-props): `scrollbar` role is missing required aria props `aria-controls`.
187173
╭─[role_has_required_aria_props.tsx:1:6]
188-
1<div role='scrollbar' aria-valuemax aria-valuemin />
174+
1<div role='scrollbar' aria-valuemax />
189175
· ────────────────
190176
╰────
191177
help: Add missing aria props `aria-controls` to the element with `scrollbar` role.
@@ -199,14 +185,14 @@ source: crates/oxc_linter/src/tester.rs
199185

200186
eslint-plugin-jsx-a11y(role-has-required-aria-props): `scrollbar` role is missing required aria props `aria-orientation`.
201187
╭─[role_has_required_aria_props.tsx:1:6]
202-
1<div role='scrollbar' aria-valuemax aria-valuenow />
188+
1<div role='scrollbar' aria-valuemax aria-valuemin />
203189
· ────────────────
204190
╰────
205191
help: Add missing aria props `aria-orientation` to the element with `scrollbar` role.
206192

207193
eslint-plugin-jsx-a11y(role-has-required-aria-props): `scrollbar` role is missing required aria props `aria-controls`.
208194
╭─[role_has_required_aria_props.tsx:1:6]
209-
1<div role='scrollbar' aria-valuemax aria-valuenow />
195+
1<div role='scrollbar' aria-valuemax aria-valuemin />
210196
· ────────────────
211197
╰────
212198
help: Add missing aria props `aria-controls` to the element with `scrollbar` role.
@@ -220,14 +206,14 @@ source: crates/oxc_linter/src/tester.rs
220206

221207
eslint-plugin-jsx-a11y(role-has-required-aria-props): `scrollbar` role is missing required aria props `aria-orientation`.
222208
╭─[role_has_required_aria_props.tsx:1:6]
223-
1<div role='scrollbar' aria-valuemin aria-valuenow />
209+
1<div role='scrollbar' aria-valuemax aria-valuenow />
224210
· ────────────────
225211
╰────
226212
help: Add missing aria props `aria-orientation` to the element with `scrollbar` role.
227213

228214
eslint-plugin-jsx-a11y(role-has-required-aria-props): `scrollbar` role is missing required aria props `aria-controls`.
229215
╭─[role_has_required_aria_props.tsx:1:6]
230-
1<div role='scrollbar' aria-valuemin aria-valuenow />
216+
1<div role='scrollbar' aria-valuemax aria-valuenow />
231217
· ────────────────
232218
╰────
233219
help: Add missing aria props `aria-controls` to the element with `scrollbar` role.
@@ -239,6 +225,20 @@ source: crates/oxc_linter/src/tester.rs
239225
╰────
240226
help: Add missing aria props `aria-valuemax` to the element with `scrollbar` role.
241227

228+
eslint-plugin-jsx-a11y(role-has-required-aria-props): `scrollbar` role is missing required aria props `aria-orientation`.
229+
╭─[role_has_required_aria_props.tsx:1:6]
230+
1<div role='scrollbar' aria-valuemin aria-valuenow />
231+
· ────────────────
232+
╰────
233+
help: Add missing aria props `aria-orientation` to the element with `scrollbar` role.
234+
235+
eslint-plugin-jsx-a11y(role-has-required-aria-props): `scrollbar` role is missing required aria props `aria-controls`.
236+
╭─[role_has_required_aria_props.tsx:1:6]
237+
1<div role='scrollbar' aria-valuemin aria-valuenow />
238+
· ────────────────
239+
╰────
240+
help: Add missing aria props `aria-controls` to the element with `scrollbar` role.
241+
242242
eslint-plugin-jsx-a11y(role-has-required-aria-props): `heading` role is missing required aria props `aria-level`.
243243
╭─[role_has_required_aria_props.tsx:1:6]
244244
1<div role='heading' />

crates/oxc_linter/src/utils/jest/parse_jest_fn.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -570,7 +570,7 @@ fn recurse_extend_node_chain<'a>(
570570
}
571571

572572
// sorted list for binary search.
573-
const VALID_JEST_FN_CALL_CHAINS: [[&str; 4]; 52] = [
573+
static VALID_JEST_FN_CALL_CHAINS: &[[&str; 4]] = &[
574574
["afterAll", "", "", ""],
575575
["afterEach", "", "", ""],
576576
["beforeAll", "", "", ""],

0 commit comments

Comments
 (0)