From 39a05030d7544567b00ff267f0db39f98cfecbd9 Mon Sep 17 00:00:00 2001 From: Boshen Date: Tue, 21 Feb 2023 12:43:52 +0800 Subject: [PATCH] refactor(ast,parser): box FormalParameters --- crates/oxc_ast/src/ast/js.rs | 4 ++-- crates/oxc_ast/src/ast/ts.rs | 10 +++++----- crates/oxc_ast/src/ast_builder.rs | 18 +++++++++--------- crates/oxc_parser/src/js/function.rs | 6 +++--- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/crates/oxc_ast/src/ast/js.rs b/crates/oxc_ast/src/ast/js.rs index 265cfab2e..5a95482c7 100644 --- a/crates/oxc_ast/src/ast/js.rs +++ b/crates/oxc_ast/src/ast/js.rs @@ -1191,7 +1191,7 @@ pub struct Function<'a> { pub expression: bool, pub generator: bool, pub r#async: bool, - pub params: FormalParameters<'a>, + pub params: Box<'a, FormalParameters<'a>>, #[serde(skip_serializing_if = "Option::is_none")] pub body: Option>>, pub declare: bool, @@ -1295,7 +1295,7 @@ pub struct ArrowExpression<'a> { pub expression: bool, pub generator: bool, pub r#async: bool, - pub params: FormalParameters<'a>, // UniqueFormalParameters in spec + pub params: Box<'a, FormalParameters<'a>>, // UniqueFormalParameters in spec pub body: Box<'a, FunctionBody<'a>>, pub type_parameters: Option>>, diff --git a/crates/oxc_ast/src/ast/ts.rs b/crates/oxc_ast/src/ast/ts.rs index e37ffa13a..9466949b4 100644 --- a/crates/oxc_ast/src/ast/ts.rs +++ b/crates/oxc_ast/src/ast/ts.rs @@ -550,7 +550,7 @@ pub struct TSIndexSignature<'a> { pub struct TSCallSignatureDeclaration<'a> { #[serde(flatten)] pub node: Node, - pub params: FormalParameters<'a>, + pub params: Box<'a, FormalParameters<'a>>, #[serde(skip_serializing_if = "Option::is_none")] pub return_type: Option>, #[serde(skip_serializing_if = "Option::is_none")] @@ -575,7 +575,7 @@ pub struct TSMethodSignature<'a> { #[serde(skip_serializing_if = "is_false")] pub optional: bool, pub kind: TSMethodSignatureKind, - pub params: FormalParameters<'a>, + pub params: Box<'a, FormalParameters<'a>>, #[serde(skip_serializing_if = "Option::is_none")] pub return_type: Option>, #[serde(skip_serializing_if = "Option::is_none")] @@ -587,7 +587,7 @@ pub struct TSMethodSignature<'a> { pub struct TSConstructSignatureDeclaration<'a> { #[serde(flatten)] pub node: Node, - pub params: FormalParameters<'a>, + pub params: Box<'a, FormalParameters<'a>>, #[serde(skip_serializing_if = "Option::is_none")] pub return_type: Option>, #[serde(skip_serializing_if = "Option::is_none")] @@ -714,7 +714,7 @@ pub struct TSImportType<'a> { pub struct TSFunctionType<'a> { #[serde(flatten)] pub node: Node, - pub params: FormalParameters<'a>, + pub params: Box<'a, FormalParameters<'a>>, pub return_type: TSTypeAnnotation<'a>, #[serde(skip_serializing_if = "Option::is_none")] pub type_parameters: Option>>, @@ -726,7 +726,7 @@ pub struct TSConstructorType<'a> { #[serde(flatten)] pub node: Node, pub r#abstract: bool, - pub params: FormalParameters<'a>, + pub params: Box<'a, FormalParameters<'a>>, pub return_type: TSTypeAnnotation<'a>, #[serde(skip_serializing_if = "Option::is_none")] pub type_parameters: Option>>, diff --git a/crates/oxc_ast/src/ast_builder.rs b/crates/oxc_ast/src/ast_builder.rs index fb9f8c7c9..b07ec7bb4 100644 --- a/crates/oxc_ast/src/ast_builder.rs +++ b/crates/oxc_ast/src/ast_builder.rs @@ -349,7 +349,7 @@ impl<'a> AstBuilder<'a> { expression: bool, generator: bool, r#async: bool, - params: FormalParameters<'a>, + params: Box<'a, FormalParameters<'a>>, body: Box<'a, FunctionBody<'a>>, type_parameters: Option>>, return_type: Option>, @@ -680,8 +680,8 @@ impl<'a> AstBuilder<'a> { node: Node, kind: FormalParameterKind, items: Vec<'a, FormalParameter<'a>>, - ) -> FormalParameters<'a> { - FormalParameters { node, kind, items } + ) -> Box<'a, FormalParameters<'a>> { + self.alloc(FormalParameters { node, kind, items }) } #[must_use] @@ -708,7 +708,7 @@ impl<'a> AstBuilder<'a> { expression: bool, generator: bool, r#async: bool, - params: FormalParameters<'a>, + params: Box<'a, FormalParameters<'a>>, body: Option>>, type_parameters: Option>>, return_type: Option>, @@ -1324,7 +1324,7 @@ impl<'a> AstBuilder<'a> { pub fn ts_call_signature_declaration( &self, node: Node, - params: FormalParameters<'a>, + params: Box<'a, FormalParameters<'a>>, return_type: Option>, type_parameters: Option>>, ) -> TSSignature<'a> { @@ -1341,7 +1341,7 @@ impl<'a> AstBuilder<'a> { pub fn ts_construct_signature_declaration( &self, node: Node, - params: FormalParameters<'a>, + params: Box<'a, FormalParameters<'a>>, return_type: Option>, type_parameters: Option>>, ) -> TSSignature<'a> { @@ -1362,7 +1362,7 @@ impl<'a> AstBuilder<'a> { computed: bool, optional: bool, kind: TSMethodSignatureKind, - params: FormalParameters<'a>, + params: Box<'a, FormalParameters<'a>>, return_type: Option>, type_parameters: Option>>, ) -> TSSignature<'a> { @@ -1668,7 +1668,7 @@ impl<'a> AstBuilder<'a> { &self, node: Node, r#abstract: bool, - params: FormalParameters<'a>, + params: Box<'a, FormalParameters<'a>>, return_type: TSTypeAnnotation<'a>, type_parameters: Option>>, ) -> TSType<'a> { @@ -1686,7 +1686,7 @@ impl<'a> AstBuilder<'a> { pub fn ts_function_type( &self, node: Node, - params: FormalParameters<'a>, + params: Box<'a, FormalParameters<'a>>, return_type: TSTypeAnnotation<'a>, type_parameters: Option>>, ) -> TSType<'a> { diff --git a/crates/oxc_parser/src/js/function.rs b/crates/oxc_parser/src/js/function.rs index 947ea5547..48d604773 100644 --- a/crates/oxc_parser/src/js/function.rs +++ b/crates/oxc_parser/src/js/function.rs @@ -13,7 +13,7 @@ use crate::Parser; type ArrowFunctionHead<'a> = ( Option>>, - FormalParameters<'a>, + Box<'a, FormalParameters<'a>>, Option>, bool, Node, @@ -82,7 +82,7 @@ impl<'a> Parser<'a> { pub fn parse_formal_parameters( &mut self, params_kind: FormalParameterKind, - ) -> Result> { + ) -> Result>> { let node = self.start_node(); let elements = FormalParameterList::parse(self)?.elements; Ok(self.ast.formal_parameters(self.end_node(node), params_kind, elements)) @@ -448,7 +448,7 @@ impl<'a> Parser<'a> { &mut self, node: Node, type_parameters: Option>>, - params: FormalParameters<'a>, + params: Box<'a, FormalParameters<'a>>, return_type: Option>, r#async: bool, ) -> Result> {