diff --git a/crates/oxc_transformer/src/es2022/class_properties/private_field.rs b/crates/oxc_transformer/src/es2022/class_properties/private_field.rs index d9e6b2c0a..0b8ab5772 100644 --- a/crates/oxc_transformer/src/es2022/class_properties/private_field.rs +++ b/crates/oxc_transformer/src/es2022/class_properties/private_field.rs @@ -11,13 +11,17 @@ use oxc_traverse::{ ast_operations::get_var_name_from_node, Ancestor, BoundIdentifier, TraverseCtx, }; -use crate::{common::helper_loader::Helper, TransformCtx}; +use crate::{ + common::helper_loader::Helper, + utils::ast_builder::{create_bind_call, create_call_call, create_member_callee}, + TransformCtx, +}; use super::{ class_details::ResolvedGetSetPrivateProp, utils::{ - create_assignment, create_bind_call, create_call_call, create_member_callee, - create_underscore_ident_name, debug_assert_expr_is_not_parenthesis_or_typescript_syntax, + create_assignment, create_underscore_ident_name, + debug_assert_expr_is_not_parenthesis_or_typescript_syntax, }, ClassProperties, ResolvedPrivateProp, }; diff --git a/crates/oxc_transformer/src/es2022/class_properties/utils.rs b/crates/oxc_transformer/src/es2022/class_properties/utils.rs index f496a9802..55f2c0188 100644 --- a/crates/oxc_transformer/src/es2022/class_properties/utils.rs +++ b/crates/oxc_transformer/src/es2022/class_properties/utils.rs @@ -3,7 +3,7 @@ use std::path::PathBuf; -use oxc_ast::{ast::*, NONE}; +use oxc_ast::ast::*; use oxc_span::SPAN; use oxc_syntax::reference::ReferenceFlags; use oxc_traverse::{BoundIdentifier, TraverseCtx}; @@ -81,37 +81,3 @@ pub(super) fn create_prototype_member<'a>( let static_member = ctx.ast.member_expression_static(SPAN, object, property, false); Expression::from(static_member) } - -/// `object` -> `object.call`. -pub(super) fn create_member_callee<'a>( - object: Expression<'a>, - property: &'static str, - ctx: &mut TraverseCtx<'a>, -) -> Expression<'a> { - let property = ctx.ast.identifier_name(SPAN, Atom::from(property)); - Expression::from(ctx.ast.member_expression_static(SPAN, object, property, false)) -} - -/// `object` -> `object.bind(this)`. -pub(super) fn create_bind_call<'a>( - callee: Expression<'a>, - this: Expression<'a>, - span: Span, - ctx: &mut TraverseCtx<'a>, -) -> Expression<'a> { - let callee = create_member_callee(callee, "bind", ctx); - let arguments = ctx.ast.vec1(Argument::from(this)); - ctx.ast.expression_call(span, callee, NONE, arguments, false) -} - -/// `object` -> `object.call(...arguments)`. -pub(super) fn create_call_call<'a>( - callee: Expression<'a>, - this: Expression<'a>, - span: Span, - ctx: &mut TraverseCtx<'a>, -) -> Expression<'a> { - let callee = create_member_callee(callee, "call", ctx); - let arguments = ctx.ast.vec1(Argument::from(this)); - ctx.ast.expression_call(span, callee, NONE, arguments, false) -} diff --git a/crates/oxc_transformer/src/lib.rs b/crates/oxc_transformer/src/lib.rs index 27666aaf7..5a64b5960 100644 --- a/crates/oxc_transformer/src/lib.rs +++ b/crates/oxc_transformer/src/lib.rs @@ -19,6 +19,7 @@ mod common; mod compiler_assumptions; mod context; mod options; +mod utils; // Presets: mod es2015; diff --git a/crates/oxc_transformer/src/utils/ast_builder.rs b/crates/oxc_transformer/src/utils/ast_builder.rs new file mode 100644 index 000000000..f356966d2 --- /dev/null +++ b/crates/oxc_transformer/src/utils/ast_builder.rs @@ -0,0 +1,37 @@ +use oxc_ast::{ast::*, NONE}; +use oxc_span::SPAN; +use oxc_traverse::TraverseCtx; + +/// `object` -> `object.call`. +pub(crate) fn create_member_callee<'a>( + object: Expression<'a>, + property: &'static str, + ctx: &mut TraverseCtx<'a>, +) -> Expression<'a> { + let property = ctx.ast.identifier_name(SPAN, Atom::from(property)); + Expression::from(ctx.ast.member_expression_static(SPAN, object, property, false)) +} + +/// `object` -> `object.bind(this)`. +pub(crate) fn create_bind_call<'a>( + callee: Expression<'a>, + this: Expression<'a>, + span: Span, + ctx: &mut TraverseCtx<'a>, +) -> Expression<'a> { + let callee = create_member_callee(callee, "bind", ctx); + let arguments = ctx.ast.vec1(Argument::from(this)); + ctx.ast.expression_call(span, callee, NONE, arguments, false) +} + +/// `object` -> `object.call(...arguments)`. +pub(crate) fn create_call_call<'a>( + callee: Expression<'a>, + this: Expression<'a>, + span: Span, + ctx: &mut TraverseCtx<'a>, +) -> Expression<'a> { + let callee = create_member_callee(callee, "call", ctx); + let arguments = ctx.ast.vec1(Argument::from(this)); + ctx.ast.expression_call(span, callee, NONE, arguments, false) +} diff --git a/crates/oxc_transformer/src/utils/mod.rs b/crates/oxc_transformer/src/utils/mod.rs new file mode 100644 index 000000000..964d1297d --- /dev/null +++ b/crates/oxc_transformer/src/utils/mod.rs @@ -0,0 +1 @@ +pub(crate) mod ast_builder;