Skip to content

Commit e09e343

Browse files
authored
Pool more top nodes (#1281)
1 parent 0f8773f commit e09e343

File tree

1 file changed

+20
-10
lines changed

1 file changed

+20
-10
lines changed

internal/ast/ast.go

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -53,23 +53,33 @@ type NodeFactory struct {
5353
blockPool core.Pool[Block]
5454
callExpressionPool core.Pool[CallExpression]
5555
expressionStatementPool core.Pool[ExpressionStatement]
56+
functionDeclarationPool core.Pool[FunctionDeclaration]
57+
functionTypeNodePool core.Pool[FunctionTypeNode]
5658
identifierPool core.Pool[Identifier]
5759
ifStatementPool core.Pool[IfStatement]
60+
interfaceDeclarationPool core.Pool[InterfaceDeclaration]
5861
jsdocPool core.Pool[JSDoc]
5962
jsdocTextPool core.Pool[JSDocText]
63+
keywordExpressionPool core.Pool[KeywordExpression]
6064
keywordTypeNodePool core.Pool[KeywordTypeNode]
6165
literalTypeNodePool core.Pool[LiteralTypeNode]
66+
methodSignatureDeclarationPool core.Pool[MethodSignatureDeclaration]
6267
modifierListPool core.Pool[ModifierList]
6368
nodeListPool core.Pool[NodeList]
69+
numericLiteralPool core.Pool[NumericLiteral]
6470
parameterDeclarationPool core.Pool[ParameterDeclaration]
6571
parenthesizedExpressionPool core.Pool[ParenthesizedExpression]
72+
parenthesizedTypeNodePool core.Pool[ParenthesizedTypeNode]
73+
prefixUnaryExpressionPool core.Pool[PrefixUnaryExpression]
6674
propertyAccessExpressionPool core.Pool[PropertyAccessExpression]
6775
propertyAssignmentPool core.Pool[PropertyAssignment]
6876
propertySignatureDeclarationPool core.Pool[PropertySignatureDeclaration]
6977
returnStatementPool core.Pool[ReturnStatement]
7078
stringLiteralPool core.Pool[StringLiteral]
7179
tokenPool core.Pool[Token]
80+
typeLiteralNodePool core.Pool[TypeLiteralNode]
7281
typeReferenceNodePool core.Pool[TypeReferenceNode]
82+
unionTypeNodePool core.Pool[UnionTypeNode]
7383
variableDeclarationListPool core.Pool[VariableDeclarationList]
7484
variableDeclarationPool core.Pool[VariableDeclaration]
7585
variableStatementPool core.Pool[VariableStatement]
@@ -3466,7 +3476,7 @@ type FunctionDeclaration struct {
34663476
}
34673477

34683478
func (f *NodeFactory) NewFunctionDeclaration(modifiers *ModifierList, asteriskToken *TokenNode, name *IdentifierNode, typeParameters *NodeList, parameters *NodeList, returnType *TypeNode, body *BlockNode) *Node {
3469-
data := &FunctionDeclaration{}
3479+
data := f.functionDeclarationPool.New()
34703480
data.modifiers = modifiers
34713481
data.AsteriskToken = asteriskToken
34723482
data.name = name
@@ -3722,7 +3732,7 @@ type InterfaceDeclaration struct {
37223732
}
37233733

37243734
func (f *NodeFactory) NewInterfaceDeclaration(modifiers *ModifierList, name *IdentifierNode, typeParameters *NodeList, heritageClauses *NodeList, members *NodeList) *Node {
3725-
data := &InterfaceDeclaration{}
3735+
data := f.interfaceDeclarationPool.New()
37263736
data.modifiers = modifiers
37273737
data.name = name
37283738
data.TypeParameters = typeParameters
@@ -5124,7 +5134,7 @@ type MethodSignatureDeclaration struct {
51245134
}
51255135

51265136
func (f *NodeFactory) NewMethodSignatureDeclaration(modifiers *ModifierList, name *PropertyName, postfixToken *TokenNode, typeParameters *NodeList, parameters *NodeList, returnType *TypeNode) *Node {
5127-
data := &MethodSignatureDeclaration{}
5137+
data := f.methodSignatureDeclarationPool.New()
51285138
data.modifiers = modifiers
51295139
data.name = name
51305140
data.PostfixToken = postfixToken
@@ -5433,7 +5443,7 @@ type KeywordExpression struct {
54335443
}
54345444

54355445
func (f *NodeFactory) NewKeywordExpression(kind Kind) *Node {
5436-
return f.newNode(kind, &KeywordExpression{})
5446+
return f.newNode(kind, f.keywordExpressionPool.New())
54375447
}
54385448

54395449
func (node *KeywordExpression) Clone(f NodeFactoryCoercible) *Node {
@@ -5489,7 +5499,7 @@ type NumericLiteral struct {
54895499
}
54905500

54915501
func (f *NodeFactory) NewNumericLiteral(text string) *Node {
5492-
data := &NumericLiteral{}
5502+
data := f.numericLiteralPool.New()
54935503
data.Text = text
54945504
f.textCount++
54955505
return f.newNode(KindNumericLiteral, data)
@@ -5638,7 +5648,7 @@ type PrefixUnaryExpression struct {
56385648
}
56395649

56405650
func (f *NodeFactory) NewPrefixUnaryExpression(operator Kind, operand *Expression) *Node {
5641-
data := &PrefixUnaryExpression{}
5651+
data := f.prefixUnaryExpressionPool.New()
56425652
data.Operator = operator
56435653
data.Operand = operand
56445654
return f.newNode(KindPrefixUnaryExpression, data)
@@ -7035,7 +7045,7 @@ func (f *NodeFactory) UpdateUnionTypeNode(node *UnionTypeNode, types *TypeList)
70357045
}
70367046

70377047
func (f *NodeFactory) NewUnionTypeNode(types *NodeList) *Node {
7038-
data := &UnionTypeNode{}
7048+
data := f.unionTypeNodePool.New()
70397049
data.Types = types
70407050
return f.newNode(KindUnionType, data)
70417051
}
@@ -7718,7 +7728,7 @@ type TypeLiteralNode struct {
77187728
}
77197729

77207730
func (f *NodeFactory) NewTypeLiteralNode(members *NodeList) *Node {
7721-
data := &TypeLiteralNode{}
7731+
data := f.typeLiteralNodePool.New()
77227732
data.Members = members
77237733
return f.newNode(KindTypeLiteral, data)
77247734
}
@@ -7909,7 +7919,7 @@ type ParenthesizedTypeNode struct {
79097919
}
79107920

79117921
func (f *NodeFactory) NewParenthesizedTypeNode(typeNode *TypeNode) *Node {
7912-
data := &ParenthesizedTypeNode{}
7922+
data := f.parenthesizedTypeNodePool.New()
79137923
data.Type = typeNode
79147924
return f.newNode(KindParenthesizedType, data)
79157925
}
@@ -7957,7 +7967,7 @@ type FunctionTypeNode struct {
79577967
}
79587968

79597969
func (f *NodeFactory) NewFunctionTypeNode(typeParameters *NodeList, parameters *NodeList, returnType *TypeNode) *Node {
7960-
data := &FunctionTypeNode{}
7970+
data := f.functionTypeNodePool.New()
79617971
data.TypeParameters = typeParameters
79627972
data.Parameters = parameters
79637973
data.Type = returnType

0 commit comments

Comments
 (0)