@@ -14,7 +14,7 @@ use biome_analyze::{
1414use 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 ) ]
2020pub struct SemanticClassServices {
@@ -120,8 +120,8 @@ pub struct ClassMemberReference {
120120
121121#[ derive( Debug , Clone , Eq , PartialEq , Default ) ]
122122pub struct ClassMemberReferences {
123- pub reads : HashSet < ClassMemberReference > ,
124- pub writes : HashSet < ClassMemberReference > ,
123+ pub reads : FxHashSet < ClassMemberReference > ,
124+ pub writes : FxHashSet < ClassMemberReference > ,
125125}
126126
127127declare_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 ) ]
198198struct 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(
541541fn 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(
577577fn 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(
617617fn 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(
651651fn 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(
722722fn 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(
745745fn 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
769769fn 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