diff --git a/lib/linter.js b/lib/linter.js index 88448d90f8aa..92a3debdb283 100644 --- a/lib/linter.js +++ b/lib/linter.js @@ -747,10 +747,15 @@ function runRules(sourceCode, configuredRules, ruleMapper, parserOptions, parser nodeQueue.forEach(traversalInfo => { currentNode = traversalInfo.node; - if (traversalInfo.isEntering) { - eventGenerator.enterNode(currentNode); - } else { - eventGenerator.leaveNode(currentNode); + try { + if (traversalInfo.isEntering) { + eventGenerator.enterNode(currentNode); + } else { + eventGenerator.leaveNode(currentNode); + } + } catch (err) { + err.currentNode = currentNode; + throw err; } }); @@ -903,6 +908,9 @@ module.exports = class Linter { } catch (err) { debug("An error occurred while traversing"); debug("Filename:", options.filename); + if (err.currentNode) { + debug("Line:", err.currentNode.loc.start.line); + } debug("Parser Options:", parserOptions); debug("Parser Path:", parserName); debug("Settings:", settings);