swc_ecma_minifier/compress/pure/drop_console.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
use swc_common::DUMMY_SP;
use swc_ecma_ast::*;
use swc_ecma_utils::undefined;
use super::Pure;
impl Pure<'_> {
pub(super) fn drop_console(&mut self, e: &mut Expr) {
if !self.options.drop_console {
return;
}
if let Expr::Call(CallExpr { callee, .. }) = e {
// Find console.log
let callee = match callee {
Callee::Expr(callee) => callee,
_ => return,
};
if let Expr::Member(MemberExpr {
obj: callee_obj,
prop: MemberProp::Ident(_),
..
}) = &**callee
{
let mut loop_co = &**callee_obj;
loop {
match loop_co {
Expr::Ident(obj) => {
if obj.sym != *"console" {
return;
}
break;
}
Expr::Member(MemberExpr {
obj: loop_co_obj,
prop: MemberProp::Ident(_),
..
}) => {
loop_co = loop_co_obj;
}
_ => return,
}
}
report_change!("drop_console: Removing console call");
self.changed = true;
*e = *undefined(DUMMY_SP);
}
}
}
}