0.17.3 version

This commit is contained in:
sanex3339
2018-07-31 10:57:15 +03:00
parent a697e64bca
commit 984e08df34
17 changed files with 308 additions and 75 deletions
@@ -52,22 +52,20 @@ export class BlockStatementControlFlowTransformer extends AbstractNodeTransforme
}
/**
* @param {BlockStatement} blockStatementNode
* @param {Node} node
* @returns {boolean}
*/
private static blockStatementHasProhibitedStatements (blockStatementNode: ESTree.BlockStatement): boolean {
return blockStatementNode.body.some((statement: ESTree.Statement) => {
const isBreakOrContinueStatement: boolean = NodeGuards.isBreakStatementNode(statement)
|| NodeGuards.isContinueStatementNode(statement);
const isVariableDeclarationWithLetOrConstKind: boolean = NodeGuards.isVariableDeclarationNode(statement)
&& (statement.kind === 'const' || statement.kind === 'let');
const isClassDeclaration: boolean = NodeGuards.isClassDeclarationNode(statement);
private static isProhibitedStatementNode (node: ESTree.Node): boolean {
const isBreakOrContinueStatement: boolean = NodeGuards.isBreakStatementNode(node)
|| NodeGuards.isContinueStatementNode(node);
const isVariableDeclarationWithLetOrConstKind: boolean = NodeGuards.isVariableDeclarationNode(node)
&& (node.kind === 'const' || node.kind === 'let');
const isClassDeclaration: boolean = NodeGuards.isClassDeclarationNode(node);
return NodeGuards.isFunctionDeclarationNode(statement)
|| isBreakOrContinueStatement
|| isVariableDeclarationWithLetOrConstKind
|| isClassDeclaration;
});
return NodeGuards.isFunctionDeclarationNode(node)
|| isBreakOrContinueStatement
|| isVariableDeclarationWithLetOrConstKind
|| isClassDeclaration;
}
/**
@@ -83,10 +81,7 @@ export class BlockStatementControlFlowTransformer extends AbstractNodeTransforme
return estraverse.VisitorOption.Skip;
}
if (
NodeGuards.isBlockStatementNode(node)
&& BlockStatementControlFlowTransformer.blockStatementHasProhibitedStatements(node)
) {
if (BlockStatementControlFlowTransformer.isProhibitedStatementNode(node)) {
canTransform = false;
}
}