Skip to content

Commit 4d87dad

Browse files
feat(biome-js-analyze): adjusts members update assignments to be marked as valid updates and no errors triggered
1 parent 8aae3bc commit 4d87dad

File tree

1 file changed

+28
-28
lines changed

1 file changed

+28
-28
lines changed

crates/biome_js_analyze/src/services/semantic_class.rs

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use biome_analyze::{
1414
use biome_rowan::{
1515
AstNode, AstNodeList, AstSeparatedList, SyntaxNode, Text, WalkEvent, declare_node_union,
1616
};
17-
use std::collections::HashSet;
17+
use rustc_hash::FxHashSet;
1818

1919
#[derive(Clone)]
2020
pub struct SemanticClassServices {
@@ -120,8 +120,8 @@ pub struct ClassMemberReference {
120120

121121
#[derive(Debug, Clone, Eq, PartialEq, Default)]
122122
pub struct ClassMemberReferences {
123-
pub reads: HashSet<ClassMemberReference>,
124-
pub writes: HashSet<ClassMemberReference>,
123+
pub reads: FxHashSet<ClassMemberReference>,
124+
pub writes: FxHashSet<ClassMemberReference>,
125125
}
126126

127127
declare_node_union! {
@@ -179,8 +179,8 @@ fn class_member_references(list: &JsClassMemberList) -> ClassMemberReferences {
179179
})
180180
.collect();
181181

182-
let mut combined_reads = HashSet::new();
183-
let mut combined_writes = HashSet::new();
182+
let mut combined_reads = FxHashSet::default();
183+
let mut combined_writes = FxHashSet::default();
184184

185185
for refs in all_references {
186186
combined_reads.extend(refs.reads);
@@ -197,7 +197,7 @@ fn class_member_references(list: &JsClassMemberList) -> ClassMemberReferences {
197197
#[derive(Clone, Debug)]
198198
struct FunctionThisReferences {
199199
scope: JsFunctionBody,
200-
this_references: HashSet<ClassMemberReference>,
200+
this_references: FxHashSet<ClassMemberReference>,
201201
}
202202

203203
/// A visitor that collects `this` references in nested function scopes,
@@ -239,7 +239,7 @@ impl ThisScopeVisitor<'_> {
239239

240240
if !is_constructor {
241241
let current_scope = ThisScopeReferences::new(&body).local_this_references;
242-
let mut scoped_this_references = HashSet::new();
242+
let mut scoped_this_references = FxHashSet::default();
243243
scoped_this_references
244244
.extend(self.inherited_this_references.iter().cloned());
245245
scoped_this_references.extend(current_scope);
@@ -259,7 +259,7 @@ impl ThisScopeVisitor<'_> {
259259
{
260260
let current_scope_aliases =
261261
ThisScopeReferences::new(&body).local_this_references;
262-
let mut scoped_this_references = HashSet::new();
262+
let mut scoped_this_references = FxHashSet::default();
263263
scoped_this_references.extend(self.inherited_this_references.iter().cloned());
264264
scoped_this_references.extend(current_scope_aliases.clone());
265265

@@ -524,8 +524,8 @@ fn collect_references_from_body(
524524
) -> Option<ClassMemberReferences> {
525525
let scoped_this_references = ThisScopeReferences::new(body).collect_function_this_references();
526526

527-
let mut reads = HashSet::new();
528-
let mut writes = HashSet::new();
527+
let mut reads = FxHashSet::default();
528+
let mut writes = FxHashSet::default();
529529

530530
visit_references_in_body(member, &scoped_this_references, &mut writes, &mut reads);
531531

@@ -541,8 +541,8 @@ fn collect_references_from_body(
541541
fn visit_references_in_body(
542542
method_body_element: &JsSyntaxNode,
543543
scoped_this_references: &[FunctionThisReferences],
544-
writes: &mut HashSet<ClassMemberReference>,
545-
reads: &mut HashSet<ClassMemberReference>,
544+
writes: &mut FxHashSet<ClassMemberReference>,
545+
reads: &mut FxHashSet<ClassMemberReference>,
546546
) {
547547
let iter = method_body_element.preorder();
548548

@@ -577,7 +577,7 @@ fn visit_references_in_body(
577577
fn handle_object_binding_pattern(
578578
node: &SyntaxNode<JsLanguage>,
579579
scoped_this_references: &[FunctionThisReferences],
580-
reads: &mut HashSet<ClassMemberReference>,
580+
reads: &mut FxHashSet<ClassMemberReference>,
581581
) {
582582
if let Some(binding) = JsObjectBindingPattern::cast_ref(node)
583583
&& let Some(parent) = binding.syntax().parent()
@@ -617,7 +617,7 @@ fn handle_object_binding_pattern(
617617
fn handle_static_member_expression(
618618
node: &SyntaxNode<JsLanguage>,
619619
scoped_this_references: &[FunctionThisReferences],
620-
reads: &mut HashSet<ClassMemberReference>,
620+
reads: &mut FxHashSet<ClassMemberReference>,
621621
) {
622622
if let Some(static_member) = JsStaticMemberExpression::cast_ref(node)
623623
&& let Ok(object) = static_member.object()
@@ -651,8 +651,8 @@ fn handle_static_member_expression(
651651
fn handle_assignment_expression(
652652
node: &SyntaxNode<JsLanguage>,
653653
scoped_this_references: &[FunctionThisReferences],
654-
reads: &mut HashSet<ClassMemberReference>,
655-
writes: &mut HashSet<ClassMemberReference>,
654+
reads: &mut FxHashSet<ClassMemberReference>,
655+
writes: &mut FxHashSet<ClassMemberReference>,
656656
) {
657657
if let Some(assignment) = JsAssignmentExpression::cast_ref(node)
658658
&& let Ok(left) = assignment.left()
@@ -722,8 +722,8 @@ fn handle_assignment_expression(
722722
fn handle_pre_or_post_update_expression(
723723
node: &SyntaxNode<JsLanguage>,
724724
scoped_this_references: &[FunctionThisReferences],
725-
reads: &mut HashSet<ClassMemberReference>,
726-
writes: &mut HashSet<ClassMemberReference>,
725+
reads: &mut FxHashSet<ClassMemberReference>,
726+
writes: &mut FxHashSet<ClassMemberReference>,
727727
) {
728728
let operand = JsPostUpdateExpression::cast_ref(node)
729729
.and_then(|expr| expr.operand().ok())
@@ -745,8 +745,8 @@ fn handle_pre_or_post_update_expression(
745745
fn collect_references_from_constructor(constructor_body: &JsFunctionBody) -> ClassMemberReferences {
746746
let all_descendants_fn_bodies_and_this_scopes: Vec<_> =
747747
ThisScopeReferences::new(constructor_body).collect_function_this_references();
748-
let mut reads = HashSet::new();
749-
let mut writes = HashSet::new();
748+
let mut reads = FxHashSet::default();
749+
let mut writes = FxHashSet::default();
750750

751751
for this_scope in all_descendants_fn_bodies_and_this_scopes.iter() {
752752
visit_references_in_body(
@@ -769,8 +769,8 @@ fn collect_references_from_constructor(constructor_body: &JsFunctionBody) -> Cla
769769
fn collect_class_property_reads_from_static_member(
770770
static_member: &JsStaticMemberExpression,
771771
) -> Option<ClassMemberReferences> {
772-
let mut reads = HashSet::new();
773-
let writes = HashSet::new();
772+
let mut reads = FxHashSet::default();
773+
let writes = FxHashSet::default();
774774

775775
if let Ok(member) = static_member.member() {
776776
let name = member.to_trimmed_text();
@@ -879,7 +879,7 @@ mod tests {
879879
let function_this_references =
880880
ThisScopeReferences::new(&body).collect_function_this_references();
881881
let node = parse_first_object_binding(body.syntax());
882-
let mut reads = HashSet::new();
882+
let mut reads = FxHashSet::default();
883883

884884
handle_object_binding_pattern(&node, &function_this_references, &mut reads);
885885

@@ -940,7 +940,7 @@ mod tests {
940940
ThisScopeReferences::new(&body).collect_function_this_references();
941941

942942
// Collect all static member expressions in the syntax
943-
let mut reads = HashSet::new();
943+
let mut reads = FxHashSet::default();
944944

945945
for member_expr in syntax
946946
.descendants()
@@ -1012,8 +1012,8 @@ mod tests {
10121012
let function_this_references =
10131013
ThisScopeReferences::new(&body).collect_function_this_references();
10141014

1015-
let mut reads = HashSet::new();
1016-
let mut writes = HashSet::new();
1015+
let mut reads = FxHashSet::default();
1016+
let mut writes = FxHashSet::default();
10171017

10181018
for assignment_expr in syntax
10191019
.descendants()
@@ -1094,8 +1094,8 @@ mod tests {
10941094
let function_this_references =
10951095
ThisScopeReferences::new(&body).collect_function_this_references();
10961096

1097-
let mut reads = HashSet::new();
1098-
let mut writes = HashSet::new();
1097+
let mut reads = FxHashSet::default();
1098+
let mut writes = FxHashSet::default();
10991099

11001100
for node in syntax.descendants() {
11011101
handle_pre_or_post_update_expression(

0 commit comments

Comments
 (0)