diff --git a/lib/compiler/passes/generate-javascript.js b/lib/compiler/passes/generate-javascript.js index 0b41967..f7962be 100644 --- a/lib/compiler/passes/generate-javascript.js +++ b/lib/compiler/passes/generate-javascript.js @@ -782,8 +782,11 @@ function generateJavascript(ast, options) { ' this.expected = expected;', ' this.found = found;', ' this.location = location;', - '', ' this.name = "SyntaxError";', + '', + ' if (typeof Error.captureStackTrace === "function") {', + ' Error.captureStackTrace(this, peg$SyntaxError);', + ' }', ' }', '', ' peg$subclass(peg$SyntaxError, Error);', diff --git a/lib/grammar-error.js b/lib/grammar-error.js index 790f92d..758b8e9 100644 --- a/lib/grammar-error.js +++ b/lib/grammar-error.js @@ -7,6 +7,10 @@ function GrammarError(message, location) { this.name = "GrammarError"; this.message = message; this.location = location; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, GrammarError); + } } classes.subclass(GrammarError, Error); diff --git a/lib/parser.js b/lib/parser.js index b6b677f..32c1e06 100644 --- a/lib/parser.js +++ b/lib/parser.js @@ -18,8 +18,11 @@ module.exports = (function() { this.expected = expected; this.found = found; this.location = location; - this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } } peg$subclass(peg$SyntaxError, Error);