@@ -287,6 +287,18 @@ impl Instrumentation {
287287 if let Pat :: Ident ( name) = & decl. name {
288288 traced = self . trace_expr_or_count ( func_expr, & name. id . sym ) ;
289289 }
290+ } else if let Some ( class_expr) = init. as_mut_class ( ) {
291+ if let Pat :: Ident ( name) = & decl. name {
292+ if class_expr. ident . is_none ( ) {
293+ class_expr. ident = Some ( name. id . clone ( ) ) ;
294+ } else {
295+ self . is_correct_class = self
296+ . config
297+ . function_query
298+ . class_name ( )
299+ . is_none_or ( |class| name. id . sym . as_ref ( ) == class) ;
300+ }
301+ }
290302 }
291303 }
292304 }
@@ -303,11 +315,13 @@ impl Instrumentation {
303315 }
304316
305317 pub fn visit_mut_class_expr ( & mut self , node : & mut ClassExpr ) -> bool {
306- self . is_correct_class = self . config . function_query . class_name ( ) . is_none_or ( |class| {
307- node. ident
308- . as_ref ( )
309- . is_some_and ( |ident| ident. sym . as_ref ( ) == class)
310- } ) ;
318+ if !self . is_correct_class {
319+ self . is_correct_class = self . config . function_query . class_name ( ) . is_none_or ( |class| {
320+ node. ident
321+ . as_ref ( )
322+ . is_some_and ( |ident| ident. sym . as_ref ( ) == class)
323+ } ) ;
324+ }
311325 true
312326 }
313327
@@ -416,6 +430,18 @@ impl Instrumentation {
416430 _ => { }
417431 }
418432 }
433+ } else if let Some ( class_expr) = node. right . as_mut_class ( ) {
434+ if let AssignTarget :: Simple ( SimpleAssignTarget :: Ident ( name) ) = & node. left {
435+ if class_expr. ident . is_none ( ) {
436+ class_expr. ident = Some ( name. id . clone ( ) ) ;
437+ } else {
438+ self . is_correct_class = self
439+ . config
440+ . function_query
441+ . class_name ( )
442+ . is_none_or ( |class| name. id . sym . as_ref ( ) == class) ;
443+ }
444+ }
419445 }
420446 !traced
421447 }
0 commit comments