Skip to content

Commit faa7600

Browse files
filipesilvahansl
authored andcommitted
fix(@angular-devkit/build-optimizer): don't search for pure top-level functions inside arrow functions
Partially address angular/devkit#816.
1 parent c776abc commit faa7600

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

Diff for: packages/angular_devkit/build_optimizer/src/transforms/prefix-functions.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,12 @@ export function findTopLevelFunctions(parentNode: ts.Node): Set<ts.Node> {
5353
const topLevelFunctions = new Set<ts.Node>();
5454

5555
function cb(node: ts.Node) {
56-
// Stop recursing into this branch if it's a function expression or declaration, or a class.
56+
// Stop recursing into this branch if it's a function expression or declaration, a class, or
57+
// a arrow function (lambda).
5758
if (ts.isFunctionDeclaration(node)
5859
|| ts.isFunctionExpression(node)
5960
|| ts.isClassDeclaration(node)
61+
|| ts.isArrowFunction(node)
6062
) {
6163
return;
6264
}

Diff for: packages/angular_devkit/build_optimizer/src/transforms/prefix-functions_spec.ts

+19
Original file line numberDiff line numberDiff line change
@@ -143,5 +143,24 @@ describe('prefix-functions', () => {
143143

144144
expect(tags.oneLine`${transform(input)}`).toEqual(tags.oneLine`${output}`);
145145
});
146+
147+
it('doesn\'t add comment when inside arrow function', () => {
148+
const input = tags.stripIndent`
149+
export const subscribeToArray = (array) => (subscriber) => {
150+
for (let i = 0, len = array.length; i < len && !subscriber.closed; i++) {
151+
subscriber.next(array[i]);
152+
}
153+
if (!subscriber.closed) {
154+
subscriber.complete();
155+
}
156+
};
157+
`;
158+
const output = tags.stripIndent`
159+
${emptyImportsComment}
160+
${input}
161+
`;
162+
163+
expect(tags.oneLine`${transform(input)}`).toEqual(tags.oneLine`${output}`);
164+
});
146165
});
147166
});

0 commit comments

Comments
 (0)