diff --git a/src/ast.rs b/src/ast.rs index a782ece6c..ff2f8cc7e 100644 --- a/src/ast.rs +++ b/src/ast.rs @@ -2001,7 +2001,8 @@ pub enum StatementVariant { None, NotStatement(NotStatement), BlockStatement(BlockStatement), - IfStatement(IfStatement), + // IfStatement is much larger than the rest, so we box it. + IfStatement(Box), SwitchStatement(SwitchStatement), DecoratedStatement(DecoratedStatement), } @@ -2081,7 +2082,7 @@ fn embedded_node(&self) -> &dyn NodeMut { StatementVariant::None => panic!("cannot visit null statement"), StatementVariant::NotStatement(node) => node, StatementVariant::BlockStatement(node) => node, - StatementVariant::IfStatement(node) => node, + StatementVariant::IfStatement(node) => &**node, StatementVariant::SwitchStatement(node) => node, StatementVariant::DecoratedStatement(node) => node, } @@ -3612,7 +3613,7 @@ fn new_decorated_statement(slf: &mut Populator<'_>) -> Box { } ParseKeyword::kw_if => { let embedded = self.allocate_visit::(); - Box::new(StatementVariant::IfStatement(*embedded)) + Box::new(StatementVariant::IfStatement(embedded)) } ParseKeyword::kw_switch => { let embedded = self.allocate_visit::();