|
@@ -4,10 +4,14 @@ import { ServiceIdentifiers } from '../../container/ServiceIdentifiers';
|
|
|
import * as estraverse from 'estraverse';
|
|
|
import * as ESTree from 'estree';
|
|
|
|
|
|
+import { TNodeWithBlockStatement } from '../../types/node/TNodeWithBlockStatement';
|
|
|
+
|
|
|
import { IOptions } from '../../interfaces/options/IOptions';
|
|
|
import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator';
|
|
|
import { IVisitor } from '../../interfaces/node-transformers/IVisitor';
|
|
|
|
|
|
+import { NodeType } from '../../enums/node/NodeType';
|
|
|
+
|
|
|
import { AbstractNodeTransformer } from '../AbstractNodeTransformer';
|
|
|
import { NodeGuards } from '../../node/NodeGuards';
|
|
|
import { Nodes } from '../../node/Nodes';
|
|
@@ -103,6 +107,13 @@ export class DeadCodeInjectionTransformer extends AbstractNodeTransformer {
|
|
|
return blockStatementNode;
|
|
|
}
|
|
|
|
|
|
+ const blockScopeOfBlockStatementNode: TNodeWithBlockStatement = NodeUtils
|
|
|
+ .getBlockScopesOfNode(blockStatementNode)[0];
|
|
|
+
|
|
|
+ if (blockScopeOfBlockStatementNode.type === NodeType.Program) {
|
|
|
+ return blockStatementNode;
|
|
|
+ }
|
|
|
+
|
|
|
const minInteger: number = 0;
|
|
|
const maxInteger: number = this.collectedBlockStatements.length - 1;
|
|
|
const randomIndex: number = this.randomGenerator.getRandomInteger(minInteger, maxInteger);
|