Skip to content

Commit 7df3fda

Browse files
committed
Refactor createFunctionExpresson
1 parent 4284a74 commit 7df3fda

File tree

8 files changed

+28
-11
lines changed

8 files changed

+28
-11
lines changed

src/compiler/factory.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -524,9 +524,9 @@ namespace ts {
524524
return node;
525525
}
526526

527-
export function createFunctionExpression(asteriskToken: Node, name: string | Identifier, typeParameters: TypeParameterDeclaration[], parameters: ParameterDeclaration[], type: TypeNode, body: Block, location?: TextRange, flags?: NodeFlags) {
527+
export function createFunctionExpression(modifiers: Modifier[], asteriskToken: Node, name: string | Identifier, typeParameters: TypeParameterDeclaration[], parameters: ParameterDeclaration[], type: TypeNode, body: Block, location?: TextRange, flags?: NodeFlags) {
528528
const node = <FunctionExpression>createNode(SyntaxKind.FunctionExpression, location, flags);
529-
node.modifiers = undefined;
529+
node.modifiers = modifiers ? createNodeArray(modifiers) : undefined;
530530
node.asteriskToken = asteriskToken;
531531
node.name = typeof name === "string" ? createIdentifier(name) : name;
532532
node.typeParameters = typeParameters ? createNodeArray(typeParameters) : undefined;
@@ -536,9 +536,9 @@ namespace ts {
536536
return node;
537537
}
538538

539-
export function updateFunctionExpression(node: FunctionExpression, name: Identifier, typeParameters: TypeParameterDeclaration[], parameters: ParameterDeclaration[], type: TypeNode, body: Block) {
540-
if (node.name !== name || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type || node.body !== body) {
541-
return updateNode(createFunctionExpression(node.asteriskToken, name, typeParameters, parameters, type, body, /*location*/ node, node.flags), node);
539+
export function updateFunctionExpression(node: FunctionExpression, modifiers: Modifier[], name: Identifier, typeParameters: TypeParameterDeclaration[], parameters: ParameterDeclaration[], type: TypeNode, body: Block) {
540+
if (node.name !== name || node.modifiers !== modifiers || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type || node.body !== body) {
541+
return updateNode(createFunctionExpression(modifiers, node.asteriskToken, name, typeParameters, parameters, type, body, /*location*/ node, node.flags), node);
542542
}
543543
return node;
544544
}
@@ -1735,6 +1735,7 @@ namespace ts {
17351735

17361736
export function createAwaiterHelper(externalHelpersModuleName: Identifier | undefined, hasLexicalArguments: boolean, promiseConstructor: EntityName | Expression, body: Block) {
17371737
const generatorFunc = createFunctionExpression(
1738+
/*modifiers*/ undefined,
17381739
createNode(SyntaxKind.AsteriskToken),
17391740
/*name*/ undefined,
17401741
/*typeParameters*/ undefined,
@@ -1908,6 +1909,7 @@ namespace ts {
19081909
createCall(
19091910
createParen(
19101911
createFunctionExpression(
1912+
/*modifiers*/ undefined,
19111913
/*asteriskToken*/ undefined,
19121914
/*name*/ undefined,
19131915
/*typeParameters*/ undefined,
@@ -2089,6 +2091,7 @@ namespace ts {
20892091
const properties: ObjectLiteralElementLike[] = [];
20902092
if (getAccessor) {
20912093
const getterFunction = createFunctionExpression(
2094+
getAccessor.modifiers,
20922095
/*asteriskToken*/ undefined,
20932096
/*name*/ undefined,
20942097
/*typeParameters*/ undefined,
@@ -2104,6 +2107,7 @@ namespace ts {
21042107

21052108
if (setAccessor) {
21062109
const setterFunction = createFunctionExpression(
2110+
setAccessor.modifiers,
21072111
/*asteriskToken*/ undefined,
21082112
/*name*/ undefined,
21092113
/*typeParameters*/ undefined,
@@ -2170,6 +2174,7 @@ namespace ts {
21702174
createMemberAccessForPropertyName(receiver, method.name, /*location*/ method.name),
21712175
setOriginalNode(
21722176
createFunctionExpression(
2177+
method.modifiers,
21732178
method.asteriskToken,
21742179
/*name*/ undefined,
21752180
/*typeParameters*/ undefined,
@@ -2909,4 +2914,4 @@ namespace ts {
29092914
function tryGetModuleNameFromDeclaration(declaration: ImportEqualsDeclaration | ImportDeclaration | ExportDeclaration, host: EmitHost, resolver: EmitResolver, compilerOptions: CompilerOptions) {
29102915
return tryGetModuleNameFromFile(resolver.getExternalModuleFileFromDeclaration(declaration), host, compilerOptions);
29112916
}
2912-
}
2917+
}

src/compiler/transformers/es2017.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@ namespace ts {
202202
}
203203

204204
const func = createFunctionExpression(
205+
/*modifiers*/ undefined,
205206
node.asteriskToken,
206207
node.name,
207208
/*typeParameters*/ undefined,
@@ -211,8 +212,6 @@ namespace ts {
211212
/*location*/ node
212213
);
213214

214-
node.modifiers = visitNodes(node.modifiers, visitor, isModifier);
215-
216215
setOriginalNode(func, node);
217216

218217
return func;

src/compiler/transformers/es6.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -681,6 +681,7 @@ namespace ts {
681681

682682
const extendsClauseElement = getClassExtendsHeritageClauseElement(node);
683683
const classFunction = createFunctionExpression(
684+
/*modifiers*/ undefined,
684685
/*asteriskToken*/ undefined,
685686
/*name*/ undefined,
686687
/*typeParameters*/ undefined,
@@ -1509,6 +1510,7 @@ namespace ts {
15091510

15101511
const expression = setOriginalNode(
15111512
createFunctionExpression(
1513+
/*modifiers*/ undefined,
15121514
node.asteriskToken,
15131515
name,
15141516
/*typeParameters*/ undefined,
@@ -2240,6 +2242,7 @@ namespace ts {
22402242
/*type*/ undefined,
22412243
setEmitFlags(
22422244
createFunctionExpression(
2245+
/*modifiers*/ undefined,
22432246
isAsyncBlockContainingAwait ? createToken(SyntaxKind.AsteriskToken) : undefined,
22442247
/*name*/ undefined,
22452248
/*typeParameters*/ undefined,
@@ -3256,4 +3259,4 @@ namespace ts {
32563259
return isIdentifier(expression) && expression === parameter.name;
32573260
}
32583261
}
3259-
}
3262+
}

src/compiler/transformers/generators.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -496,6 +496,7 @@ namespace ts {
496496
if (node.asteriskToken && getEmitFlags(node) & EmitFlags.AsyncFunctionBody) {
497497
node = setOriginalNode(
498498
createFunctionExpression(
499+
/*modifiers*/ undefined,
499500
/*asteriskToken*/ undefined,
500501
node.name,
501502
/*typeParameters*/ undefined,
@@ -2591,6 +2592,7 @@ namespace ts {
25912592
createThis(),
25922593
setEmitFlags(
25932594
createFunctionExpression(
2595+
/*modifiers*/ undefined,
25942596
/*asteriskToken*/ undefined,
25952597
/*name*/ undefined,
25962598
/*typeParameters*/ undefined,
@@ -3080,4 +3082,4 @@ namespace ts {
30803082
);
30813083
}
30823084
}
3083-
}
3085+
}

src/compiler/transformers/module/module.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,7 @@ namespace ts {
179179
//
180180
// function (require, exports, module1, module2) ...
181181
createFunctionExpression(
182+
/*modifiers*/ undefined,
182183
/*asteriskToken*/ undefined,
183184
/*name*/ undefined,
184185
/*typeParameters*/ undefined,

src/compiler/transformers/module/system.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ namespace ts {
110110
const moduleName = tryGetModuleNameFromFile(node, host, compilerOptions);
111111
const dependencies = createArrayLiteral(map(dependencyGroups, getNameOfDependencyGroup));
112112
const body = createFunctionExpression(
113+
/*modifiers*/ undefined,
113114
/*asteriskToken*/ undefined,
114115
/*name*/ undefined,
115116
/*typeParameters*/ undefined,
@@ -244,6 +245,7 @@ namespace ts {
244245
),
245246
createPropertyAssignment("execute",
246247
createFunctionExpression(
248+
/*modifiers*/ undefined,
247249
/*asteriskToken*/ undefined,
248250
/*name*/ undefined,
249251
/*typeParameters*/ undefined,
@@ -430,6 +432,7 @@ namespace ts {
430432

431433
setters.push(
432434
createFunctionExpression(
435+
/*modifiers*/ undefined,
433436
/*asteriskToken*/ undefined,
434437
/*name*/ undefined,
435438
/*typeParameters*/ undefined,

src/compiler/transformers/ts.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2197,6 +2197,7 @@ namespace ts {
21972197
}
21982198

21992199
const func = createFunctionExpression(
2200+
visitNodes(node.modifiers, visitor, isModifier),
22002201
node.asteriskToken,
22012202
node.name,
22022203
/*typeParameters*/ undefined,
@@ -2477,6 +2478,7 @@ namespace ts {
24772478
const enumStatement = createStatement(
24782479
createCall(
24792480
createFunctionExpression(
2481+
/*modifiers*/ undefined,
24802482
/*asteriskToken*/ undefined,
24812483
/*name*/ undefined,
24822484
/*typeParameters*/ undefined,
@@ -2748,6 +2750,7 @@ namespace ts {
27482750
const moduleStatement = createStatement(
27492751
createCall(
27502752
createFunctionExpression(
2753+
/*modifiers*/ undefined,
27512754
/*asteriskToken*/ undefined,
27522755
/*name*/ undefined,
27532756
/*typeParameters*/ undefined,

src/compiler/visitor.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -807,6 +807,7 @@ namespace ts {
807807

808808
case SyntaxKind.FunctionExpression:
809809
return updateFunctionExpression(<FunctionExpression>node,
810+
visitNodes((<FunctionExpression>node).modifiers, visitor, isModifier),
810811
visitNode((<FunctionExpression>node).name, visitor, isPropertyName),
811812
visitNodes((<FunctionExpression>node).typeParameters, visitor, isTypeParameter),
812813
(context.startLexicalEnvironment(), visitNodes((<FunctionExpression>node).parameters, visitor, isParameter)),
@@ -1357,4 +1358,4 @@ namespace ts {
13571358
}
13581359
}
13591360
}
1360-
}
1361+
}

0 commit comments

Comments
 (0)