Skip to content

Commit c4a3d26

Browse files
committed
refactor(linter/no-process-env): restructure match to improve generated node types
1 parent 12a9934 commit c4a3d26

File tree

2 files changed

+19
-26
lines changed

2 files changed

+19
-26
lines changed

crates/oxc_linter/src/generated/rule_runner_impls.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1820,7 +1820,10 @@ impl RuleRunner for crate::rules::node::no_new_require::NoNewRequire {
18201820
}
18211821

18221822
impl RuleRunner for crate::rules::node::no_process_env::NoProcessEnv {
1823-
const NODE_TYPES: Option<&AstTypesBitset> = None;
1823+
const NODE_TYPES: Option<&AstTypesBitset> = Some(&AstTypesBitset::from_types(&[
1824+
AstType::ComputedMemberExpression,
1825+
AstType::StaticMemberExpression,
1826+
]));
18241827
const RUN_FUNCTIONS: RuleRunFunctionsImplemented = RuleRunFunctionsImplemented::Run;
18251828
}
18261829

crates/oxc_linter/src/rules/node/no_process_env.rs

Lines changed: 15 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -84,31 +84,21 @@ impl Rule for NoProcessEnv {
8484

8585
fn run<'a>(&self, node: &AstNode<'a>, ctx: &LintContext<'a>) {
8686
// Match `process.env` as either static `process.env` or computed `process["env"]`
87-
let mut is_process_env_member = false;
88-
let mut current_span = Span::default();
89-
90-
match node.kind() {
91-
AstKind::StaticMemberExpression(mem) => {
92-
if mem.property.name.as_str() == "env" && is_process_global_object(&mem.object, ctx)
93-
{
94-
is_process_env_member = true;
95-
current_span = mem.span;
96-
}
87+
let span = match node.kind() {
88+
AstKind::StaticMemberExpression(mem)
89+
if mem.property.name.as_str() == "env"
90+
&& is_process_global_object(&mem.object, ctx) =>
91+
{
92+
mem.span
9793
}
98-
AstKind::ComputedMemberExpression(mem) => {
94+
AstKind::ComputedMemberExpression(mem)
9995
if mem.static_property_name().is_some_and(|name| name.as_str() == "env")
100-
&& is_process_global_object(&mem.object, ctx)
101-
{
102-
is_process_env_member = true;
103-
current_span = mem.span;
104-
}
96+
&& is_process_global_object(&mem.object, ctx) =>
97+
{
98+
mem.span
10599
}
106-
_ => {}
107-
}
108-
109-
if !is_process_env_member {
110-
return;
111-
}
100+
_ => return,
101+
};
112102

113103
// Default: report any `process.env` usage
114104
let mut should_report = true;
@@ -117,7 +107,7 @@ impl Rule for NoProcessEnv {
117107
match ctx.nodes().parent_kind(node.id()) {
118108
AstKind::StaticMemberExpression(parent_mem) => {
119109
if let Some(obj_mem) = parent_mem.object.as_member_expression()
120-
&& obj_mem.span() == current_span
110+
&& obj_mem.span() == span
121111
{
122112
let (.., prop_name) = parent_mem.static_property_info();
123113
if self.0.allowed_variables.contains(prop_name) {
@@ -127,7 +117,7 @@ impl Rule for NoProcessEnv {
127117
}
128118
AstKind::ComputedMemberExpression(parent_mem) => {
129119
if let Some(obj_mem) = parent_mem.object.as_member_expression()
130-
&& obj_mem.span() == current_span
120+
&& obj_mem.span() == span
131121
&& let Some((_, name)) = parent_mem.static_property_info()
132122
&& self.0.allowed_variables.contains(name)
133123
{
@@ -138,7 +128,7 @@ impl Rule for NoProcessEnv {
138128
}
139129

140130
if should_report {
141-
ctx.diagnostic(no_process_env_diagnostic(current_span));
131+
ctx.diagnostic(no_process_env_diagnostic(span));
142132
}
143133
}
144134
}

0 commit comments

Comments
 (0)