Skip to content

Commit c2a0b71

Browse files
soda0289JamesHenry
authored andcommitted
Fix: Add start and end property to tokens (fixes eslint#172) (eslint#176)
1 parent 2640d81 commit c2a0b71

File tree

7 files changed

+48
-59
lines changed

7 files changed

+48
-59
lines changed

lib/ast-converter.js

+2
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,8 @@ function convertToken(token, ast) {
410410
newToken = {
411411
type: getTokenType(token),
412412
value: value,
413+
start: start,
414+
end: token.end,
413415
range: [start, token.end],
414416
loc: getLoc(token, ast)
415417
};

tests/lib/attach-comments.js

+3-11
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ var assert = require("chai").assert,
3434
leche = require("leche"),
3535
path = require("path"),
3636
parser = require("../../parser"),
37-
shelljs = require("shelljs");
37+
shelljs = require("shelljs"),
38+
tester = require("./tester");
3839

3940
//------------------------------------------------------------------------------
4041
// Setup
@@ -48,15 +49,6 @@ var testFiles = shelljs.find(FIXTURES_DIR).filter(function(filename) {
4849
return filename.substring(FIXTURES_DIR.length - 1, filename.length - 7); // strip off ".src.js"
4950
});
5051

51-
/**
52-
* Returns a raw copy of the given AST
53-
* @param {object} ast the AST object
54-
* @returns {object} copy of the AST object
55-
*/
56-
function getRaw(ast) {
57-
return JSON.parse(JSON.stringify(ast));
58-
}
59-
6052
//------------------------------------------------------------------------------
6153
// Tests
6254
//------------------------------------------------------------------------------
@@ -84,7 +76,7 @@ describe("attachComment: true", function() {
8476

8577
try {
8678
result = parser.parse(code, config);
87-
result = getRaw(result);
79+
result = tester.getRaw(result);
8880
} catch (ex) {
8981

9082
// format of error isn't exactly the same, just check if it's expected

tests/lib/basics.js

+3-11
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ var assert = require("chai").assert,
1515
leche = require("leche"),
1616
path = require("path"),
1717
parser = require("../../parser"),
18-
shelljs = require("shelljs");
18+
shelljs = require("shelljs"),
19+
tester = require("./tester");
1920

2021
//------------------------------------------------------------------------------
2122
// Setup
@@ -29,15 +30,6 @@ var testFiles = shelljs.find(FIXTURES_DIR).filter(function(filename) {
2930
return filename.substring(FIXTURES_DIR.length - 1, filename.length - 7); // strip off ".src.js"
3031
});
3132

32-
/**
33-
* Returns a raw copy of the given AST
34-
* @param {object} ast the AST object
35-
* @returns {object} copy of the AST object
36-
*/
37-
function getRaw(ast) {
38-
return JSON.parse(JSON.stringify(ast));
39-
}
40-
4133
//------------------------------------------------------------------------------
4234
// Tests
4335
//------------------------------------------------------------------------------
@@ -66,7 +58,7 @@ describe("basics", function() {
6658

6759
try {
6860
result = parser.parse(code, config);
69-
result = getRaw(result);
61+
result = tester.getRaw(result);
7062
} catch (ex) {
7163

7264
// format of error isn't exactly the same, just check if it's expected

tests/lib/ecma-features.js

+3-11
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ var assert = require("chai").assert,
1515
leche = require("leche"),
1616
path = require("path"),
1717
parser = require("../../parser"),
18-
shelljs = require("shelljs");
18+
shelljs = require("shelljs"),
19+
tester = require("./tester");
1920

2021
//------------------------------------------------------------------------------
2122
// Setup
@@ -58,15 +59,6 @@ var testFiles = shelljs.find(FIXTURES_DIR).filter(function(filename) {
5859
// console.dir(moduleTestFiles);
5960
// return;
6061

61-
/**
62-
* Returns a raw copy of the given AST
63-
* @param {object} ast the AST object
64-
* @returns {object} copy of the AST object
65-
*/
66-
function getRaw(ast) {
67-
return JSON.parse(JSON.stringify(ast));
68-
}
69-
7062
//------------------------------------------------------------------------------
7163
// Tests
7264
//------------------------------------------------------------------------------
@@ -97,7 +89,7 @@ describe("ecmaFeatures", function() {
9789

9890
try {
9991
result = parser.parse(code, config);
100-
result = getRaw(result);
92+
result = tester.getRaw(result);
10193
} catch (ex) {
10294

10395
// format of error isn't exactly the same, just check if it's expected

tests/lib/parse.js

+3-15
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,8 @@
1212
//------------------------------------------------------------------------------
1313

1414
var assert = require("chai").assert,
15-
parser = require("../../parser");
16-
17-
//------------------------------------------------------------------------------
18-
// Helpers
19-
//------------------------------------------------------------------------------
20-
21-
/**
22-
* Returns a raw copy of the given AST
23-
* @param {object} ast the AST object
24-
* @returns {object} copy of the AST object
25-
*/
26-
function getRaw(ast) {
27-
return JSON.parse(JSON.stringify(ast));
28-
}
15+
parser = require("../../parser"),
16+
tester = require("./tester");
2917

3018
//------------------------------------------------------------------------------
3119
// Tests
@@ -68,7 +56,7 @@ describe("parse()", function() {
6856
loc: true
6957
});
7058

71-
assert.deepEqual(getRaw(ast), require("../fixtures/parse/all-pieces.json"));
59+
assert.deepEqual(tester.getRaw(ast), require("../fixtures/parse/all-pieces.json"));
7260
});
7361

7462
});

tests/lib/tester.js

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/**
2+
* @fileoverview Tools for running test cases
3+
* @author Nicholas C. Zakas
4+
* @copyright jQuery Foundation and other contributors, https://jquery.org/
5+
* MIT License
6+
*/
7+
8+
"use strict";
9+
10+
//------------------------------------------------------------------------------
11+
// Private
12+
//--------------------------------------------------------------------------------
13+
14+
/**
15+
* Returns a raw copy of the given AST
16+
* @param {object} ast the AST object
17+
* @returns {object} copy of the AST object
18+
*/
19+
function getRaw(ast) {
20+
return JSON.parse(JSON.stringify(ast, function(key, value) {
21+
if ((key === "start" || key === "end") && typeof value === "number") {
22+
return undefined; // eslint-disable-line no-undefined
23+
}
24+
25+
return value;
26+
}));
27+
}
28+
29+
module.exports = {
30+
getRaw: getRaw
31+
};

tests/lib/typescript.js

+3-11
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ var assert = require("chai").assert,
1515
leche = require("leche"),
1616
path = require("path"),
1717
parser = require("../../parser"),
18-
shelljs = require("shelljs");
18+
shelljs = require("shelljs"),
19+
tester = require("./tester");
1920

2021
//------------------------------------------------------------------------------
2122
// Setup
@@ -29,15 +30,6 @@ var testFiles = shelljs.find(FIXTURES_DIR).filter(function(filename) {
2930
return filename.substring(FIXTURES_DIR.length - 1, filename.length - 7); // strip off ".src.ts"
3031
});
3132

32-
/**
33-
* Returns a raw copy of the given AST
34-
* @param {object} ast the AST object
35-
* @returns {object} copy of the AST object
36-
*/
37-
function getRaw(ast) {
38-
return JSON.parse(JSON.stringify(ast));
39-
}
40-
4133
//------------------------------------------------------------------------------
4234
// Tests
4335
//------------------------------------------------------------------------------
@@ -66,7 +58,7 @@ describe("typescript", function() {
6658

6759
try {
6860
result = parser.parse(code, config);
69-
result = getRaw(result);
61+
result = tester.getRaw(result);
7062
} catch (ex) {
7163

7264
// format of error isn't exactly the same, just check if it's expected

0 commit comments

Comments
 (0)