From d1cb4aab977157ef7a4ae030daf97de79c174b1e Mon Sep 17 00:00:00 2001 From: Alexis Sellier Date: Thu, 15 Dec 2011 23:42:22 +0100 Subject: [PATCH] improvements to error messages --- lib/less/index.js | 5 +++-- lib/less/parser.js | 2 +- lib/less/tree/mixin.js | 8 +++++--- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/less/index.js b/lib/less/index.js index e75de587..9151e1bd 100644 --- a/lib/less/index.js +++ b/lib/less/index.js @@ -60,8 +60,9 @@ var less = { } error = error.join('\n') + '\033[0m\n'; - message += stylize(ctx.message, 'red'); - ctx.filename && (message += stylize(' in ', 'red') + ctx.filename); + message += stylize(ctx.type + 'Error: ' + ctx.message, 'red'); + ctx.filename && (message += stylize(' in ', 'red') + ctx.filename + + stylize(':' + ctx.line + ':' + ctx.column, 'grey')); sys.error(message, error); diff --git a/lib/less/parser.js b/lib/less/parser.js index 231f3a55..2bc5c560 100644 --- a/lib/less/parser.js +++ b/lib/less/parser.js @@ -367,7 +367,7 @@ less.Parser = function Parser(env) { for (var n = i, column = -1; n >= 0 && input.charAt(n) !== '\n'; n--) { column++ } error = { - name: "ParseError", + type: "Parse", message: "Syntax Error on line " + line, index: i, filename: env.filename, diff --git a/lib/less/tree/mixin.js b/lib/less/tree/mixin.js index cddfcd7b..bc6807c0 100644 --- a/lib/less/tree/mixin.js +++ b/lib/less/tree/mixin.js @@ -27,7 +27,8 @@ tree.mixin.Call.prototype = { if (match) { return rules; } else { - throw { message: 'No matching definition was found for `' + + throw { type: 'Runtime', + message: 'No matching definition was found for `' + this.selector.toCSS().trim() + '(' + this.arguments.map(function (a) { return a.toCSS(); @@ -36,7 +37,8 @@ tree.mixin.Call.prototype = { } } } - throw { message: this.selector.toCSS().trim() + " is undefined", + throw { type: 'Name', + message: this.selector.toCSS().trim() + " is undefined", index: this.index }; } }; @@ -71,7 +73,7 @@ tree.mixin.Definition.prototype = { if (val = (args && args[i]) || this.params[i].value) { frame.rules.unshift(new(tree.Rule)(this.params[i].name, val.eval(env))); } else { - throw { message: "wrong number of arguments for " + this.name + + throw { type: 'Runtime', message: "wrong number of arguments for " + this.name + ' (' + args.length + ' for ' + this.arity + ')' }; } }