@@ -159,44 +159,41 @@ private IEnumerable<DiagnosticRecord> FindOpenParenViolations(TokenOperations to
159
159
}
160
160
}
161
161
162
+ private bool IsSeparator ( Token token )
163
+ {
164
+ return token . Kind == TokenKind . Comma || token . Kind == TokenKind . Semi ;
165
+ }
162
166
private IEnumerable < DiagnosticRecord > FindSeparatorViolations ( TokenOperations tokenOperations )
163
167
{
164
168
Func < LinkedListNode < Token > , bool > predicate = node =>
165
169
{
166
170
return node . Next != null
171
+ && node . Next . Value . Kind != TokenKind . NewLine
172
+ && node . Next . Value . Kind != TokenKind . EndOfInput // semicolon can be followed by end of input
167
173
&& ! IsPreviousTokenApartByWhitespace ( node . Next ) ;
168
174
} ;
169
175
170
- Func < Token , ErrorKind , DiagnosticRecord > getDiagnosticRecord = ( token , errKind ) =>
171
- {
172
- return new DiagnosticRecord (
173
- GetError ( errKind ) ,
174
- token . Extent ,
175
- GetName ( ) ,
176
- GetDiagnosticSeverity ( ) ,
177
- token . Extent . File ,
178
- null ,
179
- null ) ;
180
- } ;
181
-
182
- foreach ( var tokenNode in tokenOperations . GetTokenNodes ( TokenKind . Comma ) . Where ( predicate ) )
183
- {
184
- yield return getDiagnosticRecord ( tokenNode . Value , ErrorKind . SeparatorComma ) ;
185
- }
186
-
187
- foreach ( var tokenNode in tokenOperations . GetTokenNodes ( TokenKind . Semi ) . Where ( predicate ) )
176
+ // TODO replace semi-colon with semicolon
177
+ // TODO update separator error string
178
+ foreach ( var tokenNode in tokenOperations . GetTokenNodes ( IsSeparator ) . Where ( predicate ) )
188
179
{
189
- // semi-colon can be followed by newline or end of input
190
- if ( tokenNode . Next . Value . Kind == TokenKind . EndOfInput
191
- || tokenNode . Next . Value . Kind == TokenKind . NewLine )
192
- {
193
- continue ;
194
- }
195
-
196
- yield return getDiagnosticRecord ( tokenNode . Value , ErrorKind . SeparatorSemi ) ;
180
+ yield return getDiagnosticRecord (
181
+ tokenNode . Value ,
182
+ tokenNode . Value . Kind == TokenKind . Comma ? ErrorKind . SeparatorComma : ErrorKind . SeparatorSemi ) ;
197
183
}
198
184
}
199
185
186
+ private DiagnosticRecord getDiagnosticRecord ( Token token , ErrorKind errKind )
187
+ {
188
+ return new DiagnosticRecord (
189
+ GetError ( errKind ) ,
190
+ token . Extent ,
191
+ GetName ( ) ,
192
+ GetDiagnosticSeverity ( ) ,
193
+ token . Extent . File ,
194
+ null ,
195
+ null ) ;
196
+ }
200
197
201
198
private bool IsKeyword ( Token token )
202
199
{
0 commit comments