diff options
Diffstat (limited to 'node_modules/istanbul-lib-instrument/dist/visitor.js')
-rw-r--r-- | node_modules/istanbul-lib-instrument/dist/visitor.js | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/node_modules/istanbul-lib-instrument/dist/visitor.js b/node_modules/istanbul-lib-instrument/dist/visitor.js index cae5146f5..518b1e31e 100644 --- a/node_modules/istanbul-lib-instrument/dist/visitor.js +++ b/node_modules/istanbul-lib-instrument/dist/visitor.js @@ -184,6 +184,15 @@ var VisitState = function () { path.node.body.unshift(T.expressionStatement(increment)); } else if (path.isStatement()) { path.insertBefore(T.expressionStatement(increment)); + } else if ((path.isFunctionExpression() || path.isArrowFunctionExpression()) && T.isVariableDeclarator(path.parentPath)) { + // make an attempt to hoist the statement counter, so that + // function names are maintained. + var parent = path.parentPath.parentPath; + if (parent && (T.isProgram(parent.parentPath) || T.isBlockStatement(parent.parentPath))) { + parent.insertBefore(T.expressionStatement(increment)); + } else { + path.replaceWith(T.sequenceExpression([increment, path.node])); + } } else /* istanbul ignore else: not expected */if (path.isExpression()) { path.replaceWith(T.sequenceExpression([increment, path.node])); } else { @@ -210,6 +219,7 @@ var VisitState = function () { return; } var n = path.node; + var dloc = null; // get location for declaration switch (n.type) { @@ -231,6 +241,7 @@ var VisitState = function () { end: { line: n.loc.start.line, column: n.loc.start.column + 1 } }; } + var name = path.node.id ? path.node.id.name : path.node.name; var index = this.cov.newFunction(name, dloc, path.node.body.loc); var increment = this.increase('f', index, null); |