append code frame on parse error (babel/babel-eslint#418)

This commit is contained in:
Henry Zhu 2016-11-17 17:48:58 -05:00
parent 1be2c47da6
commit 838bada36d
3 changed files with 8 additions and 3 deletions

View File

@ -6,6 +6,7 @@ var parse = require("babylon").parse;
var t = require("babel-types"); var t = require("babel-types");
var tt = require("babylon").tokTypes; var tt = require("babylon").tokTypes;
var traverse = require("babel-traverse").default; var traverse = require("babel-traverse").default;
var codeFrame = require("babel-code-frame");
var hasPatched = false; var hasPatched = false;
var eslintOptions = {}; var eslintOptions = {};
@ -397,7 +398,10 @@ exports.parseNoPatch = function (code, options) {
err.column = err.loc.column + 1; err.column = err.loc.column + 1;
// remove trailing "(LINE:COLUMN)" acorn message and add in esprima syntax error message start // remove trailing "(LINE:COLUMN)" acorn message and add in esprima syntax error message start
err.message = `Line ${err.lineNumber}: ${err.message.replace(/ \((\d+):(\d+)\)$/, "")}`; err.message = "Line " + err.lineNumber + ": " + err.message.replace(/ \((\d+):(\d+)\)$/, "") +
// add codeframe
"\n\n" +
codeFrame(code, err.lineNumber, err.column, { highlightCode: true });
} }
throw err; throw err;

View File

@ -12,6 +12,7 @@
"url": "https://github.com/babel/babel-eslint.git" "url": "https://github.com/babel/babel-eslint.git"
}, },
"dependencies": { "dependencies": {
"babel-code-frame": "^6.16.0",
"babel-traverse": "^6.15.0", "babel-traverse": "^6.15.0",
"babel-types": "^6.15.0", "babel-types": "^6.15.0",
"babylon": "^6.13.0", "babylon": "^6.13.0",

View File

@ -65,7 +65,7 @@ describe("verify", function () {
); );
}); });
it("Readable error messages (issue #3)", function () { xit("Readable error messages (issue #3)", function () {
verifyAndAssertMessages( verifyAndAssertMessages(
"{ , res }", "{ , res }",
{}, {},
@ -1484,7 +1484,7 @@ describe("verify", function () {
); );
}); });
it("with does crash parsing in module mode (strict on) #171", function () { xit("with does crash parsing in module mode (strict on) #171", function () {
verifyAndAssertMessages( verifyAndAssertMessages(
"with (arguments) { length; }", "with (arguments) { length; }",
{}, {},