@@ -126,35 +126,34 @@ fn resolve_global_binding<'a, 'b: 'a>(
126126
127127impl  Rule  for  NoObjCalls  { 
128128    fn  run < ' a > ( & self ,  node :  & AstNode < ' a > ,  ctx :  & LintContext < ' a > )  { 
129-         let  ( callee,  span)  = match  node. kind ( )  { 
130-             AstKind :: NewExpression ( expr)  => ( & expr. callee ,  expr. span ) , 
131-             AstKind :: CallExpression ( expr)  => ( & expr. callee ,  expr. span ) , 
132-             _ => return , 
133-         } ; 
134- 
135-         match  callee { 
136-             Expression :: Identifier ( ident)  => { 
137-                 // handle new Math(), Math(), etc 
138-                 if  let  Some ( top_level_reference)  =
139-                     resolve_global_binding ( ident,  node. scope_id ( ) ,  ctx) 
140-                     && is_global_obj ( top_level_reference) 
141-                 { 
142-                     ctx. diagnostic ( no_obj_calls_diagnostic ( ident. name . as_str ( ) ,  span) ) ; 
143-                 } 
144-             } 
129+         match  node. kind ( )  { 
130+             AstKind :: NewExpression ( expr)  => check_callee ( & expr. callee ,  expr. span ,  node,  ctx) , 
131+             AstKind :: CallExpression ( expr)  => check_callee ( & expr. callee ,  expr. span ,  node,  ctx) , 
132+             _ => { } 
133+         } 
134+     } 
135+ } 
145136
146-             match_member_expression ! ( Expression )  => { 
147-                 // handle new globalThis.Math(), globalThis.Math(), etc 
148-                 if  let  Some ( global_member)  = global_this_member ( callee. to_member_expression ( ) ) 
149-                     && is_global_obj ( global_member) 
150-                 { 
151-                     ctx. diagnostic ( no_obj_calls_diagnostic ( global_member,  span) ) ; 
152-                 } 
137+ fn  check_callee < ' a > ( callee :  & ' a  Expression ,  span :  Span ,  node :  & AstNode < ' a > ,  ctx :  & LintContext < ' a > )  { 
138+     match  callee { 
139+         Expression :: Identifier ( ident)  => { 
140+             // handle new Math(), Math(), etc 
141+             if  let  Some ( top_level_reference)  = resolve_global_binding ( ident,  node. scope_id ( ) ,  ctx) 
142+                 && is_global_obj ( top_level_reference) 
143+             { 
144+                 ctx. diagnostic ( no_obj_calls_diagnostic ( ident. name . as_str ( ) ,  span) ) ; 
153145            } 
154-             _ => { 
155-                 // noop 
146+         } 
147+ 
148+         match_member_expression ! ( Expression )  => { 
149+             // handle new globalThis.Math(), globalThis.Math(), etc 
150+             if  let  Some ( global_member)  = global_this_member ( callee. to_member_expression ( ) ) 
151+                 && is_global_obj ( global_member) 
152+             { 
153+                 ctx. diagnostic ( no_obj_calls_diagnostic ( global_member,  span) ) ; 
156154            } 
157155        } 
156+         _ => { } 
158157    } 
159158} 
160159
0 commit comments