@@ -4076,7 +4076,7 @@ module ts {
4076
4076
function getClassificationsForLine ( text : string , lexState : EndOfLineState ) : ClassificationResult {
4077
4077
var offset = 0 ;
4078
4078
var lastTokenOrCommentEnd = 0 ;
4079
- var lastToken = SyntaxKind . Unknown ;
4079
+ var lastNonTriviaToken = SyntaxKind . Unknown ;
4080
4080
var inUnterminatedMultiLineComment = false ;
4081
4081
4082
4082
// If we're in a string literal, then prepend: "\
@@ -4104,22 +4104,25 @@ module ts {
4104
4104
entries : [ ]
4105
4105
} ;
4106
4106
4107
- scanner = createScanner ( ScriptTarget . ES5 , /*skipTrivia*/ true , text , onError , processComment ) ;
4107
+ scanner = createScanner ( ScriptTarget . ES5 , /*skipTrivia*/ false , text , onError , /*onComment*/ undefined ) ;
4108
4108
4109
4109
var token = SyntaxKind . Unknown ;
4110
4110
do {
4111
4111
token = scanner . scan ( ) ;
4112
4112
4113
- if ( ( token === SyntaxKind . SlashToken || token === SyntaxKind . SlashEqualsToken ) && ! noRegexTable [ lastToken ] ) {
4113
+ if ( ( token === SyntaxKind . SlashToken || token === SyntaxKind . SlashEqualsToken ) && ! noRegexTable [ lastNonTriviaToken ] ) {
4114
4114
if ( scanner . reScanSlashToken ( ) === SyntaxKind . RegularExpressionLiteral ) {
4115
4115
token = SyntaxKind . RegularExpressionLiteral ;
4116
4116
}
4117
4117
}
4118
- else if ( lastToken === SyntaxKind . DotToken ) {
4118
+ else if ( lastNonTriviaToken === SyntaxKind . DotToken ) {
4119
4119
token = SyntaxKind . Identifier ;
4120
4120
}
4121
4121
4122
- lastToken = token ;
4122
+ // Only recall the token if it was *not* trivia.
4123
+ if ( ! ( SyntaxKind . FirstTriviaToken <= token && token <= SyntaxKind . LastTriviaToken ) ) {
4124
+ lastNonTriviaToken = token ;
4125
+ }
4123
4126
4124
4127
processToken ( ) ;
4125
4128
}
@@ -4132,21 +4135,10 @@ module ts {
4132
4135
inUnterminatedMultiLineComment = message . key === Diagnostics . Asterisk_Slash_expected . key ;
4133
4136
}
4134
4137
4135
- function processComment ( start : number , end : number ) {
4136
- // add Leading white spaces
4137
- addLeadingWhiteSpace ( start , end ) ;
4138
-
4139
- // add the comment
4140
- addResult ( end - start , TokenClass . Comment ) ;
4141
- }
4142
-
4143
4138
function processToken ( ) : void {
4144
4139
var start = scanner . getTokenPos ( ) ;
4145
4140
var end = scanner . getTextPos ( ) ;
4146
4141
4147
- // add Leading white spaces
4148
- addLeadingWhiteSpace ( start , end ) ;
4149
-
4150
4142
// add the token
4151
4143
addResult ( end - start , classFromKind ( token ) ) ;
4152
4144
@@ -4167,15 +4159,6 @@ module ts {
4167
4159
}
4168
4160
}
4169
4161
4170
- function addLeadingWhiteSpace ( start : number , end : number ) : void {
4171
- if ( start > lastTokenOrCommentEnd ) {
4172
- addResult ( start - lastTokenOrCommentEnd , TokenClass . Whitespace ) ;
4173
- }
4174
-
4175
- // Remember the end of the last token
4176
- lastTokenOrCommentEnd = end ;
4177
- }
4178
-
4179
4162
function addResult ( length : number , classification : TokenClass ) : void {
4180
4163
if ( length > 0 ) {
4181
4164
// If this is the first classification we're adding to the list, then remove any
@@ -4268,6 +4251,11 @@ module ts {
4268
4251
return TokenClass . StringLiteral ;
4269
4252
case SyntaxKind . RegularExpressionLiteral :
4270
4253
return TokenClass . RegExpLiteral ;
4254
+ case SyntaxKind . MultiLineCommentTrivia :
4255
+ case SyntaxKind . SingleLineCommentTrivia :
4256
+ return TokenClass . Comment ;
4257
+ case SyntaxKind . WhitespaceTrivia :
4258
+ return TokenClass . Whitespace ;
4271
4259
case SyntaxKind . Identifier :
4272
4260
default :
4273
4261
return TokenClass . Identifier ;
0 commit comments