refactor(linter): simplify getting ImportDefaultSpecifier (#2453)

This commit is contained in:
Dunqing 2024-02-20 16:16:02 +08:00 committed by GitHub
parent d0d0d9d7bb
commit cd48e1e9d9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1,8 +1,5 @@
use oxc_ast::{ use oxc_ast::{
ast::{ ast::{Expression, JSXAttributeItem, JSXAttributeName, ObjectPropertyKind, PropertyKey},
Expression, ImportDeclarationSpecifier, JSXAttributeItem, JSXAttributeName,
ModuleDeclaration, ObjectPropertyKind, PropertyKey,
},
AstKind, AstKind,
}; };
use oxc_diagnostics::{ use oxc_diagnostics::{
@ -39,8 +36,10 @@ declare_oxc_lint!(
impl Rule for InlineScriptId { impl Rule for InlineScriptId {
fn run<'a>(&self, node: &AstNode<'a>, ctx: &LintContext<'a>) { fn run<'a>(&self, node: &AstNode<'a>, ctx: &LintContext<'a>) {
let AstKind::ModuleDeclaration(ModuleDeclaration::ImportDeclaration(import_decl)) = let AstKind::ImportDefaultSpecifier(specifier) = node.kind() else {
node.kind() return;
};
let Some(AstKind::ImportDeclaration(import_decl)) = ctx.nodes().parent_kind(node.id())
else { else {
return; return;
}; };
@ -49,23 +48,8 @@ impl Rule for InlineScriptId {
return; return;
} }
let Some(import_specifiers) = &import_decl.specifiers else { return };
// find default import
let Some(default_import) = import_specifiers.iter().find_map(|import_specifier| {
let ImportDeclarationSpecifier::ImportDefaultSpecifier(import_default_specifier) =
import_specifier
else {
return None;
};
Some(import_default_specifier)
}) else {
return;
};
'references_loop: for reference in 'references_loop: for reference in
ctx.semantic().symbol_references(default_import.local.symbol_id.get().unwrap()) ctx.semantic().symbol_references(specifier.local.symbol_id.get().unwrap())
{ {
let node = ctx.nodes().get_node(reference.node_id()); let node = ctx.nodes().get_node(reference.node_id());