Skip to content

Commit

Permalink
Rewrite analyzers 'add/remove newline/blank line' (#1309)
Browse files Browse the repository at this point in the history
  • Loading branch information
josefpihrt authored Dec 5, 2023
1 parent 92caff5 commit d696055
Show file tree
Hide file tree
Showing 69 changed files with 1,130 additions and 1,841 deletions.
101 changes: 0 additions & 101 deletions src/Common/CSharp/SyntaxTriviaAnalysis.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,6 @@ public static bool IsExteriorTriviaEmptyOrWhitespace(SyntaxToken token)
&& token.TrailingTrivia.IsEmptyOrWhitespace();
}

public static bool IsEmptyOrSingleWhitespaceTrivia(SyntaxTriviaList triviaList)
{
int count = triviaList.Count;

return count == 0
|| (count == 1 && triviaList[0].IsWhitespaceTrivia());
}

public static SyntaxTrivia DetermineEndOfLine(SyntaxNodeOrToken nodeOrToken, SyntaxTrivia? defaultValue = null)
{
if (nodeOrToken.IsNode)
Expand Down Expand Up @@ -114,94 +106,6 @@ private static SyntaxTrivia FindEndOfLine(SyntaxToken token)
return default;
}

public static bool IsTokenPrecededWithNewLineAndNotFollowedWithNewLine(
ExpressionSyntax left,
SyntaxToken token,
ExpressionSyntax right)
{
return IsOptionalWhitespaceThenEndOfLineTrivia(left.GetTrailingTrivia())
&& token.LeadingTrivia.IsEmptyOrWhitespace()
&& token.TrailingTrivia.SingleOrDefault(shouldThrow: false).IsKind(SyntaxKind.None, SyntaxKind.WhitespaceTrivia)
&& !right.GetLeadingTrivia().Any();
}

public static bool IsTokenFollowedWithNewLineAndNotPrecededWithNewLine(
ExpressionSyntax left,
SyntaxToken token,
ExpressionSyntax right)
{
return left.GetTrailingTrivia().SingleOrDefault(shouldThrow: false).IsKind(SyntaxKind.None, SyntaxKind.WhitespaceTrivia)
&& !token.LeadingTrivia.Any()
&& IsOptionalWhitespaceThenEndOfLineTrivia(token.TrailingTrivia)
&& right.GetLeadingTrivia().IsEmptyOrWhitespace();
}

public static bool IsOptionalWhitespaceThenEndOfLineTrivia(SyntaxTriviaList triviaList)
{
SyntaxTriviaList.Enumerator en = triviaList.GetEnumerator();

if (!en.MoveNext())
return false;

SyntaxKind kind = en.Current.Kind();

if (kind == SyntaxKind.WhitespaceTrivia)
{
if (!en.MoveNext())
return false;

kind = en.Current.Kind();
}

return kind == SyntaxKind.EndOfLineTrivia
&& !en.MoveNext();
}

public static bool IsOptionalWhitespaceThenOptionalSingleLineCommentThenEndOfLineTrivia(SyntaxTriviaList triviaList)
{
SyntaxTriviaList.Enumerator en = triviaList.GetEnumerator();

if (!en.MoveNext())
return false;

SyntaxKind kind = en.Current.Kind();

if (kind == SyntaxKind.WhitespaceTrivia)
{
if (!en.MoveNext())
return false;

kind = en.Current.Kind();
}

if (kind == SyntaxKind.SingleLineCommentTrivia)
{
if (!en.MoveNext())
return false;

kind = en.Current.Kind();
}

return kind == SyntaxKind.EndOfLineTrivia
&& !en.MoveNext();
}

public static bool StartsWithOptionalWhitespaceThenEndOfLineTrivia(SyntaxTriviaList trivia)
{
SyntaxTriviaList.Enumerator en = trivia.GetEnumerator();

if (!en.MoveNext())
return false;

if (en.Current.IsWhitespaceTrivia()
&& !en.MoveNext())
{
return false;
}

return en.Current.IsEndOfLineTrivia();
}

public static IndentationAnalysis AnalyzeIndentation(SyntaxNode node, AnalyzerConfigOptions configOptions, CancellationToken cancellationToken = default)
{
return IndentationAnalysis.Create(node, configOptions, cancellationToken);
Expand Down Expand Up @@ -318,11 +222,6 @@ public static SyntaxTriviaList GetIncreasedIndentationTriviaList(SyntaxNode node
return AnalyzeIndentation(node, configOptions, cancellationToken).GetIncreasedIndentationTriviaList();
}

public static IEnumerable<IndentationInfo> FindIndentations(SyntaxNode node)
{
return FindIndentations(node, node.FullSpan);
}

public static IEnumerable<IndentationInfo> FindIndentations(SyntaxNode node, TextSpan span)
{
foreach (SyntaxTrivia trivia in node.DescendantTrivia(span))
Expand Down
Loading

0 comments on commit d696055

Please sign in to comment.