Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rewrite analyzers 'add/remove newline/blank line' #1309

Merged
merged 27 commits into from
Dec 5, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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