@@ -14,8 +14,9 @@ use biome_js_syntax::{
1414 AnyJsIdentifierUsage , AnyJsModuleItem , AnyJsObjectAssignmentPatternMember ,
1515 AnyJsObjectBindingPatternMember , AnyJsObjectMember , AnyJsRoot , AnyJsStatement ,
1616 AnyTsIdentifierBinding , AnyTsType , JsAssignmentExpression , JsCallExpression , JsExport ,
17- JsImport , JsModuleItemList , JsReferenceIdentifier , JsStaticMemberExpression ,
18- JsSvelteDeclarationRoot , JsSvelteSnippetRoot , JsVariableStatement , JsxReferenceIdentifier ,
17+ JsIdentifierAssignment , JsImport , JsModuleItemList , JsReferenceIdentifier ,
18+ JsStaticMemberExpression , JsSvelteDeclarationRoot , JsSvelteSnippetRoot , JsVariableStatement ,
19+ JsxReferenceIdentifier ,
1920} ;
2021use biome_languages:: html:: HtmlVariant ;
2122use biome_languages:: javascript:: { JsEmbeddingKind , SvelteEmbeddingKind } ;
@@ -171,7 +172,7 @@ fn collect_embedded_references(
171172 // one module and share a top-level scope, so a binding used only in
172173 // the other block must still count as used.
173174 if !js_file_source. is_embedded_source ( ) || is_svelte {
174- builder. visit_non_source_snippet ( & snippet. parsed ( db) . tree ( ) ) ;
175+ builder. visit_non_source_snippet ( & snippet. parsed ( db) . tree ( ) , & js_file_source ) ;
175176 }
176177 }
177178
@@ -1139,7 +1140,7 @@ impl EmbeddedReferencesBuilder {
11391140 self . type_references . push ( ( range, text) ) ;
11401141 }
11411142
1142- fn visit_non_source_snippet ( & mut self , root : & AnyJsRoot ) {
1143+ fn visit_non_source_snippet ( & mut self , root : & AnyJsRoot , file_source : & JsFileSource ) {
11431144 let preorder = root. syntax ( ) . preorder ( ) ;
11441145
11451146 for event in preorder {
@@ -1149,6 +1150,10 @@ impl EmbeddedReferencesBuilder {
11491150 self . visit_jsx_reference_identifier ( reference) ;
11501151 } else if let Some ( reference) = JsReferenceIdentifier :: cast_ref ( & node) {
11511152 self . visit_reference_identifier ( reference) ;
1153+ } else if let Some ( assignment) = JsIdentifierAssignment :: cast_ref ( & node)
1154+ && matches ! ( file_source. as_embedding_kind( ) , JsEmbeddingKind :: Vue { .. } )
1155+ {
1156+ self . visit_identifier_assignment ( assignment) ;
11521157 } else if let Some ( member) = JsStaticMemberExpression :: cast_ref ( & node) {
11531158 self . visit_static_member_expression ( member) ;
11541159 }
@@ -1296,6 +1301,15 @@ impl EmbeddedReferencesBuilder {
12961301 Some ( ( ) )
12971302 }
12981303
1304+ fn visit_identifier_assignment ( & mut self , assignment : JsIdentifierAssignment ) -> Option < ( ) > {
1305+ let name_token = assignment. name_token ( ) . ok ( ) ?;
1306+ self . register_reference (
1307+ name_token. text_trimmed_range ( ) ,
1308+ name_token. token_text_trimmed ( ) ,
1309+ ) ;
1310+ Some ( ( ) )
1311+ }
1312+
12991313 fn visit_static_member_expression ( & mut self , member : JsStaticMemberExpression ) -> Option < ( ) > {
13001314 let object = member. object ( ) . ok ( ) ?;
13011315 if let Some ( reference) = object. as_js_reference_identifier ( ) {
0 commit comments