// WARNING: This file is auto-generated by crates/ast/generate_ast.py. #![allow(unused_variables)] use crate::arena; use crate::source_atom_set::{SourceAtomSet, SourceAtomSetIndex}; use crate::source_slice_list::{SourceSliceList, SourceSliceIndex}; use crate::types::*; use std::ops::Deref; use std::io; fn newline(out: &mut W, depth: usize) where W: io::Write, { writeln!(out, "").expect("failed to dump"); for i in 0..depth { write!(out, " ").expect("failed to dump"); } } pub trait ASTDump { fn dump_with_atoms( &self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList ) where W: io::Write, { self.dump_with_atoms_at(out, atoms, slices, 0); writeln!(out, "").expect("failed to dump"); } fn dump_with_atoms_at( &self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize, ) where W: io::Write; } impl<'alloc> ASTDump for Argument<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { Argument::SpreadElement(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } Argument::Expression(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc> ASTDump for Arguments<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(Arguments").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "args=").expect("failed to dump"); self.args.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for Identifier { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(Identifier").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "value=").expect("failed to dump"); self.value.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for IdentifierName { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(IdentifierName").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "value=").expect("failed to dump"); self.value.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for PrivateIdentifier { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(PrivateIdentifier").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "value=").expect("failed to dump"); self.value.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for Label { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(Label").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "value=").expect("failed to dump"); self.value.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for VariableDeclarationKind { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { VariableDeclarationKind::Var { .. } => { write!(out, "Var").expect("failed to dump"); } VariableDeclarationKind::Let { .. } => { write!(out, "Let").expect("failed to dump"); } VariableDeclarationKind::Const { .. } => { write!(out, "Const").expect("failed to dump"); } } } } impl<'alloc> ASTDump for CompoundAssignmentOperator { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { CompoundAssignmentOperator::LogicalOr { .. } => { write!(out, "LogicalOr").expect("failed to dump"); } CompoundAssignmentOperator::LogicalAnd { .. } => { write!(out, "LogicalAnd").expect("failed to dump"); } CompoundAssignmentOperator::Coalesce { .. } => { write!(out, "Coalesce").expect("failed to dump"); } CompoundAssignmentOperator::Add { .. } => { write!(out, "Add").expect("failed to dump"); } CompoundAssignmentOperator::Sub { .. } => { write!(out, "Sub").expect("failed to dump"); } CompoundAssignmentOperator::Mul { .. } => { write!(out, "Mul").expect("failed to dump"); } CompoundAssignmentOperator::Div { .. } => { write!(out, "Div").expect("failed to dump"); } CompoundAssignmentOperator::Mod { .. } => { write!(out, "Mod").expect("failed to dump"); } CompoundAssignmentOperator::Pow { .. } => { write!(out, "Pow").expect("failed to dump"); } CompoundAssignmentOperator::LeftShift { .. } => { write!(out, "LeftShift").expect("failed to dump"); } CompoundAssignmentOperator::RightShift { .. } => { write!(out, "RightShift").expect("failed to dump"); } CompoundAssignmentOperator::RightShiftExt { .. } => { write!(out, "RightShiftExt").expect("failed to dump"); } CompoundAssignmentOperator::Or { .. } => { write!(out, "Or").expect("failed to dump"); } CompoundAssignmentOperator::Xor { .. } => { write!(out, "Xor").expect("failed to dump"); } CompoundAssignmentOperator::And { .. } => { write!(out, "And").expect("failed to dump"); } } } } impl<'alloc> ASTDump for BinaryOperator { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { BinaryOperator::Equals { .. } => { write!(out, "Equals").expect("failed to dump"); } BinaryOperator::NotEquals { .. } => { write!(out, "NotEquals").expect("failed to dump"); } BinaryOperator::StrictEquals { .. } => { write!(out, "StrictEquals").expect("failed to dump"); } BinaryOperator::StrictNotEquals { .. } => { write!(out, "StrictNotEquals").expect("failed to dump"); } BinaryOperator::LessThan { .. } => { write!(out, "LessThan").expect("failed to dump"); } BinaryOperator::LessThanOrEqual { .. } => { write!(out, "LessThanOrEqual").expect("failed to dump"); } BinaryOperator::GreaterThan { .. } => { write!(out, "GreaterThan").expect("failed to dump"); } BinaryOperator::GreaterThanOrEqual { .. } => { write!(out, "GreaterThanOrEqual").expect("failed to dump"); } BinaryOperator::In { .. } => { write!(out, "In").expect("failed to dump"); } BinaryOperator::Instanceof { .. } => { write!(out, "Instanceof").expect("failed to dump"); } BinaryOperator::LeftShift { .. } => { write!(out, "LeftShift").expect("failed to dump"); } BinaryOperator::RightShift { .. } => { write!(out, "RightShift").expect("failed to dump"); } BinaryOperator::RightShiftExt { .. } => { write!(out, "RightShiftExt").expect("failed to dump"); } BinaryOperator::Add { .. } => { write!(out, "Add").expect("failed to dump"); } BinaryOperator::Sub { .. } => { write!(out, "Sub").expect("failed to dump"); } BinaryOperator::Mul { .. } => { write!(out, "Mul").expect("failed to dump"); } BinaryOperator::Div { .. } => { write!(out, "Div").expect("failed to dump"); } BinaryOperator::Mod { .. } => { write!(out, "Mod").expect("failed to dump"); } BinaryOperator::Pow { .. } => { write!(out, "Pow").expect("failed to dump"); } BinaryOperator::Comma { .. } => { write!(out, "Comma").expect("failed to dump"); } BinaryOperator::Coalesce { .. } => { write!(out, "Coalesce").expect("failed to dump"); } BinaryOperator::LogicalOr { .. } => { write!(out, "LogicalOr").expect("failed to dump"); } BinaryOperator::LogicalAnd { .. } => { write!(out, "LogicalAnd").expect("failed to dump"); } BinaryOperator::BitwiseOr { .. } => { write!(out, "BitwiseOr").expect("failed to dump"); } BinaryOperator::BitwiseXor { .. } => { write!(out, "BitwiseXor").expect("failed to dump"); } BinaryOperator::BitwiseAnd { .. } => { write!(out, "BitwiseAnd").expect("failed to dump"); } } } } impl<'alloc> ASTDump for UnaryOperator { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { UnaryOperator::Plus { .. } => { write!(out, "Plus").expect("failed to dump"); } UnaryOperator::Minus { .. } => { write!(out, "Minus").expect("failed to dump"); } UnaryOperator::LogicalNot { .. } => { write!(out, "LogicalNot").expect("failed to dump"); } UnaryOperator::BitwiseNot { .. } => { write!(out, "BitwiseNot").expect("failed to dump"); } UnaryOperator::Typeof { .. } => { write!(out, "Typeof").expect("failed to dump"); } UnaryOperator::Void { .. } => { write!(out, "Void").expect("failed to dump"); } UnaryOperator::Delete { .. } => { write!(out, "Delete").expect("failed to dump"); } } } } impl<'alloc> ASTDump for UpdateOperator { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { UpdateOperator::Increment { .. } => { write!(out, "Increment").expect("failed to dump"); } UpdateOperator::Decrement { .. } => { write!(out, "Decrement").expect("failed to dump"); } } } } impl<'alloc> ASTDump for Function<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(Function").expect("failed to dump"); newline(out, depth + 1); write!(out, "name=").expect("failed to dump"); self.name.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "is_async=").expect("failed to dump"); self.is_async.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "is_generator=").expect("failed to dump"); self.is_generator.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "params=").expect("failed to dump"); self.params.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "body=").expect("failed to dump"); self.body.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for Program<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { Program::Module(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } Program::Script(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc> ASTDump for IfStatement<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(IfStatement").expect("failed to dump"); newline(out, depth + 1); write!(out, "test=").expect("failed to dump"); self.test.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "consequent=").expect("failed to dump"); self.consequent.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "alternate=").expect("failed to dump"); self.alternate.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for Statement<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { Statement::BlockStatement { block, .. } => { write!(out, "(BlockStatement").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "block=").expect("failed to dump"); block.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Statement::BreakStatement { label, .. } => { write!(out, "(BreakStatement").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "label=").expect("failed to dump"); label.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Statement::ContinueStatement { label, .. } => { write!(out, "(ContinueStatement").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "label=").expect("failed to dump"); label.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Statement::DebuggerStatement { .. } => { write!(out, "DebuggerStatement").expect("failed to dump"); } Statement::DoWhileStatement { block, test, .. } => { write!(out, "(DoWhileStatement").expect("failed to dump"); newline(out, depth + 1); write!(out, "block=").expect("failed to dump"); block.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "test=").expect("failed to dump"); test.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Statement::EmptyStatement { .. } => { write!(out, "EmptyStatement").expect("failed to dump"); } Statement::ExpressionStatement(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } Statement::ForInStatement { left, right, block, .. } => { write!(out, "(ForInStatement").expect("failed to dump"); newline(out, depth + 1); write!(out, "left=").expect("failed to dump"); left.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "right=").expect("failed to dump"); right.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "block=").expect("failed to dump"); block.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Statement::ForOfStatement { left, right, block, .. } => { write!(out, "(ForOfStatement").expect("failed to dump"); newline(out, depth + 1); write!(out, "left=").expect("failed to dump"); left.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "right=").expect("failed to dump"); right.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "block=").expect("failed to dump"); block.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Statement::ForStatement { init, test, update, block, .. } => { write!(out, "(ForStatement").expect("failed to dump"); newline(out, depth + 1); write!(out, "init=").expect("failed to dump"); init.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "test=").expect("failed to dump"); test.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "update=").expect("failed to dump"); update.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "block=").expect("failed to dump"); block.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Statement::IfStatement(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } Statement::LabelledStatement { label, body, .. } => { write!(out, "(LabelledStatement").expect("failed to dump"); newline(out, depth + 1); write!(out, "label=").expect("failed to dump"); label.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "body=").expect("failed to dump"); body.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Statement::ReturnStatement { expression, .. } => { write!(out, "(ReturnStatement").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "expression=").expect("failed to dump"); expression.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Statement::SwitchStatement { discriminant, cases, .. } => { write!(out, "(SwitchStatement").expect("failed to dump"); newline(out, depth + 1); write!(out, "discriminant=").expect("failed to dump"); discriminant.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "cases=").expect("failed to dump"); cases.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Statement::SwitchStatementWithDefault { discriminant, pre_default_cases, default_case, post_default_cases, .. } => { write!(out, "(SwitchStatementWithDefault").expect("failed to dump"); newline(out, depth + 1); write!(out, "discriminant=").expect("failed to dump"); discriminant.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "pre_default_cases=").expect("failed to dump"); pre_default_cases.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "default_case=").expect("failed to dump"); default_case.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "post_default_cases=").expect("failed to dump"); post_default_cases.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Statement::ThrowStatement { expression, .. } => { write!(out, "(ThrowStatement").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "expression=").expect("failed to dump"); expression.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Statement::TryCatchStatement { body, catch_clause, .. } => { write!(out, "(TryCatchStatement").expect("failed to dump"); newline(out, depth + 1); write!(out, "body=").expect("failed to dump"); body.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "catch_clause=").expect("failed to dump"); catch_clause.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Statement::TryFinallyStatement { body, catch_clause, finalizer, .. } => { write!(out, "(TryFinallyStatement").expect("failed to dump"); newline(out, depth + 1); write!(out, "body=").expect("failed to dump"); body.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "catch_clause=").expect("failed to dump"); catch_clause.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "finalizer=").expect("failed to dump"); finalizer.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Statement::WhileStatement { test, block, .. } => { write!(out, "(WhileStatement").expect("failed to dump"); newline(out, depth + 1); write!(out, "test=").expect("failed to dump"); test.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "block=").expect("failed to dump"); block.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Statement::WithStatement { object, body, .. } => { write!(out, "(WithStatement").expect("failed to dump"); newline(out, depth + 1); write!(out, "object=").expect("failed to dump"); object.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "body=").expect("failed to dump"); body.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Statement::VariableDeclarationStatement(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } Statement::FunctionDeclaration(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } Statement::ClassDeclaration(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc> ASTDump for Expression<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { Expression::MemberExpression(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } Expression::ClassExpression(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } Expression::LiteralBooleanExpression { value, .. } => { write!(out, "(LiteralBooleanExpression").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "value=").expect("failed to dump"); value.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Expression::LiteralInfinityExpression { .. } => { write!(out, "LiteralInfinityExpression").expect("failed to dump"); } Expression::LiteralNullExpression { .. } => { write!(out, "LiteralNullExpression").expect("failed to dump"); } Expression::LiteralNumericExpression(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } Expression::LiteralRegExpExpression { pattern, global, ignore_case, multi_line, dot_all, sticky, unicode, .. } => { write!(out, "(LiteralRegExpExpression").expect("failed to dump"); newline(out, depth + 1); write!(out, "pattern=").expect("failed to dump"); pattern.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "global=").expect("failed to dump"); global.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "ignore_case=").expect("failed to dump"); ignore_case.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "multi_line=").expect("failed to dump"); multi_line.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "dot_all=").expect("failed to dump"); dot_all.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "sticky=").expect("failed to dump"); sticky.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "unicode=").expect("failed to dump"); unicode.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Expression::LiteralStringExpression { value, .. } => { write!(out, "(LiteralStringExpression").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "value=").expect("failed to dump"); value.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Expression::ArrayExpression(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } Expression::ArrowExpression { is_async, params, body, .. } => { write!(out, "(ArrowExpression").expect("failed to dump"); newline(out, depth + 1); write!(out, "is_async=").expect("failed to dump"); is_async.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "params=").expect("failed to dump"); params.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "body=").expect("failed to dump"); body.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Expression::AssignmentExpression { binding, expression, .. } => { write!(out, "(AssignmentExpression").expect("failed to dump"); newline(out, depth + 1); write!(out, "binding=").expect("failed to dump"); binding.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "expression=").expect("failed to dump"); expression.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Expression::BinaryExpression { operator, left, right, .. } => { write!(out, "(BinaryExpression").expect("failed to dump"); newline(out, depth + 1); write!(out, "operator=").expect("failed to dump"); operator.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "left=").expect("failed to dump"); left.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "right=").expect("failed to dump"); right.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Expression::CallExpression(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } Expression::CompoundAssignmentExpression { operator, binding, expression, .. } => { write!(out, "(CompoundAssignmentExpression").expect("failed to dump"); newline(out, depth + 1); write!(out, "operator=").expect("failed to dump"); operator.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "binding=").expect("failed to dump"); binding.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "expression=").expect("failed to dump"); expression.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Expression::ConditionalExpression { test, consequent, alternate, .. } => { write!(out, "(ConditionalExpression").expect("failed to dump"); newline(out, depth + 1); write!(out, "test=").expect("failed to dump"); test.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "consequent=").expect("failed to dump"); consequent.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "alternate=").expect("failed to dump"); alternate.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Expression::FunctionExpression(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } Expression::IdentifierExpression(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } Expression::NewExpression { callee, arguments, .. } => { write!(out, "(NewExpression").expect("failed to dump"); newline(out, depth + 1); write!(out, "callee=").expect("failed to dump"); callee.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "arguments=").expect("failed to dump"); arguments.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Expression::NewTargetExpression { .. } => { write!(out, "NewTargetExpression").expect("failed to dump"); } Expression::ObjectExpression(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } Expression::OptionalExpression { object, tail, .. } => { write!(out, "(OptionalExpression").expect("failed to dump"); newline(out, depth + 1); write!(out, "object=").expect("failed to dump"); object.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "tail=").expect("failed to dump"); tail.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Expression::OptionalChain(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } Expression::UnaryExpression { operator, operand, .. } => { write!(out, "(UnaryExpression").expect("failed to dump"); newline(out, depth + 1); write!(out, "operator=").expect("failed to dump"); operator.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "operand=").expect("failed to dump"); operand.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Expression::TemplateExpression(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } Expression::ThisExpression { .. } => { write!(out, "ThisExpression").expect("failed to dump"); } Expression::UpdateExpression { is_prefix, operator, operand, .. } => { write!(out, "(UpdateExpression").expect("failed to dump"); newline(out, depth + 1); write!(out, "is_prefix=").expect("failed to dump"); is_prefix.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "operator=").expect("failed to dump"); operator.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "operand=").expect("failed to dump"); operand.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Expression::YieldExpression { expression, .. } => { write!(out, "(YieldExpression").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "expression=").expect("failed to dump"); expression.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Expression::YieldGeneratorExpression { expression, .. } => { write!(out, "(YieldGeneratorExpression").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "expression=").expect("failed to dump"); expression.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Expression::AwaitExpression { expression, .. } => { write!(out, "(AwaitExpression").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "expression=").expect("failed to dump"); expression.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } Expression::ImportCallExpression { argument, .. } => { write!(out, "(ImportCallExpression").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "argument=").expect("failed to dump"); argument.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } } } impl<'alloc> ASTDump for MemberExpression<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { MemberExpression::ComputedMemberExpression(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } MemberExpression::StaticMemberExpression(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } MemberExpression::PrivateFieldExpression(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc> ASTDump for OptionalChain<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { OptionalChain::ComputedMemberExpressionTail { expression, .. } => { write!(out, "(ComputedMemberExpressionTail").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "expression=").expect("failed to dump"); expression.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } OptionalChain::StaticMemberExpressionTail { property, .. } => { write!(out, "(StaticMemberExpressionTail").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "property=").expect("failed to dump"); property.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } OptionalChain::PrivateFieldExpressionTail { field, .. } => { write!(out, "(PrivateFieldExpressionTail").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "field=").expect("failed to dump"); field.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } OptionalChain::CallExpressionTail { arguments, .. } => { write!(out, "(CallExpressionTail").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "arguments=").expect("failed to dump"); arguments.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } OptionalChain::ComputedMemberExpression(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } OptionalChain::StaticMemberExpression(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } OptionalChain::PrivateFieldExpression(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } OptionalChain::CallExpression(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc> ASTDump for PropertyName<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { PropertyName::ComputedPropertyName(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } PropertyName::StaticPropertyName(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } PropertyName::StaticNumericPropertyName(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc> ASTDump for CallExpression<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(CallExpression").expect("failed to dump"); newline(out, depth + 1); write!(out, "callee=").expect("failed to dump"); self.callee.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "arguments=").expect("failed to dump"); self.arguments.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for ClassElementName<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { ClassElementName::ComputedPropertyName(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } ClassElementName::StaticPropertyName(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } ClassElementName::StaticNumericPropertyName(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } ClassElementName::PrivateFieldName(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc> ASTDump for ObjectProperty<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { ObjectProperty::NamedObjectProperty(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } ObjectProperty::ShorthandProperty(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } ObjectProperty::SpreadProperty(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc> ASTDump for NamedObjectProperty<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { NamedObjectProperty::MethodDefinition(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } NamedObjectProperty::DataProperty(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc> ASTDump for MethodDefinition<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { MethodDefinition::Method(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } MethodDefinition::Getter(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } MethodDefinition::Setter(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc> ASTDump for ImportDeclaration<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { ImportDeclaration::Import(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } ImportDeclaration::ImportNamespace(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc> ASTDump for ExportDeclaration<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { ExportDeclaration::ExportAllFrom(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } ExportDeclaration::ExportFrom(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } ExportDeclaration::ExportLocals(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } ExportDeclaration::Export(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } ExportDeclaration::ExportDefault(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc> ASTDump for VariableReference { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { VariableReference::BindingIdentifier(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } VariableReference::AssignmentTargetIdentifier(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc> ASTDump for BindingPattern<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { BindingPattern::ObjectBinding(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } BindingPattern::ArrayBinding(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc> ASTDump for Binding<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { Binding::BindingPattern(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } Binding::BindingIdentifier(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc> ASTDump for SimpleAssignmentTarget<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { SimpleAssignmentTarget::AssignmentTargetIdentifier(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } SimpleAssignmentTarget::MemberAssignmentTarget(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc> ASTDump for AssignmentTargetPattern<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { AssignmentTargetPattern::ArrayAssignmentTarget(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } AssignmentTargetPattern::ObjectAssignmentTarget(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc> ASTDump for AssignmentTarget<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { AssignmentTarget::AssignmentTargetPattern(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } AssignmentTarget::SimpleAssignmentTarget(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc> ASTDump for Parameter<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { Parameter::Binding(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } Parameter::BindingWithDefault(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc> ASTDump for BindingWithDefault<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(BindingWithDefault").expect("failed to dump"); newline(out, depth + 1); write!(out, "binding=").expect("failed to dump"); self.binding.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "init=").expect("failed to dump"); self.init.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for BindingIdentifier { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(BindingIdentifier").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "name=").expect("failed to dump"); self.name.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for AssignmentTargetIdentifier { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(AssignmentTargetIdentifier").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "name=").expect("failed to dump"); self.name.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for ExpressionOrSuper<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { ExpressionOrSuper::Expression(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } ExpressionOrSuper::Super { .. } => { write!(out, "Super").expect("failed to dump"); } } } } impl<'alloc> ASTDump for MemberAssignmentTarget<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { MemberAssignmentTarget::ComputedMemberAssignmentTarget(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } MemberAssignmentTarget::PrivateFieldAssignmentTarget(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } MemberAssignmentTarget::StaticMemberAssignmentTarget(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc> ASTDump for ComputedMemberAssignmentTarget<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(ComputedMemberAssignmentTarget").expect("failed to dump"); newline(out, depth + 1); write!(out, "object=").expect("failed to dump"); self.object.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "expression=").expect("failed to dump"); self.expression.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for PrivateFieldAssignmentTarget<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(PrivateFieldAssignmentTarget").expect("failed to dump"); newline(out, depth + 1); write!(out, "object=").expect("failed to dump"); self.object.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "field=").expect("failed to dump"); self.field.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for StaticMemberAssignmentTarget<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(StaticMemberAssignmentTarget").expect("failed to dump"); newline(out, depth + 1); write!(out, "object=").expect("failed to dump"); self.object.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "property=").expect("failed to dump"); self.property.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for ArrayBinding<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(ArrayBinding").expect("failed to dump"); newline(out, depth + 1); write!(out, "elements=").expect("failed to dump"); self.elements.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "rest=").expect("failed to dump"); self.rest.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for ObjectBinding<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(ObjectBinding").expect("failed to dump"); newline(out, depth + 1); write!(out, "properties=").expect("failed to dump"); self.properties.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "rest=").expect("failed to dump"); self.rest.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for BindingProperty<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { BindingProperty::BindingPropertyIdentifier(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } BindingProperty::BindingPropertyProperty(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc> ASTDump for BindingPropertyIdentifier<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(BindingPropertyIdentifier").expect("failed to dump"); newline(out, depth + 1); write!(out, "binding=").expect("failed to dump"); self.binding.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "init=").expect("failed to dump"); self.init.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for BindingPropertyProperty<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(BindingPropertyProperty").expect("failed to dump"); newline(out, depth + 1); write!(out, "name=").expect("failed to dump"); self.name.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "binding=").expect("failed to dump"); self.binding.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for AssignmentTargetWithDefault<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(AssignmentTargetWithDefault").expect("failed to dump"); newline(out, depth + 1); write!(out, "binding=").expect("failed to dump"); self.binding.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "init=").expect("failed to dump"); self.init.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for AssignmentTargetMaybeDefault<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { AssignmentTargetMaybeDefault::AssignmentTarget(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } AssignmentTargetMaybeDefault::AssignmentTargetWithDefault(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc> ASTDump for ArrayAssignmentTarget<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(ArrayAssignmentTarget").expect("failed to dump"); newline(out, depth + 1); write!(out, "elements=").expect("failed to dump"); self.elements.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "rest=").expect("failed to dump"); self.rest.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for ObjectAssignmentTarget<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(ObjectAssignmentTarget").expect("failed to dump"); newline(out, depth + 1); write!(out, "properties=").expect("failed to dump"); self.properties.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "rest=").expect("failed to dump"); self.rest.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for AssignmentTargetProperty<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { AssignmentTargetProperty::AssignmentTargetPropertyIdentifier(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } AssignmentTargetProperty::AssignmentTargetPropertyProperty(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc> ASTDump for AssignmentTargetPropertyIdentifier<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(AssignmentTargetPropertyIdentifier").expect("failed to dump"); newline(out, depth + 1); write!(out, "binding=").expect("failed to dump"); self.binding.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "init=").expect("failed to dump"); self.init.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for AssignmentTargetPropertyProperty<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(AssignmentTargetPropertyProperty").expect("failed to dump"); newline(out, depth + 1); write!(out, "name=").expect("failed to dump"); self.name.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "binding=").expect("failed to dump"); self.binding.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for ClassExpression<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(ClassExpression").expect("failed to dump"); newline(out, depth + 1); write!(out, "name=").expect("failed to dump"); self.name.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "super_=").expect("failed to dump"); self.super_.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "elements=").expect("failed to dump"); self.elements.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for ClassDeclaration<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(ClassDeclaration").expect("failed to dump"); newline(out, depth + 1); write!(out, "name=").expect("failed to dump"); self.name.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "super_=").expect("failed to dump"); self.super_.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "elements=").expect("failed to dump"); self.elements.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for ClassElement<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { ClassElement::MethodDefinition { is_static, method, .. } => { write!(out, "(MethodDefinition").expect("failed to dump"); newline(out, depth + 1); write!(out, "is_static=").expect("failed to dump"); is_static.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "method=").expect("failed to dump"); method.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } ClassElement::FieldDefinition { name, init, .. } => { write!(out, "(FieldDefinition").expect("failed to dump"); newline(out, depth + 1); write!(out, "name=").expect("failed to dump"); name.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "init=").expect("failed to dump"); init.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } } } impl<'alloc> ASTDump for ModuleItems<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { ModuleItems::ImportDeclaration(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } ModuleItems::ExportDeclaration(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } ModuleItems::Statement(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc> ASTDump for Module<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(Module").expect("failed to dump"); newline(out, depth + 1); write!(out, "directives=").expect("failed to dump"); self.directives.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "items=").expect("failed to dump"); self.items.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for Import<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(Import").expect("failed to dump"); newline(out, depth + 1); write!(out, "module_specifier=").expect("failed to dump"); self.module_specifier.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "default_binding=").expect("failed to dump"); self.default_binding.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "named_imports=").expect("failed to dump"); self.named_imports.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for ImportNamespace { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(ImportNamespace").expect("failed to dump"); newline(out, depth + 1); write!(out, "module_specifier=").expect("failed to dump"); self.module_specifier.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "default_binding=").expect("failed to dump"); self.default_binding.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "namespace_binding=").expect("failed to dump"); self.namespace_binding.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for ImportSpecifier { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(ImportSpecifier").expect("failed to dump"); newline(out, depth + 1); write!(out, "name=").expect("failed to dump"); self.name.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "binding=").expect("failed to dump"); self.binding.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for ExportAllFrom { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(ExportAllFrom").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "module_specifier=").expect("failed to dump"); self.module_specifier.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for ExportFrom<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(ExportFrom").expect("failed to dump"); newline(out, depth + 1); write!(out, "named_exports=").expect("failed to dump"); self.named_exports.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "module_specifier=").expect("failed to dump"); self.module_specifier.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for ExportLocals<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(ExportLocals").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "named_exports=").expect("failed to dump"); self.named_exports.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for Export<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { Export::FunctionDeclaration(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } Export::ClassDeclaration(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } Export::VariableDeclaration(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc> ASTDump for ExportDefault<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { ExportDefault::FunctionDeclaration(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } ExportDefault::ClassDeclaration(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } ExportDefault::Expression(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc> ASTDump for ExportFromSpecifier { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(ExportFromSpecifier").expect("failed to dump"); newline(out, depth + 1); write!(out, "name=").expect("failed to dump"); self.name.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "exported_name=").expect("failed to dump"); self.exported_name.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for ExportLocalSpecifier { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(ExportLocalSpecifier").expect("failed to dump"); newline(out, depth + 1); write!(out, "name=").expect("failed to dump"); self.name.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "exported_name=").expect("failed to dump"); self.exported_name.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for Method<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(Method").expect("failed to dump"); newline(out, depth + 1); write!(out, "name=").expect("failed to dump"); self.name.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "is_async=").expect("failed to dump"); self.is_async.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "is_generator=").expect("failed to dump"); self.is_generator.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "params=").expect("failed to dump"); self.params.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "body=").expect("failed to dump"); self.body.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for Getter<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(Getter").expect("failed to dump"); newline(out, depth + 1); write!(out, "property_name=").expect("failed to dump"); self.property_name.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "body=").expect("failed to dump"); self.body.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for Setter<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(Setter").expect("failed to dump"); newline(out, depth + 1); write!(out, "property_name=").expect("failed to dump"); self.property_name.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "param=").expect("failed to dump"); self.param.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "body=").expect("failed to dump"); self.body.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for DataProperty<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(DataProperty").expect("failed to dump"); newline(out, depth + 1); write!(out, "property_name=").expect("failed to dump"); self.property_name.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "expression=").expect("failed to dump"); self.expression.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for ShorthandProperty { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(ShorthandProperty").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "name=").expect("failed to dump"); self.name.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for ComputedPropertyName<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(ComputedPropertyName").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "expression=").expect("failed to dump"); self.expression.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for StaticPropertyName { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(StaticPropertyName").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "value=").expect("failed to dump"); self.value.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for NumericLiteral { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(NumericLiteral").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "value=").expect("failed to dump"); self.value.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for ArrayExpressionElement<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { ArrayExpressionElement::SpreadElement(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } ArrayExpressionElement::Expression(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } ArrayExpressionElement::Elision { .. } => { write!(out, "Elision").expect("failed to dump"); } } } } impl<'alloc> ASTDump for ArrayExpression<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(ArrayExpression").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "elements=").expect("failed to dump"); self.elements.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for ArrowExpressionBody<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { ArrowExpressionBody::FunctionBody(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } ArrowExpressionBody::Expression(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc> ASTDump for ComputedMemberExpression<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(ComputedMemberExpression").expect("failed to dump"); newline(out, depth + 1); write!(out, "object=").expect("failed to dump"); self.object.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "expression=").expect("failed to dump"); self.expression.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for IdentifierExpression { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(IdentifierExpression").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "name=").expect("failed to dump"); self.name.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for ObjectExpression<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(ObjectExpression").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "properties=").expect("failed to dump"); self.properties.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for StaticMemberExpression<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(StaticMemberExpression").expect("failed to dump"); newline(out, depth + 1); write!(out, "object=").expect("failed to dump"); self.object.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "property=").expect("failed to dump"); self.property.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for PrivateFieldExpression<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(PrivateFieldExpression").expect("failed to dump"); newline(out, depth + 1); write!(out, "object=").expect("failed to dump"); self.object.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "field=").expect("failed to dump"); self.field.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for TemplateExpressionElement<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { TemplateExpressionElement::Expression(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } TemplateExpressionElement::TemplateElement(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc> ASTDump for TemplateExpression<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(TemplateExpression").expect("failed to dump"); newline(out, depth + 1); write!(out, "tag=").expect("failed to dump"); self.tag.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "elements=").expect("failed to dump"); self.elements.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for VariableDeclarationOrAssignmentTarget<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { VariableDeclarationOrAssignmentTarget::VariableDeclaration(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } VariableDeclarationOrAssignmentTarget::AssignmentTarget(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc> ASTDump for VariableDeclarationOrExpression<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { VariableDeclarationOrExpression::VariableDeclaration(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } VariableDeclarationOrExpression::Expression(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc> ASTDump for Block<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(Block").expect("failed to dump"); newline(out, depth + 1); write!(out, "statements=").expect("failed to dump"); self.statements.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "declarations=").expect("failed to dump"); self.declarations.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for CatchClause<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(CatchClause").expect("failed to dump"); newline(out, depth + 1); write!(out, "binding=").expect("failed to dump"); self.binding.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "body=").expect("failed to dump"); self.body.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for Directive { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(Directive").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "raw_value=").expect("failed to dump"); self.raw_value.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for FormalParameters<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(FormalParameters").expect("failed to dump"); newline(out, depth + 1); write!(out, "items=").expect("failed to dump"); self.items.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "rest=").expect("failed to dump"); self.rest.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for FunctionBody<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(FunctionBody").expect("failed to dump"); newline(out, depth + 1); write!(out, "directives=").expect("failed to dump"); self.directives.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "statements=").expect("failed to dump"); self.statements.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for Script<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(Script").expect("failed to dump"); newline(out, depth + 1); write!(out, "directives=").expect("failed to dump"); self.directives.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "statements=").expect("failed to dump"); self.statements.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for SwitchCase<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(SwitchCase").expect("failed to dump"); newline(out, depth + 1); write!(out, "test=").expect("failed to dump"); self.test.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "consequent=").expect("failed to dump"); self.consequent.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for SwitchDefault<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(SwitchDefault").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "consequent=").expect("failed to dump"); self.consequent.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for TemplateElement { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(TemplateElement").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "raw_value=").expect("failed to dump"); self.raw_value.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for VariableDeclaration<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(VariableDeclaration").expect("failed to dump"); newline(out, depth + 1); write!(out, "kind=").expect("failed to dump"); self.kind.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "declarators=").expect("failed to dump"); self.declarators.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for VariableDeclarator<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { write!(out, "(VariableDeclarator").expect("failed to dump"); newline(out, depth + 1); write!(out, "binding=").expect("failed to dump"); self.binding.dump_with_atoms_at(out, atoms, slices, depth + 1); newline(out, depth + 1); write!(out, "init=").expect("failed to dump"); self.init.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } } impl<'alloc> ASTDump for CoverParenthesized<'alloc> { fn dump_with_atoms_at(&self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize) where W: io::Write { match self { CoverParenthesized::Expression { expression, .. } => { write!(out, "(Expression").expect("failed to dump"); write!(out, " ").expect("failed to dump"); write!(out, "expression=").expect("failed to dump"); expression.dump_with_atoms_at(out, atoms, slices, depth + 1); write!(out, ")").expect("failed to dump"); } CoverParenthesized::Parameters(ast) => { ast.dump_with_atoms_at(out, atoms, slices, depth); } } } } impl<'alloc, T> ASTDump for arena::Vec<'alloc, T> where T: ASTDump, { fn dump_with_atoms_at( &self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize, ) where W: io::Write, { write!(out, "[").expect("failed to dump"); if self.len() > 0 { for item in self { newline(out, depth + 1); item.dump_with_atoms_at(out, atoms, slices, depth + 1); } newline(out, depth); } write!(out, "]").expect("failed to dump"); } } impl ASTDump for Option where T: ASTDump, { fn dump_with_atoms_at( &self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize, ) where W: io::Write, { match self { Some(v) => { v.dump_with_atoms_at(out, atoms, slices, depth); } None => { write!(out, "None").expect("failed to dump"); } } } } impl<'alloc, T> ASTDump for arena::Box<'alloc, T> where T: ASTDump, { fn dump_with_atoms_at( &self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize, ) where W: io::Write, { self.deref().dump_with_atoms_at(out, atoms, slices, depth); } } impl ASTDump for bool { fn dump_with_atoms_at( &self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize, ) where W: io::Write, { if *self { write!(out, "true").expect("failed to dump"); } else { write!(out, "false").expect("failed to dump"); } } } impl ASTDump for SourceAtomSetIndex { fn dump_with_atoms_at( &self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize, ) where W: io::Write, { write!(out, "{:?}", atoms.get(self.clone())) .expect("failed to dump"); } } impl ASTDump for SourceSliceIndex { fn dump_with_atoms_at( &self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize, ) where W: io::Write, { write!(out, "{:?}", slices.get(self.clone())) .expect("failed to dump"); } } impl ASTDump for f64 { fn dump_with_atoms_at( &self, out: &mut W, atoms: &SourceAtomSet, slices: &SourceSliceList, depth: usize, ) where W: io::Write, { write!(out, "{}", self).expect("failed to dump"); } }