sanex3339
2017-12-03 17:32:14 +03:00
9 changed files with 137 additions and 9061 deletions
+1
View File
@@ -26,6 +26,7 @@ export enum NodeType {
Program = 'Program',
Property = 'Property',
ReturnStatement = 'ReturnStatement',
Super = 'Super',
SwitchCase = 'SwitchCase',
SwitchStatement = 'SwitchStatement',
TemplateLiteral = 'TemplateLiteral',
@@ -73,6 +73,17 @@ export class DeadCodeInjectionTransformer extends AbstractNodeTransformer {
this.transformersRunner = transformersRunner;
}
/**
* @param {Node} node
* @returns {boolean}
*/
private static isValidBlockStatementNode (node: ESTree.Node): boolean {
return !NodeGuards.isBreakStatementNode(node) &&
!NodeGuards.isContinueStatementNode(node) &&
!NodeGuards.isAwaitExpressionNode(node) &&
!NodeGuards.isSuperNode(node);
}
/**
* @return {IVisitor}
*/
@@ -173,9 +184,7 @@ export class DeadCodeInjectionTransformer extends AbstractNodeTransformer {
*/
if (
nestedBlockStatementsCount > DeadCodeInjectionTransformer.maxNestedBlockStatementsCount ||
NodeGuards.isBreakStatementNode(node) ||
NodeGuards.isContinueStatementNode(node) ||
NodeGuards.isAwaitExpressionNode(node)
!DeadCodeInjectionTransformer.isValidBlockStatementNode(node)
) {
isValidBlockStatementNode = false;
+8
View File
@@ -242,6 +242,14 @@ export class NodeGuards {
return node.type === NodeType.ReturnStatement;
}
/**
* @param {Node} node
* @returns {boolean}
*/
public static isSuperNode (node: ESTree.Node): node is ESTree.Super {
return node.type === NodeType.Super;
}
/**
* @param {Node} node
* @returns {boolean}