Include more expressions

This commit is contained in:
Andrew Morris
2023-03-24 14:16:15 +11:00
parent c811d0944e
commit 57a95798cd

View File

@@ -980,31 +980,8 @@ impl ScopeAnalysis {
span: await_.span,
});
}
Expr::Member(member) => {
self.expr(scope, &member.obj);
use swc_ecma_ast::MemberProp;
match &member.prop {
MemberProp::Ident(_) | MemberProp::PrivateName(_) => {}
MemberProp::Computed(computed) => {
self.expr(scope, &computed.expr);
}
}
}
Expr::Call(call) => {
match &call.callee {
swc_ecma_ast::Callee::Super(_) => {}
swc_ecma_ast::Callee::Import(_) => {}
swc_ecma_ast::Callee::Expr(expr) => {
self.expr(scope, expr);
}
}
for arg in &call.args {
self.expr(scope, &arg.expr);
}
}
Expr::Member(member) => self.member(scope, member),
Expr::Call(call) => self.call(scope, call),
Expr::New(new) => {
self.expr(scope, &new.callee);
@@ -1014,9 +991,7 @@ impl ScopeAnalysis {
}
}
}
Expr::Paren(paren) => {
self.expr(scope, &paren.expr);
}
Expr::Paren(paren) => self.expr(scope, &paren.expr),
Expr::Tpl(tpl) => {
for elem in &tpl.exprs {
self.expr(scope, elem);
@@ -1033,12 +1008,24 @@ impl ScopeAnalysis {
}
Expr::MetaProp(_) => {}
Expr::Invalid(_) => {}
Expr::TsTypeAssertion(_) => {}
Expr::TsConstAssertion(_) => {}
Expr::TsNonNull(_) => {}
Expr::TsAs(_) => {}
Expr::OptChain(_) => {}
Expr::TsTypeAssertion(tta) => self.expr(scope, &tta.expr),
Expr::TsConstAssertion(tca) => self.expr(scope, &tca.expr),
Expr::TsNonNull(tnn) => self.expr(scope, &tnn.expr),
Expr::TsAs(ta) => self.expr(scope, &ta.expr),
Expr::OptChain(opt_chain) => {
use swc_ecma_ast::OptChainBase;
match &opt_chain.base {
OptChainBase::Call(call) => {
self.expr(scope, &call.callee);
for arg in &call.args {
self.expr(scope, &arg.expr);
}
}
OptChainBase::Member(member) => self.member(scope, member),
}
}
Expr::SuperProp(super_prop) => {
self.diagnostics.push(Diagnostic {
level: DiagnosticLevel::InternalError,
@@ -1092,6 +1079,33 @@ impl ScopeAnalysis {
}
}
fn member(&mut self, scope: &XScope, member: &swc_ecma_ast::MemberExpr) {
self.expr(scope, &member.obj);
use swc_ecma_ast::MemberProp;
match &member.prop {
MemberProp::Ident(_) | MemberProp::PrivateName(_) => {}
MemberProp::Computed(computed) => {
self.expr(scope, &computed.expr);
}
}
}
fn call(&mut self, scope: &XScope, call: &swc_ecma_ast::CallExpr) {
match &call.callee {
swc_ecma_ast::Callee::Super(_) => {}
swc_ecma_ast::Callee::Import(_) => {}
swc_ecma_ast::Callee::Expr(expr) => {
self.expr(scope, expr);
}
}
for arg in &call.args {
self.expr(scope, &arg.expr);
}
}
fn pat(&mut self, scope: &XScope, pat: &swc_ecma_ast::Pat) {
use swc_ecma_ast::Pat;