Skip to main content

oxc_transformer/es2016/
mod.rs

1use oxc_ast::ast::*;
2use oxc_traverse::Traverse;
3
4use crate::{context::TraverseCtx, state::TransformState};
5
6mod exponentiation_operator;
7mod options;
8
9pub use exponentiation_operator::ExponentiationOperator;
10pub use options::ES2016Options;
11
12pub struct ES2016<'a> {
13    options: ES2016Options,
14
15    // Plugins
16    exponentiation_operator: ExponentiationOperator<'a>,
17}
18
19impl ES2016<'_> {
20    pub fn new(options: ES2016Options) -> Self {
21        Self { exponentiation_operator: ExponentiationOperator::new(), options }
22    }
23}
24
25impl<'a> Traverse<'a, TransformState<'a>> for ES2016<'a> {
26    fn enter_expression(&mut self, expr: &mut Expression<'a>, ctx: &mut TraverseCtx<'a>) {
27        if self.options.exponentiation_operator {
28            self.exponentiation_operator.enter_expression(expr, ctx);
29        }
30    }
31}