From 1a98345d9ef3b3092a884b4407da4bd547fce923 Mon Sep 17 00:00:00 2001 From: velzie Date: Tue, 30 Jul 2024 08:18:01 -0400 Subject: [PATCH] don't wrap inside a typeof --- rewriter/src/rewrite.rs | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/rewriter/src/rewrite.rs b/rewriter/src/rewrite.rs index bc6881e..f5d90be 100644 --- a/rewriter/src/rewrite.rs +++ b/rewriter/src/rewrite.rs @@ -6,7 +6,7 @@ use oxc_ast::{ }; use oxc_parser::Parser; use oxc_span::{SourceType, Span}; -use oxc_syntax::operator::AssignmentOperator; +use oxc_syntax::operator::{AssignmentOperator, UnaryOperator}; use url::Url; #[derive(Debug)] @@ -184,19 +184,27 @@ impl<'a> Visit<'a> for Rewriter { } fn visit_return_statement(&mut self, it: &oxc_ast::ast::ReturnStatement<'a>) { - if let Some(arg) = &it.argument { - self.jschanges.push(JsChange::GenericChange { - span: Span::new(it.span.start + 6, it.span.start + 6), - text: format!(" $scramdbg((()=>{{ try {{return arguments}} catch(_){{}} }})(),("), - }); - self.jschanges.push(JsChange::GenericChange { - span: Span::new(expression_span(arg).end, expression_span(arg).end), - text: format!("))"), - }); - } + // if let Some(arg) = &it.argument { + // self.jschanges.push(JsChange::GenericChange { + // span: Span::new(it.span.start + 6, it.span.start + 6), + // text: format!(" $scramdbg((()=>{{ try {{return arguments}} catch(_){{}} }})(),("), + // }); + // self.jschanges.push(JsChange::GenericChange { + // span: Span::new(expression_span(arg).end, expression_span(arg).end), + // text: format!("))"), + // }); + // } walk::walk_return_statement(self, it); } + fn visit_unary_expression(&mut self, it: &oxc_ast::ast::UnaryExpression<'a>) { + if matches!(it.operator, UnaryOperator::Typeof) { + // don't walk to identifier rewrites since it won't matter + return; + } + walk::walk_unary_expression(self, it); + } + // we don't want to rewrite the identifiers here because of a very specific edge case fn visit_for_in_statement(&mut self, it: &oxc_ast::ast::ForInStatement<'a>) { walk::walk_statement(self, &it.body);