refactor(ast,parser): box FormalParameters

This commit is contained in:
Boshen 2023-02-21 12:43:52 +08:00
parent d57ab2f088
commit 39a05030d7
4 changed files with 19 additions and 19 deletions

View file

@ -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<Box<'a, FunctionBody<'a>>>,
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<Box<'a, TSTypeParameterDeclaration<'a>>>,

View file

@ -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<TSTypeAnnotation<'a>>,
#[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<TSTypeAnnotation<'a>>,
#[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<TSTypeAnnotation<'a>>,
#[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<Box<'a, TSTypeParameterDeclaration<'a>>>,
@ -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<Box<'a, TSTypeParameterDeclaration<'a>>>,

View file

@ -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<Box<'a, TSTypeParameterDeclaration<'a>>>,
return_type: Option<TSTypeAnnotation<'a>>,
@ -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<Box<'a, FunctionBody<'a>>>,
type_parameters: Option<Box<'a, TSTypeParameterDeclaration<'a>>>,
return_type: Option<TSTypeAnnotation<'a>>,
@ -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<TSTypeAnnotation<'a>>,
type_parameters: Option<Box<'a, TSTypeParameterDeclaration<'a>>>,
) -> 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<TSTypeAnnotation<'a>>,
type_parameters: Option<Box<'a, TSTypeParameterDeclaration<'a>>>,
) -> 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<TSTypeAnnotation<'a>>,
type_parameters: Option<Box<'a, TSTypeParameterDeclaration<'a>>>,
) -> 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<Box<'a, TSTypeParameterDeclaration<'a>>>,
) -> 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<Box<'a, TSTypeParameterDeclaration<'a>>>,
) -> TSType<'a> {

View file

@ -13,7 +13,7 @@ use crate::Parser;
type ArrowFunctionHead<'a> = (
Option<Box<'a, TSTypeParameterDeclaration<'a>>>,
FormalParameters<'a>,
Box<'a, FormalParameters<'a>>,
Option<TSTypeAnnotation<'a>>,
bool,
Node,
@ -82,7 +82,7 @@ impl<'a> Parser<'a> {
pub fn parse_formal_parameters(
&mut self,
params_kind: FormalParameterKind,
) -> Result<FormalParameters<'a>> {
) -> Result<Box<'a, FormalParameters<'a>>> {
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<Box<'a, TSTypeParameterDeclaration<'a>>>,
params: FormalParameters<'a>,
params: Box<'a, FormalParameters<'a>>,
return_type: Option<TSTypeAnnotation<'a>>,
r#async: bool,
) -> Result<Expression<'a>> {