Skip to content

Commit c294957

Browse files
committed
Perf investigation
1 parent 6ab6d5f commit c294957

File tree

2 files changed

+102
-13
lines changed

2 files changed

+102
-13
lines changed

src/compiler/factory/nodeFactory.ts

Lines changed: 90 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1109,6 +1109,8 @@ namespace ts {
11091109
);
11101110
setChild(node, node.constraint = constraint);
11111111
setChild(node, node.default = defaultType);
1112+
// extraneous nodes set by the parser
1113+
node.expression = undefined;
11121114
if (!skipTransformationFlags) {
11131115
markTypeScriptOnly(node);
11141116
}
@@ -1144,6 +1146,8 @@ namespace ts {
11441146
);
11451147
setChild(node, node.dotDotDotToken = dotDotDotToken);
11461148
setChild(node, node.questionToken = questionToken);
1149+
// extraneous nodes set by the parser
1150+
node.jsDoc = undefined;
11471151
if (!skipTransformationFlags) {
11481152
if (isThisIdentifier(node.name)) {
11491153
markTypeScriptOnly(node);
@@ -1216,6 +1220,9 @@ namespace ts {
12161220
);
12171221
setChild(node, node.type = type);
12181222
setChild(node, node.questionToken = questionToken);
1223+
// extraneous nodes set by the parser
1224+
node.initializer = undefined;
1225+
node.jsDoc = undefined;
12191226
if (!skipTransformationFlags) {
12201227
markTypeScriptOnly(node);
12211228
}
@@ -1257,6 +1264,8 @@ namespace ts {
12571264
);
12581265
setChild(node, node.questionToken = questionOrExclamationToken !== undefined && questionOrExclamationToken.kind === SyntaxKind.QuestionToken ? questionOrExclamationToken : undefined);
12591266
setChild(node, node.exclamationToken = questionOrExclamationToken !== undefined && questionOrExclamationToken.kind === SyntaxKind.ExclamationToken ? questionOrExclamationToken : undefined);
1267+
// extraneous nodes set by the parser
1268+
node.jsDoc = undefined;
12601269
if (!skipTransformationFlags) {
12611270
if (isComputedPropertyName(node.name) || (hasStaticModifier(node) && node.initializer)) {
12621271
markTypeScriptClassSyntax(node);
@@ -1309,6 +1318,8 @@ namespace ts {
13091318
type
13101319
);
13111320
setChild(node, node.questionToken = questionToken);
1321+
// extraneous nodes set by the parser
1322+
node.jsDoc = undefined;
13121323
if (!skipTransformationFlags) {
13131324
markTypeScriptOnly(node);
13141325
}
@@ -1359,6 +1370,9 @@ namespace ts {
13591370
);
13601371
setChild(node, node.asteriskToken = asteriskToken);
13611372
setChild(node, node.questionToken = questionToken);
1373+
// extraneous nodes set by the parser
1374+
node.exclamationToken = undefined;
1375+
node.jsDoc = undefined;
13621376
if (!skipTransformationFlags) {
13631377
if (questionToken) {
13641378
markTypeScript(node);
@@ -1422,6 +1436,8 @@ namespace ts {
14221436
/*type*/ undefined,
14231437
body
14241438
);
1439+
// extraneous nodes set by the parser
1440+
node.jsDoc = undefined;
14251441
if (!skipTransformationFlags) {
14261442
markES2015(node);
14271443
}
@@ -1463,6 +1479,8 @@ namespace ts {
14631479
type,
14641480
body
14651481
);
1482+
// extraneous nodes set by the parser
1483+
node.jsDoc = undefined;
14661484
return finish(node);
14671485
}
14681486

@@ -1504,6 +1522,8 @@ namespace ts {
15041522
/*type*/ undefined,
15051523
body
15061524
);
1525+
// extraneous nodes set by the parser
1526+
node.jsDoc = undefined;
15071527
return finish(node);
15081528
}
15091529

@@ -1540,6 +1560,8 @@ namespace ts {
15401560
parameters,
15411561
type
15421562
);
1563+
// extraneous nodes set by the parser
1564+
node.jsDoc = undefined;
15431565
if (!skipTransformationFlags) {
15441566
markTypeScriptOnly(node);
15451567
}
@@ -1575,6 +1597,8 @@ namespace ts {
15751597
parameters,
15761598
type
15771599
);
1600+
// extraneous nodes set by the parser
1601+
node.jsDoc = undefined;
15781602
if (!skipTransformationFlags) {
15791603
markTypeScriptOnly(node);
15801604
}
@@ -1611,6 +1635,8 @@ namespace ts {
16111635
parameters,
16121636
type
16131637
);
1638+
// extraneous nodes set by the parser
1639+
node.jsDoc = undefined;
16141640
if (!skipTransformationFlags) {
16151641
markTypeScriptOnly(node);
16161642
}
@@ -1697,6 +1723,8 @@ namespace ts {
16971723
parameters,
16981724
type
16991725
);
1726+
// extraneous nodes set by the parser
1727+
node.jsDoc = undefined;
17001728
if (!skipTransformationFlags) {
17011729
markTypeScriptOnly(node);
17021730
}
@@ -1732,6 +1760,8 @@ namespace ts {
17321760
parameters,
17331761
type
17341762
);
1763+
// extraneous nodes set by the parser
1764+
node.jsDoc = undefined;
17351765
if (!skipTransformationFlags) {
17361766
markTypeScriptOnly(node);
17371767
}
@@ -2165,6 +2195,7 @@ namespace ts {
21652195
function createPropertyAccessExpression(expression: Expression, name: string | Identifier | PrivateIdentifier) {
21662196
const node = createBaseNode<PropertyAccessExpression>(SyntaxKind.PropertyAccessExpression);
21672197
setChild(node, node.expression = parenthesizerRules().parenthesizeLeftSideOfAccess(expression));
2198+
node.questionDotToken = undefined;
21682199
setChild(node, node.name = asName(name));
21692200
if (!skipTransformationFlags) {
21702201
// super method calls require a lexical 'this'
@@ -2217,6 +2248,7 @@ namespace ts {
22172248
function createElementAccessExpression(expression: Expression, index: number | Expression) {
22182249
const node = createBaseNode<ElementAccessExpression>(SyntaxKind.ElementAccessExpression);
22192250
setChild(node, node.expression = parenthesizerRules().parenthesizeLeftSideOfAccess(expression));
2251+
node.questionDotToken = undefined;
22202252
setChild(node, node.argumentExpression = asExpression(index));
22212253
if (!skipTransformationFlags) {
22222254
// super method calls require a lexical 'this'
@@ -2269,6 +2301,7 @@ namespace ts {
22692301
function createCallExpression(expression: Expression, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[] | undefined) {
22702302
const node = createBaseNode<CallExpression>(SyntaxKind.CallExpression);
22712303
setChild(node, node.expression = parenthesizerRules().parenthesizeLeftSideOfAccess(expression));
2304+
node.questionDotToken = undefined;
22722305
setChildren(node, node.typeArguments = asNodeArray(typeArguments));
22732306
setChildren(node, node.arguments = parenthesizerRules().parenthesizeExpressionsOfCommaDelimitedList(createNodeArray(argumentsArray)));
22742307
if (!skipTransformationFlags) {
@@ -2357,6 +2390,8 @@ namespace ts {
23572390
setChild(node, node.tag = parenthesizerRules().parenthesizeLeftSideOfAccess(tag));
23582391
setChildren(node, node.typeArguments = asNodeArray(typeArguments));
23592392
setChild(node, node.template = template);
2393+
// extraneous nodes set by the parser
2394+
node.questionDotToken = undefined;
23602395
if (!skipTransformationFlags) {
23612396
markES2015(node);
23622397
if (typeArguments) {
@@ -2401,6 +2436,8 @@ namespace ts {
24012436
function createParenthesizedExpression(expression: Expression) {
24022437
const node = createBaseNode<ParenthesizedExpression>(SyntaxKind.ParenthesizedExpression);
24032438
setChild(node, node.expression = expression);
2439+
// extraneous nodes set by the parser
2440+
node.jsDoc = undefined;
24042441
return finish(node);
24052442
}
24062443

@@ -2432,6 +2469,8 @@ namespace ts {
24322469
body
24332470
);
24342471
setChild(node, node.asteriskToken = asteriskToken);
2472+
// extraneous nodes set by the parser
2473+
node.jsDoc = undefined;
24352474
if (!skipTransformationFlags) {
24362475
if (typeParameters) {
24372476
markTypeScript(node);
@@ -2493,6 +2532,8 @@ namespace ts {
24932532
parenthesizerRules().parenthesizeConciseBodyOfArrowFunction(body)
24942533
);
24952534
setChild(node, node.equalsGreaterThanToken = equalsGreaterThanToken || createToken(SyntaxKind.EqualsGreaterThanToken));
2535+
// extraneous nodes set by the parser
2536+
node.jsDoc = undefined;
24962537
if (!skipTransformationFlags) {
24972538
if (hasSyntacticModifier(node, ModifierFlags.Async)) markES2017(node);
24982539
markES2015(node);
@@ -2814,6 +2855,8 @@ namespace ts {
28142855
heritageClauses,
28152856
members
28162857
);
2858+
// extraneous nodes set by the parser
2859+
node.jsDoc = undefined;
28172860
if (!skipTransformationFlags) {
28182861
markES2015(node);
28192862
}
@@ -3002,6 +3045,8 @@ namespace ts {
30023045
function createVariableStatement(modifiers: readonly Modifier[] | undefined, declarationList: VariableDeclarationList | readonly VariableDeclaration[]) {
30033046
const node = createBaseDeclaration<VariableStatement>(SyntaxKind.VariableStatement, /*decorators*/ undefined, modifiers);
30043047
setChild(node, node.declarationList = isArray(declarationList) ? createVariableDeclarationList(declarationList) : declarationList);
3048+
// extraneous nodes set by the parser
3049+
node.jsDoc = undefined;
30053050
if (!skipTransformationFlags) {
30063051
if (hasSyntacticModifier(node, ModifierFlags.Ambient)) {
30073052
markTypeScriptOnly(node);
@@ -3027,6 +3072,8 @@ namespace ts {
30273072
function createExpressionStatement(expression: Expression): ExpressionStatement {
30283073
const node = createBaseNode<ExpressionStatement>(SyntaxKind.ExpressionStatement);
30293074
setChild(node, node.expression = parenthesizerRules().parenthesizeExpressionOfExpressionStatement(expression));
3075+
// extraneous nodes set by the parser
3076+
node.jsDoc = undefined;
30303077
return finish(node);
30313078
}
30323079

@@ -3239,6 +3286,8 @@ namespace ts {
32393286
const node = createBaseNode<LabeledStatement>(SyntaxKind.LabeledStatement);
32403287
setChild(node, node.label = asName(label));
32413288
setChild(node, node.statement = asEmbeddedStatement(statement));
3289+
// extraneous nodes set by the parser
3290+
node.jsDoc = undefined;
32423291
return finish(node);
32433292
}
32443293

@@ -3360,6 +3409,8 @@ namespace ts {
33603409
body
33613410
);
33623411
setChild(node, node.asteriskToken = asteriskToken);
3412+
// extraneous nodes set by the parser
3413+
node.jsDoc = undefined;
33633414
if (!skipTransformationFlags) {
33643415
if (!body || hasSyntacticModifier(node, ModifierFlags.Ambient)) {
33653416
markTypeScriptOnly(node);
@@ -3424,6 +3475,8 @@ namespace ts {
34243475
heritageClauses,
34253476
members
34263477
);
3478+
// extraneous nodes set by the parser
3479+
node.jsDoc = undefined;
34273480
if (!skipTransformationFlags) {
34283481
if (hasSyntacticModifier(node, ModifierFlags.Ambient)) {
34293482
markTypeScriptOnly(node);
@@ -3476,6 +3529,8 @@ namespace ts {
34763529
heritageClauses
34773530
);
34783531
setChildren(node, node.members = createNodeArray(members));
3532+
// extraneous nodes set by the parser
3533+
node.jsDoc = undefined;
34793534
if (!skipTransformationFlags) {
34803535
markTypeScriptOnly(node);
34813536
}
@@ -3518,6 +3573,8 @@ namespace ts {
35183573
typeParameters
35193574
);
35203575
setChild(node, node.type = type);
3576+
// extraneous nodes set by the parser
3577+
node.jsDoc = undefined;
35213578
if (!skipTransformationFlags) {
35223579
markTypeScriptOnly(node);
35233580
}
@@ -3556,6 +3613,8 @@ namespace ts {
35563613
name
35573614
);
35583615
setChildren(node, node.members = createNodeArray(members));
3616+
// extraneous nodes set by the parser
3617+
node.jsDoc = undefined;
35593618
if (!skipTransformationFlags) {
35603619
markTypeScript(node);
35613620
}
@@ -3593,6 +3652,8 @@ namespace ts {
35933652
node.flags |= flags & (NodeFlags.Namespace | NodeFlags.NestedNamespace | NodeFlags.GlobalAugmentation);
35943653
setChild(node, node.name = name);
35953654
setChild(node, node.body = body);
3655+
// extraneous nodes set by the parser
3656+
node.jsDoc = undefined;
35963657
if (!skipTransformationFlags) {
35973658
if (hasSyntacticModifier(node, ModifierFlags.Ambient)) {
35983659
markTypeScriptOnly(node);
@@ -3652,6 +3713,10 @@ namespace ts {
36523713
function createNamespaceExportDeclaration(name: string | Identifier) {
36533714
const node = createBaseNode<NamespaceExportDeclaration>(SyntaxKind.NamespaceExportDeclaration);
36543715
setChild(node, node.name = asName(name));
3716+
// extraneous nodes set by the parser
3717+
node.decorators = undefined;
3718+
node.modifiers = undefined;
3719+
node.jsDoc = undefined;
36553720
if (!skipTransformationFlags) {
36563721
markTypeScriptOnly(node);
36573722
}
@@ -3679,6 +3744,8 @@ namespace ts {
36793744
name
36803745
);
36813746
setChild(node, node.moduleReference = moduleReference);
3747+
// extraneous nodes set by the parser
3748+
node.jsDoc = undefined;
36823749
if (!skipTransformationFlags) {
36833750
if (moduleReference.kind !== SyntaxKind.ExternalModuleReference) markTypeScript(node);
36843751
}
@@ -3715,6 +3782,8 @@ namespace ts {
37153782
);
37163783
setChild(node, node.importClause = importClause);
37173784
setChild(node, node.moduleSpecifier = moduleSpecifier);
3785+
// extraneous nodes set by the parser
3786+
node.jsDoc = undefined;
37183787
return finish(node);
37193788
}
37203789

@@ -3834,6 +3903,8 @@ namespace ts {
38343903
setChild(node, node.expression = isExportEquals
38353904
? parenthesizerRules().parenthesizeRightSideOfBinary(SyntaxKind.EqualsToken, /*leftSide*/ undefined, expression)
38363905
: parenthesizerRules().parenthesizeExpressionOfExportDefault(expression));
3906+
// extraneous nodes set by the parser
3907+
node.jsDoc = undefined;
38373908
return finish(node);
38383909
}
38393910

@@ -3867,6 +3938,8 @@ namespace ts {
38673938
node.isTypeOnly = isTypeOnly;
38683939
setChild(node, node.exportClause = exportClause);
38693940
setChild(node, node.moduleSpecifier = moduleSpecifier);
3941+
// extraneous nodes set by the parser
3942+
node.jsDoc = undefined;
38703943
return finish(node);
38713944
}
38723945

@@ -4011,6 +4084,8 @@ namespace ts {
40114084
parameters,
40124085
type
40134086
);
4087+
// extraneous nodes set by the parser
4088+
node.jsDoc = undefined;
40144089
return finishJSDoc(node);
40154090
}
40164091

@@ -4633,8 +4708,13 @@ namespace ts {
46334708
function createPropertyAssignment(name: string | PropertyName, initializer: Expression) {
46344709
const node = createBaseNode<PropertyAssignment>(SyntaxKind.PropertyAssignment);
46354710
setChild(node, node.name = asName(name));
4636-
setChild(node, node.questionToken = undefined);
46374711
setChild(node, node.initializer = parenthesizerRules().parenthesizeExpressionForDisallowedComma(initializer));
4712+
// extraneous nodes set by the parser
4713+
node.decorators = undefined;
4714+
node.modifiers = undefined;
4715+
node.questionToken = undefined;
4716+
node.exclamationToken = undefined;
4717+
node.jsDoc = undefined;
46384718
return finish(node);
46394719
}
46404720

@@ -4666,6 +4746,11 @@ namespace ts {
46664746
setChild(node, node.objectAssignmentInitializer = objectAssignmentInitializer !== undefined
46674747
? parenthesizerRules().parenthesizeExpressionForDisallowedComma(objectAssignmentInitializer)
46684748
: undefined);
4749+
// extraneous nodes set by the parser
4750+
node.equalsToken = undefined;
4751+
node.questionToken = undefined;
4752+
node.exclamationToken = undefined;
4753+
node.jsDoc = undefined;
46694754
if (!skipTransformationFlags) {
46704755
markES2015(node);
46714756
}
@@ -4694,6 +4779,8 @@ namespace ts {
46944779
function createSpreadAssignment(expression: Expression) {
46954780
const node = createBaseNode<SpreadAssignment>(SyntaxKind.SpreadAssignment);
46964781
setChild(node, node.expression = parenthesizerRules().parenthesizeExpressionForDisallowedComma(expression));
4782+
// extraneous nodes set by the parser
4783+
node.jsDoc = undefined;
46974784
if (!skipTransformationFlags) {
46984785
markES2018(node);
46994786
markObjectRestOrSpread(node);
@@ -4717,6 +4804,8 @@ namespace ts {
47174804
const node = createBaseNode<EnumMember>(SyntaxKind.EnumMember);
47184805
setChild(node, node.name = asName(name));
47194806
setChild(node, node.initializer = initializer && parenthesizerRules().parenthesizeExpressionForDisallowedComma(initializer));
4807+
// extraneous nodes set by the parser
4808+
node.jsDoc = undefined;
47204809
if (!skipTransformationFlags) {
47214810
markTypeScript(node);
47224811
}

0 commit comments

Comments
 (0)