@@ -138,6 +138,12 @@ public override IEnumerable<DiagnosticRecord> AnalyzeScript(Ast ast, string file
138
138
GetViolationForBraceShouldHaveNewLineAfter ( tokens , k , openBracePos , fileName ) ,
139
139
ref diagnosticRecords ) ;
140
140
}
141
+ else
142
+ {
143
+ AddToDiagnosticRecords (
144
+ GetViolationsForUncuddledBranches ( tokens , k , openBracePos , fileName ) ,
145
+ ref diagnosticRecords ) ;
146
+ }
141
147
}
142
148
else
143
149
{
@@ -326,12 +332,41 @@ private DiagnosticRecord GetViolationForBraceShouldHaveNewLineAfter(
326
332
fileName ,
327
333
null ,
328
334
GetCorrectionsForBraceShouldHaveNewLineAfter ( tokens , closeBracePos , openBracePos , fileName ) ) ;
329
- }
335
+ }
330
336
}
331
337
332
338
return null ;
333
339
}
334
340
341
+ private DiagnosticRecord GetViolationsForUncuddledBranches (
342
+ Token [ ] tokens ,
343
+ int closeBracePos ,
344
+ int openBracePos ,
345
+ string fileName )
346
+ {
347
+ var expectedNewLinePos = closeBracePos + 1 ;
348
+
349
+ if ( tokens . Length > 1 && tokens . Length > expectedNewLinePos )
350
+ {
351
+ var closeBraceToken = tokens [ closeBracePos ] ;
352
+ if ( tokens [ closeBracePos + 1 ] . Kind == TokenKind . NewLine &&
353
+ IsBranchingStatementToken ( tokens [ closeBracePos + 2 ] ) )
354
+ {
355
+ return new DiagnosticRecord (
356
+ GetError ( Strings . PlaceCloseBraceErrorShouldCuddleBranchStatement ) ,
357
+ closeBraceToken . Extent ,
358
+ GetName ( ) ,
359
+ GetDiagnosticSeverity ( ) ,
360
+ fileName ,
361
+ null ,
362
+ GetCorrectionsForBraceShouldHaveNewLineAfter ( tokens , closeBracePos , openBracePos , fileName ) ) ;
363
+ }
364
+ }
365
+
366
+ return null ;
367
+ }
368
+
369
+
335
370
private DiagnosticRecord GetViolationForBraceShouldBeOnNewLine (
336
371
Token [ ] tokens ,
337
372
int closeBracePos ,
@@ -376,6 +411,20 @@ private List<CorrectionExtent> GetCorrectionsForBraceShouldBeOnNewLine(
376
411
return corrections ;
377
412
}
378
413
414
+ private bool IsBranchingStatementToken ( Token token )
415
+ {
416
+ switch ( token . Kind )
417
+ {
418
+ case TokenKind . Else :
419
+ case TokenKind . ElseIf :
420
+ case TokenKind . Catch :
421
+ case TokenKind . Finally :
422
+ return true ;
423
+
424
+ default :
425
+ return false ;
426
+ }
427
+ }
379
428
private void AddToDiagnosticRecords (
380
429
DiagnosticRecord diagnosticRecord ,
381
430
ref List < DiagnosticRecord > diagnosticRecords )
0 commit comments