Skip to content

Commit c6cfac2

Browse files
author
Kapil Borle
committed
Update logic for checking newline after close brace
1 parent 826fb54 commit c6cfac2

File tree

1 file changed

+30
-20
lines changed

1 file changed

+30
-20
lines changed

Rules/PlaceCloseBrace.cs

Lines changed: 30 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -344,30 +344,40 @@ private DiagnosticRecord GetViolationsForUncuddledBranches(
344344
int openBracePos,
345345
string fileName)
346346
{
347-
var expectedNewLinePos = closeBracePos + 1;
348-
349347
// this will not work if there is a comment in between any tokens.
350-
// find violation only if the open brace is on the same line as the branching statement.
351-
// todo handle types in catch statement
352-
if (tokens.Length > 1 && tokens.Length > expectedNewLinePos)
348+
var closeBraceToken = tokens[closeBracePos];
349+
if (tokens.Length <= closeBracePos + 2 ||
350+
tokensToIgnore.Contains(closeBraceToken))
353351
{
354-
var closeBraceToken = tokens[closeBracePos];
355-
if (tokens[closeBracePos + 1].Kind == TokenKind.NewLine &&
356-
IsBranchingStatementToken(tokens[closeBracePos + 2]) &&
357-
tokens[closeBracePos + 3].Kind == TokenKind.LCurly)
358-
{
359-
return new DiagnosticRecord(
360-
GetError(Strings.PlaceCloseBraceErrorShouldCuddleBranchStatement),
361-
closeBraceToken.Extent,
362-
GetName(),
363-
GetDiagnosticSeverity(),
364-
fileName,
365-
null,
366-
GetCorrectionsForUncuddledBranches(tokens, closeBracePos, closeBracePos + 2, fileName));
367-
}
352+
return null;
368353
}
369354

370-
return null;
355+
var token1 = tokens[closeBracePos + 1];
356+
var token2 = tokens[closeBracePos + 2];
357+
var branchTokenPos = IsBranchingStatementToken(token1) && !ApartByWhitespace(closeBraceToken, token1) ?
358+
closeBracePos + 1 :
359+
token1.Kind == TokenKind.NewLine || IsBranchingStatementToken(token2) ?
360+
closeBracePos + 2 :
361+
-1;
362+
363+
return branchTokenPos == -1 ?
364+
null :
365+
new DiagnosticRecord(
366+
GetError(Strings.PlaceCloseBraceErrorShouldCuddleBranchStatement),
367+
closeBraceToken.Extent,
368+
GetName(),
369+
GetDiagnosticSeverity(),
370+
fileName,
371+
null,
372+
GetCorrectionsForUncuddledBranches(tokens, closeBracePos, branchTokenPos, fileName));
373+
}
374+
375+
private static bool ApartByWhitespace(Token token1, Token token2)
376+
{
377+
var e1 = token1.Extent;
378+
var e2 = token2.Extent;
379+
return e1.StartLineNumber == e2.StartLineNumber &&
380+
e1.EndColumnNumber - e2.StartColumnNumber == 1;
371381
}
372382

373383
private List<CorrectionExtent> GetCorrectionsForUncuddledBranches(

0 commit comments

Comments
 (0)