@@ -131,6 +131,13 @@ public override IEnumerable<DiagnosticRecord> AnalyzeScript(Ast ast, string file
131
131
GetViolationForBraceShouldNotFollowEmptyLine ( tokens , k , openBracePos , fileName ) ,
132
132
ref diagnosticRecords ) ;
133
133
}
134
+
135
+ if ( NewLineAfter )
136
+ {
137
+ AddToDiagnosticRecords (
138
+ GetViolationForNewLineShouldFollowBrace ( tokens , k , openBracePos , fileName ) ,
139
+ ref diagnosticRecords ) ;
140
+ }
134
141
}
135
142
else
136
143
{
@@ -254,6 +261,18 @@ private List<CorrectionExtent> GetCorrectionsForBraceShouldNotFollowEmptyLine(
254
261
return corrections ;
255
262
}
256
263
264
+ private List < CorrectionExtent > GetCorrectionsForNewLineShouldFollowBrace ( Token [ ] tokens , int closeBracePos , int openBracePos , string fileName )
265
+ {
266
+ var corrections = new List < CorrectionExtent > ( ) ;
267
+ var nextToken = tokens [ closeBracePos + 1 ] ;
268
+ var closeBraceToken = tokens [ closeBracePos ] ;
269
+ corrections . Add ( new CorrectionExtent (
270
+ closeBraceToken . Extent ,
271
+ closeBraceToken . Text + TokenKind . NewLine . Text ( ) ,
272
+ fileName ) ) ;
273
+ return corrections ;
274
+ }
275
+
257
276
private string GetIndentation ( Token [ ] tokens , int closeBracePos , int openBracePos )
258
277
{
259
278
// if open brace on a new line by itself, use its indentation
@@ -281,6 +300,31 @@ private string GetIndentation(Token[] tokens, int closeBracePos, int openBracePo
281
300
return new String ( ' ' , firstTokenOnOpenBraceLine . Extent . StartColumnNumber - 1 ) ;
282
301
}
283
302
303
+ private DiagnosticRecord GetViolationForNewLineShouldFollowBrace ( Token [ ] tokens , int closeBracePos , int openBracePos , string fileName )
304
+ {
305
+ var expectedNewLinePos = closeBracePos + 1 ;
306
+ if ( tokens . Length > 1 && tokens . Length > expectedNewLinePos )
307
+ {
308
+ var closeBraceToken = tokens [ closeBracePos ] ;
309
+ if ( tokens [ expectedNewLinePos ] . Kind != TokenKind . NewLine
310
+ && tokens [ expectedNewLinePos ] . Kind != TokenKind . Comment
311
+ && ! tokensToIgnore . Contains ( tokens [ closeBracePos ] ) )
312
+ {
313
+
314
+ return new DiagnosticRecord (
315
+ GetError ( Strings . PlaceCloseBraceErrorShouldFollowNewLine ) ,
316
+ closeBraceToken . Extent ,
317
+ GetName ( ) ,
318
+ GetDiagnosticSeverity ( ) ,
319
+ fileName ,
320
+ null ,
321
+ GetCorrectionsForNewLineShouldFollowBrace ( tokens , closeBracePos , openBracePos , fileName ) ) ;
322
+ }
323
+ }
324
+
325
+ return null ;
326
+ }
327
+
284
328
private DiagnosticRecord GetViolationForBraceShouldBeOnNewLine ( Token [ ] tokens , int closeBracePos , int openBracePos , string fileName )
285
329
{
286
330
if ( tokens . Length > 1 && tokens . Length > closeBracePos )
0 commit comments