@@ -20,7 +20,6 @@ var ts = require("typescript"),
20
20
//------------------------------------------------------------------------------
21
21
22
22
var SyntaxKind = ts . SyntaxKind ;
23
- // var TokenClass = ts.TokenClass;
24
23
25
24
var ASSIGNMENT_OPERATORS = [
26
25
SyntaxKind . EqualsToken ,
@@ -268,6 +267,8 @@ function getTokenType(token) {
268
267
269
268
case SyntaxKind . GetKeyword :
270
269
case SyntaxKind . SetKeyword :
270
+ case SyntaxKind . TypeKeyword :
271
+ case SyntaxKind . ModuleKeyword :
271
272
return "Identifier" ;
272
273
273
274
default :
@@ -276,6 +277,10 @@ function getTokenType(token) {
276
277
}
277
278
278
279
if ( token . kind >= SyntaxKind . FirstKeyword && token . kind <= SyntaxKind . LastFutureReservedWord ) {
280
+ if ( token . kind === SyntaxKind . FalseKeyword || token . kind === SyntaxKind . TrueKeyword ) {
281
+ return "Boolean" ;
282
+ }
283
+
279
284
return "Keyword" ;
280
285
}
281
286
@@ -1189,12 +1194,19 @@ module.exports = function(ast, extra) {
1189
1194
case SyntaxKind . ClassExpression :
1190
1195
var heritageClauses = node . heritageClauses || [ ] ;
1191
1196
var lastClassToken = heritageClauses . length ? heritageClauses [ heritageClauses . length - 1 ] : node . name ;
1192
- if ( ! lastClassToken ) { // no name
1197
+ /**
1198
+ * We need check for modifiers, and use the last one, as there
1199
+ * could be multiple before the open brace
1200
+ */
1201
+ if ( node . modifiers && node . modifiers . length ) {
1202
+ var lastModifier = node . modifiers [ node . modifiers . length - 1 ] ;
1203
+ lastClassToken = ts . findNextToken ( lastModifier , ast ) ;
1204
+ } else if ( ! lastClassToken ) { // no name
1193
1205
lastClassToken = node . getFirstToken ( ) ;
1194
1206
}
1195
1207
1196
- var openBrace = ts . findNextToken ( lastClassToken , ast ) ,
1197
- hasExtends = ( heritageClauses . length && node . heritageClauses [ 0 ] . token === SyntaxKind . ExtendsKeyword ) ,
1208
+ var openBrace = ts . findNextToken ( lastClassToken , ast ) ;
1209
+ var hasExtends = ( heritageClauses . length && node . heritageClauses [ 0 ] . token === SyntaxKind . ExtendsKeyword ) ,
1198
1210
superClass ,
1199
1211
hasImplements = false ;
1200
1212
@@ -1474,21 +1486,24 @@ module.exports = function(ast, extra) {
1474
1486
case SyntaxKind . TrueKeyword :
1475
1487
assign ( result , {
1476
1488
type : "Literal" ,
1477
- value : true
1489
+ value : true ,
1490
+ raw : "true"
1478
1491
} ) ;
1479
1492
break ;
1480
1493
1481
1494
case SyntaxKind . FalseKeyword :
1482
1495
assign ( result , {
1483
1496
type : "Literal" ,
1484
- value : false
1497
+ value : false ,
1498
+ raw : "false"
1485
1499
} ) ;
1486
1500
break ;
1487
1501
1488
1502
case SyntaxKind . NullKeyword :
1489
1503
assign ( result , {
1490
1504
type : "Literal" ,
1491
- value : null
1505
+ value : null ,
1506
+ raw : "null"
1492
1507
} ) ;
1493
1508
break ;
1494
1509
@@ -1628,16 +1643,19 @@ module.exports = function(ast, extra) {
1628
1643
return result ;
1629
1644
}
1630
1645
1631
-
1632
-
1633
1646
var estree = convert ( ast ) ;
1634
1647
1635
1648
if ( extra . tokens ) {
1636
1649
estree . tokens = convertTokens ( ast ) ;
1637
1650
}
1638
1651
1652
+ /**
1653
+ * Add the comment nodes to the AST (that were parsed separately in parser.js)
1654
+ * TODO: Track the progress of https://github.com/eslint/eslint/issues/6724
1655
+ * regarding ESLint itself becoming responsible for attributing comment nodes
1656
+ */
1639
1657
if ( extra . comment || extra . attachComment ) {
1640
- estree . comments = [ ] ;
1658
+ estree . comments = extra . comments || [ ] ;
1641
1659
}
1642
1660
1643
1661
return estree ;
0 commit comments