From 0e9b69563440a2fb818723b2a867893ac14ad82a Mon Sep 17 00:00:00 2001 From: Dunqing <29533304+Dunqing@users.noreply.github.com> Date: Mon, 21 Oct 2024 03:03:32 +0000 Subject: [PATCH] refactor(ast): change `plain_function` to accept `FunctionBody` as a required parameter (#6709) The `plain_function` method is used to construct js-only AST, and the `FunctionBody` is never empty in js --- crates/oxc_ast/src/ast_builder_impl.rs | 18 ++++++++++++++---- .../src/typescript/namespace.rs | 9 ++------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/crates/oxc_ast/src/ast_builder_impl.rs b/crates/oxc_ast/src/ast_builder_impl.rs index 1c4e7e1aa..86101045c 100644 --- a/crates/oxc_ast/src/ast_builder_impl.rs +++ b/crates/oxc_ast/src/ast_builder_impl.rs @@ -176,11 +176,21 @@ impl<'a> AstBuilder<'a> { span: Span, id: Option>, params: FormalParameters<'a>, - body: Option>, + body: FunctionBody<'a>, ) -> Box<'a, Function<'a>> { - self.alloc( - self.function(r#type, span, id, false, false, false, NONE, NONE, params, NONE, body), - ) + self.alloc(self.function( + r#type, + span, + id, + false, + false, + false, + NONE, + NONE, + params, + NONE, + Some(body), + )) } /* ---------- Modules ---------- */ diff --git a/crates/oxc_transformer/src/typescript/namespace.rs b/crates/oxc_transformer/src/typescript/namespace.rs index d142b09d9..4153f255a 100644 --- a/crates/oxc_transformer/src/typescript/namespace.rs +++ b/crates/oxc_transformer/src/typescript/namespace.rs @@ -336,13 +336,8 @@ impl<'a, 'ctx> TypeScriptNamespace<'a, 'ctx> { let items = ctx.ast.vec1(ctx.ast.plain_formal_parameter(SPAN, pattern)); ctx.ast.formal_parameters(SPAN, FormalParameterKind::FormalParameter, items, NONE) }; - let function = ctx.ast.plain_function( - FunctionType::FunctionExpression, - SPAN, - None, - params, - Some(body), - ); + let function = + ctx.ast.plain_function(FunctionType::FunctionExpression, SPAN, None, params, body); function.scope_id.set(Some(scope_id)); *ctx.scopes_mut().get_flags_mut(scope_id) = ScopeFlags::Function | ScopeFlags::StrictMode;