summaryrefslogtreecommitdiff
path: root/node_modules/istanbul-lib-instrument/dist/visitor.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/istanbul-lib-instrument/dist/visitor.js')
-rw-r--r--node_modules/istanbul-lib-instrument/dist/visitor.js11
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);