diff --git a/crates/oxc_minifier/src/peephole/fold_constants.rs b/crates/oxc_minifier/src/peephole/fold_constants.rs index 29004d038858c..21c3f066978b6 100644 --- a/crates/oxc_minifier/src/peephole/fold_constants.rs +++ b/crates/oxc_minifier/src/peephole/fold_constants.rs @@ -9,15 +9,24 @@ use oxc_syntax::operator::{BinaryOperator, LogicalOperator}; use crate::ctx::Ctx; -use super::PeepholeOptimizations; +use super::{PeepholeOptimizations, State}; impl<'a> PeepholeOptimizations { /// Constant Folding /// /// - pub fn fold_constants_exit_expression(&mut self, expr: &mut Expression<'a>, ctx: Ctx<'a, '_>) { - if let Expression::TemplateLiteral(t) = expr { - self.try_inline_values_in_template_literal(t, ctx); + pub fn fold_constants_exit_expression( + &self, + expr: &mut Expression<'a>, + state: &mut State, + ctx: Ctx<'a, '_>, + ) { + match expr { + Expression::TemplateLiteral(t) => { + self.try_inline_values_in_template_literal(t, state, ctx); + } + Expression::ObjectExpression(e) => self.fold_object_spread(e, state, ctx), + _ => {} } if let Some(folded_expr) = match expr { @@ -29,11 +38,10 @@ impl<'a> PeepholeOptimizations { Expression::LogicalExpression(e) => Self::try_fold_logical_expr(e, ctx), Expression::ChainExpression(e) => Self::try_fold_optional_chain(e, ctx), Expression::CallExpression(e) => Self::try_fold_number_constructor(e, ctx), - Expression::ObjectExpression(e) => self.fold_object_spread(e, ctx), _ => None, } { *expr = folded_expr; - self.mark_current_function_as_changed(); + state.changed = true; }; } @@ -633,10 +641,11 @@ impl<'a> PeepholeOptimizations { } fn fold_object_spread( - &mut self, + &self, e: &mut ObjectExpression<'a>, + state: &mut State, ctx: Ctx<'a, '_>, - ) -> Option> { + ) { let len = e.properties.len(); e.properties.retain(|p| { if let ObjectPropertyKind::SpreadProperty(spread_element) = p { @@ -659,17 +668,17 @@ impl<'a> PeepholeOptimizations { true }); if e.properties.len() != len { - self.mark_current_function_as_changed(); + state.changed = true; } - None } /// Inline constant values in template literals /// /// - `foo${1}bar${i}` => `foo1bar${i}` fn try_inline_values_in_template_literal( - &mut self, + &self, t: &mut TemplateLiteral<'a>, + state: &mut State, ctx: Ctx<'a, '_>, ) { let has_expr_to_inline = t @@ -719,7 +728,7 @@ impl<'a> PeepholeOptimizations { } } - self.mark_current_function_as_changed(); + state.changed = true; } } diff --git a/crates/oxc_minifier/src/peephole/minimize_conditions.rs b/crates/oxc_minifier/src/peephole/minimize_conditions.rs index b67b344d100ff..8d2a2dbabec2f 100644 --- a/crates/oxc_minifier/src/peephole/minimize_conditions.rs +++ b/crates/oxc_minifier/src/peephole/minimize_conditions.rs @@ -5,15 +5,16 @@ use oxc_syntax::es_target::ESTarget; use crate::ctx::Ctx; -use super::PeepholeOptimizations; +use super::{PeepholeOptimizations, State}; /// Minimize Conditions /// /// impl<'a> PeepholeOptimizations { pub fn minimize_conditions_exit_expression( - &mut self, + &self, expr: &mut Expression<'a>, + state: &mut State, ctx: Ctx<'a, '_>, ) { let mut changed = false; @@ -50,7 +51,7 @@ impl<'a> PeepholeOptimizations { } } if changed { - self.mark_current_function_as_changed(); + state.changed = true; } } diff --git a/crates/oxc_minifier/src/peephole/minimize_for_statement.rs b/crates/oxc_minifier/src/peephole/minimize_for_statement.rs index b5488adfcf3ee..ff85df67620f3 100644 --- a/crates/oxc_minifier/src/peephole/minimize_for_statement.rs +++ b/crates/oxc_minifier/src/peephole/minimize_for_statement.rs @@ -3,11 +3,16 @@ use oxc_span::GetSpan; use crate::ctx::Ctx; -use super::PeepholeOptimizations; +use super::{PeepholeOptimizations, State}; impl<'a> PeepholeOptimizations { /// `mangleFor`: - pub fn minimize_for_statement(&mut self, for_stmt: &mut ForStatement<'a>, ctx: Ctx<'a, '_>) { + pub fn minimize_for_statement( + &self, + for_stmt: &mut ForStatement<'a>, + state: &mut State, + ctx: Ctx<'a, '_>, + ) { // Get the first statement in the loop let mut first = &for_stmt.body; if let Statement::BlockStatement(block_stmt) = first { @@ -60,7 +65,7 @@ impl<'a> PeepholeOptimizations { let alternate = if_stmt.alternate.take(); for_stmt.body = Self::drop_first_statement(span, body, alternate, ctx); - self.mark_current_function_as_changed(); + state.changed = true; return; } // "for (;;) if (x) y(); else break;" => "for (; x;) y();" @@ -97,7 +102,7 @@ impl<'a> PeepholeOptimizations { let consequent = ctx.ast.move_statement(&mut if_stmt.consequent); for_stmt.body = Self::drop_first_statement(span, body, Some(consequent), ctx); - self.mark_current_function_as_changed(); + state.changed = true; } } diff --git a/crates/oxc_minifier/src/peephole/minimize_if_statement.rs b/crates/oxc_minifier/src/peephole/minimize_if_statement.rs index 2d575fea4ae92..d70909ebc6c01 100644 --- a/crates/oxc_minifier/src/peephole/minimize_if_statement.rs +++ b/crates/oxc_minifier/src/peephole/minimize_if_statement.rs @@ -5,16 +5,17 @@ use oxc_span::GetSpan; use crate::ctx::Ctx; -use super::PeepholeOptimizations; +use super::{PeepholeOptimizations, State}; impl<'a> PeepholeOptimizations { /// `MangleIf`: pub fn try_minimize_if( - &mut self, + &self, if_stmt: &mut IfStatement<'a>, + state: &mut State, ctx: Ctx<'a, '_>, ) -> Option> { - self.wrap_to_avoid_ambiguous_else(if_stmt, ctx); + self.wrap_to_avoid_ambiguous_else(if_stmt, state, ctx); if let Statement::ExpressionStatement(expr_stmt) = &mut if_stmt.consequent { if if_stmt.alternate.is_none() { let (op, e) = match &mut if_stmt.test { @@ -46,7 +47,7 @@ impl<'a> PeepholeOptimizations { { // "if (a) {}" => "a;" let mut expr = ctx.ast.move_expression(&mut if_stmt.test); - self.remove_unused_expression(&mut expr, ctx); + self.remove_unused_expression(&mut expr, state, ctx); return Some(ctx.ast.statement_expression(if_stmt.span, expr)); } else if let Some(Statement::ExpressionStatement(expr_stmt)) = &mut if_stmt.alternate { let (op, e) = match &mut if_stmt.test { @@ -69,7 +70,7 @@ impl<'a> PeepholeOptimizations { if_stmt.test = ctx.ast.move_expression(&mut unary_expr.argument); if_stmt.consequent = ctx.ast.move_statement(stmt); if_stmt.alternate = None; - self.mark_current_function_as_changed(); + state.changed = true; } // "if (a) {} else return b;" => "if (!a) return b;" _ => { @@ -80,8 +81,8 @@ impl<'a> PeepholeOptimizations { ); if_stmt.consequent = ctx.ast.move_statement(stmt); if_stmt.alternate = None; - self.try_minimize_if(if_stmt, ctx); - self.mark_current_function_as_changed(); + self.try_minimize_if(if_stmt, state, ctx); + state.changed = true; } } } @@ -94,8 +95,8 @@ impl<'a> PeepholeOptimizations { // "if (!a) return b; else return c;" => "if (a) return c; else return b;" if_stmt.test = ctx.ast.move_expression(&mut unary_expr.argument); std::mem::swap(&mut if_stmt.consequent, alternate); - self.wrap_to_avoid_ambiguous_else(if_stmt, ctx); - self.mark_current_function_as_changed(); + self.wrap_to_avoid_ambiguous_else(if_stmt, state, ctx); + state.changed = true; } } // "if (a) return b; else {}" => "if (a) return b;" is handled by remove_dead_code @@ -114,7 +115,7 @@ impl<'a> PeepholeOptimizations { ctx, ); if_stmt.consequent = ctx.ast.move_statement(&mut if2_stmt.consequent); - self.mark_current_function_as_changed(); + state.changed = true; } } } @@ -125,7 +126,12 @@ impl<'a> PeepholeOptimizations { /// Wrap to avoid ambiguous else. /// `if (foo) if (bar) baz else quaz` -> `if (foo) { if (bar) baz else quaz }` #[expect(clippy::cast_possible_truncation)] - fn wrap_to_avoid_ambiguous_else(&mut self, if_stmt: &mut IfStatement<'a>, ctx: Ctx<'a, '_>) { + fn wrap_to_avoid_ambiguous_else( + &self, + if_stmt: &mut IfStatement<'a>, + state: &mut State, + ctx: Ctx<'a, '_>, + ) { if let Statement::IfStatement(if2) = &mut if_stmt.consequent { if if2.consequent.is_jump_statement() && if2.alternate.is_some() { let scope_id = ScopeId::new(ctx.scoping.scoping().scopes_len() as u32); @@ -136,7 +142,7 @@ impl<'a> PeepholeOptimizations { scope_id, ), )); - self.mark_current_function_as_changed(); + state.changed = true; } } } diff --git a/crates/oxc_minifier/src/peephole/minimize_statements.rs b/crates/oxc_minifier/src/peephole/minimize_statements.rs index 75f4cfad1efae..9cf4af713a454 100644 --- a/crates/oxc_minifier/src/peephole/minimize_statements.rs +++ b/crates/oxc_minifier/src/peephole/minimize_statements.rs @@ -10,7 +10,7 @@ use oxc_traverse::Ancestor; use crate::{ctx::Ctx, keep_var::KeepVar}; -use super::PeepholeOptimizations; +use super::{PeepholeOptimizations, State}; impl<'a> PeepholeOptimizations { /// `mangleStmts`: @@ -30,7 +30,12 @@ impl<'a> PeepholeOptimizations { /// /// ## MinimizeExitPoints: /// - pub fn minimize_statements(&mut self, stmts: &mut Vec<'a, Statement<'a>>, ctx: Ctx<'a, '_>) { + pub fn minimize_statements( + &self, + stmts: &mut Vec<'a, Statement<'a>>, + state: &mut State, + ctx: Ctx<'a, '_>, + ) { let mut result: Vec<'a, Statement<'a>> = ctx.ast.vec_with_capacity(stmts.len()); let mut is_control_flow_dead = false; let mut keep_var = KeepVar::new(ctx.ast); @@ -51,6 +56,7 @@ impl<'a> PeepholeOptimizations { &mut new_stmts, &mut result, &mut is_control_flow_dead, + state, ctx, ) .is_break() @@ -69,14 +75,14 @@ impl<'a> PeepholeOptimizations { Statement::ContinueStatement(s) if s.label.is_none() => { if let Some(Ancestor::ForStatementBody(_)) = ctx.ancestors().nth(1) { result.pop(); - self.mark_current_function_as_changed(); + state.changed = true; } } // "function f() { x(); return; }" => "function f() { x(); }" Statement::ReturnStatement(s) if s.argument.is_none() => { if let Ancestor::FunctionBodyStatements(_) = ctx.parent() { result.pop(); - self.mark_current_function_as_changed(); + state.changed = true; } } _ => {} @@ -96,7 +102,7 @@ impl<'a> PeepholeOptimizations { break 'return_loop; } } - self.mark_current_function_as_changed(); + state.changed = true; // "a(); return b;" => "return a(), b;" let last_stmt = result.pop().unwrap(); let Statement::ReturnStatement(mut last_return) = last_stmt else { @@ -124,7 +130,7 @@ impl<'a> PeepholeOptimizations { break 'return_loop; }; - self.mark_current_function_as_changed(); + state.changed = true; let last_stmt = result.pop().unwrap(); let Statement::ReturnStatement(last_return) = last_stmt else { unreachable!() @@ -175,7 +181,7 @@ impl<'a> PeepholeOptimizations { right, ctx, ); - self.minimize_conditions_exit_expression(&mut expr, ctx); + self.minimize_conditions_exit_expression(&mut expr, state, ctx); expr }; let last_return_stmt = @@ -191,7 +197,7 @@ impl<'a> PeepholeOptimizations { let prev_stmt = &result[prev_index]; match prev_stmt { Statement::ExpressionStatement(_) => { - self.mark_current_function_as_changed(); + state.changed = true; // "a(); throw b;" => "throw a(), b;" let last_stmt = result.pop().unwrap(); let Statement::ThrowStatement(mut last_throw) = last_stmt else { @@ -221,7 +227,7 @@ impl<'a> PeepholeOptimizations { break 'throw_loop; }; - self.mark_current_function_as_changed(); + state.changed = true; let last_stmt = result.pop().unwrap(); let Statement::ThrowStatement(last_throw) = last_stmt else { unreachable!() @@ -263,7 +269,7 @@ impl<'a> PeepholeOptimizations { right, ctx, ); - self.minimize_conditions_exit_expression(&mut expr, ctx); + self.minimize_conditions_exit_expression(&mut expr, state, ctx); expr }; let last_throw_stmt = ctx.ast.statement_throw(right_span, argument); @@ -279,12 +285,13 @@ impl<'a> PeepholeOptimizations { } fn minimize_statement( - &mut self, + &self, stmt: Statement<'a>, i: usize, stmts: &mut Vec<'a, Statement<'a>>, result: &mut Vec<'a, Statement<'a>>, is_control_flow_dead: &mut bool, + state: &mut State, ctx: Ctx<'a, '_>, ) -> ControlFlow<()> { match stmt { @@ -298,35 +305,35 @@ impl<'a> PeepholeOptimizations { result.push(Statement::ContinueStatement(s)); } Statement::VariableDeclaration(var_decl) => { - self.handle_variable_declaration(var_decl, result); + self.handle_variable_declaration(var_decl, result, state); } Statement::ExpressionStatement(expr_stmt) => { - self.handle_expression_statement(expr_stmt, result, ctx); + self.handle_expression_statement(expr_stmt, result, state, ctx); } Statement::SwitchStatement(switch_stmt) => { - self.handle_switch_statement(switch_stmt, result, ctx); + self.handle_switch_statement(switch_stmt, result, state, ctx); } Statement::IfStatement(if_stmt) => { - if self.handle_if_statement(i, stmts, if_stmt, result, ctx).is_break() { + if self.handle_if_statement(i, stmts, if_stmt, result, state, ctx).is_break() { return ControlFlow::Break(()); } } Statement::ReturnStatement(ret_stmt) => { - self.handle_return_statement(ret_stmt, result, ctx, is_control_flow_dead); + self.handle_return_statement(ret_stmt, result, is_control_flow_dead, state, ctx); } Statement::ThrowStatement(throw_stmt) => { - self.handle_throw_statement(throw_stmt, result, ctx, is_control_flow_dead); + self.handle_throw_statement(throw_stmt, result, is_control_flow_dead, state, ctx); } Statement::ForStatement(for_stmt) => { - self.handle_for_statement(for_stmt, result, ctx); + self.handle_for_statement(for_stmt, result, state, ctx); } Statement::ForInStatement(for_in_stmt) => { - self.handle_for_in_statement(for_in_stmt, result, ctx); + self.handle_for_in_statement(for_in_stmt, result, state, ctx); } Statement::ForOfStatement(for_of_stmt) => { - self.handle_for_of_statement(for_of_stmt, result, ctx); + self.handle_for_of_statement(for_of_stmt, result, state, ctx); } - Statement::BlockStatement(block_stmt) => self.handle_block(result, block_stmt), + Statement::BlockStatement(block_stmt) => self.handle_block(result, block_stmt, state), stmt => result.push(stmt), } ControlFlow::Continue(()) @@ -363,24 +370,26 @@ impl<'a> PeepholeOptimizations { } fn handle_variable_declaration( - &mut self, + &self, mut var_decl: Box<'a, VariableDeclaration<'a>>, result: &mut Vec<'a, Statement<'a>>, + state: &mut State, ) { if let Some(Statement::VariableDeclaration(prev_var_decl)) = result.last_mut() { if var_decl.kind == prev_var_decl.kind { var_decl.declarations.splice(0..0, prev_var_decl.declarations.drain(..)); result.pop(); - self.mark_current_function_as_changed(); + state.changed = true; } } result.push(Statement::VariableDeclaration(var_decl)); } fn handle_expression_statement( - &mut self, + &self, mut expr_stmt: Box<'a, ExpressionStatement<'a>>, result: &mut Vec<'a, Statement<'a>>, + state: &mut State, ctx: Ctx<'a, '_>, ) { if let Some(Statement::ExpressionStatement(prev_expr_stmt)) = result.last_mut() { @@ -388,15 +397,16 @@ impl<'a> PeepholeOptimizations { let b = &mut expr_stmt.expression; expr_stmt.expression = Self::join_sequence(a, b, ctx); result.pop(); - self.mark_current_function_as_changed(); + state.changed = true; } result.push(Statement::ExpressionStatement(expr_stmt)); } fn handle_switch_statement( - &mut self, + &self, mut switch_stmt: Box<'a, SwitchStatement<'a>>, result: &mut Vec<'a, Statement<'a>>, + state: &mut State, ctx: Ctx<'a, '_>, ) { if let Some(Statement::ExpressionStatement(prev_expr_stmt)) = result.last_mut() { @@ -404,18 +414,19 @@ impl<'a> PeepholeOptimizations { let b = &mut switch_stmt.discriminant; switch_stmt.discriminant = Self::join_sequence(a, b, ctx); result.pop(); - self.mark_current_function_as_changed(); + state.changed = true; } result.push(Statement::SwitchStatement(switch_stmt)); } #[expect(clippy::cast_possible_truncation)] fn handle_if_statement( - &mut self, + &self, i: usize, stmts: &mut Vec<'a, Statement<'a>>, mut if_stmt: Box<'a, IfStatement<'a>>, result: &mut Vec<'a, Statement<'a>>, + state: &mut State, ctx: Ctx<'a, '_>, ) -> ControlFlow<()> { // Absorb a previous expression statement @@ -424,7 +435,7 @@ impl<'a> PeepholeOptimizations { let b = &mut if_stmt.test; if_stmt.test = Self::join_sequence(a, b, ctx); result.pop(); - self.mark_current_function_as_changed(); + state.changed = true; } if if_stmt.consequent.is_jump_statement() { @@ -445,7 +456,7 @@ impl<'a> PeepholeOptimizations { ctx, ); result.pop(); - self.mark_current_function_as_changed(); + state.changed = true; } } @@ -505,7 +516,7 @@ impl<'a> PeepholeOptimizations { } body.extend(stmts.drain(i + 1..)); - self.minimize_statements(&mut body, ctx); + self.minimize_statements(&mut body, state, ctx); let span = if body.is_empty() { if_stmt.consequent.span() } else { body[0].span() }; let test = ctx.ast.move_expression(&mut if_stmt.test); @@ -521,10 +532,10 @@ impl<'a> PeepholeOptimizations { }; let mut if_stmt = ctx.ast.if_statement(test.span(), test, consequent, None); let if_stmt = self - .try_minimize_if(&mut if_stmt, ctx) + .try_minimize_if(&mut if_stmt, state, ctx) .unwrap_or_else(|| Statement::IfStatement(ctx.ast.alloc(if_stmt))); result.push(if_stmt); - self.mark_current_function_as_changed(); + state.changed = true; return ControlFlow::Break(()); } } @@ -537,10 +548,10 @@ impl<'a> PeepholeOptimizations { if if_stmt.consequent.is_jump_statement() { if let Some(stmt) = if_stmt.alternate.take() { if let Statement::BlockStatement(block_stmt) = stmt { - self.handle_block(result, block_stmt); + self.handle_block(result, block_stmt, state); } else { result.push(stmt); - self.mark_current_function_as_changed(); + state.changed = true; } continue; } @@ -557,18 +568,19 @@ impl<'a> PeepholeOptimizations { } fn handle_return_statement( - &mut self, + &self, mut ret_stmt: Box<'a, ReturnStatement<'a>>, result: &mut Vec<'a, Statement<'a>>, - ctx: Ctx<'a, '_>, is_control_flow_dead: &mut bool, + state: &mut State, + ctx: Ctx<'a, '_>, ) { if let Some(Statement::ExpressionStatement(prev_expr_stmt)) = result.last_mut() { if let Some(argument) = &mut ret_stmt.argument { let a = &mut prev_expr_stmt.expression; *argument = Self::join_sequence(a, argument, ctx); result.pop(); - self.mark_current_function_as_changed(); + state.changed = true; } } result.push(Statement::ReturnStatement(ret_stmt)); @@ -576,27 +588,29 @@ impl<'a> PeepholeOptimizations { } fn handle_throw_statement( - &mut self, + &self, mut throw_stmt: Box<'a, ThrowStatement<'a>>, result: &mut Vec<'a, Statement<'a>>, - ctx: Ctx<'a, '_>, is_control_flow_dead: &mut bool, + state: &mut State, + ctx: Ctx<'a, '_>, ) { if let Some(Statement::ExpressionStatement(prev_expr_stmt)) = result.last_mut() { let a = &mut prev_expr_stmt.expression; let b = &mut throw_stmt.argument; throw_stmt.argument = Self::join_sequence(a, b, ctx); result.pop(); - self.mark_current_function_as_changed(); + state.changed = true; } result.push(Statement::ThrowStatement(throw_stmt)); *is_control_flow_dead = true; } fn handle_for_statement( - &mut self, + &self, mut for_stmt: Box<'a, ForStatement<'a>>, result: &mut Vec<'a, Statement<'a>>, + state: &mut State, ctx: Ctx<'a, '_>, ) { match result.last_mut() { @@ -606,14 +620,14 @@ impl<'a> PeepholeOptimizations { let a = &mut prev_expr_stmt.expression; *init = Self::join_sequence(a, init, ctx); result.pop(); - self.mark_current_function_as_changed(); + state.changed = true; } } else { for_stmt.init = Some(ForStatementInit::from( ctx.ast.move_expression(&mut prev_expr_stmt.expression), )); result.pop(); - self.mark_current_function_as_changed(); + state.changed = true; } } Some(Statement::VariableDeclaration(prev_var_decl)) => { @@ -625,7 +639,7 @@ impl<'a> PeepholeOptimizations { .declarations .splice(0..0, prev_var_decl.declarations.drain(..)); result.pop(); - self.mark_current_function_as_changed(); + state.changed = true; } } } @@ -634,7 +648,7 @@ impl<'a> PeepholeOptimizations { for_stmt.init = Some(ForStatementInit::VariableDeclaration(ctx.ast.alloc(var_decl))); result.pop(); - self.mark_current_function_as_changed(); + state.changed = true; } } _ => {} @@ -643,9 +657,10 @@ impl<'a> PeepholeOptimizations { } fn handle_for_in_statement( - &mut self, + &self, mut for_in_stmt: Box<'a, ForInStatement<'a>>, result: &mut Vec<'a, Statement<'a>>, + state: &mut State, ctx: Ctx<'a, '_>, ) { match result.last_mut() { @@ -675,7 +690,7 @@ impl<'a> PeepholeOptimizations { let a = &mut prev_expr_stmt.expression; for_in_stmt.right = Self::join_sequence(a, &mut for_in_stmt.right, ctx); result.pop(); - self.mark_current_function_as_changed(); + state.changed = true; } } // "var a; for (a in b) c" => "for (var a in b) c" @@ -700,7 +715,7 @@ impl<'a> PeepholeOptimizations { ctx.ast.alloc(ctx.ast.move_variable_declaration(prev_var_decl)), ); result.pop(); - self.mark_current_function_as_changed(); + state.changed = true; } } } @@ -712,9 +727,10 @@ impl<'a> PeepholeOptimizations { } fn handle_for_of_statement( - &mut self, + &self, mut for_of_stmt: Box<'a, ForOfStatement<'a>>, result: &mut Vec<'a, Statement<'a>>, + state: &mut State, ctx: Ctx<'a, '_>, ) { // "var a; for (a of b) c" => "for (var a of b) c" @@ -739,7 +755,7 @@ impl<'a> PeepholeOptimizations { ctx.ast.alloc(ctx.ast.move_variable_declaration(prev_var_decl)), ); result.pop(); - self.mark_current_function_as_changed(); + state.changed = true; } } } @@ -750,16 +766,17 @@ impl<'a> PeepholeOptimizations { /// `appendIfOrLabelBodyPreservingScope`: fn handle_block( - &mut self, + &self, result: &mut Vec<'a, Statement<'a>>, block_stmt: Box<'a, BlockStatement<'a>>, + state: &mut State, ) { let keep_block = block_stmt.body.iter().any(Self::statement_cares_about_scope); if keep_block { result.push(Statement::BlockStatement(block_stmt)); } else { result.append(&mut block_stmt.unbox().body); - self.mark_current_function_as_changed(); + state.changed = true; } } diff --git a/crates/oxc_minifier/src/peephole/mod.rs b/crates/oxc_minifier/src/peephole/mod.rs index ddfe59a8fc82b..62e28f1abe39d 100644 --- a/crates/oxc_minifier/src/peephole/mod.rs +++ b/crates/oxc_minifier/src/peephole/mod.rs @@ -1,3 +1,5 @@ +#![allow(clippy::unused_self)] + mod collapse_variable_declarations; mod convert_to_dotted_properties; mod fold_constants; @@ -29,6 +31,11 @@ use crate::{ctx::Ctx, options::CompressOptionsKeepNames}; pub use self::normalize::{Normalize, NormalizeOptions}; +#[derive(Debug, Default, Clone, Copy)] +pub struct State { + pub changed: bool, +} + pub struct PeepholeOptimizations { target: ESTarget, keep_names: CompressOptionsKeepNames, @@ -152,7 +159,11 @@ impl<'a> Traverse<'a> for PeepholeOptimizations { return; } let ctx = Ctx(ctx); - self.minimize_statements(stmts, ctx); + let mut state = State::default(); + self.minimize_statements(stmts, &mut state, ctx); + if state.changed { + self.mark_current_function_as_changed(); + } } fn exit_statement(&mut self, stmt: &mut Statement<'a>, ctx: &mut TraverseCtx<'a>) { @@ -160,21 +171,29 @@ impl<'a> Traverse<'a> for PeepholeOptimizations { return; } let ctx = Ctx(ctx); + let mut state = State::default(); self.try_fold_stmt_in_boolean_context(stmt, ctx); - self.remove_dead_code_exit_statement(stmt, ctx); + self.remove_dead_code_exit_statement(stmt, &mut state, ctx); if let Statement::IfStatement(if_stmt) = stmt { - if let Some(folded_stmt) = self.try_minimize_if(if_stmt, ctx) { + if let Some(folded_stmt) = self.try_minimize_if(if_stmt, &mut state, ctx) { *stmt = folded_stmt; self.mark_current_function_as_changed(); } } + if state.changed { + self.mark_current_function_as_changed(); + } } fn exit_for_statement(&mut self, stmt: &mut ForStatement<'a>, ctx: &mut TraverseCtx<'a>) { if !self.is_prev_function_changed() { return; } - self.minimize_for_statement(stmt, Ctx(ctx)); + let mut state = State::default(); + self.minimize_for_statement(stmt, &mut state, Ctx(ctx)); + if state.changed { + self.mark_current_function_as_changed(); + } } fn exit_return_statement(&mut self, stmt: &mut ReturnStatement<'a>, ctx: &mut TraverseCtx<'a>) { @@ -182,7 +201,11 @@ impl<'a> Traverse<'a> for PeepholeOptimizations { return; } let ctx = Ctx(ctx); - self.substitute_return_statement(stmt, ctx); + let mut state = State::default(); + self.substitute_return_statement(stmt, &mut state, ctx); + if state.changed { + self.mark_current_function_as_changed(); + } } fn exit_variable_declaration( @@ -194,7 +217,11 @@ impl<'a> Traverse<'a> for PeepholeOptimizations { return; } let ctx = Ctx(ctx); - self.substitute_variable_declaration(decl, ctx); + let mut state = State::default(); + self.substitute_variable_declaration(decl, &mut state, ctx); + if state.changed { + self.mark_current_function_as_changed(); + } } fn exit_expression(&mut self, expr: &mut Expression<'a>, ctx: &mut TraverseCtx<'a>) { @@ -202,11 +229,15 @@ impl<'a> Traverse<'a> for PeepholeOptimizations { return; } let ctx = Ctx(ctx); - self.fold_constants_exit_expression(expr, ctx); - self.minimize_conditions_exit_expression(expr, ctx); - self.remove_dead_code_exit_expression(expr, ctx); - self.replace_known_methods_exit_expression(expr, ctx); - self.substitute_exit_expression(expr, ctx); + let mut state = State::default(); + self.fold_constants_exit_expression(expr, &mut state, ctx); + self.minimize_conditions_exit_expression(expr, &mut state, ctx); + self.remove_dead_code_exit_expression(expr, &mut state, ctx); + self.replace_known_methods_exit_expression(expr, &mut state, ctx); + self.substitute_exit_expression(expr, &mut state, ctx); + if state.changed { + self.mark_current_function_as_changed(); + } } fn exit_unary_expression(&mut self, expr: &mut UnaryExpression<'a>, ctx: &mut TraverseCtx<'a>) { @@ -225,7 +256,11 @@ impl<'a> Traverse<'a> for PeepholeOptimizations { return; } let ctx = Ctx(ctx); - self.substitute_call_expression(expr, ctx); + let mut state = State::default(); + self.substitute_call_expression(expr, &mut state, ctx); + if state.changed { + self.mark_current_function_as_changed(); + } } fn exit_new_expression(&mut self, expr: &mut NewExpression<'a>, ctx: &mut TraverseCtx<'a>) { @@ -233,7 +268,11 @@ impl<'a> Traverse<'a> for PeepholeOptimizations { return; } let ctx = Ctx(ctx); - self.substitute_new_expression(expr, ctx); + let mut state = State::default(); + self.substitute_new_expression(expr, &mut state, ctx); + if state.changed { + self.mark_current_function_as_changed(); + } } fn exit_object_property(&mut self, prop: &mut ObjectProperty<'a>, ctx: &mut TraverseCtx<'a>) { @@ -241,7 +280,11 @@ impl<'a> Traverse<'a> for PeepholeOptimizations { return; } let ctx = Ctx(ctx); - self.substitute_object_property(prop, ctx); + let mut state = State::default(); + self.substitute_object_property(prop, &mut state, ctx); + if state.changed { + self.mark_current_function_as_changed(); + } } fn exit_assignment_target_property( @@ -253,7 +296,11 @@ impl<'a> Traverse<'a> for PeepholeOptimizations { return; } let ctx = Ctx(ctx); - self.substitute_assignment_target_property(node, ctx); + let mut state = State::default(); + self.substitute_assignment_target_property(node, &mut state, ctx); + if state.changed { + self.mark_current_function_as_changed(); + } } fn exit_assignment_target_property_property( @@ -265,7 +312,11 @@ impl<'a> Traverse<'a> for PeepholeOptimizations { return; } let ctx = Ctx(ctx); - self.substitute_assignment_target_property_property(prop, ctx); + let mut state = State::default(); + self.substitute_assignment_target_property_property(prop, &mut state, ctx); + if state.changed { + self.mark_current_function_as_changed(); + } } fn exit_binding_property(&mut self, prop: &mut BindingProperty<'a>, ctx: &mut TraverseCtx<'a>) { @@ -273,7 +324,11 @@ impl<'a> Traverse<'a> for PeepholeOptimizations { return; } let ctx = Ctx(ctx); - self.substitute_binding_property(prop, ctx); + let mut state = State::default(); + self.substitute_binding_property(prop, &mut state, ctx); + if state.changed { + self.mark_current_function_as_changed(); + } } fn exit_method_definition( @@ -285,7 +340,11 @@ impl<'a> Traverse<'a> for PeepholeOptimizations { return; } let ctx = Ctx(ctx); - self.substitute_method_definition(prop, ctx); + let mut state = State::default(); + self.substitute_method_definition(prop, &mut state, ctx); + if state.changed { + self.mark_current_function_as_changed(); + } } fn exit_property_definition( @@ -297,7 +356,11 @@ impl<'a> Traverse<'a> for PeepholeOptimizations { return; } let ctx = Ctx(ctx); - self.substitute_property_definition(prop, ctx); + let mut state = State::default(); + self.substitute_property_definition(prop, &mut state, ctx); + if state.changed { + self.mark_current_function_as_changed(); + } } fn exit_accessor_property( @@ -309,7 +372,11 @@ impl<'a> Traverse<'a> for PeepholeOptimizations { return; } let ctx = Ctx(ctx); - self.substitute_accessor_property(prop, ctx); + let mut state = State::default(); + self.substitute_accessor_property(prop, &mut state, ctx); + if state.changed { + self.mark_current_function_as_changed(); + } } } @@ -380,16 +447,19 @@ impl<'a> DeadCodeElimination { impl<'a> Traverse<'a> for DeadCodeElimination { fn exit_statement(&mut self, stmt: &mut Statement<'a>, ctx: &mut TraverseCtx<'a>) { - self.inner.remove_dead_code_exit_statement(stmt, Ctx(ctx)); + let mut state = State::default(); + self.inner.remove_dead_code_exit_statement(stmt, &mut state, Ctx(ctx)); } fn exit_statements(&mut self, stmts: &mut Vec<'a, Statement<'a>>, ctx: &mut TraverseCtx<'a>) { - self.inner.remove_dead_code_exit_statements(stmts, Ctx(ctx)); + let mut state = State::default(); + self.inner.remove_dead_code_exit_statements(stmts, &mut state, Ctx(ctx)); stmts.retain(|stmt| !matches!(stmt, Statement::EmptyStatement(_))); } fn exit_expression(&mut self, expr: &mut Expression<'a>, ctx: &mut TraverseCtx<'a>) { - self.inner.fold_constants_exit_expression(expr, Ctx(ctx)); - self.inner.remove_dead_code_exit_expression(expr, Ctx(ctx)); + let mut state = State::default(); + self.inner.fold_constants_exit_expression(expr, &mut state, Ctx(ctx)); + self.inner.remove_dead_code_exit_expression(expr, &mut state, Ctx(ctx)); } } diff --git a/crates/oxc_minifier/src/peephole/remove_dead_code.rs b/crates/oxc_minifier/src/peephole/remove_dead_code.rs index 1d6ebe49c45a7..bcf6a00f08c22 100644 --- a/crates/oxc_minifier/src/peephole/remove_dead_code.rs +++ b/crates/oxc_minifier/src/peephole/remove_dead_code.rs @@ -7,7 +7,7 @@ use oxc_traverse::Ancestor; use crate::{ctx::Ctx, keep_var::KeepVar}; -use super::{LatePeepholeOptimizations, PeepholeOptimizations}; +use super::{LatePeepholeOptimizations, PeepholeOptimizations, State}; /// Remove Dead Code from the AST. /// @@ -16,43 +16,52 @@ use super::{LatePeepholeOptimizations, PeepholeOptimizations}; /// See `KeepVar` at the end of this file for `var` hoisting logic. /// impl<'a, 'b> PeepholeOptimizations { - pub fn remove_dead_code_exit_statement(&mut self, stmt: &mut Statement<'a>, ctx: Ctx<'a, '_>) { + pub fn remove_dead_code_exit_statement( + &self, + stmt: &mut Statement<'a>, + state: &mut State, + ctx: Ctx<'a, '_>, + ) { if let Some(new_stmt) = match stmt { Statement::BlockStatement(s) => Self::try_optimize_block(s, ctx), - Statement::IfStatement(s) => self.try_fold_if(s, ctx), - Statement::ForStatement(s) => self.try_fold_for(s, ctx), + Statement::IfStatement(s) => Self::try_fold_if(s, state, ctx), + Statement::ForStatement(s) => self.try_fold_for(s, state, ctx), Statement::TryStatement(s) => Self::try_fold_try(s, ctx), Statement::LabeledStatement(s) => Self::try_fold_labeled(s, ctx), _ => None, } { *stmt = new_stmt; - self.mark_current_function_as_changed(); + state.changed = true; } - self.try_fold_expression_stmt(stmt, ctx); + self.try_fold_expression_stmt(stmt, state, ctx); } pub fn remove_dead_code_exit_expression( - &mut self, + &self, expr: &mut Expression<'a>, + state: &mut State, ctx: Ctx<'a, '_>, ) { if let Some(folded_expr) = match expr { - Expression::ConditionalExpression(e) => self.try_fold_conditional_expression(e, ctx), + Expression::ConditionalExpression(e) => { + self.try_fold_conditional_expression(e, state, ctx) + } Expression::SequenceExpression(sequence_expression) => { - self.try_fold_sequence_expression(sequence_expression, ctx) + self.try_fold_sequence_expression(sequence_expression, state, ctx) } _ => None, } { *expr = folded_expr; - self.mark_current_function_as_changed(); + state.changed = true; } } /// Removes dead code thats comes after `return`, `throw`, `continue` and `break` statements. pub fn remove_dead_code_exit_statements( - &mut self, + &self, stmts: &mut Vec<'a, Statement<'a>>, + state: &mut State, ctx: Ctx<'a, '_>, ) { // Remove code after `return` and `throw` statements @@ -104,12 +113,12 @@ impl<'a, 'b> PeepholeOptimizations { if let Some(stmt) = keep_var.get_variable_declaration_statement() { stmts.push(stmt); if !all_hoisted { - self.mark_current_function_as_changed(); + state.changed = true; } } if stmts.len() != len { - self.mark_current_function_as_changed(); + state.changed = true; } } @@ -150,29 +159,29 @@ impl<'a, 'b> PeepholeOptimizations { } fn try_fold_if( - &mut self, if_stmt: &mut IfStatement<'a>, + state: &mut State, ctx: Ctx<'a, 'b>, ) -> Option> { // Descend and remove `else` blocks first. match &mut if_stmt.alternate { Some(Statement::IfStatement(alternate)) => { - if let Some(new_stmt) = self.try_fold_if(alternate, ctx) { + if let Some(new_stmt) = Self::try_fold_if(alternate, state, ctx) { if matches!(new_stmt, Statement::EmptyStatement(_)) { if_stmt.alternate = None; } else { if_stmt.alternate = Some(new_stmt); } - self.mark_current_function_as_changed(); + state.changed = true; } } Some(Statement::BlockStatement(s)) if s.body.is_empty() => { if_stmt.alternate = None; - self.mark_current_function_as_changed(); + state.changed = true; } Some(Statement::EmptyStatement(_)) => { if_stmt.alternate = None; - self.mark_current_function_as_changed(); + state.changed = true; } _ => {} } @@ -235,22 +244,23 @@ impl<'a, 'b> PeepholeOptimizations { } fn try_fold_for( - &mut self, + &self, for_stmt: &mut ForStatement<'a>, + state: &mut State, ctx: Ctx<'a, 'b>, ) -> Option> { if let Some(init) = &mut for_stmt.init { if let Some(init) = init.as_expression_mut() { - if self.remove_unused_expression(init, ctx) { + if self.remove_unused_expression(init, state, ctx) { for_stmt.init = None; - self.mark_current_function_as_changed(); + state.changed = true; } } } if let Some(update) = &mut for_stmt.update { - if self.remove_unused_expression(update, ctx) { + if self.remove_unused_expression(update, state, ctx) { for_stmt.update = None; - self.mark_current_function_as_changed(); + state.changed = true; } } @@ -293,7 +303,7 @@ impl<'a, 'b> PeepholeOptimizations { Some(true) => { // Remove the test expression. for_stmt.test = None; - self.mark_current_function_as_changed(); + state.changed = true; None } None => None, @@ -324,7 +334,12 @@ impl<'a, 'b> PeepholeOptimizations { var_decl.unwrap_or_else(|| ctx.ast.statement_empty(s.span)).into() } - fn try_fold_expression_stmt(&mut self, stmt: &mut Statement<'a>, ctx: Ctx<'a, 'b>) { + fn try_fold_expression_stmt( + &self, + stmt: &mut Statement<'a>, + state: &mut State, + ctx: Ctx<'a, 'b>, + ) { let Statement::ExpressionStatement(expr_stmt) = stmt else { return }; // We need to check if it is in arrow function with `expression: true`. // This is the only scenario where we can't remove it even if `ExpressionStatement`. @@ -334,9 +349,9 @@ impl<'a, 'b> PeepholeOptimizations { } } - if self.remove_unused_expression(&mut expr_stmt.expression, ctx) { + if self.remove_unused_expression(&mut expr_stmt.expression, state, ctx) { *stmt = ctx.ast.statement_empty(expr_stmt.span); - self.mark_current_function_as_changed(); + state.changed = true; } } @@ -375,8 +390,9 @@ impl<'a, 'b> PeepholeOptimizations { /// Try folding conditional expression (?:) if the condition results of the condition is known. fn try_fold_conditional_expression( - &mut self, + &self, expr: &mut ConditionalExpression<'a>, + state: &mut State, ctx: Ctx<'a, 'b>, ) -> Option> { expr.test.evaluate_value_to_boolean(&ctx).map(|v| { @@ -385,7 +401,7 @@ impl<'a, 'b> PeepholeOptimizations { let exprs = ctx.ast.vec_from_array([ { let mut test = ctx.ast.move_expression(&mut expr.test); - self.remove_unused_expression(&mut test, ctx); + self.remove_unused_expression(&mut test, state, ctx); test }, ctx.ast.move_expression(if v { @@ -426,8 +442,9 @@ impl<'a, 'b> PeepholeOptimizations { } fn try_fold_sequence_expression( - &mut self, + &self, sequence_expr: &mut SequenceExpression<'a>, + state: &mut State, ctx: Ctx<'a, 'b>, ) -> Option> { let should_keep_as_sequence_expr = sequence_expr @@ -446,28 +463,28 @@ impl<'a, 'b> PeepholeOptimizations { sequence_expr.expressions.retain_mut(|e| { i += 1; if should_keep_as_sequence_expr && i == old_len - 1 { - if self.remove_unused_expression(e, ctx) { + if self.remove_unused_expression(e, state, ctx) { *e = ctx.ast.expression_numeric_literal( e.span(), 0.0, None, NumberBase::Decimal, ); - self.mark_current_function_as_changed(); + state.changed = true; } return true; } if i == old_len { return true; } - !self.remove_unused_expression(e, ctx) + !self.remove_unused_expression(e, state, ctx) }); if sequence_expr.expressions.len() == 1 { return Some(sequence_expr.expressions.pop().unwrap()); } if sequence_expr.expressions.len() != old_len { - self.mark_current_function_as_changed(); + state.changed = true; } None } diff --git a/crates/oxc_minifier/src/peephole/remove_unused_expression.rs b/crates/oxc_minifier/src/peephole/remove_unused_expression.rs index b88dd3cba63c0..f56ea0ddeaaed 100644 --- a/crates/oxc_minifier/src/peephole/remove_unused_expression.rs +++ b/crates/oxc_minifier/src/peephole/remove_unused_expression.rs @@ -12,70 +12,90 @@ use oxc_syntax::es_target::ESTarget; use crate::ctx::Ctx; -use super::PeepholeOptimizations; +use super::{PeepholeOptimizations, State}; impl<'a> PeepholeOptimizations { /// `SimplifyUnusedExpr`: - pub fn remove_unused_expression(&mut self, e: &mut Expression<'a>, ctx: Ctx<'a, '_>) -> bool { + pub fn remove_unused_expression( + &self, + e: &mut Expression<'a>, + state: &mut State, + ctx: Ctx<'a, '_>, + ) -> bool { match e { - Expression::ArrayExpression(_) => self.fold_array_expression(e, ctx), - Expression::UnaryExpression(_) => self.fold_unary_expression(e, ctx), - Expression::NewExpression(_) => self.fold_new_constructor(e, ctx), - Expression::LogicalExpression(_) => self.fold_logical_expression(e, ctx), - Expression::SequenceExpression(_) => self.fold_sequence_expression(e, ctx), - Expression::TemplateLiteral(_) => self.fold_template_literal(e, ctx), - Expression::ObjectExpression(_) => self.fold_object_expression(e, ctx), - Expression::ConditionalExpression(_) => self.fold_conditional_expression(e, ctx), - Expression::BinaryExpression(_) => self.fold_binary_expression(e, ctx), - Expression::CallExpression(_) => self.fold_call_expression(e, ctx), + Expression::ArrayExpression(_) => self.fold_array_expression(e, state, ctx), + Expression::UnaryExpression(_) => self.fold_unary_expression(e, state, ctx), + Expression::NewExpression(_) => self.fold_new_constructor(e, state, ctx), + Expression::LogicalExpression(_) => self.fold_logical_expression(e, state, ctx), + Expression::SequenceExpression(_) => self.fold_sequence_expression(e, state, ctx), + Expression::TemplateLiteral(_) => self.fold_template_literal(e, state, ctx), + Expression::ObjectExpression(_) => self.fold_object_expression(e, state, ctx), + Expression::ConditionalExpression(_) => self.fold_conditional_expression(e, state, ctx), + Expression::BinaryExpression(_) => self.fold_binary_expression(e, state, ctx), + Expression::CallExpression(_) => self.fold_call_expression(e, state, ctx), _ => !e.may_have_side_effects(&ctx), } } - fn fold_unary_expression(&mut self, e: &mut Expression<'a>, ctx: Ctx<'a, '_>) -> bool { + fn fold_unary_expression( + &self, + e: &mut Expression<'a>, + state: &mut State, + ctx: Ctx<'a, '_>, + ) -> bool { let Expression::UnaryExpression(unary_expr) = e else { return false }; match unary_expr.operator { UnaryOperator::Void | UnaryOperator::LogicalNot => { *e = ctx.ast.move_expression(&mut unary_expr.argument); - self.mark_current_function_as_changed(); - self.remove_unused_expression(e, ctx) + state.changed = true; + self.remove_unused_expression(e, state, ctx) } UnaryOperator::Typeof => { if unary_expr.argument.is_identifier_reference() { true } else { *e = ctx.ast.move_expression(&mut unary_expr.argument); - self.mark_current_function_as_changed(); - self.remove_unused_expression(e, ctx) + state.changed = true; + self.remove_unused_expression(e, state, ctx) } } _ => false, } } - fn fold_sequence_expression(&mut self, e: &mut Expression<'a>, ctx: Ctx<'a, '_>) -> bool { + fn fold_sequence_expression( + &self, + e: &mut Expression<'a>, + state: &mut State, + ctx: Ctx<'a, '_>, + ) -> bool { let Expression::SequenceExpression(sequence_expr) = e else { return false }; let old_len = sequence_expr.expressions.len(); - sequence_expr.expressions.retain_mut(|e| !self.remove_unused_expression(e, ctx)); + sequence_expr.expressions.retain_mut(|e| !self.remove_unused_expression(e, state, ctx)); if sequence_expr.expressions.len() != old_len { - self.mark_current_function_as_changed(); + state.changed = true; } sequence_expr.expressions.is_empty() } - fn fold_logical_expression(&mut self, e: &mut Expression<'a>, ctx: Ctx<'a, '_>) -> bool { + fn fold_logical_expression( + &self, + e: &mut Expression<'a>, + state: &mut State, + ctx: Ctx<'a, '_>, + ) -> bool { let Expression::LogicalExpression(logical_expr) = e else { return false }; if !logical_expr.operator.is_coalesce() && self.try_fold_expr_in_boolean_context(&mut logical_expr.left, ctx) { - self.mark_current_function_as_changed(); + state.changed = true; } - if self.remove_unused_expression(&mut logical_expr.right, ctx) { - self.remove_unused_expression(&mut logical_expr.left, ctx); + if self.remove_unused_expression(&mut logical_expr.right, state, ctx) { + self.remove_unused_expression(&mut logical_expr.left, state, ctx); *e = ctx.ast.move_expression(&mut logical_expr.left); - self.mark_current_function_as_changed(); + state.changed = true; return false; } @@ -110,7 +130,7 @@ impl<'a> PeepholeOptimizations { ctx, ) { *e = ctx.ast.move_expression(logical_right); - self.mark_current_function_as_changed(); + state.changed = true; return false; } } @@ -141,7 +161,7 @@ impl<'a> PeepholeOptimizations { assignment_expr.span = *logical_span; assignment_expr.operator = AssignmentOperator::LogicalNullish; *e = ctx.ast.move_expression(logical_right); - self.mark_current_function_as_changed(); + state.changed = true; return false; } } @@ -152,7 +172,7 @@ impl<'a> PeepholeOptimizations { LogicalOperator::Coalesce, ctx.ast.move_expression(logical_right), ); - self.mark_current_function_as_changed(); + state.changed = true; return false; } } @@ -165,7 +185,12 @@ impl<'a> PeepholeOptimizations { } // `([1,2,3, foo()])` -> `foo()` - fn fold_array_expression(&mut self, e: &mut Expression<'a>, ctx: Ctx<'a, '_>) -> bool { + fn fold_array_expression( + &self, + e: &mut Expression<'a>, + state: &mut State, + ctx: Ctx<'a, '_>, + ) -> bool { let Expression::ArrayExpression(array_expr) = e else { return false; }; @@ -179,11 +204,11 @@ impl<'a> PeepholeOptimizations { ArrayExpressionElement::Elision(_) => false, match_expression!(ArrayExpressionElement) => { let el_expr = el.to_expression_mut(); - !self.remove_unused_expression(el_expr, ctx) + !self.remove_unused_expression(el_expr, state, ctx) } }); if array_expr.elements.len() != old_len { - self.mark_current_function_as_changed(); + state.changed = true; } if array_expr.elements.len() == 0 { @@ -215,21 +240,26 @@ impl<'a> PeepholeOptimizations { false } - fn fold_new_constructor(&mut self, e: &mut Expression<'a>, ctx: Ctx<'a, '_>) -> bool { + fn fold_new_constructor( + &self, + e: &mut Expression<'a>, + state: &mut State, + ctx: Ctx<'a, '_>, + ) -> bool { let Expression::NewExpression(new_expr) = e else { return false }; if new_expr.pure { let mut exprs = - self.fold_arguments_into_needed_expressions(&mut new_expr.arguments, ctx); + self.fold_arguments_into_needed_expressions(&mut new_expr.arguments, state, ctx); if exprs.is_empty() { return true; } else if exprs.len() == 1 { *e = exprs.pop().unwrap(); - self.mark_current_function_as_changed(); + state.changed = true; return false; } *e = ctx.ast.expression_sequence(new_expr.span, exprs); - self.mark_current_function_as_changed(); + state.changed = true; return false; } @@ -279,7 +309,12 @@ impl<'a> PeepholeOptimizations { } // "`${1}2${foo()}3`" -> "`${foo()}`" - fn fold_template_literal(&mut self, e: &mut Expression<'a>, ctx: Ctx<'a, '_>) -> bool { + fn fold_template_literal( + &self, + e: &mut Expression<'a>, + state: &mut State, + ctx: Ctx<'a, '_>, + ) -> bool { let Expression::TemplateLiteral(temp_lit) = e else { return false }; if temp_lit.expressions.is_empty() { return true; @@ -296,7 +331,7 @@ impl<'a> PeepholeOptimizations { for mut e in temp_lit.expressions.drain(..) { if e.to_primitive(&ctx).is_symbol() != Some(false) { pending_to_string_required_exprs.push(e); - } else if !self.remove_unused_expression(&mut e, ctx) { + } else if !self.remove_unused_expression(&mut e, state, ctx) { if pending_to_string_required_exprs.len() > 0 { // flush pending to string required expressions let expressions = @@ -349,17 +384,22 @@ impl<'a> PeepholeOptimizations { return true; } else if transformed_elements.len() == 1 { *e = transformed_elements.pop().unwrap(); - self.mark_current_function_as_changed(); + state.changed = true; return false; } *e = ctx.ast.expression_sequence(temp_lit.span, transformed_elements); - self.mark_current_function_as_changed(); + state.changed = true; false } // `({ 1: 1, [foo()]: bar() })` -> `foo(), bar()` - fn fold_object_expression(&mut self, e: &mut Expression<'a>, ctx: Ctx<'a, '_>) -> bool { + fn fold_object_expression( + &self, + e: &mut Expression<'a>, + state: &mut State, + ctx: Ctx<'a, '_>, + ) -> bool { let Expression::ObjectExpression(object_expr) = e else { return false; }; @@ -396,13 +436,13 @@ impl<'a> PeepholeOptimizations { PropertyKey::StaticIdentifier(_) | PropertyKey::PrivateIdentifier(_) => {} match_expression!(PropertyKey) => { let mut prop_key = key.into_expression(); - if !self.remove_unused_expression(&mut prop_key, ctx) { + if !self.remove_unused_expression(&mut prop_key, state, ctx) { transformed_elements.push(prop_key); } } } - if !self.remove_unused_expression(&mut value, ctx) { + if !self.remove_unused_expression(&mut value, state, ctx) { transformed_elements.push(value); } } @@ -421,31 +461,37 @@ impl<'a> PeepholeOptimizations { return true; } else if transformed_elements.len() == 1 { *e = transformed_elements.pop().unwrap(); - self.mark_current_function_as_changed(); + state.changed = true; return false; } *e = ctx.ast.expression_sequence(object_expr.span, transformed_elements); - self.mark_current_function_as_changed(); + state.changed = true; false } - fn fold_conditional_expression(&mut self, e: &mut Expression<'a>, ctx: Ctx<'a, '_>) -> bool { + fn fold_conditional_expression( + &self, + e: &mut Expression<'a>, + state: &mut State, + ctx: Ctx<'a, '_>, + ) -> bool { let Expression::ConditionalExpression(conditional_expr) = e else { return false; }; - let consequent = self.remove_unused_expression(&mut conditional_expr.consequent, ctx); - let alternate = self.remove_unused_expression(&mut conditional_expr.alternate, ctx); + let consequent = + self.remove_unused_expression(&mut conditional_expr.consequent, state, ctx); + let alternate = self.remove_unused_expression(&mut conditional_expr.alternate, state, ctx); // "foo() ? 1 : 2" => "foo()" if consequent && alternate { - let test = self.remove_unused_expression(&mut conditional_expr.test, ctx); + let test = self.remove_unused_expression(&mut conditional_expr.test, state, ctx); if test { return true; } *e = ctx.ast.move_expression(&mut conditional_expr.test); - self.mark_current_function_as_changed(); + state.changed = true; return false; } @@ -458,7 +504,7 @@ impl<'a> PeepholeOptimizations { ctx.ast.move_expression(&mut conditional_expr.alternate), ctx, ); - self.mark_current_function_as_changed(); + state.changed = true; return false; } @@ -471,14 +517,19 @@ impl<'a> PeepholeOptimizations { ctx.ast.move_expression(&mut conditional_expr.consequent), ctx, ); - self.mark_current_function_as_changed(); + state.changed = true; return false; } false } - fn fold_binary_expression(&mut self, e: &mut Expression<'a>, ctx: Ctx<'a, '_>) -> bool { + fn fold_binary_expression( + &self, + e: &mut Expression<'a>, + state: &mut State, + ctx: Ctx<'a, '_>, + ) -> bool { let Expression::BinaryExpression(binary_expr) = e else { return false; }; @@ -492,18 +543,18 @@ impl<'a> PeepholeOptimizations { | BinaryOperator::LessEqualThan | BinaryOperator::GreaterThan | BinaryOperator::GreaterEqualThan => { - let left = self.remove_unused_expression(&mut binary_expr.left, ctx); - let right = self.remove_unused_expression(&mut binary_expr.right, ctx); + let left = self.remove_unused_expression(&mut binary_expr.left, state, ctx); + let right = self.remove_unused_expression(&mut binary_expr.right, state, ctx); match (left, right) { (true, true) => true, (true, false) => { *e = ctx.ast.move_expression(&mut binary_expr.right); - self.mark_current_function_as_changed(); + state.changed = true; false } (false, true) => { *e = ctx.ast.move_expression(&mut binary_expr.left); - self.mark_current_function_as_changed(); + state.changed = true; false } (false, false) => { @@ -514,13 +565,13 @@ impl<'a> PeepholeOptimizations { ctx.ast.move_expression(&mut binary_expr.right), ]), ); - self.mark_current_function_as_changed(); + state.changed = true; false } } } BinaryOperator::Addition => { - self.fold_string_addition_chain(e, ctx); + Self::fold_string_addition_chain(e, state, ctx); matches!(e, Expression::StringLiteral(_)) } _ => !e.may_have_side_effects(&ctx), @@ -528,7 +579,11 @@ impl<'a> PeepholeOptimizations { } /// returns whether the passed expression is a string - fn fold_string_addition_chain(&mut self, e: &mut Expression<'a>, ctx: Ctx<'a, '_>) -> bool { + fn fold_string_addition_chain( + e: &mut Expression<'a>, + state: &mut State, + ctx: Ctx<'a, '_>, + ) -> bool { let Expression::BinaryExpression(binary_expr) = e else { return e.to_primitive(&ctx).is_string() == Some(true); }; @@ -536,14 +591,14 @@ impl<'a> PeepholeOptimizations { return e.to_primitive(&ctx).is_string() == Some(true); } - let left_is_string = self.fold_string_addition_chain(&mut binary_expr.left, ctx); + let left_is_string = Self::fold_string_addition_chain(&mut binary_expr.left, state, ctx); if left_is_string { if !binary_expr.left.may_have_side_effects(&ctx) && !binary_expr.left.is_specific_string_literal("") { binary_expr.left = ctx.ast.expression_string_literal(binary_expr.left.span(), "", None); - self.mark_current_function_as_changed(); + state.changed = true; } let right_as_primitive = binary_expr.right.to_primitive(&ctx); @@ -551,7 +606,7 @@ impl<'a> PeepholeOptimizations { && !binary_expr.right.may_have_side_effects(&ctx) { *e = ctx.ast.move_expression(&mut binary_expr.left); - self.mark_current_function_as_changed(); + state.changed = true; return true; } return true; @@ -564,28 +619,33 @@ impl<'a> PeepholeOptimizations { { binary_expr.right = ctx.ast.expression_string_literal(binary_expr.right.span(), "", None); - self.mark_current_function_as_changed(); + state.changed = true; } return true; } false } - fn fold_call_expression(&mut self, e: &mut Expression<'a>, ctx: Ctx<'a, '_>) -> bool { + fn fold_call_expression( + &self, + e: &mut Expression<'a>, + state: &mut State, + ctx: Ctx<'a, '_>, + ) -> bool { let Expression::CallExpression(call_expr) = e else { return false }; if call_expr.pure { let mut exprs = - self.fold_arguments_into_needed_expressions(&mut call_expr.arguments, ctx); + self.fold_arguments_into_needed_expressions(&mut call_expr.arguments, state, ctx); if exprs.is_empty() { return true; } else if exprs.len() == 1 { *e = exprs.pop().unwrap(); - self.mark_current_function_as_changed(); + state.changed = true; return false; } *e = ctx.ast.expression_sequence(call_expr.span, exprs); - self.mark_current_function_as_changed(); + state.changed = true; return false; } @@ -607,19 +667,19 @@ impl<'a> PeepholeOptimizations { // Replace "(() => foo())()" with "foo()" let expr = f.get_expression_mut().unwrap(); *e = ctx.ast.move_expression(expr); - return self.remove_unused_expression(e, ctx); + return self.remove_unused_expression(e, state, ctx); } match &mut f.body.statements[0] { Statement::ExpressionStatement(expr_stmt) => { // Replace "(() => { foo() })" with "foo()" *e = ctx.ast.move_expression(&mut expr_stmt.expression); - return self.remove_unused_expression(e, ctx); + return self.remove_unused_expression(e, state, ctx); } Statement::ReturnStatement(ret_stmt) => { if let Some(argument) = &mut ret_stmt.argument { // Replace "(() => { return foo() })" with "foo()" *e = ctx.ast.move_expression(argument); - return self.remove_unused_expression(e, ctx); + return self.remove_unused_expression(e, state, ctx); } // Replace "(() => { return })" with "" return true; @@ -634,8 +694,9 @@ impl<'a> PeepholeOptimizations { } fn fold_arguments_into_needed_expressions( - &mut self, + &self, args: &mut Vec<'a, Argument<'a>>, + state: &mut State, ctx: Ctx<'a, '_>, ) -> Vec<'a, Expression<'a>> { ctx.ast.vec_from_iter(args.drain(..).filter_map(|arg| { @@ -647,7 +708,7 @@ impl<'a> PeepholeOptimizations { ), match_expression!(Argument) => arg.into_expression(), }; - (!self.remove_unused_expression(&mut expr, ctx)).then_some(expr) + (!self.remove_unused_expression(&mut expr, state, ctx)).then_some(expr) })) } } diff --git a/crates/oxc_minifier/src/peephole/replace_known_methods.rs b/crates/oxc_minifier/src/peephole/replace_known_methods.rs index b8f0b2097e957..bea857fa511f7 100644 --- a/crates/oxc_minifier/src/peephole/replace_known_methods.rs +++ b/crates/oxc_minifier/src/peephole/replace_known_methods.rs @@ -15,7 +15,7 @@ use oxc_traverse::Ancestor; use crate::ctx::Ctx; -use super::PeepholeOptimizations; +use super::{PeepholeOptimizations, State}; type Arguments<'a> = oxc_allocator::Vec<'a, Argument<'a>>; @@ -23,16 +23,22 @@ impl<'a> PeepholeOptimizations { /// Minimize With Known Methods /// pub fn replace_known_methods_exit_expression( - &mut self, + &self, node: &mut Expression<'a>, + state: &mut State, ctx: Ctx<'a, '_>, ) { - self.try_fold_concat_chain(node, ctx); - self.try_fold_known_global_methods(node, ctx); - self.try_fold_known_property_access(node, ctx); + self.try_fold_concat_chain(node, state, ctx); + self.try_fold_known_global_methods(node, state, ctx); + self.try_fold_known_property_access(node, state, ctx); } - fn try_fold_known_global_methods(&mut self, node: &mut Expression<'a>, ctx: Ctx<'a, '_>) { + fn try_fold_known_global_methods( + &self, + node: &mut Expression<'a>, + state: &mut State, + ctx: Ctx<'a, '_>, + ) { let Expression::CallExpression(ce) = node else { return }; let CallExpression { span, callee, arguments, .. } = ce.as_mut(); let (name, object) = match &callee { @@ -75,7 +81,7 @@ impl<'a> PeepholeOptimizations { _ => None, }; if let Some(replacement) = replacement { - self.mark_current_function_as_changed(); + state.changed = true; *node = replacement; } } @@ -530,7 +536,12 @@ impl<'a> PeepholeOptimizations { /// `[].concat(a).concat(b)` -> `[].concat(a, b)` /// `"".concat(a).concat(b)` -> `"".concat(a, b)` - fn try_fold_concat_chain(&mut self, node: &mut Expression<'a>, ctx: Ctx<'a, '_>) { + fn try_fold_concat_chain( + &self, + node: &mut Expression<'a>, + state: &mut State, + ctx: Ctx<'a, '_>, + ) { let original_span = if let Expression::CallExpression(root_call_expr) = node { root_call_expr.span } else { @@ -606,7 +617,7 @@ impl<'a> PeepholeOptimizations { ), false, ); - self.mark_current_function_as_changed(); + state.changed = true; } /// `[].concat(1, 2)` -> `[1, 2]` @@ -771,7 +782,12 @@ impl<'a> PeepholeOptimizations { } } - fn try_fold_known_property_access(&mut self, node: &mut Expression<'a>, ctx: Ctx<'a, '_>) { + fn try_fold_known_property_access( + &self, + node: &mut Expression<'a>, + state: &mut State, + ctx: Ctx<'a, '_>, + ) { let (name, object, span) = match node { Expression::StaticMemberExpression(member) if !member.optional => { (member.property.name.as_str(), &member.object, member.span) @@ -788,7 +804,7 @@ impl<'a> PeepholeOptimizations { span, ctx, ) { - self.mark_current_function_as_changed(); + state.changed = true; *node = replacement; } } @@ -806,7 +822,7 @@ impl<'a> PeepholeOptimizations { span, ctx, ) { - self.mark_current_function_as_changed(); + state.changed = true; *node = replacement; } } @@ -829,7 +845,7 @@ impl<'a> PeepholeOptimizations { _ => None, }; if let Some(replacement) = replacement { - self.mark_current_function_as_changed(); + state.changed = true; *node = replacement; } } diff --git a/crates/oxc_minifier/src/peephole/substitute_alternate_syntax.rs b/crates/oxc_minifier/src/peephole/substitute_alternate_syntax.rs index 87f5f69535bcd..70a9694518966 100644 --- a/crates/oxc_minifier/src/peephole/substitute_alternate_syntax.rs +++ b/crates/oxc_minifier/src/peephole/substitute_alternate_syntax.rs @@ -16,14 +16,19 @@ use oxc_traverse::Ancestor; use crate::ctx::Ctx; -use super::{LatePeepholeOptimizations, PeepholeOptimizations}; +use super::{LatePeepholeOptimizations, PeepholeOptimizations, State}; /// A peephole optimization that minimizes code by simplifying conditional /// expressions, replacing IFs with HOOKs, replacing object constructors /// with literals, and simplifying returns. /// impl<'a> PeepholeOptimizations { - pub fn substitute_object_property(&mut self, prop: &mut ObjectProperty<'a>, ctx: Ctx<'a, '_>) { + pub fn substitute_object_property( + &self, + prop: &mut ObjectProperty<'a>, + state: &mut State, + ctx: Ctx<'a, '_>, + ) { // if !prop.method { if let PropertyKey::StringLiteral(str) = &prop.key { @@ -34,28 +39,31 @@ impl<'a> PeepholeOptimizations { } } - self.try_compress_property_key(&mut prop.key, &mut prop.computed, ctx); + self.try_compress_property_key(&mut prop.key, &mut prop.computed, state, ctx); } pub fn substitute_assignment_target_property_property( - &mut self, + &self, prop: &mut AssignmentTargetPropertyProperty<'a>, + state: &mut State, ctx: Ctx<'a, '_>, ) { - self.try_compress_property_key(&mut prop.name, &mut prop.computed, ctx); + self.try_compress_property_key(&mut prop.name, &mut prop.computed, state, ctx); } pub fn substitute_assignment_target_property( - &mut self, + &self, prop: &mut AssignmentTargetProperty<'a>, + state: &mut State, ctx: Ctx<'a, '_>, ) { - self.try_compress_assignment_target_property(prop, ctx); + self.try_compress_assignment_target_property(prop, state, ctx); } pub fn try_compress_assignment_target_property( - &mut self, + &self, prop: &mut AssignmentTargetProperty<'a>, + state: &mut State, ctx: Ctx<'a, '_>, ) { // `a: a` -> `a` @@ -72,22 +80,24 @@ impl<'a> PeepholeOptimizations { ctx.ast.identifier_reference(assign_target_prop_prop.span, prop_name), None, ); - self.mark_current_function_as_changed(); + state.changed = true; } } } pub fn substitute_binding_property( - &mut self, + &self, prop: &mut BindingProperty<'a>, + state: &mut State, ctx: Ctx<'a, '_>, ) { - self.try_compress_property_key(&mut prop.key, &mut prop.computed, ctx); + self.try_compress_property_key(&mut prop.key, &mut prop.computed, state, ctx); } pub fn substitute_method_definition( - &mut self, + &self, prop: &mut MethodDefinition<'a>, + state: &mut State, ctx: Ctx<'a, '_>, ) { let property_key_parent: ClassPropertyKeyParent = prop.into(); @@ -96,12 +106,13 @@ impl<'a> PeepholeOptimizations { return; } } - self.try_compress_property_key(&mut prop.key, &mut prop.computed, ctx); + self.try_compress_property_key(&mut prop.key, &mut prop.computed, state, ctx); } pub fn substitute_property_definition( - &mut self, + &self, prop: &mut PropertyDefinition<'a>, + state: &mut State, ctx: Ctx<'a, '_>, ) { let property_key_parent: ClassPropertyKeyParent = prop.into(); @@ -110,12 +121,13 @@ impl<'a> PeepholeOptimizations { return; } } - self.try_compress_property_key(&mut prop.key, &mut prop.computed, ctx); + self.try_compress_property_key(&mut prop.key, &mut prop.computed, state, ctx); } pub fn substitute_accessor_property( - &mut self, + &self, prop: &mut AccessorProperty<'a>, + state: &mut State, ctx: Ctx<'a, '_>, ) { let property_key_parent: ClassPropertyKeyParent = prop.into(); @@ -124,43 +136,64 @@ impl<'a> PeepholeOptimizations { return; } } - self.try_compress_property_key(&mut prop.key, &mut prop.computed, ctx); + self.try_compress_property_key(&mut prop.key, &mut prop.computed, state, ctx); } pub fn substitute_return_statement( - &mut self, + &self, stmt: &mut ReturnStatement<'a>, + state: &mut State, ctx: Ctx<'a, '_>, ) { - self.compress_return_statement(stmt, ctx); + self.compress_return_statement(stmt, state, ctx); } pub fn substitute_variable_declaration( - &mut self, + &self, decl: &mut VariableDeclaration<'a>, + state: &mut State, ctx: Ctx<'a, '_>, ) { for declarator in &mut decl.declarations { - self.compress_variable_declarator(declarator, ctx); + self.compress_variable_declarator(declarator, state, ctx); } } - pub fn substitute_call_expression(&mut self, expr: &mut CallExpression<'a>, ctx: Ctx<'a, '_>) { - self.try_flatten_arguments(&mut expr.arguments, ctx); + pub fn substitute_call_expression( + &self, + expr: &mut CallExpression<'a>, + state: &mut State, + ctx: Ctx<'a, '_>, + ) { + self.try_flatten_arguments(&mut expr.arguments, state, ctx); } - pub fn substitute_new_expression(&mut self, expr: &mut NewExpression<'a>, ctx: Ctx<'a, '_>) { - self.try_flatten_arguments(&mut expr.arguments, ctx); + pub fn substitute_new_expression( + &self, + expr: &mut NewExpression<'a>, + state: &mut State, + ctx: Ctx<'a, '_>, + ) { + self.try_flatten_arguments(&mut expr.arguments, state, ctx); } - pub fn substitute_exit_expression(&mut self, expr: &mut Expression<'a>, ctx: Ctx<'a, '_>) { + pub fn substitute_exit_expression( + &self, + expr: &mut Expression<'a>, + state: &mut State, + ctx: Ctx<'a, '_>, + ) { // Change syntax match expr { - Expression::ArrowFunctionExpression(e) => self.try_compress_arrow_expression(e, ctx), - Expression::ChainExpression(e) => self.try_compress_chain_call_expression(e, ctx), + Expression::ArrowFunctionExpression(e) => { + self.try_compress_arrow_expression(e, state, ctx); + } + Expression::ChainExpression(e) => { + self.try_compress_chain_call_expression(e, state, ctx); + } Expression::BinaryExpression(e) => Self::swap_binary_expressions(e), - Expression::FunctionExpression(e) => self.try_remove_name_from_functions(e, ctx), - Expression::ClassExpression(e) => self.try_remove_name_from_classes(e, ctx), + Expression::FunctionExpression(e) => self.try_remove_name_from_functions(e, state, ctx), + Expression::ClassExpression(e) => self.try_remove_name_from_classes(e, state, ctx), _ => {} } @@ -185,7 +218,7 @@ impl<'a> PeepholeOptimizations { _ => None, } { *expr = folded_expr; - self.mark_current_function_as_changed(); + state.changed = true; } } @@ -200,8 +233,9 @@ impl<'a> PeepholeOptimizations { /// `() => { return foo })` -> `() => foo` fn try_compress_arrow_expression( - &mut self, + &self, arrow_expr: &mut ArrowFunctionExpression<'a>, + state: &mut State, ctx: Ctx<'a, '_>, ) { if !arrow_expr.expression @@ -215,7 +249,7 @@ impl<'a> PeepholeOptimizations { if let Some(arg) = return_stmt_arg { *body = ctx.ast.statement_expression(arg.span(), arg); arrow_expr.expression = true; - self.mark_current_function_as_changed(); + state.changed = true; } } } @@ -567,7 +601,12 @@ impl<'a> PeepholeOptimizations { /// /// `return undefined` -> `return` /// `return void 0` -> `return` - fn compress_return_statement(&mut self, stmt: &mut ReturnStatement<'a>, ctx: Ctx<'a, '_>) { + fn compress_return_statement( + &self, + stmt: &mut ReturnStatement<'a>, + state: &mut State, + ctx: Ctx<'a, '_>, + ) { let Some(argument) = &stmt.argument else { return }; if !match argument { Expression::Identifier(ident) => ctx.is_identifier_undefined(ident), @@ -587,12 +626,13 @@ impl<'a> PeepholeOptimizations { } } stmt.argument = None; - self.mark_current_function_as_changed(); + state.changed = true; } fn compress_variable_declarator( - &mut self, + &self, decl: &mut VariableDeclarator<'a>, + state: &mut State, ctx: Ctx<'a, '_>, ) { // Destructuring Pattern has error throwing side effect. @@ -609,12 +649,11 @@ impl<'a> PeepholeOptimizations { && decl.init.as_ref().is_some_and(|init| ctx.is_expression_undefined(init)) { decl.init = None; - self.mark_current_function_as_changed(); + state.changed = true; } } - /// Fold `Boolean`, `Number`, `String`, `BigInt` constructors. - /// + /// Fold `Boolean`, /// /// `Boolean(a)` -> `!!a` /// `Number(0)` -> `0` /// `String()` -> `''` @@ -848,8 +887,9 @@ impl<'a> PeepholeOptimizations { } fn try_compress_chain_call_expression( - &mut self, + &self, chain_expr: &mut ChainExpression<'a>, + state: &mut State, ctx: Ctx<'a, '_>, ) { if let ChainElement::CallExpression(call_expr) = &mut chain_expr.expression { @@ -861,7 +901,7 @@ impl<'a> PeepholeOptimizations { .is_some_and(|mem_expr| mem_expr.is_specific_member_access("window", "Object")) { call_expr.callee = ctx.ast.expression_identifier(call_expr.callee.span(), "Object"); - self.mark_current_function_as_changed(); + state.changed = true; } } } @@ -872,9 +912,10 @@ impl<'a> PeepholeOptimizations { // fn try_compress_property_key( - &mut self, + &self, key: &mut PropertyKey<'a>, computed: &mut bool, + state: &mut State, ctx: Ctx<'a, '_>, ) { if let PropertyKey::NumericLiteral(_) = key { @@ -888,7 +929,7 @@ impl<'a> PeepholeOptimizations { if is_identifier_name(value) { *computed = false; *key = PropertyKey::StaticIdentifier(ctx.ast.alloc_identifier_name(s.span, s.value)); - self.mark_current_function_as_changed(); + state.changed = true; return; } if let Some(value) = Ctx::string_to_equivalent_number_value(value) { @@ -900,7 +941,7 @@ impl<'a> PeepholeOptimizations { None, NumberBase::Decimal, )); - self.mark_current_function_as_changed(); + state.changed = true; return; } } @@ -911,7 +952,12 @@ impl<'a> PeepholeOptimizations { // `foo(...[1,2,3])` -> `foo(1,2,3)` // `new Foo(...[1,2,3])` -> `new Foo(1,2,3)` - fn try_flatten_arguments(&mut self, args: &mut Vec<'a, Argument<'a>>, ctx: Ctx<'a, '_>) { + fn try_flatten_arguments( + &self, + args: &mut Vec<'a, Argument<'a>>, + state: &mut State, + ctx: Ctx<'a, '_>, + ) { let (new_size, should_fold) = args.iter().fold((0, false), |(mut new_size, mut should_fold), arg| { new_size += if let Argument::SpreadElement(spread_el) = arg { @@ -964,7 +1010,7 @@ impl<'a> PeepholeOptimizations { new_args.push(arg); } } - self.mark_current_function_as_changed(); + state.changed = true; } /// Remove name from function expressions if it is not used. @@ -972,14 +1018,19 @@ impl<'a> PeepholeOptimizations { /// e.g. `var a = function f() {}` -> `var a = function () {}` /// /// This compression is not safe if the code relies on `Function::name`. - fn try_remove_name_from_functions(&mut self, func: &mut Function<'a>, ctx: Ctx<'a, '_>) { + fn try_remove_name_from_functions( + &self, + func: &mut Function<'a>, + state: &mut State, + ctx: Ctx<'a, '_>, + ) { if self.keep_names.function { return; } if func.id.as_ref().is_some_and(|id| !ctx.scoping().symbol_is_used(id.symbol_id())) { func.id = None; - self.mark_current_function_as_changed(); + state.changed = true; } } @@ -988,14 +1039,19 @@ impl<'a> PeepholeOptimizations { /// e.g. `var a = class C {}` -> `var a = class {}` /// /// This compression is not safe if the code relies on `Class::name`. - fn try_remove_name_from_classes(&mut self, class: &mut Class<'a>, ctx: Ctx<'a, '_>) { + fn try_remove_name_from_classes( + &self, + class: &mut Class<'a>, + state: &mut State, + ctx: Ctx<'a, '_>, + ) { if self.keep_names.class { return; } if class.id.as_ref().is_some_and(|id| !ctx.scoping().symbol_is_used(id.symbol_id())) { class.id = None; - self.mark_current_function_as_changed(); + state.changed = true; } } } diff --git a/crates/oxc_minifier/src/tester.rs b/crates/oxc_minifier/src/tester.rs index 19ec2a63bd74d..8e2599770cd16 100644 --- a/crates/oxc_minifier/src/tester.rs +++ b/crates/oxc_minifier/src/tester.rs @@ -5,16 +5,19 @@ use oxc_span::SourceType; use crate::{CompressOptions, Compressor}; +#[track_caller] pub fn test_same(source_text: &str) { test(source_text, source_text); } +#[track_caller] pub fn test(source_text: &str, expected: &str) { let result = run(source_text, Some(CompressOptions::smallest())); let expected = run(expected, None); assert_eq!(result, expected, "\nfor source\n{source_text}\nexpect\n{expected}\ngot\n{result}"); } +#[track_caller] pub fn run(source_text: &str, options: Option) -> String { let allocator = Allocator::default(); let source_type = SourceType::mjs(); diff --git a/crates/oxc_minifier/tests/mod.rs b/crates/oxc_minifier/tests/mod.rs index 43b7635c2adc8..aca65ee4b6bc8 100644 --- a/crates/oxc_minifier/tests/mod.rs +++ b/crates/oxc_minifier/tests/mod.rs @@ -10,6 +10,7 @@ use oxc_minifier::{CompressOptions, Compressor}; use oxc_parser::{ParseOptions, Parser}; use oxc_span::SourceType; +#[track_caller] pub(crate) fn test(source_text: &str, expected: &str, options: CompressOptions) { let source_type = SourceType::default(); let first = run(source_text, source_type, Some(options)); diff --git a/crates/oxc_minifier/tests/peephole/dead_code_elimination.rs b/crates/oxc_minifier/tests/peephole/dead_code_elimination.rs index f2f594f226669..51ff9b523f924 100644 --- a/crates/oxc_minifier/tests/peephole/dead_code_elimination.rs +++ b/crates/oxc_minifier/tests/peephole/dead_code_elimination.rs @@ -7,6 +7,7 @@ use oxc_minifier::Compressor; use oxc_parser::Parser; use oxc_span::SourceType; +#[track_caller] fn run(source_text: &str, source_type: SourceType, options: Option) -> String { let allocator = Allocator::default(); let mut ret = Parser::new(&allocator, source_text, source_type).parse(); @@ -17,6 +18,7 @@ fn run(source_text: &str, source_type: SourceType, options: Option StatementInjectorStore<'a> { stmts.into_iter().map(|stmt| AdjacentStatement { stmt, direction: Direction::After }), ); } + + /// Move insertions from one [`Address`] to another. + /// + /// Use this if you convert one statement to another, and other code may have attached + /// insertions to the original statement. + #[inline] + pub fn move_insertions( + &self, + old_target: &A1, + new_target: &A2, + ) { + self.move_insertions_address(old_target.address(), new_target.address()); + } + + fn move_insertions_address(&self, old_address: Address, new_address: Address) { + let mut insertions = self.insertions.borrow_mut(); + let Some(mut adjacent_stmts) = insertions.remove(&old_address) else { return }; + + match insertions.entry(new_address) { + Entry::Occupied(entry) => { + entry.into_mut().append(&mut adjacent_stmts); + } + Entry::Vacant(entry) => { + entry.insert(adjacent_stmts); + } + } + } } // Internal methods diff --git a/crates/oxc_transformer/src/decorator/legacy/mod.rs b/crates/oxc_transformer/src/decorator/legacy/mod.rs index 9113a0985bc12..2336afebf8da4 100644 --- a/crates/oxc_transformer/src/decorator/legacy/mod.rs +++ b/crates/oxc_transformer/src/decorator/legacy/mod.rs @@ -82,7 +82,7 @@ impl<'a, 'ctx> LegacyDecorator<'a, 'ctx> { impl<'a> Traverse<'a> for LegacyDecorator<'a, '_> { // `#[inline]` because this is a hot path #[inline] - fn enter_statement(&mut self, stmt: &mut Statement<'a>, ctx: &mut TraverseCtx<'a>) { + fn exit_statement(&mut self, stmt: &mut Statement<'a>, ctx: &mut TraverseCtx<'a>) { match stmt { Statement::ClassDeclaration(_) => self.transform_class(stmt, ctx), Statement::ExportNamedDeclaration(_) => { @@ -279,6 +279,7 @@ impl<'a> LegacyDecorator<'a, '_> { if class_or_constructor_parameter_is_decorated { return Some(self.transform_class_declaration_with_class_decorators( class, + stmt_address, has_private_in_expression_in_decorator, ctx, )); @@ -300,6 +301,7 @@ impl<'a> LegacyDecorator<'a, '_> { fn transform_class_declaration_with_class_decorators( &self, class: &mut Class<'a>, + stmt_address: Address, has_private_in_expression_in_decorator: bool, ctx: &mut TraverseCtx<'a>, ) -> (BoundIdentifier<'a>, Statement<'a>) { @@ -448,6 +450,8 @@ impl<'a> LegacyDecorator<'a, '_> { ); let statement = Statement::from(var_declaration); + // Move any insertions attached to the old statement to the new one + self.ctx.statement_injector.move_insertions(&stmt_address, &statement); self.ctx.statement_injector.insert_many_after(&statement, decoration_stmts); (class_binding, statement) diff --git a/crates/oxc_transformer/src/decorator/mod.rs b/crates/oxc_transformer/src/decorator/mod.rs index ebc9fe043df97..1b141d3a98893 100644 --- a/crates/oxc_transformer/src/decorator/mod.rs +++ b/crates/oxc_transformer/src/decorator/mod.rs @@ -26,9 +26,9 @@ impl<'a, 'ctx> Decorator<'a, 'ctx> { } impl<'a> Traverse<'a> for Decorator<'a, '_> { - fn enter_statement(&mut self, stmt: &mut Statement<'a>, ctx: &mut TraverseCtx<'a>) { + fn exit_statement(&mut self, stmt: &mut Statement<'a>, ctx: &mut TraverseCtx<'a>) { if self.options.legacy { - self.legacy_decorator.enter_statement(stmt, ctx); + self.legacy_decorator.exit_statement(stmt, ctx); } } diff --git a/crates/oxc_transformer/src/decorator/options.rs b/crates/oxc_transformer/src/decorator/options.rs index 025d2b07cc9ff..28ee15dcde565 100644 --- a/crates/oxc_transformer/src/decorator/options.rs +++ b/crates/oxc_transformer/src/decorator/options.rs @@ -18,3 +18,11 @@ pub struct DecoratorOptions { /// in TypeScript, and it only works when `legacy` is true. pub emit_decorator_metadata: bool, } + +impl DecoratorOptions { + pub fn enable_all() -> Self { + // Should be `emit_decorator_metadata: true` but there's a bug somewhere that crashes conformance + // with that option enabled + DecoratorOptions { legacy: true, emit_decorator_metadata: false } + } +} diff --git a/crates/oxc_transformer/src/lib.rs b/crates/oxc_transformer/src/lib.rs index 4155ab7289984..211d5dad974ba 100644 --- a/crates/oxc_transformer/src/lib.rs +++ b/crates/oxc_transformer/src/lib.rs @@ -553,7 +553,7 @@ impl<'a> Traverse<'a> for TransformerImpl<'a, '_> { if let Some(typescript) = self.x0_typescript.as_mut() { typescript.exit_statement(stmt, ctx); } - self.decorator.enter_statement(stmt, ctx); + self.decorator.exit_statement(stmt, ctx); self.x2_es2018.exit_statement(stmt, ctx); self.x2_es2017.exit_statement(stmt, ctx); } diff --git a/crates/oxc_transformer/src/options/mod.rs b/crates/oxc_transformer/src/options/mod.rs index 7ba8e177ac08c..9abfaedf29109 100644 --- a/crates/oxc_transformer/src/options/mod.rs +++ b/crates/oxc_transformer/src/options/mod.rs @@ -82,7 +82,7 @@ impl TransformOptions { cwd: PathBuf::new(), assumptions: CompilerAssumptions::default(), typescript: TypeScriptOptions::default(), - decorator: DecoratorOptions::default(), + decorator: DecoratorOptions::enable_all(), jsx: JsxOptions { development: true, refresh: Some(ReactRefreshOptions::default()), diff --git a/tasks/benchmark/benches/transformer.rs b/tasks/benchmark/benches/transformer.rs index 4ddbe44310344..6b6daa60675f1 100644 --- a/tasks/benchmark/benches/transformer.rs +++ b/tasks/benchmark/benches/transformer.rs @@ -24,6 +24,7 @@ fn bench_transformer(criterion: &mut Criterion) { // Even the plugins are unfinished, we still want to enable all of them // to track the performance changes during the development. transform_options.env = EnvOptions::enable_all(/* include_unfinished_plugins */ true); + transform_options.decorator.emit_decorator_metadata = true; group.bench_function(id, |b| { b.iter_with_setup_wrapper(|runner| { diff --git a/tasks/coverage/snapshots/semantic_babel.snap b/tasks/coverage/snapshots/semantic_babel.snap index 523b2499f867d..02e509953445f 100644 --- a/tasks/coverage/snapshots/semantic_babel.snap +++ b/tasks/coverage/snapshots/semantic_babel.snap @@ -2,7 +2,7 @@ commit: 578ac4df semantic_babel Summary: AST Parsed : 2322/2322 (100.00%) -Positive Passed: 1902/2322 (81.91%) +Positive Passed: 1898/2322 (81.74%) tasks/coverage/babel/packages/babel-parser/test/fixtures/annex-b/enabled/3.3-function-in-if-body/input.js semantic error: Symbol scope ID mismatch for "f": after transform: SymbolId(0): ScopeId(4294967294) @@ -11,6 +11,28 @@ Symbol scope ID mismatch for "g": after transform: SymbolId(1): ScopeId(4294967294) rebuilt : SymbolId(1): ScopeId(4294967294) +tasks/coverage/babel/packages/babel-parser/test/fixtures/comments/decorators/decorators-after-export/input.js +semantic error: Symbol span mismatch for "C": +after transform: SymbolId(0): Span { start: 65, end: 66 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(1): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 65, end: 66 } +Symbol flags mismatch for "_default": +after transform: SymbolId(3): SymbolFlags(Class) +rebuilt : SymbolId(3): SymbolFlags(BlockScopedVariable) + +tasks/coverage/babel/packages/babel-parser/test/fixtures/comments/decorators/decorators-before-export/input.js +semantic error: Symbol span mismatch for "C": +after transform: SymbolId(0): Span { start: 65, end: 66 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(1): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 65, end: 66 } +Symbol flags mismatch for "_default": +after transform: SymbolId(3): SymbolFlags(Class) +rebuilt : SymbolId(3): SymbolFlags(BlockScopedVariable) + tasks/coverage/babel/packages/babel-parser/test/fixtures/core/opts/allowNewTargetOutsideFunction-true/input.js semantic error: Unexpected new.target expression Unexpected new.target expression @@ -598,6 +620,22 @@ semantic error: Bindings mismatch: after transform: ScopeId(0): ["x"] rebuilt : ScopeId(0): [] +tasks/coverage/babel/packages/babel-parser/test/fixtures/typescript/decorators/type-arguments/input.ts +semantic error: Symbol span mismatch for "Test": +after transform: SymbolId(0): Span { start: 27, end: 31 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "Test": +after transform: SymbolId(1): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 27, end: 31 } + +tasks/coverage/babel/packages/babel-parser/test/fixtures/typescript/decorators/type-arguments-babel-7/input.ts +semantic error: Symbol span mismatch for "Test": +after transform: SymbolId(0): Span { start: 27, end: 31 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "Test": +after transform: SymbolId(1): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 27, end: 31 } + tasks/coverage/babel/packages/babel-parser/test/fixtures/typescript/enum/const/input.ts semantic error: Scope flags mismatch: after transform: ScopeId(1): ScopeFlags(StrictMode) diff --git a/tasks/coverage/snapshots/semantic_misc.snap b/tasks/coverage/snapshots/semantic_misc.snap index 1a12011c3f459..d84b4a00a2c5e 100644 --- a/tasks/coverage/snapshots/semantic_misc.snap +++ b/tasks/coverage/snapshots/semantic_misc.snap @@ -1,6 +1,6 @@ semantic_misc Summary: AST Parsed : 33/33 (100.00%) -Positive Passed: 19/33 (57.58%) +Positive Passed: 18/33 (54.55%) tasks/coverage/misc/pass/oxc-1288.ts semantic error: Bindings mismatch: after transform: ScopeId(0): ["from"] @@ -21,6 +21,14 @@ semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1)] rebuilt : ScopeId(0): [] +tasks/coverage/misc/pass/oxc-2562.ts +semantic error: Symbol span mismatch for "HooksController": +after transform: SymbolId(0): Span { start: 67, end: 82 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "HooksController": +after transform: SymbolId(1): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 67, end: 82 } + tasks/coverage/misc/pass/oxc-2592.ts semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1)] @@ -41,53 +49,59 @@ rebuilt : [] tasks/coverage/misc/pass/oxc-3948-1.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["BrowserWorkingCopyBackupTracker", "CancellationToken", "DisposableStore", "EditorPart", "EditorService", "IEditorGroupsService", "IEditorService", "IFilesConfigurationService", "IInstantiationService", "ILifecycleService", "ILogService", "IUntitledTextResourceEditorInput", "IWorkingCopyBackup", "IWorkingCopyBackupService", "IWorkingCopyEditorHandler", "IWorkingCopyEditorService", "IWorkingCopyService", "InMemoryTestWorkingCopyBackupService", "LifecyclePhase", "Schemas", "TestServiceAccessor", "TestWorkingCopy", "URI", "UntitledTextEditorInput", "VSBuffer", "_asyncToGenerator", "_defineProperty", "assert", "bufferToReadable", "createEditorPart", "ensureNoDisposablesAreLeakedInTestSuite", "isWindows", "registerTestResourceEditor", "timeout", "toResource", "toTypedWorkingCopyId", "toUntypedWorkingCopyId", "workbenchInstantiationService", "workbenchTeardown"] -rebuilt : ScopeId(0): ["BrowserWorkingCopyBackupTracker", "DisposableStore", "EditorService", "IEditorGroupsService", "IEditorService", "IFilesConfigurationService", "ILifecycleService", "ILogService", "IWorkingCopyBackupService", "IWorkingCopyEditorService", "IWorkingCopyService", "InMemoryTestWorkingCopyBackupService", "LifecyclePhase", "Schemas", "TestServiceAccessor", "TestWorkingCopy", "URI", "UntitledTextEditorInput", "VSBuffer", "_asyncToGenerator", "_defineProperty", "assert", "bufferToReadable", "createEditorPart", "ensureNoDisposablesAreLeakedInTestSuite", "isWindows", "registerTestResourceEditor", "timeout", "toResource", "toTypedWorkingCopyId", "toUntypedWorkingCopyId", "workbenchInstantiationService", "workbenchTeardown"] +after transform: ScopeId(0): ["BrowserWorkingCopyBackupTracker", "CancellationToken", "DisposableStore", "EditorPart", "EditorService", "IEditorGroupsService", "IEditorService", "IFilesConfigurationService", "IInstantiationService", "ILifecycleService", "ILogService", "IUntitledTextResourceEditorInput", "IWorkingCopyBackup", "IWorkingCopyBackupService", "IWorkingCopyEditorHandler", "IWorkingCopyEditorService", "IWorkingCopyService", "InMemoryTestWorkingCopyBackupService", "LifecyclePhase", "Schemas", "TestServiceAccessor", "TestWorkingCopy", "URI", "UntitledTextEditorInput", "VSBuffer", "_asyncToGenerator", "_decorate", "_decorateParam", "_defineProperty", "assert", "bufferToReadable", "createEditorPart", "ensureNoDisposablesAreLeakedInTestSuite", "isWindows", "registerTestResourceEditor", "timeout", "toResource", "toTypedWorkingCopyId", "toUntypedWorkingCopyId", "workbenchInstantiationService", "workbenchTeardown"] +rebuilt : ScopeId(0): ["BrowserWorkingCopyBackupTracker", "DisposableStore", "EditorService", "IEditorGroupsService", "IEditorService", "IFilesConfigurationService", "ILifecycleService", "ILogService", "IWorkingCopyBackupService", "IWorkingCopyEditorService", "IWorkingCopyService", "InMemoryTestWorkingCopyBackupService", "LifecyclePhase", "Schemas", "TestServiceAccessor", "TestWorkingCopy", "URI", "UntitledTextEditorInput", "VSBuffer", "_asyncToGenerator", "_decorate", "_decorateParam", "_defineProperty", "assert", "bufferToReadable", "createEditorPart", "ensureNoDisposablesAreLeakedInTestSuite", "isWindows", "registerTestResourceEditor", "timeout", "toResource", "toTypedWorkingCopyId", "toUntypedWorkingCopyId", "workbenchInstantiationService", "workbenchTeardown"] Symbol reference IDs mismatch for "URI": after transform: SymbolId(1): [ReferenceId(109), ReferenceId(117), ReferenceId(156), ReferenceId(158), ReferenceId(160), ReferenceId(162)] -rebuilt : SymbolId(1): [ReferenceId(160), ReferenceId(162), ReferenceId(164), ReferenceId(166)] +rebuilt : SymbolId(1): [ReferenceId(171), ReferenceId(173), ReferenceId(175), ReferenceId(177)] Symbol reference IDs mismatch for "IEditorService": after transform: SymbolId(2): [ReferenceId(23), ReferenceId(24), ReferenceId(67), ReferenceId(184)] -rebuilt : SymbolId(2): [ReferenceId(17), ReferenceId(59), ReferenceId(187)] +rebuilt : SymbolId(2): [ReferenceId(38), ReferenceId(70), ReferenceId(198)] Symbol reference IDs mismatch for "IEditorGroupsService": after transform: SymbolId(4): [ReferenceId(25), ReferenceId(26), ReferenceId(57), ReferenceId(176)] -rebuilt : SymbolId(3): [ReferenceId(18), ReferenceId(50), ReferenceId(180)] +rebuilt : SymbolId(3): [ReferenceId(40), ReferenceId(61), ReferenceId(191)] Symbol reference IDs mismatch for "EditorService": after transform: SymbolId(5): [ReferenceId(61), ReferenceId(64), ReferenceId(178), ReferenceId(181)] -rebuilt : SymbolId(4): [ReferenceId(56), ReferenceId(184)] +rebuilt : SymbolId(4): [ReferenceId(67), ReferenceId(195)] Symbol reference IDs mismatch for "IWorkingCopyBackupService": after transform: SymbolId(7): [ReferenceId(11), ReferenceId(12), ReferenceId(51), ReferenceId(170)] -rebuilt : SymbolId(5): [ReferenceId(11), ReferenceId(44), ReferenceId(174)] +rebuilt : SymbolId(5): [ReferenceId(26), ReferenceId(55), ReferenceId(185)] Symbol reference IDs mismatch for "IFilesConfigurationService": after transform: SymbolId(10): [ReferenceId(13), ReferenceId(14)] -rebuilt : SymbolId(8): [ReferenceId(12)] +rebuilt : SymbolId(8): [ReferenceId(28)] Symbol reference IDs mismatch for "IWorkingCopyService": after transform: SymbolId(11): [ReferenceId(15), ReferenceId(16)] -rebuilt : SymbolId(9): [ReferenceId(13)] +rebuilt : SymbolId(9): [ReferenceId(30)] Symbol reference IDs mismatch for "ILogService": after transform: SymbolId(13): [ReferenceId(19), ReferenceId(20)] -rebuilt : SymbolId(10): [ReferenceId(15)] +rebuilt : SymbolId(10): [ReferenceId(34)] Symbol reference IDs mismatch for "ILifecycleService": after transform: SymbolId(14): [ReferenceId(17), ReferenceId(18)] -rebuilt : SymbolId(11): [ReferenceId(14)] +rebuilt : SymbolId(11): [ReferenceId(32)] Symbol reference IDs mismatch for "UntitledTextEditorInput": after transform: SymbolId(17): [ReferenceId(38), ReferenceId(87)] -rebuilt : SymbolId(13): [ReferenceId(31)] +rebuilt : SymbolId(13): [ReferenceId(42)] Symbol reference IDs mismatch for "InMemoryTestWorkingCopyBackupService": after transform: SymbolId(19): [ReferenceId(43), ReferenceId(46), ReferenceId(165)] -rebuilt : SymbolId(15): [ReferenceId(39), ReferenceId(169)] +rebuilt : SymbolId(15): [ReferenceId(50), ReferenceId(180)] Symbol reference IDs mismatch for "TestServiceAccessor": after transform: SymbolId(21): [ReferenceId(1), ReferenceId(40), ReferenceId(71), ReferenceId(155), ReferenceId(188)] -rebuilt : SymbolId(17): [ReferenceId(63), ReferenceId(191)] +rebuilt : SymbolId(17): [ReferenceId(74), ReferenceId(202)] Symbol reference IDs mismatch for "IWorkingCopyEditorService": after transform: SymbolId(32): [ReferenceId(21), ReferenceId(22)] -rebuilt : SymbolId(26): [ReferenceId(16)] +rebuilt : SymbolId(26): [ReferenceId(36)] +Symbol span mismatch for "TestWorkingCopyBackupTracker": +after transform: SymbolId(39): Span { start: 3208, end: 3236 } +rebuilt : SymbolId(37): Span { start: 0, end: 0 } Symbol reference IDs mismatch for "TestWorkingCopyBackupTracker": -after transform: SymbolId(39): [ReferenceId(42), ReferenceId(74), ReferenceId(154), ReferenceId(215)] -rebuilt : SymbolId(35): [ReferenceId(66), ReferenceId(218)] +after transform: SymbolId(39): [ReferenceId(42), ReferenceId(74), ReferenceId(154), ReferenceId(215), ReferenceId(351), ReferenceId(353)] +rebuilt : SymbolId(37): [ReferenceId(23), ReferenceId(41), ReferenceId(77), ReferenceId(229)] +Symbol span mismatch for "TestWorkingCopyBackupTracker": +after transform: SymbolId(135): Span { start: 0, end: 0 } +rebuilt : SymbolId(38): Span { start: 3208, end: 3236 } Unresolved reference IDs mismatch for "Promise": after transform: [ReferenceId(36), ReferenceId(39), ReferenceId(82), ReferenceId(114), ReferenceId(153), ReferenceId(282)] -rebuilt : [ReferenceId(291)] +rebuilt : [ReferenceId(302)] tasks/coverage/misc/pass/oxc-4449.ts semantic error: Bindings mismatch: diff --git a/tasks/coverage/snapshots/semantic_test262.snap b/tasks/coverage/snapshots/semantic_test262.snap index 8a496a6ec2d9a..874489b4c6948 100644 --- a/tasks/coverage/snapshots/semantic_test262.snap +++ b/tasks/coverage/snapshots/semantic_test262.snap @@ -2,7 +2,7 @@ commit: bc5c1417 semantic_test262 Summary: AST Parsed : 44293/44293 (100.00%) -Positive Passed: 42477/44293 (95.90%) +Positive Passed: 42469/44293 (95.88%) tasks/coverage/test262/test/annexB/language/function-code/if-decl-else-decl-a-func-block-scoping.js semantic error: Symbol scope ID mismatch for "f": after transform: SymbolId(3): ScopeId(4294967294) @@ -8541,79 +8541,143 @@ Scope children mismatch: after transform: ScopeId(1): [ScopeId(2), ScopeId(4), ScopeId(10)] rebuilt : ScopeId(3): [ScopeId(4)] +tasks/coverage/test262/test/language/statements/class/decorator/syntax/class-valid/decorator-member-expr-private-identifier.js +semantic error: Symbol span mismatch for "D": +after transform: SymbolId(1): Span { start: 1551, end: 1552 } +rebuilt : SymbolId(10): Span { start: 0, end: 0 } +Symbol span mismatch for "D": +after transform: SymbolId(10): Span { start: 0, end: 0 } +rebuilt : SymbolId(11): Span { start: 1551, end: 1552 } + tasks/coverage/test262/test/language/statements/class/decorator/syntax/valid/class-element-decorator-call-expr-identifier-reference.js semantic error: Symbol reference IDs mismatch for "$": after transform: SymbolId(1): [ReferenceId(7), ReferenceId(14), ReferenceId(21), ReferenceId(28)] -rebuilt : SymbolId(2): [ReferenceId(9), ReferenceId(16)] +rebuilt : SymbolId(3): [ReferenceId(13), ReferenceId(22)] Symbol reference IDs mismatch for "_": after transform: SymbolId(2): [ReferenceId(8), ReferenceId(15), ReferenceId(22), ReferenceId(29)] -rebuilt : SymbolId(3): [ReferenceId(10), ReferenceId(17)] +rebuilt : SymbolId(4): [ReferenceId(14), ReferenceId(23)] Symbol reference IDs mismatch for "o": after transform: SymbolId(3): [ReferenceId(9), ReferenceId(16), ReferenceId(23), ReferenceId(30)] -rebuilt : SymbolId(4): [ReferenceId(11), ReferenceId(18)] +rebuilt : SymbolId(5): [ReferenceId(15), ReferenceId(24)] Symbol reference IDs mismatch for "℘": after transform: SymbolId(4): [ReferenceId(10), ReferenceId(17), ReferenceId(24), ReferenceId(31)] -rebuilt : SymbolId(5): [ReferenceId(12), ReferenceId(19)] +rebuilt : SymbolId(6): [ReferenceId(16), ReferenceId(25)] Symbol reference IDs mismatch for "ZW_\u{200c}_NJ": after transform: SymbolId(5): [ReferenceId(11), ReferenceId(18), ReferenceId(25), ReferenceId(32)] -rebuilt : SymbolId(6): [ReferenceId(13), ReferenceId(20)] +rebuilt : SymbolId(7): [ReferenceId(17), ReferenceId(26)] Symbol reference IDs mismatch for "ZW_\u{200d}_J": after transform: SymbolId(6): [ReferenceId(12), ReferenceId(19), ReferenceId(26), ReferenceId(33)] -rebuilt : SymbolId(7): [ReferenceId(14), ReferenceId(21)] +rebuilt : SymbolId(8): [ReferenceId(18), ReferenceId(27)] Symbol reference IDs mismatch for "await": after transform: SymbolId(7): [ReferenceId(13), ReferenceId(20), ReferenceId(27), ReferenceId(34)] -rebuilt : SymbolId(8): [ReferenceId(15), ReferenceId(22)] +rebuilt : SymbolId(9): [ReferenceId(19), ReferenceId(28)] tasks/coverage/test262/test/language/statements/class/decorator/syntax/valid/class-element-decorator-member-expr-decorator-member-expr.js semantic error: Symbol reference IDs mismatch for "ns": after transform: SymbolId(0): [ReferenceId(0), ReferenceId(1), ReferenceId(2), ReferenceId(3), ReferenceId(4), ReferenceId(5), ReferenceId(6), ReferenceId(7), ReferenceId(8), ReferenceId(9), ReferenceId(10), ReferenceId(11), ReferenceId(12), ReferenceId(13), ReferenceId(14), ReferenceId(15), ReferenceId(16), ReferenceId(17), ReferenceId(18), ReferenceId(19), ReferenceId(20), ReferenceId(21), ReferenceId(22), ReferenceId(23), ReferenceId(24), ReferenceId(25), ReferenceId(26), ReferenceId(27), ReferenceId(28), ReferenceId(29), ReferenceId(30), ReferenceId(31)] -rebuilt : SymbolId(1): [ReferenceId(2), ReferenceId(3), ReferenceId(4), ReferenceId(5), ReferenceId(6), ReferenceId(7), ReferenceId(8), ReferenceId(9), ReferenceId(10), ReferenceId(11), ReferenceId(12), ReferenceId(13), ReferenceId(14), ReferenceId(15), ReferenceId(16), ReferenceId(17)] +rebuilt : SymbolId(2): [ReferenceId(6), ReferenceId(7), ReferenceId(8), ReferenceId(9), ReferenceId(10), ReferenceId(11), ReferenceId(12), ReferenceId(13), ReferenceId(16), ReferenceId(17), ReferenceId(18), ReferenceId(19), ReferenceId(20), ReferenceId(21), ReferenceId(22), ReferenceId(23)] tasks/coverage/test262/test/language/statements/class/decorator/syntax/valid/class-element-decorator-member-expr-identifier-reference.js semantic error: Symbol reference IDs mismatch for "$": after transform: SymbolId(0): [ReferenceId(0), ReferenceId(7), ReferenceId(14), ReferenceId(21)] -rebuilt : SymbolId(1): [ReferenceId(2), ReferenceId(9)] +rebuilt : SymbolId(2): [ReferenceId(6), ReferenceId(15)] Symbol reference IDs mismatch for "_": after transform: SymbolId(1): [ReferenceId(1), ReferenceId(8), ReferenceId(15), ReferenceId(22)] -rebuilt : SymbolId(2): [ReferenceId(3), ReferenceId(10)] +rebuilt : SymbolId(3): [ReferenceId(7), ReferenceId(16)] Symbol reference IDs mismatch for "o": after transform: SymbolId(2): [ReferenceId(2), ReferenceId(9), ReferenceId(16), ReferenceId(23)] -rebuilt : SymbolId(3): [ReferenceId(4), ReferenceId(11)] +rebuilt : SymbolId(4): [ReferenceId(8), ReferenceId(17)] Symbol reference IDs mismatch for "℘": after transform: SymbolId(3): [ReferenceId(3), ReferenceId(10), ReferenceId(17), ReferenceId(24)] -rebuilt : SymbolId(4): [ReferenceId(5), ReferenceId(12)] +rebuilt : SymbolId(5): [ReferenceId(9), ReferenceId(18)] Symbol reference IDs mismatch for "ZW_\u{200c}_NJ": after transform: SymbolId(4): [ReferenceId(4), ReferenceId(11), ReferenceId(18), ReferenceId(25)] -rebuilt : SymbolId(5): [ReferenceId(6), ReferenceId(13)] +rebuilt : SymbolId(6): [ReferenceId(10), ReferenceId(19)] Symbol reference IDs mismatch for "ZW_\u{200d}_J": after transform: SymbolId(5): [ReferenceId(5), ReferenceId(12), ReferenceId(19), ReferenceId(26)] -rebuilt : SymbolId(6): [ReferenceId(7), ReferenceId(14)] +rebuilt : SymbolId(7): [ReferenceId(11), ReferenceId(20)] Symbol reference IDs mismatch for "await": after transform: SymbolId(6): [ReferenceId(6), ReferenceId(13), ReferenceId(20), ReferenceId(27)] -rebuilt : SymbolId(7): [ReferenceId(8), ReferenceId(15)] +rebuilt : SymbolId(8): [ReferenceId(12), ReferenceId(21)] tasks/coverage/test262/test/language/statements/class/decorator/syntax/valid/class-element-decorator-parenthesized-expr-identifier-reference.js semantic error: Symbol reference IDs mismatch for "$": after transform: SymbolId(0): [ReferenceId(0), ReferenceId(7), ReferenceId(14), ReferenceId(21)] -rebuilt : SymbolId(1): [ReferenceId(2), ReferenceId(9)] +rebuilt : SymbolId(2): [ReferenceId(6), ReferenceId(15)] Symbol reference IDs mismatch for "_": after transform: SymbolId(1): [ReferenceId(1), ReferenceId(8), ReferenceId(15), ReferenceId(22)] -rebuilt : SymbolId(2): [ReferenceId(3), ReferenceId(10)] +rebuilt : SymbolId(3): [ReferenceId(7), ReferenceId(16)] Symbol reference IDs mismatch for "o": after transform: SymbolId(2): [ReferenceId(2), ReferenceId(9), ReferenceId(16), ReferenceId(23)] -rebuilt : SymbolId(3): [ReferenceId(4), ReferenceId(11)] +rebuilt : SymbolId(4): [ReferenceId(8), ReferenceId(17)] Symbol reference IDs mismatch for "℘": after transform: SymbolId(3): [ReferenceId(3), ReferenceId(10), ReferenceId(17), ReferenceId(24)] -rebuilt : SymbolId(4): [ReferenceId(5), ReferenceId(12)] +rebuilt : SymbolId(5): [ReferenceId(9), ReferenceId(18)] Symbol reference IDs mismatch for "ZW_\u{200c}_NJ": after transform: SymbolId(4): [ReferenceId(4), ReferenceId(11), ReferenceId(18), ReferenceId(25)] -rebuilt : SymbolId(5): [ReferenceId(6), ReferenceId(13)] +rebuilt : SymbolId(6): [ReferenceId(10), ReferenceId(19)] Symbol reference IDs mismatch for "ZW_\u{200d}_J": after transform: SymbolId(5): [ReferenceId(5), ReferenceId(12), ReferenceId(19), ReferenceId(26)] -rebuilt : SymbolId(6): [ReferenceId(7), ReferenceId(14)] +rebuilt : SymbolId(7): [ReferenceId(11), ReferenceId(20)] Symbol reference IDs mismatch for "await": after transform: SymbolId(6): [ReferenceId(6), ReferenceId(13), ReferenceId(20), ReferenceId(27)] -rebuilt : SymbolId(7): [ReferenceId(8), ReferenceId(15)] +rebuilt : SymbolId(8): [ReferenceId(12), ReferenceId(21)] + +tasks/coverage/test262/test/language/statements/class/decorator/syntax/valid/decorator-call-expr-identifier-reference-yield.js +semantic error: Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 1436, end: 1437 } +rebuilt : SymbolId(3): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(4): Span { start: 1436, end: 1437 } + +tasks/coverage/test262/test/language/statements/class/decorator/syntax/valid/decorator-call-expr-identifier-reference.js +semantic error: Symbol span mismatch for "C": +after transform: SymbolId(8): Span { start: 1654, end: 1655 } +rebuilt : SymbolId(9): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(9): Span { start: 0, end: 0 } +rebuilt : SymbolId(10): Span { start: 1654, end: 1655 } + +tasks/coverage/test262/test/language/statements/class/decorator/syntax/valid/decorator-member-expr-decorator-member-expr.js +semantic error: Symbol span mismatch for "C": +after transform: SymbolId(1): Span { start: 1377, end: 1378 } +rebuilt : SymbolId(2): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 0, end: 0 } +rebuilt : SymbolId(3): Span { start: 1377, end: 1378 } + +tasks/coverage/test262/test/language/statements/class/decorator/syntax/valid/decorator-member-expr-identifier-reference-yield.js +semantic error: Symbol span mismatch for "C": +after transform: SymbolId(1): Span { start: 1050, end: 1051 } +rebuilt : SymbolId(2): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 0, end: 0 } +rebuilt : SymbolId(3): Span { start: 1050, end: 1051 } + +tasks/coverage/test262/test/language/statements/class/decorator/syntax/valid/decorator-member-expr-identifier-reference.js +semantic error: Symbol span mismatch for "C": +after transform: SymbolId(7): Span { start: 1238, end: 1239 } +rebuilt : SymbolId(8): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(8): Span { start: 0, end: 0 } +rebuilt : SymbolId(9): Span { start: 1238, end: 1239 } + +tasks/coverage/test262/test/language/statements/class/decorator/syntax/valid/decorator-parenthesized-expr-identifier-reference-yield.js +semantic error: Symbol span mismatch for "C": +after transform: SymbolId(1): Span { start: 1639, end: 1640 } +rebuilt : SymbolId(2): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 0, end: 0 } +rebuilt : SymbolId(3): Span { start: 1639, end: 1640 } + +tasks/coverage/test262/test/language/statements/class/decorator/syntax/valid/decorator-parenthesized-expr-identifier-reference.js +semantic error: Symbol span mismatch for "C": +after transform: SymbolId(7): Span { start: 1739, end: 1740 } +rebuilt : SymbolId(8): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(8): Span { start: 0, end: 0 } +rebuilt : SymbolId(9): Span { start: 1739, end: 1740 } tasks/coverage/test262/test/language/statements/class/dstr/async-gen-meth-ary-ptrn-elem-ary-empty-init.js semantic error: Scope children mismatch: diff --git a/tasks/coverage/snapshots/semantic_typescript.snap b/tasks/coverage/snapshots/semantic_typescript.snap index ee0834f63d46c..75af8dc1d168d 100644 --- a/tasks/coverage/snapshots/semantic_typescript.snap +++ b/tasks/coverage/snapshots/semantic_typescript.snap @@ -2,7 +2,7 @@ commit: 15392346 semantic_typescript Summary: AST Parsed : 6531/6531 (100.00%) -Positive Passed: 2853/6531 (43.68%) +Positive Passed: 2843/6531 (43.53%) tasks/coverage/typescript/tests/cases/compiler/2dArrays.ts semantic error: Symbol reference IDs mismatch for "Cell": after transform: SymbolId(0): [ReferenceId(1)] @@ -2712,6 +2712,18 @@ tasks/coverage/typescript/tests/cases/compiler/commentOnDecoratedClassDeclaratio semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2), ScopeId(3)] rebuilt : ScopeId(0): [ScopeId(1), ScopeId(2)] +Symbol span mismatch for "Remote": +after transform: SymbolId(1): Span { start: 97, end: 103 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "Remote": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 97, end: 103 } +Symbol span mismatch for "AnotherRomote": +after transform: SymbolId(2): Span { start: 161, end: 174 } +rebuilt : SymbolId(3): Span { start: 0, end: 0 } +Symbol span mismatch for "AnotherRomote": +after transform: SymbolId(5): Span { start: 0, end: 0 } +rebuilt : SymbolId(4): Span { start: 161, end: 174 } tasks/coverage/typescript/tests/cases/compiler/commentOnElidedModule1.ts semantic error: Bindings mismatch: @@ -7272,8 +7284,8 @@ rebuilt : ["require"] tasks/coverage/typescript/tests/cases/compiler/decoratorMetadataElidedImport.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["Observable", "Test", "whatever"] -rebuilt : ScopeId(0): ["Test", "whatever"] +after transform: ScopeId(0): ["Observable", "Test", "_decorate", "_decorateParam", "whatever"] +rebuilt : ScopeId(0): ["Test", "_decorate", "_decorateParam", "whatever"] tasks/coverage/typescript/tests/cases/compiler/decoratorMetadataElidedImportOnDeclare.ts semantic error: Bindings mismatch: @@ -7285,14 +7297,14 @@ rebuilt : SymbolId(0): [] tasks/coverage/typescript/tests/cases/compiler/decoratorMetadataForMethodWithNoReturnTypeAnnotation01.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["MyClass", "decorator"] -rebuilt : ScopeId(0): ["MyClass"] +after transform: ScopeId(0): ["MyClass", "_decorate", "decorator"] +rebuilt : ScopeId(0): ["MyClass", "_decorate"] Reference symbol mismatch for "decorator": after transform: SymbolId(0) "decorator" rebuilt : Unresolved references mismatch: -after transform: [] -rebuilt : ["decorator"] +after transform: ["require"] +rebuilt : ["decorator", "require"] tasks/coverage/typescript/tests/cases/compiler/decoratorMetadataNoStrictNull.ts semantic error: Symbol reference IDs mismatch for "dec": @@ -7318,8 +7330,8 @@ rebuilt : ["console"] tasks/coverage/typescript/tests/cases/compiler/decoratorMetadataPromise.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["A", "_asyncToGenerator", "decorator"] -rebuilt : ScopeId(0): ["A", "_asyncToGenerator"] +after transform: ScopeId(0): ["A", "_asyncToGenerator", "_decorate", "decorator"] +rebuilt : ScopeId(0): ["A", "_asyncToGenerator", "_decorate"] Reference symbol mismatch for "decorator": after transform: SymbolId(0) "decorator" rebuilt : @@ -7335,8 +7347,14 @@ rebuilt : ["decorator", "require"] tasks/coverage/typescript/tests/cases/compiler/decoratorMetadataRestParameterWithImportedType.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["ClassA", "SomeClass", "SomeClass1", "_defineProperty", "annotation", "annotation1"] -rebuilt : ScopeId(0): ["ClassA", "_defineProperty", "annotation", "annotation1"] +after transform: ScopeId(0): ["ClassA", "SomeClass", "SomeClass1", "_decorate", "_defineProperty", "annotation", "annotation1"] +rebuilt : ScopeId(0): ["ClassA", "_decorate", "_defineProperty", "annotation", "annotation1"] +Symbol span mismatch for "ClassA": +after transform: SymbolId(6): Span { start: 266, end: 272 } +rebuilt : SymbolId(6): Span { start: 0, end: 0 } +Symbol span mismatch for "ClassA": +after transform: SymbolId(10): Span { start: 0, end: 0 } +rebuilt : SymbolId(7): Span { start: 266, end: 272 } Unresolved references mismatch: after transform: ["ClassDecorator", "MethodDecorator"] rebuilt : [] @@ -7368,33 +7386,88 @@ rebuilt : ["console"] tasks/coverage/typescript/tests/cases/compiler/decoratorMetadataWithImportDeclarationNameCollision.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["MyClass", "_defineProperty", "db", "someDecorator"] -rebuilt : ScopeId(0): ["MyClass", "_defineProperty", "someDecorator"] +after transform: ScopeId(0): ["MyClass", "_decorate", "_defineProperty", "db", "someDecorator"] +rebuilt : ScopeId(0): ["MyClass", "_decorate", "_defineProperty", "someDecorator"] +Symbol span mismatch for "MyClass": +after transform: SymbolId(3): Span { start: 100, end: 107 } +rebuilt : SymbolId(4): Span { start: 0, end: 0 } +Symbol span mismatch for "MyClass": +after transform: SymbolId(6): Span { start: 0, end: 0 } +rebuilt : SymbolId(5): Span { start: 100, end: 107 } tasks/coverage/typescript/tests/cases/compiler/decoratorMetadataWithImportDeclarationNameCollision2.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["Database", "MyClass", "_defineProperty", "someDecorator"] -rebuilt : ScopeId(0): ["MyClass", "_defineProperty", "someDecorator"] +after transform: ScopeId(0): ["Database", "MyClass", "_decorate", "_defineProperty", "someDecorator"] +rebuilt : ScopeId(0): ["MyClass", "_decorate", "_defineProperty", "someDecorator"] +Symbol span mismatch for "MyClass": +after transform: SymbolId(3): Span { start: 112, end: 119 } +rebuilt : SymbolId(4): Span { start: 0, end: 0 } +Symbol span mismatch for "MyClass": +after transform: SymbolId(6): Span { start: 0, end: 0 } +rebuilt : SymbolId(5): Span { start: 112, end: 119 } + +tasks/coverage/typescript/tests/cases/compiler/decoratorMetadataWithImportDeclarationNameCollision3.ts +semantic error: Symbol span mismatch for "MyClass": +after transform: SymbolId(3): Span { start: 104, end: 111 } +rebuilt : SymbolId(4): Span { start: 0, end: 0 } +Symbol span mismatch for "MyClass": +after transform: SymbolId(6): Span { start: 0, end: 0 } +rebuilt : SymbolId(5): Span { start: 104, end: 111 } tasks/coverage/typescript/tests/cases/compiler/decoratorMetadataWithImportDeclarationNameCollision5.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["MyClass", "_defineProperty", "db", "someDecorator"] -rebuilt : ScopeId(0): ["MyClass", "_defineProperty", "someDecorator"] +after transform: ScopeId(0): ["MyClass", "_decorate", "_defineProperty", "db", "someDecorator"] +rebuilt : ScopeId(0): ["MyClass", "_decorate", "_defineProperty", "someDecorator"] +Symbol span mismatch for "MyClass": +after transform: SymbolId(3): Span { start: 98, end: 105 } +rebuilt : SymbolId(4): Span { start: 0, end: 0 } +Symbol span mismatch for "MyClass": +after transform: SymbolId(6): Span { start: 0, end: 0 } +rebuilt : SymbolId(5): Span { start: 98, end: 105 } tasks/coverage/typescript/tests/cases/compiler/decoratorMetadataWithImportDeclarationNameCollision6.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["MyClass", "_defineProperty", "database", "someDecorator"] -rebuilt : ScopeId(0): ["MyClass", "_defineProperty", "someDecorator"] +after transform: ScopeId(0): ["MyClass", "_decorate", "_defineProperty", "database", "someDecorator"] +rebuilt : ScopeId(0): ["MyClass", "_decorate", "_defineProperty", "someDecorator"] +Symbol span mismatch for "MyClass": +after transform: SymbolId(3): Span { start: 104, end: 111 } +rebuilt : SymbolId(4): Span { start: 0, end: 0 } +Symbol span mismatch for "MyClass": +after transform: SymbolId(6): Span { start: 0, end: 0 } +rebuilt : SymbolId(5): Span { start: 104, end: 111 } + +tasks/coverage/typescript/tests/cases/compiler/decoratorMetadataWithImportDeclarationNameCollision8.ts +semantic error: Symbol span mismatch for "MyClass": +after transform: SymbolId(3): Span { start: 110, end: 117 } +rebuilt : SymbolId(4): Span { start: 0, end: 0 } +Symbol span mismatch for "MyClass": +after transform: SymbolId(6): Span { start: 0, end: 0 } +rebuilt : SymbolId(5): Span { start: 110, end: 117 } tasks/coverage/typescript/tests/cases/compiler/decoratorReferenceOnOtherProperty.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["Bar", "Yoha", "foo"] -rebuilt : ScopeId(0): ["Bar", "foo"] +after transform: ScopeId(0): ["Bar", "Yoha", "_decorate", "_decorateParam", "foo"] +rebuilt : ScopeId(0): ["Bar", "_decorate", "_decorateParam", "foo"] tasks/coverage/typescript/tests/cases/compiler/decoratorReferences.ts semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2), ScopeId(3), ScopeId(4)] -rebuilt : ScopeId(0): [ScopeId(1), ScopeId(2)] +rebuilt : ScopeId(0): [ScopeId(1), ScopeId(3)] +Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 198, end: 199 } +rebuilt : SymbolId(2): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(6): Span { start: 0, end: 0 } +rebuilt : SymbolId(3): Span { start: 198, end: 199 } +Symbol reference IDs mismatch for "y": +after transform: SymbolId(5): [ReferenceId(5)] +rebuilt : SymbolId(5): [] +Reference symbol mismatch for "y": +after transform: SymbolId(5) "y" +rebuilt : +Unresolved reference IDs mismatch for "y": +after transform: [ReferenceId(0), ReferenceId(3)] +rebuilt : [ReferenceId(3), ReferenceId(5), ReferenceId(9)] tasks/coverage/typescript/tests/cases/compiler/decoratorWithNegativeLiteralTypeNoCrash.ts semantic error: Symbol reference IDs mismatch for "decorator": @@ -7403,8 +7476,8 @@ rebuilt : SymbolId(2): [] tasks/coverage/typescript/tests/cases/compiler/decoratorWithUnderscoreMethod.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["A", "console", "dec"] -rebuilt : ScopeId(0): ["A", "dec"] +after transform: ScopeId(0): ["A", "_decorate", "console", "dec"] +rebuilt : ScopeId(0): ["A", "_decorate", "dec"] Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2), ScopeId(4)] rebuilt : ScopeId(0): [ScopeId(1), ScopeId(3)] @@ -7412,8 +7485,8 @@ Reference symbol mismatch for "console": after transform: SymbolId(0) "console" rebuilt : Unresolved references mismatch: -after transform: ["Function", "PropertyDescriptor"] -rebuilt : ["console"] +after transform: ["Function", "PropertyDescriptor", "require"] +rebuilt : ["console", "require"] tasks/coverage/typescript/tests/cases/compiler/deeplyNestedConditionalTypes.ts semantic error: Scope children mismatch: @@ -8420,25 +8493,40 @@ rebuilt : SymbolId(6): [ReferenceId(5)] tasks/coverage/typescript/tests/cases/compiler/emitDecoratorMetadata_object.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["A", "MyClassDecorator", "MyMethodDecorator"] -rebuilt : ScopeId(0): ["A"] -Reference symbol mismatch for "MyClassDecorator": -after transform: SymbolId(0) "MyClassDecorator" -rebuilt : +after transform: ScopeId(0): ["A", "MyClassDecorator", "MyMethodDecorator", "_decorate"] +rebuilt : ScopeId(0): ["A", "_decorate"] +Symbol span mismatch for "A": +after transform: SymbolId(2): Span { start: 123, end: 124 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "A": +after transform: SymbolId(5): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 123, end: 124 } Reference symbol mismatch for "MyMethodDecorator": after transform: SymbolId(1) "MyMethodDecorator" rebuilt : +Reference symbol mismatch for "MyClassDecorator": +after transform: SymbolId(0) "MyClassDecorator" +rebuilt : Unresolved references mismatch: -after transform: ["ClassDecorator", "MethodDecorator"] -rebuilt : ["MyClassDecorator", "MyMethodDecorator"] +after transform: ["ClassDecorator", "MethodDecorator", "require"] +rebuilt : ["MyClassDecorator", "MyMethodDecorator", "require"] tasks/coverage/typescript/tests/cases/compiler/emitDecoratorMetadata_restArgs.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["A", "B", "MyClassDecorator", "MyMethodDecorator"] -rebuilt : ScopeId(0): ["A", "B"] -Reference symbol mismatch for "MyClassDecorator": -after transform: SymbolId(0) "MyClassDecorator" -rebuilt : +after transform: ScopeId(0): ["A", "B", "MyClassDecorator", "MyMethodDecorator", "_decorate"] +rebuilt : ScopeId(0): ["A", "B", "_decorate"] +Symbol span mismatch for "A": +after transform: SymbolId(2): Span { start: 123, end: 124 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "A": +after transform: SymbolId(8): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 123, end: 124 } +Symbol span mismatch for "B": +after transform: SymbolId(5): Span { start: 228, end: 229 } +rebuilt : SymbolId(5): Span { start: 0, end: 0 } +Symbol span mismatch for "B": +after transform: SymbolId(10): Span { start: 0, end: 0 } +rebuilt : SymbolId(6): Span { start: 228, end: 229 } Reference symbol mismatch for "MyMethodDecorator": after transform: SymbolId(1) "MyMethodDecorator" rebuilt : @@ -8448,14 +8536,23 @@ rebuilt : Reference symbol mismatch for "MyMethodDecorator": after transform: SymbolId(1) "MyMethodDecorator" rebuilt : +Reference symbol mismatch for "MyClassDecorator": +after transform: SymbolId(0) "MyClassDecorator" +rebuilt : Unresolved references mismatch: -after transform: ["ClassDecorator", "MethodDecorator"] -rebuilt : ["MyClassDecorator", "MyMethodDecorator"] +after transform: ["ClassDecorator", "MethodDecorator", "require"] +rebuilt : ["MyClassDecorator", "MyMethodDecorator", "require"] tasks/coverage/typescript/tests/cases/compiler/emitHelpersWithLocalCollisions.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["A", "__decorate", "_objectSpread", "dec", "o", "y"] -rebuilt : ScopeId(0): ["A", "_objectSpread", "o", "y"] +after transform: ScopeId(0): ["A", "__decorate", "_decorate", "_objectSpread", "dec", "o", "y"] +rebuilt : ScopeId(0): ["A", "_decorate", "_objectSpread", "o", "y"] +Symbol span mismatch for "A": +after transform: SymbolId(2): Span { start: 57, end: 58 } +rebuilt : SymbolId(2): Span { start: 0, end: 0 } +Symbol span mismatch for "A": +after transform: SymbolId(5): Span { start: 0, end: 0 } +rebuilt : SymbolId(3): Span { start: 57, end: 58 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -13825,8 +13922,14 @@ rebuilt : SymbolId(0): [] tasks/coverage/typescript/tests/cases/compiler/importHelpers.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["A", "B", "C", "dec", "id", "result"] -rebuilt : ScopeId(0): ["A", "B", "C", "id", "result"] +after transform: ScopeId(0): ["A", "B", "C", "_decorate", "_decorateParam", "dec", "id", "result"] +rebuilt : ScopeId(0): ["A", "B", "C", "_decorate", "_decorateParam", "id", "result"] +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 83, end: 84 } +rebuilt : SymbolId(4): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(9): Span { start: 0, end: 0 } +rebuilt : SymbolId(5): Span { start: 83, end: 84 } Reference symbol mismatch for "dec": after transform: SymbolId(2) "dec" rebuilt : @@ -13839,8 +13942,14 @@ rebuilt : ["dec"] tasks/coverage/typescript/tests/cases/compiler/importHelpersES6.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["A", "_asyncToGenerator", "_checkInRHS", "_classPrivateFieldGet", "_classPrivateFieldInitSpec", "_classPrivateFieldSet", "_objectSpread", "_x", "dec", "o", "y"] -rebuilt : ScopeId(0): ["A", "_asyncToGenerator", "_checkInRHS", "_classPrivateFieldGet", "_classPrivateFieldInitSpec", "_classPrivateFieldSet", "_objectSpread", "_x", "o", "y"] +after transform: ScopeId(0): ["A", "_asyncToGenerator", "_checkInRHS", "_classPrivateFieldGet", "_classPrivateFieldInitSpec", "_classPrivateFieldSet", "_decorate", "_objectSpread", "_x", "dec", "o", "y"] +rebuilt : ScopeId(0): ["A", "_asyncToGenerator", "_checkInRHS", "_classPrivateFieldGet", "_classPrivateFieldInitSpec", "_classPrivateFieldSet", "_decorate", "_objectSpread", "_x", "o", "y"] +Symbol span mismatch for "A": +after transform: SymbolId(1): Span { start: 40, end: 41 } +rebuilt : SymbolId(8): Span { start: 0, end: 0 } +Symbol span mismatch for "A": +after transform: SymbolId(12): Span { start: 0, end: 0 } +rebuilt : SymbolId(9): Span { start: 40, end: 41 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -13858,8 +13967,14 @@ rebuilt : ScopeId(0): [] tasks/coverage/typescript/tests/cases/compiler/importHelpersInIsolatedModules.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["A", "B", "C", "dec"] -rebuilt : ScopeId(0): ["A", "B", "C"] +after transform: ScopeId(0): ["A", "B", "C", "_decorate", "_decorateParam", "dec"] +rebuilt : ScopeId(0): ["A", "B", "C", "_decorate", "_decorateParam"] +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 83, end: 84 } +rebuilt : SymbolId(4): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(5): Span { start: 0, end: 0 } +rebuilt : SymbolId(5): Span { start: 83, end: 84 } Reference symbol mismatch for "dec": after transform: SymbolId(2) "dec" rebuilt : @@ -13886,8 +14001,14 @@ rebuilt : ["React", "o"] tasks/coverage/typescript/tests/cases/compiler/importHelpersWithLocalCollisions.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["A", "__decorate", "_objectSpread", "dec", "o", "y"] -rebuilt : ScopeId(0): ["A", "_objectSpread", "o", "y"] +after transform: ScopeId(0): ["A", "__decorate", "_decorate", "_objectSpread", "dec", "o", "y"] +rebuilt : ScopeId(0): ["A", "_decorate", "_objectSpread", "o", "y"] +Symbol span mismatch for "A": +after transform: SymbolId(2): Span { start: 57, end: 58 } +rebuilt : SymbolId(2): Span { start: 0, end: 0 } +Symbol span mismatch for "A": +after transform: SymbolId(5): Span { start: 0, end: 0 } +rebuilt : SymbolId(3): Span { start: 57, end: 58 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -16180,6 +16301,14 @@ Unresolved references mismatch: after transform: ["shouldBeIdentity"] rebuilt : ["p1", "shouldBeIdentity"] +tasks/coverage/typescript/tests/cases/compiler/jsFileCompilationDecoratorSyntax.ts +semantic error: Symbol span mismatch for "C": +after transform: SymbolId(0): Span { start: 16, end: 17 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(1): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 16, end: 17 } + tasks/coverage/typescript/tests/cases/compiler/jsdocAccessEnumType.ts semantic error: Bindings mismatch: after transform: ScopeId(1): ["A", "E"] @@ -17342,8 +17471,8 @@ rebuilt : ["require"] tasks/coverage/typescript/tests/cases/compiler/metadataReferencedWithinFilteredUnion.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["Class1", "Class2", "decorate"] -rebuilt : ScopeId(0): ["Class2", "decorate"] +after transform: ScopeId(0): ["Class1", "Class2", "_decorate", "decorate"] +rebuilt : ScopeId(0): ["Class2", "_decorate", "decorate"] tasks/coverage/typescript/tests/cases/compiler/methodContainingLocalFunction.ts semantic error: Scope flags mismatch: @@ -18106,8 +18235,14 @@ rebuilt : ScopeId(0): ["data2"] tasks/coverage/typescript/tests/cases/compiler/modulePreserveImportHelpers.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["A", "dec"] -rebuilt : ScopeId(0): ["A"] +after transform: ScopeId(0): ["A", "_decorate", "dec"] +rebuilt : ScopeId(0): ["A", "_decorate"] +Symbol span mismatch for "A": +after transform: SymbolId(1): Span { start: 42, end: 43 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "A": +after transform: SymbolId(2): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 42, end: 43 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -19406,8 +19541,14 @@ rebuilt : ScopeId(0): [] tasks/coverage/typescript/tests/cases/compiler/noEmitHelpers2.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["A", "decorator"] -rebuilt : ScopeId(0): ["A"] +after transform: ScopeId(0): ["A", "_decorate", "_decorateParam", "decorator"] +rebuilt : ScopeId(0): ["A", "_decorate", "_decorateParam"] +Symbol span mismatch for "A": +after transform: SymbolId(1): Span { start: 46, end: 47 } +rebuilt : SymbolId(2): Span { start: 0, end: 0 } +Symbol span mismatch for "A": +after transform: SymbolId(4): Span { start: 0, end: 0 } +rebuilt : SymbolId(3): Span { start: 46, end: 47 } Reference symbol mismatch for "decorator": after transform: SymbolId(0) "decorator" rebuilt : @@ -19415,8 +19556,8 @@ Reference symbol mismatch for "decorator": after transform: SymbolId(0) "decorator" rebuilt : Unresolved references mismatch: -after transform: [] -rebuilt : ["decorator"] +after transform: ["require"] +rebuilt : ["decorator", "require"] tasks/coverage/typescript/tests/cases/compiler/noImplicitAnyDestructuringInPrivateMethod.ts semantic error: Scope children mismatch: @@ -25851,8 +25992,20 @@ rebuilt : SymbolId(3): ScopeId(0) tasks/coverage/typescript/tests/cases/compiler/staticInitializersAndLegacyClassDecorators.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C1", "C2", "_C", "_C2", "_defineProperty", "dec"] -rebuilt : ScopeId(0): ["C1", "C2", "_C", "_C2", "_defineProperty"] +after transform: ScopeId(0): ["C1", "C2", "_C", "_C2", "_decorate", "_defineProperty", "dec"] +rebuilt : ScopeId(0): ["C1", "C2", "_C", "_C2", "_decorate", "_defineProperty"] +Symbol span mismatch for "C1": +after transform: SymbolId(1): Span { start: 90, end: 92 } +rebuilt : SymbolId(4): Span { start: 0, end: 0 } +Symbol span mismatch for "C1": +after transform: SymbolId(5): Span { start: 0, end: 0 } +rebuilt : SymbolId(5): Span { start: 90, end: 92 } +Symbol span mismatch for "C2": +after transform: SymbolId(2): Span { start: 141, end: 143 } +rebuilt : SymbolId(6): Span { start: 0, end: 0 } +Symbol span mismatch for "C2": +after transform: SymbolId(8): Span { start: 0, end: 0 } +rebuilt : SymbolId(7): Span { start: 141, end: 143 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -26434,8 +26587,8 @@ rebuilt : ScopeId(0): [] tasks/coverage/typescript/tests/cases/compiler/targetEs6DecoratorMetadataImportNotElided.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["Input", "MyComponent", "TemplateRef", "_defineProperty"] -rebuilt : ScopeId(0): ["Input", "MyComponent", "_defineProperty"] +after transform: ScopeId(0): ["Input", "MyComponent", "TemplateRef", "_decorate", "_defineProperty"] +rebuilt : ScopeId(0): ["Input", "MyComponent", "_decorate", "_defineProperty"] tasks/coverage/typescript/tests/cases/compiler/targetTypeArgs.ts semantic error: Scope children mismatch: @@ -26682,8 +26835,14 @@ rebuilt : ScopeId(0): [ScopeId(1), ScopeId(3)] tasks/coverage/typescript/tests/cases/compiler/tslibReExportHelpers.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["Foo", "decorator"] -rebuilt : ScopeId(0): ["Foo"] +after transform: ScopeId(0): ["Foo", "_decorate", "decorator"] +rebuilt : ScopeId(0): ["Foo", "_decorate"] +Symbol span mismatch for "Foo": +after transform: SymbolId(1): Span { start: 52, end: 55 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "Foo": +after transform: SymbolId(2): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 52, end: 55 } Reference symbol mismatch for "decorator": after transform: SymbolId(0) "decorator" rebuilt : @@ -28358,23 +28517,212 @@ rebuilt : SymbolId(3): SymbolFlags(FunctionScopedVariable) tasks/coverage/typescript/tests/cases/compiler/useBeforeDeclaration_classDecorators.2.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C1", "C2", "C3", "C4", "C5", "C6", "_defineProperty", "dec"] -rebuilt : ScopeId(0): ["C1", "C2", "C3", "C4", "C5", "C6", "_defineProperty"] +after transform: ScopeId(0): ["C1", "C2", "C3", "C4", "C5", "C6", "_C", "_C2", "_C3", "_decorate", "_decorateParam", "_defineProperty", "dec"] +rebuilt : ScopeId(0): ["C1", "C2", "C3", "C4", "C5", "C6", "_C", "_C2", "_C3", "_decorate", "_decorateParam", "_defineProperty"] +Scope children mismatch: +after transform: ScopeId(0): [ScopeId(1), ScopeId(2), ScopeId(3), ScopeId(4), ScopeId(5), ScopeId(6), ScopeId(29), ScopeId(39)] +rebuilt : ScopeId(0): [ScopeId(1), ScopeId(2), ScopeId(3), ScopeId(4), ScopeId(5), ScopeId(6), ScopeId(16), ScopeId(17), ScopeId(18), ScopeId(19), ScopeId(20), ScopeId(21), ScopeId(22), ScopeId(23), ScopeId(24), ScopeId(25), ScopeId(26), ScopeId(27), ScopeId(37), ScopeId(47), ScopeId(48), ScopeId(49), ScopeId(50), ScopeId(51), ScopeId(52), ScopeId(53), ScopeId(54), ScopeId(55), ScopeId(56), ScopeId(57)] Scope children mismatch: after transform: ScopeId(6): [ScopeId(7), ScopeId(8), ScopeId(9), ScopeId(10), ScopeId(11), ScopeId(12), ScopeId(13), ScopeId(14), ScopeId(15), ScopeId(16), ScopeId(17), ScopeId(18), ScopeId(19), ScopeId(20), ScopeId(21), ScopeId(22), ScopeId(23), ScopeId(25), ScopeId(27)] -rebuilt : ScopeId(6): [ScopeId(7), ScopeId(8), ScopeId(9), ScopeId(10), ScopeId(11), ScopeId(12), ScopeId(13), ScopeId(14), ScopeId(15), ScopeId(16), ScopeId(17), ScopeId(18), ScopeId(19), ScopeId(20), ScopeId(21), ScopeId(23), ScopeId(25)] +rebuilt : ScopeId(6): [ScopeId(7), ScopeId(8), ScopeId(9), ScopeId(10), ScopeId(11), ScopeId(12), ScopeId(13), ScopeId(14), ScopeId(15)] +Scope children mismatch: +after transform: ScopeId(23): [ScopeId(24)] +rebuilt : ScopeId(13): [] +Scope children mismatch: +after transform: ScopeId(25): [ScopeId(26)] +rebuilt : ScopeId(14): [] +Scope children mismatch: +after transform: ScopeId(27): [ScopeId(28)] +rebuilt : ScopeId(15): [] +Scope flags mismatch: +after transform: ScopeId(7): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(16): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(7): Some(ScopeId(6)) +rebuilt : ScopeId(16): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(9): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(17): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(9): Some(ScopeId(6)) +rebuilt : ScopeId(17): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(11): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(18): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(11): Some(ScopeId(6)) +rebuilt : ScopeId(18): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(14): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(19): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(14): Some(ScopeId(6)) +rebuilt : ScopeId(19): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(15): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(20): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(15): Some(ScopeId(6)) +rebuilt : ScopeId(20): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(17): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(21): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(17): Some(ScopeId(6)) +rebuilt : ScopeId(21): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(19): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(22): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(19): Some(ScopeId(6)) +rebuilt : ScopeId(22): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(22): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(23): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(22): Some(ScopeId(6)) +rebuilt : ScopeId(23): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(26): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(24): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(26): Some(ScopeId(25)) +rebuilt : ScopeId(24): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(28): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(25): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(28): Some(ScopeId(27)) +rebuilt : ScopeId(25): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(24): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(26): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(24): Some(ScopeId(23)) +rebuilt : ScopeId(26): Some(ScopeId(0)) Scope children mismatch: after transform: ScopeId(39): [ScopeId(40), ScopeId(41), ScopeId(42), ScopeId(43), ScopeId(44), ScopeId(45), ScopeId(46), ScopeId(47), ScopeId(48), ScopeId(49), ScopeId(50), ScopeId(51), ScopeId(52), ScopeId(53), ScopeId(54), ScopeId(55), ScopeId(56), ScopeId(58), ScopeId(60)] -rebuilt : ScopeId(37): [ScopeId(38), ScopeId(39), ScopeId(40), ScopeId(41), ScopeId(42), ScopeId(43), ScopeId(44), ScopeId(45), ScopeId(46), ScopeId(47), ScopeId(48), ScopeId(49), ScopeId(50), ScopeId(51), ScopeId(52), ScopeId(54), ScopeId(56)] +rebuilt : ScopeId(37): [ScopeId(38), ScopeId(39), ScopeId(40), ScopeId(41), ScopeId(42), ScopeId(43), ScopeId(44), ScopeId(45), ScopeId(46)] +Scope children mismatch: +after transform: ScopeId(56): [ScopeId(57)] +rebuilt : ScopeId(44): [] +Scope children mismatch: +after transform: ScopeId(58): [ScopeId(59)] +rebuilt : ScopeId(45): [] +Scope children mismatch: +after transform: ScopeId(60): [ScopeId(61)] +rebuilt : ScopeId(46): [] +Scope flags mismatch: +after transform: ScopeId(40): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(47): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(40): Some(ScopeId(39)) +rebuilt : ScopeId(47): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(42): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(48): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(42): Some(ScopeId(39)) +rebuilt : ScopeId(48): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(44): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(49): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(44): Some(ScopeId(39)) +rebuilt : ScopeId(49): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(47): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(50): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(47): Some(ScopeId(39)) +rebuilt : ScopeId(50): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(48): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(51): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(48): Some(ScopeId(39)) +rebuilt : ScopeId(51): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(50): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(52): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(50): Some(ScopeId(39)) +rebuilt : ScopeId(52): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(52): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(53): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(52): Some(ScopeId(39)) +rebuilt : ScopeId(53): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(55): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(54): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(55): Some(ScopeId(39)) +rebuilt : ScopeId(54): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(59): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(55): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(59): Some(ScopeId(58)) +rebuilt : ScopeId(55): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(61): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(56): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(61): Some(ScopeId(60)) +rebuilt : ScopeId(56): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(57): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(57): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(57): Some(ScopeId(56)) +rebuilt : ScopeId(57): Some(ScopeId(0)) +Symbol span mismatch for "C1": +after transform: SymbolId(1): Span { start: 52, end: 54 } +rebuilt : SymbolId(6): Span { start: 0, end: 0 } +Symbol span mismatch for "C1": +after transform: SymbolId(22): Span { start: 0, end: 0 } +rebuilt : SymbolId(7): Span { start: 52, end: 54 } +Symbol span mismatch for "C2": +after transform: SymbolId(2): Span { start: 84, end: 86 } +rebuilt : SymbolId(8): Span { start: 0, end: 0 } +Symbol span mismatch for "C2": +after transform: SymbolId(24): Span { start: 0, end: 0 } +rebuilt : SymbolId(9): Span { start: 84, end: 86 } +Symbol span mismatch for "C3": +after transform: SymbolId(3): Span { start: 126, end: 128 } +rebuilt : SymbolId(10): Span { start: 0, end: 0 } +Symbol span mismatch for "C3": +after transform: SymbolId(25): Span { start: 0, end: 0 } +rebuilt : SymbolId(11): Span { start: 126, end: 128 } +Symbol span mismatch for "C4": +after transform: SymbolId(4): Span { start: 146, end: 148 } +rebuilt : SymbolId(12): Span { start: 0, end: 0 } Symbol reference IDs mismatch for "C4": -after transform: SymbolId(4): [ReferenceId(7), ReferenceId(9), ReferenceId(11), ReferenceId(13), ReferenceId(15), ReferenceId(17), ReferenceId(19), ReferenceId(21), ReferenceId(23), ReferenceId(25), ReferenceId(27), ReferenceId(29), ReferenceId(31), ReferenceId(85)] -rebuilt : SymbolId(4): [ReferenceId(8), ReferenceId(10), ReferenceId(12), ReferenceId(14), ReferenceId(16), ReferenceId(18), ReferenceId(20), ReferenceId(22), ReferenceId(24), ReferenceId(27), ReferenceId(29), ReferenceId(31)] +after transform: SymbolId(4): [ReferenceId(7), ReferenceId(9), ReferenceId(11), ReferenceId(13), ReferenceId(15), ReferenceId(17), ReferenceId(19), ReferenceId(21), ReferenceId(23), ReferenceId(25), ReferenceId(27), ReferenceId(29), ReferenceId(31), ReferenceId(94), ReferenceId(108), ReferenceId(110), ReferenceId(112), ReferenceId(114), ReferenceId(116), ReferenceId(118), ReferenceId(120), ReferenceId(122), ReferenceId(124), ReferenceId(126), ReferenceId(129), ReferenceId(132)] +rebuilt : SymbolId(12): [ReferenceId(21), ReferenceId(25), ReferenceId(29), ReferenceId(33), ReferenceId(37), ReferenceId(41), ReferenceId(45), ReferenceId(49), ReferenceId(53), ReferenceId(58), ReferenceId(63), ReferenceId(64), ReferenceId(70)] +Symbol span mismatch for "C4": +after transform: SymbolId(27): Span { start: 0, end: 0 } +rebuilt : SymbolId(13): Span { start: 146, end: 148 } +Symbol span mismatch for "C5": +after transform: SymbolId(10): Span { start: 683, end: 685 } +rebuilt : SymbolId(19): Span { start: 0, end: 0 } Symbol reference IDs mismatch for "C5": -after transform: SymbolId(10): [ReferenceId(33), ReferenceId(35), ReferenceId(37), ReferenceId(39), ReferenceId(41), ReferenceId(43), ReferenceId(45), ReferenceId(47), ReferenceId(49), ReferenceId(51), ReferenceId(53), ReferenceId(55), ReferenceId(57), ReferenceId(88)] -rebuilt : SymbolId(10): [ReferenceId(33), ReferenceId(35), ReferenceId(37), ReferenceId(39), ReferenceId(41), ReferenceId(43), ReferenceId(45), ReferenceId(47), ReferenceId(49), ReferenceId(52), ReferenceId(54), ReferenceId(56)] +after transform: SymbolId(10): [ReferenceId(33), ReferenceId(35), ReferenceId(37), ReferenceId(39), ReferenceId(41), ReferenceId(43), ReferenceId(45), ReferenceId(47), ReferenceId(49), ReferenceId(51), ReferenceId(53), ReferenceId(55), ReferenceId(57), ReferenceId(136), ReferenceId(150), ReferenceId(152), ReferenceId(154), ReferenceId(156), ReferenceId(158), ReferenceId(160), ReferenceId(162), ReferenceId(164), ReferenceId(166), ReferenceId(168), ReferenceId(171), ReferenceId(174)] +rebuilt : SymbolId(19): [ReferenceId(74), ReferenceId(78), ReferenceId(82), ReferenceId(86), ReferenceId(90), ReferenceId(94), ReferenceId(98), ReferenceId(102), ReferenceId(106), ReferenceId(111), ReferenceId(116), ReferenceId(117), ReferenceId(123)] +Symbol span mismatch for "C5": +after transform: SymbolId(30): Span { start: 0, end: 0 } +rebuilt : SymbolId(20): Span { start: 683, end: 685 } +Symbol span mismatch for "C6": +after transform: SymbolId(16): Span { start: 1143, end: 1145 } +rebuilt : SymbolId(26): Span { start: 0, end: 0 } Symbol reference IDs mismatch for "C6": -after transform: SymbolId(16): [ReferenceId(59), ReferenceId(61), ReferenceId(63), ReferenceId(65), ReferenceId(67), ReferenceId(69), ReferenceId(71), ReferenceId(73), ReferenceId(75), ReferenceId(77), ReferenceId(79), ReferenceId(81), ReferenceId(83), ReferenceId(91)] -rebuilt : SymbolId(16): [ReferenceId(58), ReferenceId(60), ReferenceId(62), ReferenceId(64), ReferenceId(66), ReferenceId(68), ReferenceId(70), ReferenceId(72), ReferenceId(74), ReferenceId(77), ReferenceId(79), ReferenceId(81)] +after transform: SymbolId(16): [ReferenceId(59), ReferenceId(61), ReferenceId(63), ReferenceId(65), ReferenceId(67), ReferenceId(69), ReferenceId(71), ReferenceId(73), ReferenceId(75), ReferenceId(77), ReferenceId(79), ReferenceId(81), ReferenceId(83), ReferenceId(178), ReferenceId(192), ReferenceId(194), ReferenceId(196), ReferenceId(198), ReferenceId(200), ReferenceId(202), ReferenceId(204), ReferenceId(206), ReferenceId(208), ReferenceId(210), ReferenceId(213), ReferenceId(216)] +rebuilt : SymbolId(26): [ReferenceId(127), ReferenceId(131), ReferenceId(135), ReferenceId(139), ReferenceId(143), ReferenceId(147), ReferenceId(151), ReferenceId(155), ReferenceId(159), ReferenceId(164), ReferenceId(169), ReferenceId(170), ReferenceId(176)] +Symbol span mismatch for "C6": +after transform: SymbolId(32): Span { start: 0, end: 0 } +rebuilt : SymbolId(27): Span { start: 1143, end: 1145 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -30965,6 +31313,26 @@ Unresolved references mismatch: after transform: ["require"] rebuilt : ["Mup", "require"] +tasks/coverage/typescript/tests/cases/conformance/classes/propertyMemberDeclarations/staticAutoAccessorsWithDecorators.ts +semantic error: Scope children mismatch: +after transform: ScopeId(0): [ScopeId(1)] +rebuilt : ScopeId(0): [ScopeId(1), ScopeId(2), ScopeId(3)] +Scope children mismatch: +after transform: ScopeId(1): [ScopeId(2), ScopeId(3)] +rebuilt : ScopeId(1): [] +Scope flags mismatch: +after transform: ScopeId(2): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(2): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(2): Some(ScopeId(1)) +rebuilt : ScopeId(2): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(3): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(3): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(3): Some(ScopeId(1)) +rebuilt : ScopeId(3): Some(ScopeId(0)) + tasks/coverage/typescript/tests/cases/conformance/classes/propertyMemberDeclarations/staticPropertyNameConflicts.ts semantic error: Classes may not have a static property named prototype Classes may not have a static property named prototype @@ -31456,40 +31824,40 @@ semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2)] rebuilt : ScopeId(0): [ScopeId(1)] Unresolved references mismatch: -after transform: ["TypedPropertyDescriptor", "dec"] -rebuilt : ["dec"] +after transform: ["TypedPropertyDescriptor", "dec", "require"] +rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/decorators/class/accessor/decoratorOnClassAccessor2.ts semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2)] rebuilt : ScopeId(0): [ScopeId(1)] Unresolved references mismatch: -after transform: ["TypedPropertyDescriptor", "dec"] -rebuilt : ["dec"] +after transform: ["TypedPropertyDescriptor", "dec", "require"] +rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/decorators/class/accessor/decoratorOnClassAccessor4.ts semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2)] rebuilt : ScopeId(0): [ScopeId(1)] Unresolved references mismatch: -after transform: ["TypedPropertyDescriptor", "dec"] -rebuilt : ["dec"] +after transform: ["TypedPropertyDescriptor", "dec", "require"] +rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/decorators/class/accessor/decoratorOnClassAccessor5.ts semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2)] rebuilt : ScopeId(0): [ScopeId(1)] Unresolved references mismatch: -after transform: ["TypedPropertyDescriptor", "dec"] -rebuilt : ["dec"] +after transform: ["TypedPropertyDescriptor", "dec", "require"] +rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/decorators/class/accessor/decoratorOnClassAccessor8.ts semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2), ScopeId(5), ScopeId(8), ScopeId(11), ScopeId(14), ScopeId(16)] rebuilt : ScopeId(0): [ScopeId(1), ScopeId(4), ScopeId(7), ScopeId(10), ScopeId(13), ScopeId(15)] Unresolved references mismatch: -after transform: ["TypedPropertyDescriptor", "dec"] -rebuilt : ["dec"] +after transform: ["TypedPropertyDescriptor", "dec", "require"] +rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/decorators/class/constructor/decoratorOnClassConstructor3.ts semantic error: Unresolved references mismatch: @@ -31498,8 +31866,26 @@ rebuilt : [] tasks/coverage/typescript/tests/cases/conformance/decorators/class/constructor/decoratorOnClassConstructor4.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["A", "B", "C", "dec"] -rebuilt : ScopeId(0): ["A", "B", "C"] +after transform: ScopeId(0): ["A", "B", "C", "_decorate", "dec"] +rebuilt : ScopeId(0): ["A", "B", "C", "_decorate"] +Symbol span mismatch for "A": +after transform: SymbolId(1): Span { start: 34, end: 35 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "A": +after transform: SymbolId(5): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 34, end: 35 } +Symbol span mismatch for "B": +after transform: SymbolId(2): Span { start: 52, end: 53 } +rebuilt : SymbolId(3): Span { start: 0, end: 0 } +Symbol span mismatch for "B": +after transform: SymbolId(7): Span { start: 0, end: 0 } +rebuilt : SymbolId(4): Span { start: 52, end: 53 } +Symbol span mismatch for "C": +after transform: SymbolId(4): Span { start: 100, end: 101 } +rebuilt : SymbolId(6): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(8): Span { start: 0, end: 0 } +rebuilt : SymbolId(7): Span { start: 100, end: 101 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -31510,21 +31896,33 @@ Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : Unresolved references mismatch: -after transform: [] -rebuilt : ["dec"] +after transform: ["require"] +rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/decorators/class/constructor/parameter/decoratorOnClassConstructorParameter1.ts semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2)] rebuilt : ScopeId(0): [ScopeId(1)] +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 107, end: 108 } +rebuilt : SymbolId(2): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(5): Span { start: 0, end: 0 } +rebuilt : SymbolId(3): Span { start: 107, end: 108 } Unresolved references mismatch: -after transform: ["Function", "dec"] -rebuilt : ["dec"] +after transform: ["Function", "dec", "require"] +rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/decorators/class/constructor/parameter/decoratorOnClassConstructorParameter5.ts semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2)] rebuilt : ScopeId(0): [ScopeId(1)] +Symbol span mismatch for "BulkEditPreviewProvider": +after transform: SymbolId(1): Span { start: 106, end: 129 } +rebuilt : SymbolId(4): Span { start: 0, end: 0 } +Symbol span mismatch for "BulkEditPreviewProvider": +after transform: SymbolId(5): Span { start: 0, end: 0 } +rebuilt : SymbolId(5): Span { start: 106, end: 129 } Reference symbol mismatch for "IFoo": after transform: SymbolId(0) "IFoo" rebuilt : @@ -31533,30 +31931,60 @@ after transform: ["require"] rebuilt : ["IFoo", "require"] tasks/coverage/typescript/tests/cases/conformance/decorators/class/decoratedBlockScopedClass1.ts -semantic error: Symbol reference IDs mismatch for "Foo": -after transform: SymbolId(2): [ReferenceId(1), ReferenceId(2), ReferenceId(3)] -rebuilt : SymbolId(2): [ReferenceId(1), ReferenceId(2)] +semantic error: Symbol span mismatch for "Foo": +after transform: SymbolId(2): Span { start: 100, end: 103 } +rebuilt : SymbolId(4): Span { start: 0, end: 0 } +Symbol reference IDs mismatch for "Foo": +after transform: SymbolId(2): [ReferenceId(1), ReferenceId(2), ReferenceId(3), ReferenceId(5), ReferenceId(7)] +rebuilt : SymbolId(4): [ReferenceId(3), ReferenceId(7), ReferenceId(8)] +Symbol span mismatch for "Foo": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(5): Span { start: 100, end: 103 } tasks/coverage/typescript/tests/cases/conformance/decorators/class/decoratedBlockScopedClass2.ts -semantic error: Symbol reference IDs mismatch for "Foo": -after transform: SymbolId(2): [ReferenceId(1), ReferenceId(2), ReferenceId(3)] -rebuilt : SymbolId(2): [ReferenceId(1), ReferenceId(2)] +semantic error: Symbol span mismatch for "Foo": +after transform: SymbolId(2): Span { start: 114, end: 117 } +rebuilt : SymbolId(4): Span { start: 0, end: 0 } +Symbol reference IDs mismatch for "Foo": +after transform: SymbolId(2): [ReferenceId(1), ReferenceId(2), ReferenceId(3), ReferenceId(5), ReferenceId(7)] +rebuilt : SymbolId(4): [ReferenceId(3), ReferenceId(7), ReferenceId(8)] +Symbol span mismatch for "Foo": +after transform: SymbolId(4): Span { start: 0, end: 0 } +rebuilt : SymbolId(5): Span { start: 114, end: 117 } tasks/coverage/typescript/tests/cases/conformance/decorators/class/decoratedBlockScopedClass3.ts -semantic error: Symbol reference IDs mismatch for "Foo": -after transform: SymbolId(2): [ReferenceId(1), ReferenceId(2), ReferenceId(3)] -rebuilt : SymbolId(2): [ReferenceId(1), ReferenceId(2)] +semantic error: Symbol span mismatch for "Foo": +after transform: SymbolId(2): Span { start: 100, end: 103 } +rebuilt : SymbolId(4): Span { start: 0, end: 0 } Symbol reference IDs mismatch for "Foo": -after transform: SymbolId(3): [ReferenceId(5), ReferenceId(6), ReferenceId(7)] -rebuilt : SymbolId(3): [ReferenceId(4), ReferenceId(5)] +after transform: SymbolId(2): [ReferenceId(1), ReferenceId(2), ReferenceId(3), ReferenceId(9), ReferenceId(11)] +rebuilt : SymbolId(4): [ReferenceId(3), ReferenceId(7), ReferenceId(8)] +Symbol span mismatch for "Foo": +after transform: SymbolId(5): Span { start: 0, end: 0 } +rebuilt : SymbolId(5): Span { start: 100, end: 103 } +Symbol span mismatch for "Foo": +after transform: SymbolId(3): Span { start: 218, end: 221 } +rebuilt : SymbolId(7): Span { start: 0, end: 0 } +Symbol reference IDs mismatch for "Foo": +after transform: SymbolId(3): [ReferenceId(5), ReferenceId(6), ReferenceId(7), ReferenceId(15), ReferenceId(17)] +rebuilt : SymbolId(7): [ReferenceId(11), ReferenceId(15), ReferenceId(16)] +Symbol span mismatch for "Foo": +after transform: SymbolId(8): Span { start: 0, end: 0 } +rebuilt : SymbolId(8): Span { start: 218, end: 221 } tasks/coverage/typescript/tests/cases/conformance/decorators/class/decoratedClassExportsCommonJS1.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["Something", "Testing123", "_Testing", "_defineProperty"] -rebuilt : ScopeId(0): ["Testing123", "_Testing", "_defineProperty"] +after transform: ScopeId(0): ["Something", "Testing123", "_Testing", "_decorate", "_defineProperty"] +rebuilt : ScopeId(0): ["Testing123", "_Testing", "_decorate", "_defineProperty"] Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2), ScopeId(3)] rebuilt : ScopeId(0): [ScopeId(1), ScopeId(2)] +Symbol span mismatch for "Testing123": +after transform: SymbolId(2): Span { start: 119, end: 129 } +rebuilt : SymbolId(3): Span { start: 0, end: 0 } +Symbol span mismatch for "Testing123": +after transform: SymbolId(5): Span { start: 0, end: 0 } +rebuilt : SymbolId(4): Span { start: 119, end: 129 } Reference symbol mismatch for "Something": after transform: SymbolId(1) "Something" rebuilt : @@ -31566,11 +31994,17 @@ rebuilt : ["Something"] tasks/coverage/typescript/tests/cases/conformance/decorators/class/decoratedClassExportsCommonJS2.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["Something", "Testing123"] -rebuilt : ScopeId(0): ["Testing123"] +after transform: ScopeId(0): ["Something", "Testing123", "_decorate"] +rebuilt : ScopeId(0): ["Testing123", "_decorate"] Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2), ScopeId(3)] rebuilt : ScopeId(0): [ScopeId(1), ScopeId(2)] +Symbol span mismatch for "Testing123": +after transform: SymbolId(2): Span { start: 119, end: 129 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "Testing123": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 119, end: 129 } Reference symbol mismatch for "Something": after transform: SymbolId(1) "Something" rebuilt : @@ -31580,11 +32014,17 @@ rebuilt : ["Something"] tasks/coverage/typescript/tests/cases/conformance/decorators/class/decoratedClassExportsSystem1.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["Something", "Testing123", "_Testing", "_defineProperty"] -rebuilt : ScopeId(0): ["Testing123", "_Testing", "_defineProperty"] +after transform: ScopeId(0): ["Something", "Testing123", "_Testing", "_decorate", "_defineProperty"] +rebuilt : ScopeId(0): ["Testing123", "_Testing", "_decorate", "_defineProperty"] Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2), ScopeId(3)] rebuilt : ScopeId(0): [ScopeId(1), ScopeId(2)] +Symbol span mismatch for "Testing123": +after transform: SymbolId(2): Span { start: 119, end: 129 } +rebuilt : SymbolId(3): Span { start: 0, end: 0 } +Symbol span mismatch for "Testing123": +after transform: SymbolId(5): Span { start: 0, end: 0 } +rebuilt : SymbolId(4): Span { start: 119, end: 129 } Reference symbol mismatch for "Something": after transform: SymbolId(1) "Something" rebuilt : @@ -31594,11 +32034,17 @@ rebuilt : ["Something"] tasks/coverage/typescript/tests/cases/conformance/decorators/class/decoratedClassExportsSystem2.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["Something", "Testing123"] -rebuilt : ScopeId(0): ["Testing123"] +after transform: ScopeId(0): ["Something", "Testing123", "_decorate"] +rebuilt : ScopeId(0): ["Testing123", "_decorate"] Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2), ScopeId(3)] rebuilt : ScopeId(0): [ScopeId(1), ScopeId(2)] +Symbol span mismatch for "Testing123": +after transform: SymbolId(2): Span { start: 119, end: 129 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "Testing123": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 119, end: 129 } Reference symbol mismatch for "Something": after transform: SymbolId(1) "Something" rebuilt : @@ -31607,39 +32053,92 @@ after transform: [] rebuilt : ["Something"] tasks/coverage/typescript/tests/cases/conformance/decorators/class/decoratedClassFromExternalModule.ts -semantic error: Bindings mismatch: -after transform: ScopeId(0): ["Decorated"] -rebuilt : ScopeId(0): [] +semantic error: Symbol span mismatch for "Decorated": +after transform: SymbolId(2): Span { start: 67, end: 76 } +rebuilt : SymbolId(3): Span { start: 0, end: 0 } +Symbol span mismatch for "Decorated": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(4): Span { start: 67, end: 76 } + +tasks/coverage/typescript/tests/cases/conformance/decorators/class/decoratorInstantiateModulesInFunctionBodies.ts +semantic error: Scope children mismatch: +after transform: ScopeId(0): [ScopeId(1), ScopeId(3)] +rebuilt : ScopeId(0): [ScopeId(1), ScopeId(3), ScopeId(5)] +Scope children mismatch: +after transform: ScopeId(3): [ScopeId(4), ScopeId(5)] +rebuilt : ScopeId(3): [ScopeId(4)] +Scope parent mismatch: +after transform: ScopeId(4): Some(ScopeId(3)) +rebuilt : ScopeId(5): Some(ScopeId(0)) tasks/coverage/typescript/tests/cases/conformance/decorators/class/decoratorOnClass1.ts semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2)] rebuilt : ScopeId(0): [ScopeId(1)] +Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 51, end: 52 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 51, end: 52 } tasks/coverage/typescript/tests/cases/conformance/decorators/class/decoratorOnClass2.ts semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2)] rebuilt : ScopeId(0): [ScopeId(1)] +Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 58, end: 59 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 58, end: 59 } tasks/coverage/typescript/tests/cases/conformance/decorators/class/decoratorOnClass3.ts semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2)] rebuilt : ScopeId(0): [ScopeId(1)] +Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 58, end: 59 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 58, end: 59 } tasks/coverage/typescript/tests/cases/conformance/decorators/class/decoratorOnClass4.ts semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(3)] rebuilt : ScopeId(0): [ScopeId(1)] +Symbol span mismatch for "C": +after transform: SymbolId(1): Span { start: 59, end: 60 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 59, end: 60 } tasks/coverage/typescript/tests/cases/conformance/decorators/class/decoratorOnClass5.ts semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(3)] rebuilt : ScopeId(0): [ScopeId(1)] +Symbol span mismatch for "C": +after transform: SymbolId(1): Span { start: 59, end: 60 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 59, end: 60 } tasks/coverage/typescript/tests/cases/conformance/decorators/class/decoratorOnClass9.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["A", "B", "_B", "_defineProperty", "dec"] -rebuilt : ScopeId(0): ["A", "B", "_B", "_defineProperty"] +after transform: ScopeId(0): ["A", "B", "_B", "_B2", "_decorate", "_defineProperty", "dec"] +rebuilt : ScopeId(0): ["A", "B", "_B", "_B2", "_decorate", "_defineProperty"] +Symbol span mismatch for "B": +after transform: SymbolId(2): Span { start: 102, end: 103 } +rebuilt : SymbolId(5): Span { start: 0, end: 0 } +Symbol reference IDs mismatch for "B": +after transform: SymbolId(2): [ReferenceId(4), ReferenceId(3), ReferenceId(6), ReferenceId(8), ReferenceId(11), ReferenceId(13)] +rebuilt : SymbolId(5): [ReferenceId(6), ReferenceId(8), ReferenceId(10), ReferenceId(12), ReferenceId(16)] +Symbol span mismatch for "B": +after transform: SymbolId(5): Span { start: 0, end: 0 } +rebuilt : SymbolId(6): Span { start: 102, end: 103 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -31652,21 +32151,21 @@ semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2)] rebuilt : ScopeId(0): [ScopeId(1)] Unresolved references mismatch: -after transform: ["TypedPropertyDescriptor", "dec"] -rebuilt : ["dec"] +after transform: ["TypedPropertyDescriptor", "dec", "require"] +rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/decorators/class/method/decoratorOnClassMethod13.ts semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2)] rebuilt : ScopeId(0): [ScopeId(1)] Unresolved references mismatch: -after transform: ["TypedPropertyDescriptor", "dec"] -rebuilt : ["dec"] +after transform: ["TypedPropertyDescriptor", "dec", "require"] +rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/decorators/class/method/decoratorOnClassMethod14.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["Foo", "_defineProperty", "decorator"] -rebuilt : ScopeId(0): ["Foo", "_defineProperty"] +after transform: ScopeId(0): ["Foo", "_decorate", "_defineProperty", "decorator"] +rebuilt : ScopeId(0): ["Foo", "_decorate", "_defineProperty"] Reference symbol mismatch for "decorator": after transform: SymbolId(0) "decorator" rebuilt : @@ -31676,8 +32175,8 @@ rebuilt : ["decorator", "require"] tasks/coverage/typescript/tests/cases/conformance/decorators/class/method/decoratorOnClassMethod15.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["Foo", "_defineProperty", "decorator"] -rebuilt : ScopeId(0): ["Foo", "_defineProperty"] +after transform: ScopeId(0): ["Foo", "_decorate", "_defineProperty", "decorator"] +rebuilt : ScopeId(0): ["Foo", "_decorate", "_defineProperty"] Reference symbol mismatch for "decorator": after transform: SymbolId(0) "decorator" rebuilt : @@ -31687,8 +32186,8 @@ rebuilt : ["decorator", "require"] tasks/coverage/typescript/tests/cases/conformance/decorators/class/method/decoratorOnClassMethod16.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["Foo", "_defineProperty", "decorator"] -rebuilt : ScopeId(0): ["Foo", "_defineProperty"] +after transform: ScopeId(0): ["Foo", "_decorate", "_defineProperty", "decorator"] +rebuilt : ScopeId(0): ["Foo", "_decorate", "_defineProperty"] Reference symbol mismatch for "decorator": after transform: SymbolId(0) "decorator" rebuilt : @@ -31703,14 +32202,35 @@ rebuilt : ScopeId(0): ["Foo", "_defineProperty"] tasks/coverage/typescript/tests/cases/conformance/decorators/class/method/decoratorOnClassMethod19.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C1", "C2", "_classPrivateFieldGet", "_classPrivateFieldInitSpec", "_x", "_x2", "decorator"] -rebuilt : ScopeId(0): ["C1", "C2", "_classPrivateFieldGet", "_classPrivateFieldInitSpec", "_x", "_x2"] +after transform: ScopeId(0): ["C1", "C2", "_classPrivateFieldGet", "_classPrivateFieldInitSpec", "_decorate", "_decorateParam", "_x", "_x2", "decorator"] +rebuilt : ScopeId(0): ["C1", "C2", "_classPrivateFieldGet", "_classPrivateFieldInitSpec", "_decorate", "_decorateParam", "_x", "_x2"] +Scope children mismatch: +after transform: ScopeId(0): [ScopeId(1), ScopeId(4)] +rebuilt : ScopeId(0): [ScopeId(1), ScopeId(4), ScopeId(5), ScopeId(8)] +Scope children mismatch: +after transform: ScopeId(1): [ScopeId(2), ScopeId(3), ScopeId(7)] +rebuilt : ScopeId(1): [ScopeId(2), ScopeId(3)] +Scope flags mismatch: +after transform: ScopeId(2): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(4): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(2): Some(ScopeId(1)) +rebuilt : ScopeId(4): Some(ScopeId(0)) +Scope children mismatch: +after transform: ScopeId(5): [ScopeId(6)] +rebuilt : ScopeId(7): [] +Scope flags mismatch: +after transform: ScopeId(6): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(8): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(6): Some(ScopeId(5)) +rebuilt : ScopeId(8): Some(ScopeId(0)) Symbol reference IDs mismatch for "C1": -after transform: SymbolId(1): [ReferenceId(1)] -rebuilt : SymbolId(3): [] +after transform: SymbolId(1): [ReferenceId(1), ReferenceId(11)] +rebuilt : SymbolId(5): [ReferenceId(12)] Symbol reference IDs mismatch for "C2": -after transform: SymbolId(3): [ReferenceId(4)] -rebuilt : SymbolId(6): [] +after transform: SymbolId(3): [ReferenceId(4), ReferenceId(19)] +rebuilt : SymbolId(8): [ReferenceId(22)] Reference symbol mismatch for "decorator": after transform: SymbolId(0) "decorator" rebuilt : @@ -31726,32 +32246,32 @@ semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2)] rebuilt : ScopeId(0): [ScopeId(1)] Unresolved references mismatch: -after transform: ["TypedPropertyDescriptor", "dec"] -rebuilt : ["dec"] +after transform: ["TypedPropertyDescriptor", "dec", "require"] +rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/decorators/class/method/decoratorOnClassMethod4.ts semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2)] rebuilt : ScopeId(0): [ScopeId(1)] Unresolved references mismatch: -after transform: ["TypedPropertyDescriptor", "dec"] -rebuilt : ["dec"] +after transform: ["TypedPropertyDescriptor", "dec", "require"] +rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/decorators/class/method/decoratorOnClassMethod5.ts semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(3)] rebuilt : ScopeId(0): [ScopeId(1)] Unresolved references mismatch: -after transform: ["TypedPropertyDescriptor", "dec"] -rebuilt : ["dec"] +after transform: ["TypedPropertyDescriptor", "dec", "require"] +rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/decorators/class/method/decoratorOnClassMethod7.ts semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2)] rebuilt : ScopeId(0): [ScopeId(1)] Unresolved references mismatch: -after transform: ["TypedPropertyDescriptor", "dec"] -rebuilt : ["dec"] +after transform: ["TypedPropertyDescriptor", "dec", "require"] +rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/decorators/class/method/decoratorOnClassMethodOverload2.ts semantic error: Scope children mismatch: @@ -31761,27 +32281,27 @@ Scope children mismatch: after transform: ScopeId(2): [ScopeId(3), ScopeId(4)] rebuilt : ScopeId(1): [ScopeId(2)] Unresolved references mismatch: -after transform: ["TypedPropertyDescriptor", "dec"] -rebuilt : ["dec"] +after transform: ["TypedPropertyDescriptor", "dec", "require"] +rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/decorators/class/method/parameter/decoratorOnClassMethodParameter1.ts semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2)] rebuilt : ScopeId(0): [ScopeId(1)] Unresolved references mismatch: -after transform: ["Object", "dec"] -rebuilt : ["dec"] +after transform: ["Object", "dec", "require"] +rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/decorators/class/method/parameter/decoratorOnClassMethodParameter2.ts semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2)] rebuilt : ScopeId(0): [ScopeId(1)] Symbol reference IDs mismatch for "C": -after transform: SymbolId(3): [ReferenceId(1)] -rebuilt : SymbolId(0): [] +after transform: SymbolId(3): [ReferenceId(1), ReferenceId(4)] +rebuilt : SymbolId(2): [ReferenceId(5)] Unresolved references mismatch: -after transform: ["Object", "dec"] -rebuilt : ["dec"] +after transform: ["Object", "dec", "require"] +rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/decorators/class/property/decoratorOnClassProperty1.ts semantic error: Scope children mismatch: @@ -31812,8 +32332,8 @@ semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2)] rebuilt : ScopeId(0): [ScopeId(1)] Unresolved references mismatch: -after transform: ["PropertyDescriptor", "dec"] -rebuilt : ["dec"] +after transform: ["PropertyDescriptor", "dec", "require"] +rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/decorators/class/property/decoratorOnClassProperty2.ts semantic error: Scope children mismatch: @@ -31836,8 +32356,14 @@ rebuilt : ["Symbol"] tasks/coverage/typescript/tests/cases/conformance/decorators/decoratorMetadata.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["MyComponent", "Service", "decorator"] -rebuilt : ScopeId(0): ["MyComponent"] +after transform: ScopeId(0): ["MyComponent", "Service", "_decorate", "decorator"] +rebuilt : ScopeId(0): ["MyComponent", "_decorate"] +Symbol span mismatch for "MyComponent": +after transform: SymbolId(2): Span { start: 80, end: 91 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "MyComponent": +after transform: SymbolId(5): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 80, end: 91 } Reference symbol mismatch for "decorator": after transform: SymbolId(1) "decorator" rebuilt : @@ -31850,8 +32376,14 @@ rebuilt : ["decorator"] tasks/coverage/typescript/tests/cases/conformance/decorators/decoratorMetadataWithTypeOnlyImport.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["MyComponent", "Service", "decorator"] -rebuilt : ScopeId(0): ["MyComponent"] +after transform: ScopeId(0): ["MyComponent", "Service", "_decorate", "decorator"] +rebuilt : ScopeId(0): ["MyComponent", "_decorate"] +Symbol span mismatch for "MyComponent": +after transform: SymbolId(2): Span { start: 89, end: 100 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "MyComponent": +after transform: SymbolId(5): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 89, end: 100 } Reference symbol mismatch for "decorator": after transform: SymbolId(1) "decorator" rebuilt : @@ -31872,8 +32404,80 @@ rebuilt : SymbolId(0): Span { start: 0, end: 0 } tasks/coverage/typescript/tests/cases/conformance/decorators/legacyDecorators-contextualTypes.ts semantic error: Scope children mismatch: +after transform: ScopeId(0): [ScopeId(1), ScopeId(2)] +rebuilt : ScopeId(0): [ScopeId(1), ScopeId(11), ScopeId(12), ScopeId(13), ScopeId(14), ScopeId(15), ScopeId(16), ScopeId(17), ScopeId(18), ScopeId(19), ScopeId(20)] +Scope children mismatch: after transform: ScopeId(2): [ScopeId(3), ScopeId(5), ScopeId(6), ScopeId(7), ScopeId(8), ScopeId(9), ScopeId(10), ScopeId(11), ScopeId(12), ScopeId(13), ScopeId(14), ScopeId(15), ScopeId(16), ScopeId(17), ScopeId(18), ScopeId(19), ScopeId(21)] -rebuilt : ScopeId(2): [ScopeId(3), ScopeId(5), ScopeId(6), ScopeId(7), ScopeId(8), ScopeId(9), ScopeId(10), ScopeId(11), ScopeId(12), ScopeId(13), ScopeId(14), ScopeId(15), ScopeId(16), ScopeId(17), ScopeId(19)] +rebuilt : ScopeId(1): [ScopeId(2), ScopeId(3), ScopeId(4), ScopeId(5), ScopeId(6), ScopeId(7), ScopeId(8), ScopeId(9), ScopeId(10)] +Scope children mismatch: +after transform: ScopeId(3): [ScopeId(4)] +rebuilt : ScopeId(2): [] +Scope children mismatch: +after transform: ScopeId(19): [ScopeId(20)] +rebuilt : ScopeId(9): [] +Scope children mismatch: +after transform: ScopeId(21): [ScopeId(22)] +rebuilt : ScopeId(10): [] +Scope flags mismatch: +after transform: ScopeId(5): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(11): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(5): Some(ScopeId(2)) +rebuilt : ScopeId(11): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(7): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(12): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(7): Some(ScopeId(2)) +rebuilt : ScopeId(12): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(10): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(13): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(10): Some(ScopeId(2)) +rebuilt : ScopeId(13): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(12): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(14): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(12): Some(ScopeId(2)) +rebuilt : ScopeId(14): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(14): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(15): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(14): Some(ScopeId(2)) +rebuilt : ScopeId(15): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(17): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(16): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(17): Some(ScopeId(2)) +rebuilt : ScopeId(16): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(20): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(17): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(20): Some(ScopeId(19)) +rebuilt : ScopeId(17): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(22): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(18): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(22): Some(ScopeId(21)) +rebuilt : ScopeId(18): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(4): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(20): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(4): Some(ScopeId(3)) +rebuilt : ScopeId(20): Some(ScopeId(0)) +Symbol span mismatch for "C": +after transform: SymbolId(0): Span { start: 20, end: 21 } +rebuilt : SymbolId(3): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(39): Span { start: 0, end: 0 } +rebuilt : SymbolId(4): Span { start: 20, end: 21 } tasks/coverage/typescript/tests/cases/conformance/dynamicImport/importCallExpression2ES2020.ts semantic error: Unresolved references mismatch: @@ -33444,36 +34048,84 @@ tasks/coverage/typescript/tests/cases/conformance/es6/decorators/class/decorator semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2)] rebuilt : ScopeId(0): [ScopeId(1)] +Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 51, end: 52 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(4): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 51, end: 52 } tasks/coverage/typescript/tests/cases/conformance/es6/decorators/class/decoratorOnClass2.es6.ts semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2)] rebuilt : ScopeId(0): [ScopeId(1)] +Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 58, end: 59 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(4): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 58, end: 59 } tasks/coverage/typescript/tests/cases/conformance/es6/decorators/class/decoratorOnClass3.es6.ts semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2)] rebuilt : ScopeId(0): [ScopeId(1)] +Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 66, end: 67 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(4): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 66, end: 67 } tasks/coverage/typescript/tests/cases/conformance/es6/decorators/class/decoratorOnClass4.es6.ts semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2)] rebuilt : ScopeId(0): [ScopeId(1)] +Symbol flags mismatch for "_default": +after transform: SymbolId(2): SymbolFlags(Class) +rebuilt : SymbolId(1): SymbolFlags(BlockScopedVariable) tasks/coverage/typescript/tests/cases/conformance/es6/decorators/class/decoratorOnClass5.es6.ts semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2)] rebuilt : ScopeId(0): [ScopeId(1)] +Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 51, end: 52 } +rebuilt : SymbolId(3): Span { start: 0, end: 0 } +Symbol reference IDs mismatch for "C": +after transform: SymbolId(2): [ReferenceId(3), ReferenceId(4), ReferenceId(5), ReferenceId(8), ReferenceId(10)] +rebuilt : SymbolId(3): [ReferenceId(5), ReferenceId(6), ReferenceId(10), ReferenceId(11)] +Symbol span mismatch for "C": +after transform: SymbolId(5): Span { start: 0, end: 0 } +rebuilt : SymbolId(4): Span { start: 51, end: 52 } tasks/coverage/typescript/tests/cases/conformance/es6/decorators/class/decoratorOnClass6.es6.ts semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2)] rebuilt : ScopeId(0): [ScopeId(1)] +Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 58, end: 59 } +rebuilt : SymbolId(3): Span { start: 0, end: 0 } +Symbol reference IDs mismatch for "C": +after transform: SymbolId(2): [ReferenceId(3), ReferenceId(4), ReferenceId(5), ReferenceId(8), ReferenceId(10), ReferenceId(13)] +rebuilt : SymbolId(3): [ReferenceId(3), ReferenceId(4), ReferenceId(8), ReferenceId(9), ReferenceId(10)] +Symbol span mismatch for "C": +after transform: SymbolId(5): Span { start: 0, end: 0 } +rebuilt : SymbolId(4): Span { start: 58, end: 59 } tasks/coverage/typescript/tests/cases/conformance/es6/decorators/class/decoratorOnClass7.es6.ts semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2)] rebuilt : ScopeId(0): [ScopeId(1)] +Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 66, end: 67 } +rebuilt : SymbolId(3): Span { start: 0, end: 0 } +Symbol reference IDs mismatch for "C": +after transform: SymbolId(2): [ReferenceId(3), ReferenceId(4), ReferenceId(5), ReferenceId(8), ReferenceId(10), ReferenceId(13)] +rebuilt : SymbolId(3): [ReferenceId(3), ReferenceId(4), ReferenceId(8), ReferenceId(9), ReferenceId(10)] +Symbol span mismatch for "C": +after transform: SymbolId(5): Span { start: 0, end: 0 } +rebuilt : SymbolId(4): Span { start: 66, end: 67 } tasks/coverage/typescript/tests/cases/conformance/es6/decorators/class/decoratorOnClass8.es6.ts semantic error: Scope children mismatch: @@ -33633,17 +34285,35 @@ after transform: [] rebuilt : ["arr"] tasks/coverage/typescript/tests/cases/conformance/es6/moduleExportsAmd/decoratedDefaultExportsGetExportedAmd.ts -semantic error: Unresolved references mismatch: +semantic error: Symbol span mismatch for "Foo": +after transform: SymbolId(1): Span { start: 64, end: 67 } +rebuilt : SymbolId(2): Span { start: 0, end: 0 } +Symbol span mismatch for "Foo": +after transform: SymbolId(2): Span { start: 0, end: 0 } +rebuilt : SymbolId(3): Span { start: 64, end: 67 } +Unresolved references mismatch: after transform: ["ClassDecorator"] rebuilt : [] tasks/coverage/typescript/tests/cases/conformance/es6/moduleExportsCommonjs/decoratedDefaultExportsGetExportedCommonjs.ts -semantic error: Unresolved references mismatch: +semantic error: Symbol span mismatch for "Foo": +after transform: SymbolId(1): Span { start: 64, end: 67 } +rebuilt : SymbolId(2): Span { start: 0, end: 0 } +Symbol span mismatch for "Foo": +after transform: SymbolId(2): Span { start: 0, end: 0 } +rebuilt : SymbolId(3): Span { start: 64, end: 67 } +Unresolved references mismatch: after transform: ["ClassDecorator"] rebuilt : [] tasks/coverage/typescript/tests/cases/conformance/es6/moduleExportsSystem/decoratedDefaultExportsGetExportedSystem.ts -semantic error: Unresolved references mismatch: +semantic error: Symbol span mismatch for "Foo": +after transform: SymbolId(1): Span { start: 64, end: 67 } +rebuilt : SymbolId(2): Span { start: 0, end: 0 } +Symbol span mismatch for "Foo": +after transform: SymbolId(2): Span { start: 0, end: 0 } +rebuilt : SymbolId(3): Span { start: 64, end: 67 } +Unresolved references mismatch: after transform: ["ClassDecorator"] rebuilt : [] @@ -33651,7 +34321,13 @@ tasks/coverage/typescript/tests/cases/conformance/es6/moduleExportsSystem/topLev semantic error: 'with' statements are not allowed tasks/coverage/typescript/tests/cases/conformance/es6/moduleExportsUmd/decoratedDefaultExportsGetExportedUmd.ts -semantic error: Unresolved references mismatch: +semantic error: Symbol span mismatch for "Foo": +after transform: SymbolId(1): Span { start: 64, end: 67 } +rebuilt : SymbolId(2): Span { start: 0, end: 0 } +Symbol span mismatch for "Foo": +after transform: SymbolId(2): Span { start: 0, end: 0 } +rebuilt : SymbolId(3): Span { start: 64, end: 67 } +Unresolved references mismatch: after transform: ["ClassDecorator"] rebuilt : [] @@ -33962,6 +34638,14 @@ Unresolved references mismatch: after transform: ["Iterable", "Symbol", "foo", "undefined"] rebuilt : ["Symbol", "foo", "undefined"] +tasks/coverage/typescript/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck61.ts +semantic error: Symbol span mismatch for "C": +after transform: SymbolId(1): Span { start: 42, end: 43 } +rebuilt : SymbolId(2): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 0, end: 0 } +rebuilt : SymbolId(3): Span { start: 42, end: 43 } + tasks/coverage/typescript/tests/cases/conformance/es7/exponentiationOperator/exponentiationOperatorWithEnum.ts semantic error: Bindings mismatch: after transform: ScopeId(1): ["E", "a", "b"] @@ -34004,8 +34688,14 @@ rebuilt : SymbolId(2): [ReferenceId(11)] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/accessors/esDecorators-classDeclaration-accessors-nonStatic.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "dec", "method3"] -rebuilt : ScopeId(0): ["C", "method3"] +after transform: ScopeId(0): ["C", "_decorate", "_method", "_method2", "dec", "method3"] +rebuilt : ScopeId(0): ["C", "_decorate", "_method", "_method2", "method3"] +Reference flags mismatch for "_method": +after transform: ReferenceId(17): ReferenceFlags(Read | Write) +rebuilt : ReferenceId(1): ReferenceFlags(Write) +Reference flags mismatch for "_method2": +after transform: ReferenceId(21): ReferenceFlags(Read | Write) +rebuilt : ReferenceId(3): ReferenceFlags(Write) Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -34025,8 +34715,8 @@ Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : Unresolved references mismatch: -after transform: [] -rebuilt : ["dec"] +after transform: ["require"] +rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/accessors/esDecorators-classDeclaration-accessors-nonStaticPrivate.ts semantic error: Bindings mismatch: @@ -34035,8 +34725,14 @@ rebuilt : ScopeId(0): ["C", "_C_brand", "_classPrivateMethodInitSpec", "_ tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/accessors/esDecorators-classDeclaration-accessors-static.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "dec", "method3"] -rebuilt : ScopeId(0): ["C", "method3"] +after transform: ScopeId(0): ["C", "_decorate", "_method", "_method2", "dec", "method3"] +rebuilt : ScopeId(0): ["C", "_decorate", "_method", "_method2", "method3"] +Reference flags mismatch for "_method": +after transform: ReferenceId(17): ReferenceFlags(Read | Write) +rebuilt : ReferenceId(1): ReferenceFlags(Write) +Reference flags mismatch for "_method2": +after transform: ReferenceId(21): ReferenceFlags(Read | Write) +rebuilt : ReferenceId(3): ReferenceFlags(Write) Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -34056,13 +34752,19 @@ Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : Unresolved references mismatch: -after transform: [] -rebuilt : ["dec"] +after transform: ["require"] +rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/accessors/esDecorators-classDeclaration-accessors-staticPrivate.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "D", "_D", "_assertClassBrand", "_get_method", "_get_method2", "_set_method", "_set_method2", "_toSetter", "dec"] -rebuilt : ScopeId(0): ["C", "D", "_D", "_assertClassBrand", "_get_method", "_get_method2", "_set_method", "_set_method2", "_toSetter"] +after transform: ScopeId(0): ["C", "D", "_D", "_assertClassBrand", "_decorate", "_get_method", "_get_method2", "_set_method", "_set_method2", "_toSetter", "dec"] +rebuilt : ScopeId(0): ["C", "D", "_D", "_assertClassBrand", "_decorate", "_get_method", "_get_method2", "_set_method", "_set_method2", "_toSetter"] +Symbol span mismatch for "D": +after transform: SymbolId(3): Span { start: 137, end: 138 } +rebuilt : SymbolId(8): Span { start: 0, end: 0 } +Symbol span mismatch for "D": +after transform: SymbolId(12): Span { start: 0, end: 0 } +rebuilt : SymbolId(9): Span { start: 137, end: 138 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -34072,11 +34774,17 @@ rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/classSuper/esDecorators-classDeclaration-classSuper.1.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "_C", "_superPropGet", "dec", "method"] -rebuilt : ScopeId(0): ["C", "_C", "_superPropGet", "method"] +after transform: ScopeId(0): ["C", "_C", "_decorate", "_superPropGet", "dec", "method"] +rebuilt : ScopeId(0): ["C", "_C", "_decorate", "_superPropGet", "method"] Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(3), ScopeId(4)] rebuilt : ScopeId(0): [ScopeId(1), ScopeId(2)] +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 125, end: 126 } +rebuilt : SymbolId(4): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(6): Span { start: 0, end: 0 } +rebuilt : SymbolId(5): Span { start: 125, end: 126 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -34086,8 +34794,26 @@ rebuilt : ["Base", "dec", "require"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/classSuper/esDecorators-classDeclaration-classSuper.2.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C1", "C2", "C3", "_C", "_C2", "_C3", "_superPropGet", "dec"] -rebuilt : ScopeId(0): ["C1", "C2", "C3", "_C", "_C2", "_C3", "_superPropGet"] +after transform: ScopeId(0): ["C1", "C2", "C3", "_C", "_C2", "_C3", "_decorate", "_superPropGet", "dec"] +rebuilt : ScopeId(0): ["C1", "C2", "C3", "_C", "_C2", "_C3", "_decorate", "_superPropGet"] +Symbol span mismatch for "C1": +after transform: SymbolId(1): Span { start: 97, end: 99 } +rebuilt : SymbolId(5): Span { start: 0, end: 0 } +Symbol span mismatch for "C1": +after transform: SymbolId(6): Span { start: 0, end: 0 } +rebuilt : SymbolId(6): Span { start: 97, end: 99 } +Symbol span mismatch for "C2": +after transform: SymbolId(2): Span { start: 239, end: 241 } +rebuilt : SymbolId(7): Span { start: 0, end: 0 } +Symbol span mismatch for "C2": +after transform: SymbolId(9): Span { start: 0, end: 0 } +rebuilt : SymbolId(8): Span { start: 239, end: 241 } +Symbol span mismatch for "C3": +after transform: SymbolId(3): Span { start: 389, end: 391 } +rebuilt : SymbolId(9): Span { start: 0, end: 0 } +Symbol span mismatch for "C3": +after transform: SymbolId(11): Span { start: 0, end: 0 } +rebuilt : SymbolId(10): Span { start: 389, end: 391 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -34103,11 +34829,17 @@ rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/classSuper/esDecorators-classDeclaration-classSuper.3.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "_C", "_super$x", "_super$x10", "_super$x11", "_super$x12", "_super$x13", "_super$x14", "_super$x15", "_super$x16", "_super$x17", "_super$x18", "_super$x2", "_super$x3", "_super$x4", "_super$x5", "_super$x6", "_super$x7", "_super$x8", "_super$x9", "_superPropGet", "_superPropSet", "dec", "x"] -rebuilt : ScopeId(0): ["C", "_C", "_super$x", "_super$x10", "_super$x11", "_super$x12", "_super$x13", "_super$x14", "_super$x15", "_super$x16", "_super$x17", "_super$x18", "_super$x2", "_super$x3", "_super$x4", "_super$x5", "_super$x6", "_super$x7", "_super$x8", "_super$x9", "_superPropGet", "_superPropSet", "x"] +after transform: ScopeId(0): ["C", "_C", "_decorate", "_super$x", "_super$x10", "_super$x11", "_super$x12", "_super$x13", "_super$x14", "_super$x15", "_super$x16", "_super$x17", "_super$x18", "_super$x2", "_super$x3", "_super$x4", "_super$x5", "_super$x6", "_super$x7", "_super$x8", "_super$x9", "_superPropGet", "_superPropSet", "dec", "x"] +rebuilt : ScopeId(0): ["C", "_C", "_decorate", "_super$x", "_super$x10", "_super$x11", "_super$x12", "_super$x13", "_super$x14", "_super$x15", "_super$x16", "_super$x17", "_super$x18", "_super$x2", "_super$x3", "_super$x4", "_super$x5", "_super$x6", "_super$x7", "_super$x8", "_super$x9", "_superPropGet", "_superPropSet", "x"] Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2), ScopeId(3)] rebuilt : ScopeId(0): [ScopeId(1), ScopeId(2)] +Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 96, end: 97 } +rebuilt : SymbolId(23): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(24): Span { start: 0, end: 0 } +rebuilt : SymbolId(24): Span { start: 96, end: 97 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -34117,11 +34849,17 @@ rebuilt : ["Base", "dec", "require"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/classSuper/esDecorators-classDeclaration-classSuper.4.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "_C", "_defineProperty", "_superPropGet", "dec", "method"] -rebuilt : ScopeId(0): ["C", "_C", "_defineProperty", "_superPropGet", "method"] +after transform: ScopeId(0): ["C", "_C", "_decorate", "_defineProperty", "_superPropGet", "dec", "method"] +rebuilt : ScopeId(0): ["C", "_C", "_decorate", "_defineProperty", "_superPropGet", "method"] Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(3)] rebuilt : ScopeId(0): [ScopeId(1)] +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 127, end: 128 } +rebuilt : SymbolId(5): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(7): Span { start: 0, end: 0 } +rebuilt : SymbolId(6): Span { start: 127, end: 128 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -34131,11 +34869,29 @@ rebuilt : ["Base", "dec", "require"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/classSuper/esDecorators-classDeclaration-classSuper.5.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C1", "C2", "C3", "_C", "_C2", "_C3", "_defineProperty", "_super$x", "_super$x10", "_super$x11", "_super$x12", "_super$x13", "_super$x14", "_super$x15", "_super$x16", "_super$x17", "_super$x18", "_super$x2", "_super$x3", "_super$x4", "_super$x5", "_super$x6", "_super$x7", "_super$x8", "_super$x9", "_superPropGet", "_superPropSet", "dec", "x"] -rebuilt : ScopeId(0): ["C1", "C2", "C3", "_C", "_C2", "_C3", "_defineProperty", "_super$x", "_super$x10", "_super$x11", "_super$x12", "_super$x13", "_super$x14", "_super$x15", "_super$x16", "_super$x17", "_super$x18", "_super$x2", "_super$x3", "_super$x4", "_super$x5", "_super$x6", "_super$x7", "_super$x8", "_super$x9", "_superPropGet", "_superPropSet", "x"] +after transform: ScopeId(0): ["C1", "C2", "C3", "_C", "_C2", "_C3", "_decorate", "_defineProperty", "_super$x", "_super$x10", "_super$x11", "_super$x12", "_super$x13", "_super$x14", "_super$x15", "_super$x16", "_super$x17", "_super$x18", "_super$x2", "_super$x3", "_super$x4", "_super$x5", "_super$x6", "_super$x7", "_super$x8", "_super$x9", "_superPropGet", "_superPropSet", "dec", "x"] +rebuilt : ScopeId(0): ["C1", "C2", "C3", "_C", "_C2", "_C3", "_decorate", "_defineProperty", "_super$x", "_super$x10", "_super$x11", "_super$x12", "_super$x13", "_super$x14", "_super$x15", "_super$x16", "_super$x17", "_super$x18", "_super$x2", "_super$x3", "_super$x4", "_super$x5", "_super$x6", "_super$x7", "_super$x8", "_super$x9", "_superPropGet", "_superPropSet", "x"] Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2), ScopeId(3), ScopeId(4)] rebuilt : ScopeId(0): [ScopeId(1), ScopeId(2), ScopeId(3)] +Symbol span mismatch for "C1": +after transform: SymbolId(2): Span { start: 96, end: 98 } +rebuilt : SymbolId(26): Span { start: 0, end: 0 } +Symbol span mismatch for "C1": +after transform: SymbolId(15): Span { start: 0, end: 0 } +rebuilt : SymbolId(27): Span { start: 96, end: 98 } +Symbol span mismatch for "C2": +after transform: SymbolId(3): Span { start: 389, end: 391 } +rebuilt : SymbolId(28): Span { start: 0, end: 0 } +Symbol span mismatch for "C2": +after transform: SymbolId(24): Span { start: 0, end: 0 } +rebuilt : SymbolId(29): Span { start: 389, end: 391 } +Symbol span mismatch for "C3": +after transform: SymbolId(4): Span { start: 709, end: 711 } +rebuilt : SymbolId(30): Span { start: 0, end: 0 } +Symbol span mismatch for "C3": +after transform: SymbolId(32): Span { start: 0, end: 0 } +rebuilt : SymbolId(31): Span { start: 709, end: 711 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -34151,11 +34907,17 @@ rebuilt : ["Base", "dec", "require"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/classSuper/esDecorators-classDeclaration-classSuper.6.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "_defineProperty", "dec"] -rebuilt : ScopeId(0): ["C", "_defineProperty"] +after transform: ScopeId(0): ["C", "_decorate", "_defineProperty", "dec"] +rebuilt : ScopeId(0): ["C", "_decorate", "_defineProperty"] Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(4)] rebuilt : ScopeId(0): [ScopeId(1)] +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 195, end: 196 } +rebuilt : SymbolId(2): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(7): Span { start: 0, end: 0 } +rebuilt : SymbolId(3): Span { start: 195, end: 196 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -34165,8 +34927,14 @@ rebuilt : ["Base", "dec", "require"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/classThisReference/esDecorators-classDeclaration-classThisReference.es5.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "_C", "_defineProperty", "dec"] -rebuilt : ScopeId(0): ["C", "_C", "_defineProperty"] +after transform: ScopeId(0): ["C", "_C", "_decorate", "_defineProperty", "dec"] +rebuilt : ScopeId(0): ["C", "_C", "_decorate", "_defineProperty"] +Symbol span mismatch for "C": +after transform: SymbolId(1): Span { start: 34, end: 35 } +rebuilt : SymbolId(3): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(4): Span { start: 0, end: 0 } +rebuilt : SymbolId(4): Span { start: 34, end: 35 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -34176,8 +34944,14 @@ rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/classThisReference/esDecorators-classDeclaration-classThisReference.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "_C", "_defineProperty", "dec"] -rebuilt : ScopeId(0): ["C", "_C", "_defineProperty"] +after transform: ScopeId(0): ["C", "_C", "_decorate", "_defineProperty", "dec"] +rebuilt : ScopeId(0): ["C", "_C", "_decorate", "_defineProperty"] +Symbol span mismatch for "C": +after transform: SymbolId(1): Span { start: 34, end: 35 } +rebuilt : SymbolId(3): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(4): Span { start: 0, end: 0 } +rebuilt : SymbolId(4): Span { start: 34, end: 35 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -34187,17 +34961,23 @@ rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/esDecorators-classDeclaration-commentPreservation.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "_defineProperty", "_get_x", "_method", "_set_x", "_y", "dec"] -rebuilt : ScopeId(0): ["C", "_defineProperty", "_get_x", "_method", "_set_x", "_y"] +after transform: ScopeId(0): ["C", "_decorate", "_defineProperty", "_get_x", "_method", "_set_x", "_y", "dec"] +rebuilt : ScopeId(0): ["C", "_decorate", "_defineProperty", "_get_x", "_method", "_set_x", "_y"] +Symbol span mismatch for "C": +after transform: SymbolId(1): Span { start: 57, end: 58 } +rebuilt : SymbolId(2): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(9): Span { start: 0, end: 0 } +rebuilt : SymbolId(3): Span { start: 57, end: 58 } Symbol flags mismatch for "_method": after transform: SymbolId(4): SymbolFlags(FunctionScopedVariable) -rebuilt : SymbolId(3): SymbolFlags(BlockScopedVariable | Function) +rebuilt : SymbolId(5): SymbolFlags(BlockScopedVariable | Function) Symbol flags mismatch for "_get_x": after transform: SymbolId(5): SymbolFlags(FunctionScopedVariable) -rebuilt : SymbolId(4): SymbolFlags(BlockScopedVariable | Function) +rebuilt : SymbolId(6): SymbolFlags(BlockScopedVariable | Function) Symbol flags mismatch for "_set_x": after transform: SymbolId(6): SymbolFlags(FunctionScopedVariable) -rebuilt : SymbolId(5): SymbolFlags(BlockScopedVariable | Function) +rebuilt : SymbolId(7): SymbolFlags(BlockScopedVariable | Function) Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -34240,14 +35020,17 @@ rebuilt : ["dec"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/esDecorators-classDeclaration-commonjs-classNamespaceMerge.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["Example", "deco"] -rebuilt : ScopeId(0): ["Example"] -Symbol flags mismatch for "Example": -after transform: SymbolId(1): SymbolFlags(Class | NameSpaceModule | ValueModule) -rebuilt : SymbolId(0): SymbolFlags(Class) +after transform: ScopeId(0): ["Example", "_decorate", "deco"] +rebuilt : ScopeId(0): ["Example", "_decorate"] +Symbol span mismatch for "Example": +after transform: SymbolId(1): Span { start: 43, end: 50 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } Symbol redeclarations mismatch for "Example": after transform: SymbolId(1): [Span { start: 93, end: 100 }] -rebuilt : SymbolId(0): [] +rebuilt : SymbolId(1): [] +Symbol span mismatch for "Example": +after transform: SymbolId(4): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 43, end: 50 } Reference symbol mismatch for "deco": after transform: SymbolId(0) "deco" rebuilt : @@ -34257,8 +35040,14 @@ rebuilt : ["deco"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/esDecorators-classDeclaration-commonjs.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["Example", "deco"] -rebuilt : ScopeId(0): ["Example"] +after transform: ScopeId(0): ["Example", "_decorate", "deco"] +rebuilt : ScopeId(0): ["Example", "_decorate"] +Symbol span mismatch for "Example": +after transform: SymbolId(1): Span { start: 43, end: 50 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "Example": +after transform: SymbolId(2): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 43, end: 50 } Reference symbol mismatch for "deco": after transform: SymbolId(0) "deco" rebuilt : @@ -34268,8 +35057,14 @@ rebuilt : ["deco"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/esDecorators-classDeclaration-multipleDecorators.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "dec1", "dec2"] -rebuilt : ScopeId(0): ["C"] +after transform: ScopeId(0): ["C", "_decorate", "dec1", "dec2"] +rebuilt : ScopeId(0): ["C", "_decorate"] +Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 53, end: 54 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 53, end: 54 } Reference symbol mismatch for "dec1": after transform: SymbolId(0) "dec1" rebuilt : @@ -34277,25 +35072,43 @@ Reference symbol mismatch for "dec2": after transform: SymbolId(1) "dec2" rebuilt : Unresolved references mismatch: -after transform: [] -rebuilt : ["dec1", "dec2"] +after transform: ["require"] +rebuilt : ["dec1", "dec2", "require"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/esDecorators-classDeclaration-outerThisReference.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["A", "B", "C", "_a", "_classPrivateFieldGet", "_classPrivateFieldInitSpec", "_defineProperty", "_f", "_f2", "dec", "f"] -rebuilt : ScopeId(0): ["A", "B", "C", "_a", "_classPrivateFieldGet", "_classPrivateFieldInitSpec", "_defineProperty", "_f", "_f2"] +after transform: ScopeId(0): ["A", "B", "C", "_a", "_classPrivateFieldGet", "_classPrivateFieldInitSpec", "_decorate", "_defineProperty", "_f", "_f2", "dec", "f"] +rebuilt : ScopeId(0): ["A", "B", "C", "_a", "_classPrivateFieldGet", "_classPrivateFieldInitSpec", "_decorate", "_defineProperty", "_f", "_f2"] Scope children mismatch: after transform: ScopeId(3): [ScopeId(4), ScopeId(7)] rebuilt : ScopeId(5): [ScopeId(6)] Symbol reference IDs mismatch for "_classPrivateFieldGet": -after transform: SymbolId(11): [ReferenceId(22)] -rebuilt : SymbolId(2): [] +after transform: SymbolId(14): [ReferenceId(28)] +rebuilt : SymbolId(3): [] +Symbol span mismatch for "A": +after transform: SymbolId(2): Span { start: 119, end: 120 } +rebuilt : SymbolId(6): Span { start: 0, end: 0 } +Symbol span mismatch for "A": +after transform: SymbolId(7): Span { start: 0, end: 0 } +rebuilt : SymbolId(7): Span { start: 119, end: 120 } +Symbol span mismatch for "B": +after transform: SymbolId(3): Span { start: 300, end: 301 } +rebuilt : SymbolId(8): Span { start: 0, end: 0 } +Symbol span mismatch for "B": +after transform: SymbolId(11): Span { start: 0, end: 0 } +rebuilt : SymbolId(9): Span { start: 300, end: 301 } Symbol reference IDs mismatch for "_a": -after transform: SymbolId(9): [ReferenceId(18), ReferenceId(21)] -rebuilt : SymbolId(7): [ReferenceId(18)] +after transform: SymbolId(12): [ReferenceId(24), ReferenceId(27)] +rebuilt : SymbolId(10): [ReferenceId(24)] +Symbol span mismatch for "C": +after transform: SymbolId(4): Span { start: 551, end: 552 } +rebuilt : SymbolId(11): Span { start: 0, end: 0 } Symbol reference IDs mismatch for "C": -after transform: SymbolId(4): [ReferenceId(8)] -rebuilt : SymbolId(8): [] +after transform: SymbolId(4): [ReferenceId(8), ReferenceId(30), ReferenceId(32)] +rebuilt : SymbolId(11): [ReferenceId(26), ReferenceId(29)] +Symbol span mismatch for "C": +after transform: SymbolId(15): Span { start: 0, end: 0 } +rebuilt : SymbolId(12): Span { start: 551, end: 552 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -34317,19 +35130,25 @@ rebuilt : ["WeakMap", "dec", "f", "require"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/esDecorators-classDeclaration-parameterProperties.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "bound"] -rebuilt : ScopeId(0): ["C"] +after transform: ScopeId(0): ["C", "_decorate", "bound"] +rebuilt : ScopeId(0): ["C", "_decorate"] Reference symbol mismatch for "bound": after transform: SymbolId(0) "bound" rebuilt : Unresolved references mismatch: -after transform: [] -rebuilt : ["bound"] +after transform: ["require"] +rebuilt : ["bound", "require"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/esDecorators-classDeclaration-setFunctionName.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "dec"] -rebuilt : ScopeId(0): ["C"] +after transform: ScopeId(0): ["C", "_decorate", "dec"] +rebuilt : ScopeId(0): ["C", "_decorate"] +Symbol span mismatch for "C": +after transform: SymbolId(1): Span { start: 34, end: 35 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 34, end: 35 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -34339,19 +35158,31 @@ rebuilt : ["dec"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/esDecorators-classDeclaration-simpleTransformation.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "dec"] -rebuilt : ScopeId(0): ["C"] +after transform: ScopeId(0): ["C", "_decorate", "dec"] +rebuilt : ScopeId(0): ["C", "_decorate"] +Symbol span mismatch for "C": +after transform: SymbolId(1): Span { start: 34, end: 35 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 34, end: 35 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : Unresolved references mismatch: -after transform: [] -rebuilt : ["dec"] +after transform: ["require"] +rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/esDecorators-classDeclaration-sourceMap.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "_defineProperty", "_get_x", "_method", "_set_x", "_y", "dec"] -rebuilt : ScopeId(0): ["C", "_defineProperty", "_get_x", "_method", "_set_x", "_y"] +after transform: ScopeId(0): ["C", "_decorate", "_defineProperty", "_get_x", "_method", "_set_x", "_y", "dec"] +rebuilt : ScopeId(0): ["C", "_decorate", "_defineProperty", "_get_x", "_method", "_set_x", "_y"] +Symbol span mismatch for "C": +after transform: SymbolId(1): Span { start: 39, end: 40 } +rebuilt : SymbolId(2): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(9): Span { start: 0, end: 0 } +rebuilt : SymbolId(3): Span { start: 39, end: 40 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -34399,8 +35230,11 @@ rebuilt : ScopeId(0): ["C", "_defineProperty", "field3"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/fields/esDecorators-classDeclaration-fields-nonStaticAccessor.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "dec", "field3"] -rebuilt : ScopeId(0): ["C", "field3"] +after transform: ScopeId(0): ["C", "_decorate", "_field", "dec", "field3"] +rebuilt : ScopeId(0): ["C", "_decorate", "_field", "field3"] +Reference flags mismatch for "_field": +after transform: ReferenceId(9): ReferenceFlags(Read | Write) +rebuilt : ReferenceId(1): ReferenceFlags(Write) Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -34411,8 +35245,8 @@ Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : Unresolved references mismatch: -after transform: [] -rebuilt : ["dec"] +after transform: ["require"] +rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/fields/esDecorators-classDeclaration-fields-nonStaticPrivate.ts semantic error: Bindings mismatch: @@ -34421,14 +35255,14 @@ rebuilt : ScopeId(0): ["C", "_classPrivateFieldInitSpec", "_field"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/fields/esDecorators-classDeclaration-fields-nonStaticPrivateAccessor.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "dec"] -rebuilt : ScopeId(0): ["C"] +after transform: ScopeId(0): ["C", "_decorate", "dec"] +rebuilt : ScopeId(0): ["C", "_decorate"] Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : Unresolved references mismatch: -after transform: [] -rebuilt : ["dec"] +after transform: ["require"] +rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/fields/esDecorators-classDeclaration-fields-static.ts semantic error: Bindings mismatch: @@ -34437,8 +35271,17 @@ rebuilt : ScopeId(0): ["C", "_defineProperty", "field3"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/fields/esDecorators-classDeclaration-fields-staticAccessor.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "D", "_D", "dec", "field3"] -rebuilt : ScopeId(0): ["C", "D", "_D", "field3"] +after transform: ScopeId(0): ["C", "D", "_D", "_decorate", "_field", "dec", "field3"] +rebuilt : ScopeId(0): ["C", "D", "_D", "_decorate", "_field", "field3"] +Symbol span mismatch for "D": +after transform: SymbolId(3): Span { start: 199, end: 200 } +rebuilt : SymbolId(5): Span { start: 0, end: 0 } +Symbol span mismatch for "D": +after transform: SymbolId(7): Span { start: 0, end: 0 } +rebuilt : SymbolId(6): Span { start: 199, end: 200 } +Reference flags mismatch for "_field": +after transform: ReferenceId(10): ReferenceFlags(Read | Write) +rebuilt : ReferenceId(1): ReferenceFlags(Write) Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -34452,13 +35295,19 @@ Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : Unresolved references mismatch: -after transform: [] -rebuilt : ["dec"] +after transform: ["require"] +rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/fields/esDecorators-classDeclaration-fields-staticPrivate.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "D", "_D", "_assertClassBrand", "_field", "_field2", "dec"] -rebuilt : ScopeId(0): ["C", "D", "_D", "_assertClassBrand", "_field", "_field2"] +after transform: ScopeId(0): ["C", "D", "_D", "_assertClassBrand", "_decorate", "_field", "_field2", "dec"] +rebuilt : ScopeId(0): ["C", "D", "_D", "_assertClassBrand", "_decorate", "_field", "_field2"] +Symbol span mismatch for "D": +after transform: SymbolId(2): Span { start: 76, end: 77 } +rebuilt : SymbolId(5): Span { start: 0, end: 0 } +Symbol span mismatch for "D": +after transform: SymbolId(7): Span { start: 0, end: 0 } +rebuilt : SymbolId(6): Span { start: 76, end: 77 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -34468,18 +35317,24 @@ rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/fields/esDecorators-classDeclaration-fields-staticPrivateAccessor.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "D", "_D", "_assertClassBrand", "dec"] -rebuilt : ScopeId(0): ["C", "D", "_D", "_assertClassBrand"] +after transform: ScopeId(0): ["C", "D", "_D", "_assertClassBrand", "_decorate", "dec"] +rebuilt : ScopeId(0): ["C", "D", "_D", "_assertClassBrand", "_decorate"] +Symbol span mismatch for "D": +after transform: SymbolId(2): Span { start: 85, end: 86 } +rebuilt : SymbolId(4): Span { start: 0, end: 0 } +Symbol span mismatch for "D": +after transform: SymbolId(6): Span { start: 0, end: 0 } +rebuilt : SymbolId(5): Span { start: 85, end: 86 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : -Reference symbol mismatch for "dec": +Reference symbol mismatch for "": after transform: SymbolId(0) "dec" rebuilt : Reference symbol mismatch for "": after transform: SymbolId(0) "dec" rebuilt : -Reference symbol mismatch for "": +Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : Unresolved references mismatch: @@ -34488,8 +35343,11 @@ rebuilt : ["", "dec", "require"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/methods/esDecorators-classDeclaration-methods-nonStatic.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "dec", "method3"] -rebuilt : ScopeId(0): ["C", "method3"] +after transform: ScopeId(0): ["C", "_decorate", "_method", "dec", "method3"] +rebuilt : ScopeId(0): ["C", "_decorate", "_method", "method3"] +Reference flags mismatch for "_method": +after transform: ReferenceId(9): ReferenceFlags(Read | Write) +rebuilt : ReferenceId(1): ReferenceFlags(Write) Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -34500,8 +35358,8 @@ Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : Unresolved references mismatch: -after transform: [] -rebuilt : ["dec"] +after transform: ["require"] +rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/methods/esDecorators-classDeclaration-methods-nonStaticPrivate.ts semantic error: Bindings mismatch: @@ -34510,8 +35368,11 @@ rebuilt : ScopeId(0): ["C", "_C_brand", "_classPrivateMethodInitSpec", "_ tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/methods/esDecorators-classDeclaration-methods-static.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "dec", "method3"] -rebuilt : ScopeId(0): ["C", "method3"] +after transform: ScopeId(0): ["C", "_decorate", "_method", "dec", "method3"] +rebuilt : ScopeId(0): ["C", "_decorate", "_method", "method3"] +Reference flags mismatch for "_method": +after transform: ReferenceId(9): ReferenceFlags(Read | Write) +rebuilt : ReferenceId(1): ReferenceFlags(Write) Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -34522,19 +35383,25 @@ Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : Unresolved references mismatch: -after transform: [] -rebuilt : ["dec"] +after transform: ["require"] +rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classDeclaration/methods/esDecorators-classDeclaration-methods-staticPrivate.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "D", "_method", "_method2", "dec"] -rebuilt : ScopeId(0): ["C", "D", "_method", "_method2"] +after transform: ScopeId(0): ["C", "D", "_decorate", "_method", "_method2", "dec"] +rebuilt : ScopeId(0): ["C", "D", "_decorate", "_method", "_method2"] +Symbol span mismatch for "D": +after transform: SymbolId(2): Span { start: 77, end: 78 } +rebuilt : SymbolId(3): Span { start: 0, end: 0 } +Symbol span mismatch for "D": +after transform: SymbolId(5): Span { start: 0, end: 0 } +rebuilt : SymbolId(4): Span { start: 77, end: 78 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : Unresolved references mismatch: -after transform: [] -rebuilt : ["dec"] +after transform: ["require"] +rebuilt : ["dec", "require"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/classExpression/classSuper/esDecorators-classExpression-classSuper.1.ts semantic error: Bindings mismatch: @@ -34939,19 +35806,166 @@ rebuilt : ["console"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/esDecorators-contextualTypes.ts semantic error: Scope children mismatch: +after transform: ScopeId(0): [ScopeId(1), ScopeId(2), ScopeId(6), ScopeId(12), ScopeId(14), ScopeId(22), ScopeId(28), ScopeId(30)] +rebuilt : ScopeId(0): [ScopeId(1), ScopeId(9), ScopeId(10), ScopeId(11), ScopeId(12), ScopeId(13), ScopeId(14), ScopeId(15), ScopeId(16), ScopeId(17), ScopeId(18), ScopeId(19), ScopeId(20), ScopeId(21), ScopeId(22), ScopeId(23), ScopeId(24), ScopeId(25)] +Scope children mismatch: after transform: ScopeId(2): [ScopeId(3), ScopeId(4), ScopeId(5), ScopeId(7), ScopeId(8), ScopeId(9), ScopeId(10), ScopeId(11), ScopeId(13), ScopeId(15), ScopeId(16), ScopeId(17), ScopeId(18), ScopeId(19), ScopeId(20), ScopeId(21), ScopeId(23), ScopeId(24), ScopeId(25), ScopeId(26), ScopeId(27), ScopeId(29), ScopeId(31), ScopeId(32), ScopeId(33), ScopeId(34), ScopeId(35)] -rebuilt : ScopeId(2): [ScopeId(3), ScopeId(4), ScopeId(5), ScopeId(6), ScopeId(7), ScopeId(8), ScopeId(9), ScopeId(10), ScopeId(11), ScopeId(12), ScopeId(13), ScopeId(14), ScopeId(15), ScopeId(16), ScopeId(17), ScopeId(18), ScopeId(19)] +rebuilt : ScopeId(1): [ScopeId(2), ScopeId(3), ScopeId(4), ScopeId(5), ScopeId(6), ScopeId(7), ScopeId(8)] +Scope flags mismatch: +after transform: ScopeId(3): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(15): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(3): Some(ScopeId(2)) +rebuilt : ScopeId(15): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(7): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(16): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(7): Some(ScopeId(2)) +rebuilt : ScopeId(16): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(9): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(17): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(9): Some(ScopeId(2)) +rebuilt : ScopeId(17): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(15): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(18): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(15): Some(ScopeId(2)) +rebuilt : ScopeId(18): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(16): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(19): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(16): Some(ScopeId(2)) +rebuilt : ScopeId(19): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(19): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(20): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(19): Some(ScopeId(2)) +rebuilt : ScopeId(20): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(23): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(21): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(23): Some(ScopeId(2)) +rebuilt : ScopeId(21): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(25): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(22): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(25): Some(ScopeId(2)) +rebuilt : ScopeId(22): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(31): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(23): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(31): Some(ScopeId(2)) +rebuilt : ScopeId(23): Some(ScopeId(0)) +Scope flags mismatch: +after transform: ScopeId(32): ScopeFlags(StrictMode | Function | Arrow) +rebuilt : ScopeId(24): ScopeFlags(Function | Arrow) +Scope parent mismatch: +after transform: ScopeId(32): Some(ScopeId(2)) +rebuilt : ScopeId(24): Some(ScopeId(0)) +Symbol span mismatch for "C": +after transform: SymbolId(0): Span { start: 23, end: 24 } +rebuilt : SymbolId(6): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(59): Span { start: 0, end: 0 } +rebuilt : SymbolId(7): Span { start: 23, end: 24 } tasks/coverage/typescript/tests/cases/conformance/esDecorators/esDecorators-decoratorExpression.1.ts semantic error: Expected a semicolon or an implicit semicolon after a statement, but found none tasks/coverage/typescript/tests/cases/conformance/esDecorators/esDecorators-decoratorExpression.2.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["g", "h", "x"] -rebuilt : ScopeId(0): [] +after transform: ScopeId(0): ["_decorate", "g", "h", "x"] +rebuilt : ScopeId(0): ["_decorate"] Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2), ScopeId(4), ScopeId(6), ScopeId(8), ScopeId(10), ScopeId(12), ScopeId(14), ScopeId(16), ScopeId(18), ScopeId(20), ScopeId(22), ScopeId(24), ScopeId(26), ScopeId(28), ScopeId(30), ScopeId(33), ScopeId(36), ScopeId(39), ScopeId(42), ScopeId(45), ScopeId(48), ScopeId(51), ScopeId(54), ScopeId(57), ScopeId(60), ScopeId(63), ScopeId(66)] rebuilt : ScopeId(0): [ScopeId(1), ScopeId(3), ScopeId(5), ScopeId(7), ScopeId(9), ScopeId(11), ScopeId(13), ScopeId(15), ScopeId(17), ScopeId(19), ScopeId(21), ScopeId(23), ScopeId(25), ScopeId(27), ScopeId(30), ScopeId(33), ScopeId(36), ScopeId(39), ScopeId(42), ScopeId(45), ScopeId(48), ScopeId(51), ScopeId(54), ScopeId(57), ScopeId(60), ScopeId(63)] +Symbol span mismatch for "C": +after transform: SymbolId(5): Span { start: 121, end: 122 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(31): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 121, end: 122 } +Symbol span mismatch for "C": +after transform: SymbolId(6): Span { start: 143, end: 144 } +rebuilt : SymbolId(3): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(33): Span { start: 0, end: 0 } +rebuilt : SymbolId(4): Span { start: 143, end: 144 } +Symbol span mismatch for "C": +after transform: SymbolId(7): Span { start: 165, end: 166 } +rebuilt : SymbolId(5): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(34): Span { start: 0, end: 0 } +rebuilt : SymbolId(6): Span { start: 165, end: 166 } +Symbol span mismatch for "C": +after transform: SymbolId(8): Span { start: 194, end: 195 } +rebuilt : SymbolId(7): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(35): Span { start: 0, end: 0 } +rebuilt : SymbolId(8): Span { start: 194, end: 195 } +Symbol span mismatch for "C": +after transform: SymbolId(9): Span { start: 223, end: 224 } +rebuilt : SymbolId(9): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(36): Span { start: 0, end: 0 } +rebuilt : SymbolId(10): Span { start: 223, end: 224 } +Symbol span mismatch for "C": +after transform: SymbolId(10): Span { start: 254, end: 255 } +rebuilt : SymbolId(11): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(37): Span { start: 0, end: 0 } +rebuilt : SymbolId(12): Span { start: 254, end: 255 } +Symbol span mismatch for "C": +after transform: SymbolId(11): Span { start: 279, end: 280 } +rebuilt : SymbolId(13): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(38): Span { start: 0, end: 0 } +rebuilt : SymbolId(14): Span { start: 279, end: 280 } +Symbol span mismatch for "C": +after transform: SymbolId(12): Span { start: 306, end: 307 } +rebuilt : SymbolId(15): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(39): Span { start: 0, end: 0 } +rebuilt : SymbolId(16): Span { start: 306, end: 307 } +Symbol span mismatch for "C": +after transform: SymbolId(13): Span { start: 329, end: 330 } +rebuilt : SymbolId(17): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(40): Span { start: 0, end: 0 } +rebuilt : SymbolId(18): Span { start: 329, end: 330 } +Symbol span mismatch for "C": +after transform: SymbolId(14): Span { start: 354, end: 355 } +rebuilt : SymbolId(19): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(41): Span { start: 0, end: 0 } +rebuilt : SymbolId(20): Span { start: 354, end: 355 } +Symbol span mismatch for "C": +after transform: SymbolId(15): Span { start: 379, end: 380 } +rebuilt : SymbolId(21): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(42): Span { start: 0, end: 0 } +rebuilt : SymbolId(22): Span { start: 379, end: 380 } +Symbol span mismatch for "C": +after transform: SymbolId(16): Span { start: 405, end: 406 } +rebuilt : SymbolId(23): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(43): Span { start: 0, end: 0 } +rebuilt : SymbolId(24): Span { start: 405, end: 406 } +Symbol span mismatch for "C": +after transform: SymbolId(17): Span { start: 433, end: 434 } +rebuilt : SymbolId(25): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(44): Span { start: 0, end: 0 } +rebuilt : SymbolId(26): Span { start: 433, end: 434 } Reference symbol mismatch for "x": after transform: SymbolId(0) "x" rebuilt : @@ -35055,8 +36069,8 @@ Reference symbol mismatch for "x": after transform: SymbolId(0) "x" rebuilt : Unresolved references mismatch: -after transform: [] -rebuilt : ["g", "h", "x"] +after transform: ["require"] +rebuilt : ["g", "h", "require", "x"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/esDecorators-decoratorExpression.3.ts semantic error: Bindings mismatch: @@ -35077,8 +36091,8 @@ rebuilt : ["g"] tasks/coverage/typescript/tests/cases/conformance/esDecorators/esDecorators-preservesThis.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "D", "instance"] -rebuilt : ScopeId(0): ["C", "D"] +after transform: ScopeId(0): ["C", "D", "_decorate", "instance"] +rebuilt : ScopeId(0): ["C", "D", "_decorate"] Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(3), ScopeId(7)] rebuilt : ScopeId(0): [ScopeId(1), ScopeId(5)] @@ -35092,22 +36106,60 @@ Reference symbol mismatch for "instance": after transform: SymbolId(3) "instance" rebuilt : Unresolved references mismatch: -after transform: ["DecoratorContext", "DecoratorProvider"] -rebuilt : ["DecoratorProvider", "instance"] +after transform: ["DecoratorContext", "DecoratorProvider", "require"] +rebuilt : ["DecoratorProvider", "instance", "require"] Unresolved reference IDs mismatch for "DecoratorProvider": after transform: [ReferenceId(0), ReferenceId(4), ReferenceId(8)] -rebuilt : [ReferenceId(3)] +rebuilt : [ReferenceId(10)] + +tasks/coverage/typescript/tests/cases/conformance/esDecorators/metadata/esDecoratorsMetadata1.ts +semantic error: Symbol span mismatch for "C": +after transform: SymbolId(5): Span { start: 144, end: 145 } +rebuilt : SymbolId(6): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(6): Span { start: 0, end: 0 } +rebuilt : SymbolId(7): Span { start: 144, end: 145 } + +tasks/coverage/typescript/tests/cases/conformance/esDecorators/metadata/esDecoratorsMetadata2.ts +semantic error: Symbol span mismatch for "C": +after transform: SymbolId(5): Span { start: 144, end: 145 } +rebuilt : SymbolId(6): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(7): Span { start: 0, end: 0 } +rebuilt : SymbolId(7): Span { start: 144, end: 145 } + +tasks/coverage/typescript/tests/cases/conformance/esDecorators/metadata/esDecoratorsMetadata3.ts +semantic error: Symbol span mismatch for "C": +after transform: SymbolId(6): Span { start: 225, end: 226 } +rebuilt : SymbolId(8): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(9): Span { start: 0, end: 0 } +rebuilt : SymbolId(9): Span { start: 225, end: 226 } +Symbol span mismatch for "D": +after transform: SymbolId(7): Span { start: 260, end: 261 } +rebuilt : SymbolId(10): Span { start: 0, end: 0 } +Symbol span mismatch for "D": +after transform: SymbolId(11): Span { start: 0, end: 0 } +rebuilt : SymbolId(11): Span { start: 260, end: 261 } + +tasks/coverage/typescript/tests/cases/conformance/esDecorators/metadata/esDecoratorsMetadata4.ts +semantic error: Symbol span mismatch for "C": +after transform: SymbolId(7): Span { start: 366, end: 367 } +rebuilt : SymbolId(8): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(8): Span { start: 0, end: 0 } +rebuilt : SymbolId(9): Span { start: 366, end: 367 } tasks/coverage/typescript/tests/cases/conformance/esDecorators/metadata/esDecoratorsMetadata5.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "metadata"] -rebuilt : ScopeId(0): ["C"] +after transform: ScopeId(0): ["C", "_decorate", "metadata"] +rebuilt : ScopeId(0): ["C", "_decorate"] Reference symbol mismatch for "metadata": after transform: SymbolId(0) "metadata" rebuilt : Unresolved references mismatch: -after transform: [] -rebuilt : ["metadata"] +after transform: ["require"] +rebuilt : ["metadata", "require"] tasks/coverage/typescript/tests/cases/conformance/expressions/arrayLiterals/arrayLiteralInference.ts semantic error: Scope children mismatch: @@ -38084,11 +39136,26 @@ tasks/coverage/typescript/tests/cases/conformance/externalModules/es6/es6modulek semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(3), ScopeId(4), ScopeId(6)] rebuilt : ScopeId(0): [ScopeId(1), ScopeId(4), ScopeId(7)] +Symbol span mismatch for "D": +after transform: SymbolId(2): Span { start: 147, end: 148 } +rebuilt : SymbolId(3): Span { start: 0, end: 0 } +Symbol span mismatch for "D": +after transform: SymbolId(5): Span { start: 0, end: 0 } +rebuilt : SymbolId(4): Span { start: 147, end: 148 } tasks/coverage/typescript/tests/cases/conformance/externalModules/es6/es6modulekindWithES5Target11.ts semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2)] rebuilt : ScopeId(0): [ScopeId(1)] +Symbol span mismatch for "C": +after transform: SymbolId(1): Span { start: 69, end: 70 } +rebuilt : SymbolId(3): Span { start: 0, end: 0 } +Symbol reference IDs mismatch for "C": +after transform: SymbolId(1): [ReferenceId(1), ReferenceId(3), ReferenceId(6), ReferenceId(8), ReferenceId(11)] +rebuilt : SymbolId(3): [ReferenceId(4), ReferenceId(5), ReferenceId(9), ReferenceId(10)] +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(4): Span { start: 69, end: 70 } tasks/coverage/typescript/tests/cases/conformance/externalModules/es6/es6modulekindWithES5Target12.ts semantic error: Bindings mismatch: @@ -38141,6 +39208,12 @@ tasks/coverage/typescript/tests/cases/conformance/externalModules/es6/es6modulek semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2)] rebuilt : ScopeId(0): [ScopeId(1)] +Symbol span mismatch for "D": +after transform: SymbolId(1): Span { start: 69, end: 70 } +rebuilt : SymbolId(2): Span { start: 0, end: 0 } +Symbol span mismatch for "D": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(3): Span { start: 69, end: 70 } tasks/coverage/typescript/tests/cases/conformance/externalModules/es6/es6modulekindWithES5Target5.ts semantic error: Bindings mismatch: @@ -38180,11 +39253,26 @@ tasks/coverage/typescript/tests/cases/conformance/externalModules/esnext/esnextm semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(3), ScopeId(4), ScopeId(6)] rebuilt : ScopeId(0): [ScopeId(1), ScopeId(4), ScopeId(7)] +Symbol span mismatch for "D": +after transform: SymbolId(2): Span { start: 147, end: 148 } +rebuilt : SymbolId(3): Span { start: 0, end: 0 } +Symbol span mismatch for "D": +after transform: SymbolId(5): Span { start: 0, end: 0 } +rebuilt : SymbolId(4): Span { start: 147, end: 148 } tasks/coverage/typescript/tests/cases/conformance/externalModules/esnext/esnextmodulekindWithES5Target11.ts semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2)] rebuilt : ScopeId(0): [ScopeId(1)] +Symbol span mismatch for "C": +after transform: SymbolId(1): Span { start: 69, end: 70 } +rebuilt : SymbolId(3): Span { start: 0, end: 0 } +Symbol reference IDs mismatch for "C": +after transform: SymbolId(1): [ReferenceId(1), ReferenceId(3), ReferenceId(6), ReferenceId(8), ReferenceId(11)] +rebuilt : SymbolId(3): [ReferenceId(4), ReferenceId(5), ReferenceId(9), ReferenceId(10)] +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(4): Span { start: 69, end: 70 } tasks/coverage/typescript/tests/cases/conformance/externalModules/esnext/esnextmodulekindWithES5Target12.ts semantic error: Bindings mismatch: @@ -38237,6 +39325,12 @@ tasks/coverage/typescript/tests/cases/conformance/externalModules/esnext/esnextm semantic error: Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2)] rebuilt : ScopeId(0): [ScopeId(1)] +Symbol span mismatch for "D": +after transform: SymbolId(1): Span { start: 69, end: 70 } +rebuilt : SymbolId(2): Span { start: 0, end: 0 } +Symbol span mismatch for "D": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(3): Span { start: 69, end: 70 } tasks/coverage/typescript/tests/cases/conformance/externalModules/esnext/esnextmodulekindWithES5Target5.ts semantic error: Bindings mismatch: @@ -38367,11 +39461,17 @@ rebuilt : ScopeId(0): [] tasks/coverage/typescript/tests/cases/conformance/externalModules/topLevelAwait.1.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "C1", "C2", "C3", "_await", "_defineProperty", "dec", "x", "y"] -rebuilt : ScopeId(0): ["C", "C1", "C2", "C3", "_defineProperty", "x", "y"] +after transform: ScopeId(0): ["C", "C1", "C2", "C3", "_await", "_decorate", "_defineProperty", "dec", "x", "y"] +rebuilt : ScopeId(0): ["C", "C1", "C2", "C3", "_decorate", "_defineProperty", "x", "y"] Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2), ScopeId(4), ScopeId(7), ScopeId(8), ScopeId(9), ScopeId(10), ScopeId(11)] rebuilt : ScopeId(0): [ScopeId(1), ScopeId(3), ScopeId(6), ScopeId(8), ScopeId(9), ScopeId(10), ScopeId(11)] +Symbol span mismatch for "C": +after transform: SymbolId(7): Span { start: 665, end: 666 } +rebuilt : SymbolId(8): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(11): Span { start: 0, end: 0 } +rebuilt : SymbolId(9): Span { start: 665, end: 666 } Reference symbol mismatch for "dec": after transform: SymbolId(6) "dec" rebuilt : @@ -41568,8 +42668,14 @@ rebuilt : ["Symbol", "dec"] tasks/coverage/typescript/tests/cases/conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsWithESClassDecorators.1.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "before", "dec"] -rebuilt : ScopeId(0): ["C", "before"] +after transform: ScopeId(0): ["C", "_decorate", "before", "dec"] +rebuilt : ScopeId(0): ["C", "_decorate", "before"] +Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 68, end: 69 } +rebuilt : SymbolId(2): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(3): Span { start: 68, end: 69 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -41579,8 +42685,11 @@ rebuilt : ["dec"] tasks/coverage/typescript/tests/cases/conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsWithESClassDecorators.10.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["after", "dec"] -rebuilt : ScopeId(0): ["after"] +after transform: ScopeId(0): ["_decorate", "_default", "after", "dec"] +rebuilt : ScopeId(0): ["_decorate", "_default", "after"] +Symbol flags mismatch for "_default": +after transform: SymbolId(2): SymbolFlags(Class) +rebuilt : SymbolId(1): SymbolFlags(BlockScopedVariable) Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -41590,8 +42699,14 @@ rebuilt : ["dec"] tasks/coverage/typescript/tests/cases/conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsWithESClassDecorators.11.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "after", "dec"] -rebuilt : ScopeId(0): ["C", "after"] +after transform: ScopeId(0): ["C", "_decorate", "after", "dec"] +rebuilt : ScopeId(0): ["C", "_decorate", "after"] +Symbol span mismatch for "C": +after transform: SymbolId(1): Span { start: 46, end: 47 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 46, end: 47 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -41601,8 +42716,14 @@ rebuilt : ["dec"] tasks/coverage/typescript/tests/cases/conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsWithESClassDecorators.12.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "after", "dec"] -rebuilt : ScopeId(0): ["C", "after"] +after transform: ScopeId(0): ["C", "_decorate", "after", "dec"] +rebuilt : ScopeId(0): ["C", "_decorate", "after"] +Symbol span mismatch for "C": +after transform: SymbolId(1): Span { start: 46, end: 47 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 46, end: 47 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -41612,8 +42733,14 @@ rebuilt : ["dec"] tasks/coverage/typescript/tests/cases/conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsWithESClassDecorators.2.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "before", "dec"] -rebuilt : ScopeId(0): ["C", "before"] +after transform: ScopeId(0): ["C", "_decorate", "before", "dec"] +rebuilt : ScopeId(0): ["C", "_decorate", "before"] +Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 75, end: 76 } +rebuilt : SymbolId(2): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(3): Span { start: 75, end: 76 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -41623,8 +42750,14 @@ rebuilt : ["dec"] tasks/coverage/typescript/tests/cases/conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsWithESClassDecorators.3.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "before", "dec"] -rebuilt : ScopeId(0): ["C", "before"] +after transform: ScopeId(0): ["C", "_decorate", "before", "dec"] +rebuilt : ScopeId(0): ["C", "_decorate", "before"] +Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 83, end: 84 } +rebuilt : SymbolId(2): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(3): Span { start: 83, end: 84 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -41634,8 +42767,11 @@ rebuilt : ["dec"] tasks/coverage/typescript/tests/cases/conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsWithESClassDecorators.4.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["before", "dec"] -rebuilt : ScopeId(0): ["before"] +after transform: ScopeId(0): ["_decorate", "_default", "before", "dec"] +rebuilt : ScopeId(0): ["_decorate", "_default", "before"] +Symbol flags mismatch for "_default": +after transform: SymbolId(2): SymbolFlags(Class) +rebuilt : SymbolId(2): SymbolFlags(BlockScopedVariable) Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -41645,8 +42781,14 @@ rebuilt : ["dec"] tasks/coverage/typescript/tests/cases/conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsWithESClassDecorators.5.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "before", "dec"] -rebuilt : ScopeId(0): ["C", "before"] +after transform: ScopeId(0): ["C", "_decorate", "before", "dec"] +rebuilt : ScopeId(0): ["C", "_decorate", "before"] +Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 68, end: 69 } +rebuilt : SymbolId(2): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(3): Span { start: 68, end: 69 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -41656,8 +42798,14 @@ rebuilt : ["dec"] tasks/coverage/typescript/tests/cases/conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsWithESClassDecorators.6.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "before", "dec"] -rebuilt : ScopeId(0): ["C", "before"] +after transform: ScopeId(0): ["C", "_decorate", "before", "dec"] +rebuilt : ScopeId(0): ["C", "_decorate", "before"] +Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 68, end: 69 } +rebuilt : SymbolId(2): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(3): Span { start: 68, end: 69 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -41667,8 +42815,14 @@ rebuilt : ["dec"] tasks/coverage/typescript/tests/cases/conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsWithESClassDecorators.7.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "after", "dec"] -rebuilt : ScopeId(0): ["C", "after"] +after transform: ScopeId(0): ["C", "_decorate", "after", "dec"] +rebuilt : ScopeId(0): ["C", "_decorate", "after"] +Symbol span mismatch for "C": +after transform: SymbolId(1): Span { start: 46, end: 47 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 46, end: 47 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -41678,8 +42832,14 @@ rebuilt : ["dec"] tasks/coverage/typescript/tests/cases/conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsWithESClassDecorators.8.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "after", "dec"] -rebuilt : ScopeId(0): ["C", "after"] +after transform: ScopeId(0): ["C", "_decorate", "after", "dec"] +rebuilt : ScopeId(0): ["C", "_decorate", "after"] +Symbol span mismatch for "C": +after transform: SymbolId(1): Span { start: 53, end: 54 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 53, end: 54 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -41689,8 +42849,14 @@ rebuilt : ["dec"] tasks/coverage/typescript/tests/cases/conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsWithESClassDecorators.9.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "after", "dec"] -rebuilt : ScopeId(0): ["C", "after"] +after transform: ScopeId(0): ["C", "_decorate", "after", "dec"] +rebuilt : ScopeId(0): ["C", "_decorate", "after"] +Symbol span mismatch for "C": +after transform: SymbolId(1): Span { start: 61, end: 62 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 61, end: 62 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -41700,8 +42866,14 @@ rebuilt : ["dec"] tasks/coverage/typescript/tests/cases/conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsWithLegacyClassDecorators.1.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "before", "dec"] -rebuilt : ScopeId(0): ["C", "before"] +after transform: ScopeId(0): ["C", "_decorate", "before", "dec"] +rebuilt : ScopeId(0): ["C", "_decorate", "before"] +Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 68, end: 69 } +rebuilt : SymbolId(2): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(3): Span { start: 68, end: 69 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -41711,8 +42883,11 @@ rebuilt : ["dec"] tasks/coverage/typescript/tests/cases/conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsWithLegacyClassDecorators.10.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["after", "dec"] -rebuilt : ScopeId(0): ["after"] +after transform: ScopeId(0): ["_decorate", "_default", "after", "dec"] +rebuilt : ScopeId(0): ["_decorate", "_default", "after"] +Symbol flags mismatch for "_default": +after transform: SymbolId(2): SymbolFlags(Class) +rebuilt : SymbolId(1): SymbolFlags(BlockScopedVariable) Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -41722,8 +42897,14 @@ rebuilt : ["dec"] tasks/coverage/typescript/tests/cases/conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsWithLegacyClassDecorators.11.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "after", "dec"] -rebuilt : ScopeId(0): ["C", "after"] +after transform: ScopeId(0): ["C", "_decorate", "after", "dec"] +rebuilt : ScopeId(0): ["C", "_decorate", "after"] +Symbol span mismatch for "C": +after transform: SymbolId(1): Span { start: 46, end: 47 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 46, end: 47 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -41733,8 +42914,14 @@ rebuilt : ["dec"] tasks/coverage/typescript/tests/cases/conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsWithLegacyClassDecorators.12.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "after", "dec"] -rebuilt : ScopeId(0): ["C", "after"] +after transform: ScopeId(0): ["C", "_decorate", "after", "dec"] +rebuilt : ScopeId(0): ["C", "_decorate", "after"] +Symbol span mismatch for "C": +after transform: SymbolId(1): Span { start: 46, end: 47 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 46, end: 47 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -41744,8 +42931,14 @@ rebuilt : ["dec"] tasks/coverage/typescript/tests/cases/conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsWithLegacyClassDecorators.2.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "before", "dec"] -rebuilt : ScopeId(0): ["C", "before"] +after transform: ScopeId(0): ["C", "_decorate", "before", "dec"] +rebuilt : ScopeId(0): ["C", "_decorate", "before"] +Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 75, end: 76 } +rebuilt : SymbolId(2): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(3): Span { start: 75, end: 76 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -41755,8 +42948,14 @@ rebuilt : ["dec"] tasks/coverage/typescript/tests/cases/conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsWithLegacyClassDecorators.3.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "before", "dec"] -rebuilt : ScopeId(0): ["C", "before"] +after transform: ScopeId(0): ["C", "_decorate", "before", "dec"] +rebuilt : ScopeId(0): ["C", "_decorate", "before"] +Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 83, end: 84 } +rebuilt : SymbolId(2): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(3): Span { start: 83, end: 84 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -41766,8 +42965,11 @@ rebuilt : ["dec"] tasks/coverage/typescript/tests/cases/conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsWithLegacyClassDecorators.4.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["before", "dec"] -rebuilt : ScopeId(0): ["before"] +after transform: ScopeId(0): ["_decorate", "_default", "before", "dec"] +rebuilt : ScopeId(0): ["_decorate", "_default", "before"] +Symbol flags mismatch for "_default": +after transform: SymbolId(2): SymbolFlags(Class) +rebuilt : SymbolId(2): SymbolFlags(BlockScopedVariable) Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -41777,8 +42979,14 @@ rebuilt : ["dec"] tasks/coverage/typescript/tests/cases/conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsWithLegacyClassDecorators.5.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "before", "dec"] -rebuilt : ScopeId(0): ["C", "before"] +after transform: ScopeId(0): ["C", "_decorate", "before", "dec"] +rebuilt : ScopeId(0): ["C", "_decorate", "before"] +Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 68, end: 69 } +rebuilt : SymbolId(2): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(3): Span { start: 68, end: 69 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -41788,8 +42996,14 @@ rebuilt : ["dec"] tasks/coverage/typescript/tests/cases/conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsWithLegacyClassDecorators.6.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "before", "dec"] -rebuilt : ScopeId(0): ["C", "before"] +after transform: ScopeId(0): ["C", "_decorate", "before", "dec"] +rebuilt : ScopeId(0): ["C", "_decorate", "before"] +Symbol span mismatch for "C": +after transform: SymbolId(2): Span { start: 68, end: 69 } +rebuilt : SymbolId(2): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(3): Span { start: 68, end: 69 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -41799,8 +43013,14 @@ rebuilt : ["dec"] tasks/coverage/typescript/tests/cases/conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsWithLegacyClassDecorators.7.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "after", "dec"] -rebuilt : ScopeId(0): ["C", "after"] +after transform: ScopeId(0): ["C", "_decorate", "after", "dec"] +rebuilt : ScopeId(0): ["C", "_decorate", "after"] +Symbol span mismatch for "C": +after transform: SymbolId(1): Span { start: 46, end: 47 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 46, end: 47 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -41810,8 +43030,14 @@ rebuilt : ["dec"] tasks/coverage/typescript/tests/cases/conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsWithLegacyClassDecorators.8.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "after", "dec"] -rebuilt : ScopeId(0): ["C", "after"] +after transform: ScopeId(0): ["C", "_decorate", "after", "dec"] +rebuilt : ScopeId(0): ["C", "_decorate", "after"] +Symbol span mismatch for "C": +after transform: SymbolId(1): Span { start: 53, end: 54 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 53, end: 54 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : @@ -41821,8 +43047,14 @@ rebuilt : ["dec"] tasks/coverage/typescript/tests/cases/conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsWithLegacyClassDecorators.9.ts semantic error: Bindings mismatch: -after transform: ScopeId(0): ["C", "after", "dec"] -rebuilt : ScopeId(0): ["C", "after"] +after transform: ScopeId(0): ["C", "_decorate", "after", "dec"] +rebuilt : ScopeId(0): ["C", "_decorate", "after"] +Symbol span mismatch for "C": +after transform: SymbolId(1): Span { start: 61, end: 62 } +rebuilt : SymbolId(1): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(2): Span { start: 61, end: 62 } Reference symbol mismatch for "dec": after transform: SymbolId(0) "dec" rebuilt : diff --git a/tasks/transform_conformance/snapshots/oxc.snap.md b/tasks/transform_conformance/snapshots/oxc.snap.md index 921cd3d4002d9..c36c1f74b9963 100644 --- a/tasks/transform_conformance/snapshots/oxc.snap.md +++ b/tasks/transform_conformance/snapshots/oxc.snap.md @@ -1,6 +1,6 @@ commit: 578ac4df -Passed: 138/227 +Passed: 138/229 # All Passed: * babel-plugin-transform-class-static-block @@ -362,7 +362,7 @@ after transform: SymbolId(4): ScopeId(1) rebuilt : SymbolId(5): ScopeId(4) -# legacy-decorators (2/66) +# legacy-decorators (2/68) * oxc/metadata/bound-type-reference/input.ts Symbol reference IDs mismatch for "BoundTypeReference": after transform: SymbolId(0): [ReferenceId(1), ReferenceId(3), ReferenceId(4), ReferenceId(5), ReferenceId(6)] @@ -385,6 +385,31 @@ Unresolved reference IDs mismatch for "UnboundTypeReference": after transform: [ReferenceId(1), ReferenceId(2), ReferenceId(3)] rebuilt : [ReferenceId(4), ReferenceId(5)] +* oxc/with-class-private-properties/input.ts +Symbol span mismatch for "C": +after transform: SymbolId(0): Span { start: 11, end: 12 } +rebuilt : SymbolId(0): Span { start: 0, end: 0 } +Symbol span mismatch for "C": +after transform: SymbolId(3): Span { start: 0, end: 0 } +rebuilt : SymbolId(1): Span { start: 11, end: 12 } +Symbol span mismatch for "D": +after transform: SymbolId(1): Span { start: 87, end: 88 } +rebuilt : SymbolId(2): Span { start: 0, end: 0 } +Symbol span mismatch for "D": +after transform: SymbolId(4): Span { start: 0, end: 0 } +rebuilt : SymbolId(3): Span { start: 87, end: 88 } +Symbol span mismatch for "E": +after transform: SymbolId(2): Span { start: 171, end: 172 } +rebuilt : SymbolId(4): Span { start: 0, end: 0 } +Symbol span mismatch for "E": +after transform: SymbolId(5): Span { start: 0, end: 0 } +rebuilt : SymbolId(5): Span { start: 171, end: 172 } + +* oxc/with-class-private-properties-unnamed-default-export/input.ts +Symbol flags mismatch for "_default": +after transform: SymbolId(0): SymbolFlags(Class) +rebuilt : SymbolId(0): SymbolFlags(BlockScopedVariable) + * typescript/accessor/decoratorOnClassAccessor1/input.ts Scope children mismatch: after transform: ScopeId(0): [ScopeId(1), ScopeId(2)] diff --git a/tasks/transform_conformance/tests/legacy-decorators/test/fixtures/oxc/with-class-private-properties-unnamed-default-export/input.ts b/tasks/transform_conformance/tests/legacy-decorators/test/fixtures/oxc/with-class-private-properties-unnamed-default-export/input.ts new file mode 100644 index 0000000000000..bd8090122d78c --- /dev/null +++ b/tasks/transform_conformance/tests/legacy-decorators/test/fixtures/oxc/with-class-private-properties-unnamed-default-export/input.ts @@ -0,0 +1,7 @@ +@dec +export default class { + #prop = 0; + meth() { + return this.#prop; + } +} diff --git a/tasks/transform_conformance/tests/legacy-decorators/test/fixtures/oxc/with-class-private-properties-unnamed-default-export/output.js b/tasks/transform_conformance/tests/legacy-decorators/test/fixtures/oxc/with-class-private-properties-unnamed-default-export/output.js new file mode 100644 index 0000000000000..0c780ec95805f --- /dev/null +++ b/tasks/transform_conformance/tests/legacy-decorators/test/fixtures/oxc/with-class-private-properties-unnamed-default-export/output.js @@ -0,0 +1,8 @@ +let _default = class { + #prop = 0; + meth() { + return this.#prop; + } +}; +_default = babelHelpers.decorate([dec], _default); +export default _default; diff --git a/tasks/transform_conformance/tests/legacy-decorators/test/fixtures/oxc/with-class-private-properties/input.ts b/tasks/transform_conformance/tests/legacy-decorators/test/fixtures/oxc/with-class-private-properties/input.ts new file mode 100644 index 0000000000000..2c27879776113 --- /dev/null +++ b/tasks/transform_conformance/tests/legacy-decorators/test/fixtures/oxc/with-class-private-properties/input.ts @@ -0,0 +1,23 @@ +@dec +class C { + #prop = 0; + meth() { + return this.#prop; + } +} + +@dec +export class D { + #prop = 0; + meth() { + return this.#prop; + } +} + +@dec +export default class E { + #prop = 0; + meth() { + return this.#prop; + } +} diff --git a/tasks/transform_conformance/tests/legacy-decorators/test/fixtures/oxc/with-class-private-properties/output.js b/tasks/transform_conformance/tests/legacy-decorators/test/fixtures/oxc/with-class-private-properties/output.js new file mode 100644 index 0000000000000..ba8fef817aa6e --- /dev/null +++ b/tasks/transform_conformance/tests/legacy-decorators/test/fixtures/oxc/with-class-private-properties/output.js @@ -0,0 +1,25 @@ +let C = class C { + #prop = 0; + meth() { + return this.#prop; + } +}; +C = babelHelpers.decorate([dec], C); + +let D = class D { + #prop = 0; + meth() { + return this.#prop; + } +}; +D = babelHelpers.decorate([dec], D); + +export { D }; +let E = class E { + #prop = 0; + meth() { + return this.#prop; + } +}; +E = babelHelpers.decorate([dec], E); +export default E;