RenderError extends original error

This commit is contained in:
harttle
2017-01-21 19:41:19 +08:00
parent 7d22214cb5
commit 21a5ac7e08
+7 -5
View File
@@ -18,16 +18,17 @@ TokenizationError.prototype = Object.create(Error.prototype);
TokenizationError.prototype.constructor = TokenizationError; TokenizationError.prototype.constructor = TokenizationError;
function ParseError(e, token) { function ParseError(e, token) {
_.assign(this, e);
this.originalError = e;
this.name = this.constructor.name; this.name = this.constructor.name;
this.stack = e.stack;
this.input = token.input; this.input = token.input;
this.line = token.line; this.line = token.line;
this.file = token.file; this.file = token.file;
var context = mkContext(token.input, token.line); var context = mkContext(token.input, token.line);
this.message = mkMessage(e.message, token); this.message = mkMessage(e.message || 'Unkown Error', token);
this.stack = context + '\n' + (this.stack || ''); this.stack = context + '\n' + (e.stack || '');
} }
ParseError.prototype = Object.create(Error.prototype); ParseError.prototype = Object.create(Error.prototype);
ParseError.prototype.constructor = ParseError; ParseError.prototype.constructor = ParseError;
@@ -37,15 +38,16 @@ function RenderError(e, tpl) {
if(e instanceof RenderError){ if(e instanceof RenderError){
return e; return e;
} }
_.assign(this, e);
this.originalError = e;
this.name = this.constructor.name; this.name = this.constructor.name;
this.stack = e.stack;
this.input = tpl.token.input; this.input = tpl.token.input;
this.line = tpl.token.line; this.line = tpl.token.line;
this.file = tpl.token.file; this.file = tpl.token.file;
var context = mkContext(tpl.token.input, tpl.token.line); var context = mkContext(tpl.token.input, tpl.token.line);
this.message = mkMessage(e.message, tpl.token); this.message = mkMessage(e.message || 'Unkown Error', tpl.token);
this.stack = context + '\n' + (e.stack || ''); this.stack = context + '\n' + (e.stack || '');
} }
RenderError.prototype = Object.create(Error.prototype); RenderError.prototype = Object.create(Error.prototype);