src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Formatting\Engine\Trivia\CSharpTriviaFormatter.cs (34)
19private SyntaxTrivia _newLine;
36protected override bool IsWhitespace(SyntaxTrivia trivia)
39protected override bool IsEndOfLine(SyntaxTrivia trivia)
48protected override SyntaxTrivia CreateWhitespace(string text)
51protected override SyntaxTrivia CreateEndOfLine()
61protected override LineColumnRule GetLineColumnRuleBetween(SyntaxTrivia trivia1, LineColumnDelta existingWhitespaceBetween, bool implicitLineBreak, SyntaxTrivia trivia2, CancellationToken cancellationToken)
107var previous = trivia2;
176protected override bool ContainsImplicitLineBreak(SyntaxTrivia trivia)
190private bool IsStartOrEndOfFile(SyntaxTrivia trivia1, SyntaxTrivia trivia2)
204private static bool IsMultilineComment(SyntaxTrivia trivia1)
207private bool TryFormatMultiLineCommentTrivia(LineColumn lineColumn, SyntaxTrivia trivia, out SyntaxTrivia result)
229var firstTrivia = multilineCommentTrivia.First();
240LineColumn lineColumn, SyntaxTrivia trivia, ArrayBuilder<SyntaxTrivia> changes,
248if (TryFormatMultiLineCommentTrivia(lineColumn, trivia, out var newComment))
259LineColumn lineColumn, SyntaxTrivia trivia, ArrayBuilder<TextChange> changes, CancellationToken cancellationToken)
266if (TryFormatMultiLineCommentTrivia(lineColumn, trivia, out var newComment))
275private SyntaxTrivia FormatDocumentComment(LineColumn lineColumn, SyntaxTrivia trivia)
299var newTrivia = singleLineDocumentationCommentExteriorCommentRewriter.VisitTrivia(trivia);
315var newMultiLineTrivia = multiLineDocumentationCommentExteriorCommentRewriter.VisitTrivia(trivia);
321LineColumn lineColumn, SyntaxTrivia trivia, ArrayBuilder<SyntaxTrivia> changes, CancellationToken cancellationToken)
337var formattedTrivia = SyntaxFactory.Trivia((StructuredTriviaSyntax)result.GetFormattedRoot(cancellationToken));
343var docComment = FormatDocumentComment(lineColumn, trivia);
350LineColumn lineColumn, SyntaxTrivia trivia, ArrayBuilder<TextChange> changes, CancellationToken cancellationToken)
371var formattedTrivia = SyntaxFactory.Trivia((StructuredTriviaSyntax)result.GetFormattedRoot(cancellationToken));
375var docComment = FormatDocumentComment(lineColumn, trivia);
384protected override bool LineContinuationFollowedByWhitespaceComment(SyntaxTrivia trivia, SyntaxTrivia nextTrivia)
393protected override bool IsVisualBasicComment(SyntaxTrivia trivia)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Formatting\Engine\Trivia\CSharpTriviaFormatter.cs (34)
19private SyntaxTrivia _newLine;
36protected override bool IsWhitespace(SyntaxTrivia trivia)
39protected override bool IsEndOfLine(SyntaxTrivia trivia)
48protected override SyntaxTrivia CreateWhitespace(string text)
51protected override SyntaxTrivia CreateEndOfLine()
61protected override LineColumnRule GetLineColumnRuleBetween(SyntaxTrivia trivia1, LineColumnDelta existingWhitespaceBetween, bool implicitLineBreak, SyntaxTrivia trivia2, CancellationToken cancellationToken)
107var previous = trivia2;
176protected override bool ContainsImplicitLineBreak(SyntaxTrivia trivia)
190private bool IsStartOrEndOfFile(SyntaxTrivia trivia1, SyntaxTrivia trivia2)
204private static bool IsMultilineComment(SyntaxTrivia trivia1)
207private bool TryFormatMultiLineCommentTrivia(LineColumn lineColumn, SyntaxTrivia trivia, out SyntaxTrivia result)
229var firstTrivia = multilineCommentTrivia.First();
240LineColumn lineColumn, SyntaxTrivia trivia, ArrayBuilder<SyntaxTrivia> changes,
248if (TryFormatMultiLineCommentTrivia(lineColumn, trivia, out var newComment))
259LineColumn lineColumn, SyntaxTrivia trivia, ArrayBuilder<TextChange> changes, CancellationToken cancellationToken)
266if (TryFormatMultiLineCommentTrivia(lineColumn, trivia, out var newComment))
275private SyntaxTrivia FormatDocumentComment(LineColumn lineColumn, SyntaxTrivia trivia)
299var newTrivia = singleLineDocumentationCommentExteriorCommentRewriter.VisitTrivia(trivia);
315var newMultiLineTrivia = multiLineDocumentationCommentExteriorCommentRewriter.VisitTrivia(trivia);
321LineColumn lineColumn, SyntaxTrivia trivia, ArrayBuilder<SyntaxTrivia> changes, CancellationToken cancellationToken)
337var formattedTrivia = SyntaxFactory.Trivia((StructuredTriviaSyntax)result.GetFormattedRoot(cancellationToken));
343var docComment = FormatDocumentComment(lineColumn, trivia);
350LineColumn lineColumn, SyntaxTrivia trivia, ArrayBuilder<TextChange> changes, CancellationToken cancellationToken)
371var formattedTrivia = SyntaxFactory.Trivia((StructuredTriviaSyntax)result.GetFormattedRoot(cancellationToken));
375var docComment = FormatDocumentComment(lineColumn, trivia);
384protected override bool LineContinuationFollowedByWhitespaceComment(SyntaxTrivia trivia, SyntaxTrivia nextTrivia)
393protected override bool IsVisualBasicComment(SyntaxTrivia trivia)
CodeFixes\Suppression\AbstractSuppressionCodeFixProvider.PragmaHelpers.cs (10)
65private static int GetPositionForPragmaInsertion(ImmutableArray<SyntaxTrivia> triviaList, TextSpan currentDiagnosticSpan, AbstractSuppressionCodeFixProvider fixer, bool isStartToken, out SyntaxTrivia triviaAtIndex)
71bool shouldConsiderTrivia(SyntaxTrivia trivia)
81var trivia = triviaList[index];
112var index = GetPositionForPragmaInsertion(trivia, currentDiagnosticSpan, fixer, isStartToken: true, triviaAtIndex: out var insertAfterTrivia);
136private static bool IsEndOfLineOrHasLeadingEndOfLine(SyntaxTrivia trivia, AbstractSuppressionCodeFixProvider fixer)
142private static bool IsEndOfLineOrHasTrailingEndOfLine(SyntaxTrivia trivia, AbstractSuppressionCodeFixProvider fixer)
148private static bool IsEndOfLineOrContainsEndOfLine(SyntaxTrivia trivia, AbstractSuppressionCodeFixProvider fixer)
163ImmutableArray<SyntaxTrivia> trivia;
174var index = GetPositionForPragmaInsertion(trivia, currentDiagnosticSpan, fixer, isStartToken: false, triviaAtIndex: out var insertBeforeTrivia);
src\Analyzers\Core\Analyzers\RemoveUnnecessarySuppressions\AbstractRemoveUnnecessaryPragmaSuppressionsDiagnosticAnalyzer.cs (19)
157using var _1 = PooledDictionary<string, List<(SyntaxTrivia pragma, bool isDisable)>>.GetInstance(out var idToPragmasMap);
158using var _2 = ArrayBuilder<(SyntaxTrivia pragma, ImmutableArray<string> ids, bool isDisable)>.GetInstance(out var sortedPragmasWithIds);
159using var _3 = PooledDictionary<SyntaxTrivia, bool>.GetInstance(out var pragmasToIsUsedMap);
228PooledDictionary<string, List<(SyntaxTrivia pragma, bool isDisable)>> idToPragmasMap,
229PooledDictionary<SyntaxTrivia, bool> pragmasToIsUsedMap,
230ArrayBuilder<(SyntaxTrivia pragma, ImmutableArray<string> ids, bool isDisable)> sortedPragmasWithIds,
241foreach (var trivia in root.DescendantTrivia(node => node.ContainsDirectives))
510PooledDictionary<string, List<(SyntaxTrivia pragma, bool isDisable)>> idToPragmasMap,
511PooledDictionary<SyntaxTrivia, bool> pragmasToIsUsedMap,
546PooledDictionary<string, List<(SyntaxTrivia pragma, bool isDisable)>> idToPragmasMap,
547PooledDictionary<SyntaxTrivia, bool> pragmasToIsUsedMap)
560SyntaxTrivia? lastEnablePragma = null;
609PooledDictionary<SyntaxTrivia, bool> pragmasToIsUsedMap,
610ArrayBuilder<(SyntaxTrivia pragma, ImmutableArray<string> ids, bool isDisable)> sortedPragmasWithIds,
631PooledDictionary<SyntaxTrivia, bool> pragmasToIsUsedMap,
632ArrayBuilder<(SyntaxTrivia pragma, ImmutableArray<string> ids, bool isDisable)> sortedPragmasWithIds,
678SyntaxTrivia pragma,
679ArrayBuilder<(SyntaxTrivia pragma, ImmutableArray<string> ids, bool isDisable)> sortedPragmasWithIds,
680out SyntaxTrivia togglePragma)
src\Analyzers\Core\CodeFixes\FileHeaders\AbstractFileHeaderCodeFixProvider.cs (4)
57internal static async Task<SyntaxNode> GetTransformedSyntaxRootAsync(ISyntaxFacts syntaxFacts, AbstractFileHeaderHelper fileHeaderHelper, SyntaxTrivia newLineTrivia, Document document, string? fileHeaderTemplate, CancellationToken cancellationToken)
93private static SyntaxNode ReplaceHeader(ISyntaxFacts syntaxFacts, AbstractFileHeaderHelper fileHeaderHelper, SyntaxTrivia newLineTrivia, SyntaxNode root, string expectedFileHeader)
118var triviaLine = triviaList[i];
175private static SyntaxNode AddHeader(ISyntaxFacts syntaxFacts, AbstractFileHeaderHelper fileHeaderHelper, SyntaxTrivia newLineTrivia, SyntaxNode root, string expectedFileHeader)
src\Compilers\Core\Portable\SourceGeneration\GeneratedCodeUtilities.cs (6)
49SyntaxTree tree, Func<SyntaxTrivia, bool> isComment, CancellationToken cancellationToken)
55internal static bool IsGeneratedCode(string? filePath, SyntaxNode root, Func<SyntaxTrivia, bool> isComment)
88private static bool BeginsWithAutoGeneratedComment(SyntaxNode root, Func<SyntaxTrivia, bool> isComment)
94foreach (var trivia in leadingTrivia)
118SyntaxTree tree, Func<SyntaxTrivia, bool> isComment, CancellationToken cancellationToken)
125foreach (var trivia in leadingTrivia)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SyntaxNodeExtensions.cs (23)
376IEnumerable<SyntaxTrivia> trivia,
377Func<SyntaxTrivia, SyntaxTrivia, CancellationToken, Task<SyntaxTrivia>> computeReplacementAsync,
393IEnumerable<SyntaxTrivia>? trivia,
394Func<SyntaxTrivia, SyntaxTrivia, CancellationToken, Task<SyntaxTrivia>>? computeReplacementTriviaAsync,
405var triviaReplacements = new Dictionary<SyntaxTrivia, SyntaxTrivia>();
453var original = (SyntaxTrivia?)retryAnnotations.GetAnnotations(currentTrivia).SingleOrDefault() ?? currentTrivia;
498if (!triviaReplacements.TryGetValue(original, out var replaced))
547foreach (var trivia in triviaList)
577foreach (var trivia in triviaList.Reverse())
690params SyntaxTrivia[] trivia) where T : SyntaxNode
697return node.WithPrependedLeadingTrivia((IEnumerable<SyntaxTrivia>)trivia);
714IEnumerable<SyntaxTrivia> trivia) where T : SyntaxNode
724params SyntaxTrivia[] trivia) where T : SyntaxNode
731return node.WithAppendedTrailingTrivia((IEnumerable<SyntaxTrivia>)trivia);
748IEnumerable<SyntaxTrivia> trivia) where T : SyntaxNode
758IEnumerable<SyntaxTrivia> leadingTrivia,
759IEnumerable<SyntaxTrivia> trailingTrivia) where T : SyntaxNode
874foreach (var trivia in token.LeadingTrivia)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\TriviaEngine\AbstractTriviaFormatter.cs (45)
40private delegate LineColumnDelta Formatter<T>(LineColumn lineColumn, SyntaxTrivia trivia, ArrayBuilder<T> changes, CancellationToken cancellationToken);
116protected abstract bool IsWhitespace(SyntaxTrivia trivia);
121protected abstract bool IsEndOfLine(SyntaxTrivia trivia);
126protected abstract bool LineContinuationFollowedByWhitespaceComment(SyntaxTrivia previousTrivia, SyntaxTrivia nextTrivia);
133protected abstract bool IsVisualBasicComment(SyntaxTrivia trivia);
169protected abstract SyntaxTrivia CreateWhitespace(string text);
174protected abstract SyntaxTrivia CreateEndOfLine();
179protected abstract LineColumnRule GetLineColumnRuleBetween(SyntaxTrivia trivia1, LineColumnDelta existingWhitespaceBetween, bool implicitLineBreak, SyntaxTrivia trivia2, CancellationToken cancellationToken);
184protected abstract LineColumnDelta Format(LineColumn lineColumn, SyntaxTrivia trivia, ArrayBuilder<SyntaxTrivia> changes, CancellationToken cancellationToken);
189protected abstract LineColumnDelta Format(LineColumn lineColumn, SyntaxTrivia trivia, ArrayBuilder<TextChange> changes, CancellationToken cancellationToken);
194protected abstract bool ContainsImplicitLineBreak(SyntaxTrivia trivia);
239using var _ = ArrayBuilder<SyntaxTrivia>.GetInstance(out var triviaList);
259private static void AddRange(ArrayBuilder<SyntaxTrivia> result, SyntaxTriviaList triviaList)
261foreach (var trivia in triviaList)
288var previousWhitespaceTrivia = default(SyntaxTrivia);
289var previousTrivia = default(SyntaxTrivia);
296SyntaxTrivia trivia;
372SyntaxTrivia trivia1,
374SyntaxTrivia trivia2,
396private LineColumnRule GetOverallLineColumnRuleBetween(SyntaxTrivia trivia1, LineColumnDelta existingWhitespaceBetween, bool implicitLineBreak, SyntaxTrivia trivia2, CancellationToken cancellationToken)
463private void GetTokensAtEdgeOfStructureTrivia(SyntaxTrivia trivia1, SyntaxTrivia trivia2, out SyntaxToken token1, out SyntaxToken token2)
543LineColumn lineColumnBeforeTrivia1, SyntaxTrivia trivia1, LineColumn lineColumnAfterTrivia1, LineColumnDelta existingWhitespaceBetween, SyntaxTrivia trivia2, LineColumnRule rule)
565LineColumn lineColumnBeforeTrivia1, LineColumn lineColumnAfterTrivia1, LineColumnDelta existingWhitespaceBetween, SyntaxTrivia trivia2, LineColumnRule rule)
624private void AddExtraLines(int linesBetweenTokens, ArrayBuilder<SyntaxTrivia> changes)
628using var _ = ArrayBuilder<SyntaxTrivia>.GetInstance(out var lineBreaks);
641private int GetInsertionIndex(ArrayBuilder<SyntaxTrivia> changes)
757ArrayBuilder<SyntaxTrivia> changes)
766ArrayBuilder<SyntaxTrivia> changes)
831private TextSpan GetTextSpan(SyntaxTrivia trivia1, SyntaxTrivia trivia2)
846private bool IsWhitespaceOrEndOfLine(SyntaxTrivia trivia)
851SyntaxTrivia previousTrivia,
852SyntaxTrivia trivia1,
854SyntaxTrivia trivia2)
903protected LineColumn GetLineColumn(LineColumn lineColumn, SyntaxTrivia trivia)
910protected LineColumnDelta GetLineColumnDelta(LineColumn lineColumn, SyntaxTrivia trivia)
935protected int GetExistingIndentation(SyntaxTrivia trivia)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\FileBannerFacts\AbstractFileBannerFacts.cs (21)
19private readonly Matcher<SyntaxTrivia> _oneOrMoreBlankLines;
24private readonly Matcher<SyntaxTrivia> _bannerMatcher;
29private readonly Matcher<SyntaxTrivia> _fileBannerMatcher;
34Matcher.Single<SyntaxTrivia>(this.SyntaxFacts.IsWhitespaceTrivia, "\\b"));
35var endOfLine = Matcher.Single<SyntaxTrivia>(this.SyntaxFacts.IsEndOfLineTrivia, "\\n");
38var shebangComment = Matcher.Single<SyntaxTrivia>(this.SyntaxFacts.IsShebangDirectiveTrivia, "#!");
39var singleLineComment = Matcher.Single<SyntaxTrivia>(this.SyntaxFacts.IsSingleLineCommentTrivia, "//");
40var multiLineComment = Matcher.Single<SyntaxTrivia>(this.SyntaxFacts.IsMultiLineCommentTrivia, "/**/");
41var singleLineDocumentationComment = Matcher.Single<SyntaxTrivia>(this.SyntaxFacts.IsSingleLineDocCommentTrivia, "///");
42var multiLineDocumentationComment = Matcher.Single<SyntaxTrivia>(this.SyntaxFacts.IsMultiLineDocCommentTrivia, "/** */");
61public abstract SyntaxTrivia CreateTrivia(SyntaxTrivia trivia, string text);
66public ImmutableArray<SyntaxTrivia> GetLeadingBlankLines(SyntaxNode node)
69public ImmutableArray<SyntaxTrivia> GetLeadingBlankLines<TSyntaxNode>(TSyntaxNode node)
83TSyntaxNode node, out ImmutableArray<SyntaxTrivia> strippedTrivia)
86var leadingTriviaToKeep = new List<SyntaxTrivia>(node.GetLeadingTrivia());
96public ImmutableArray<SyntaxTrivia> GetLeadingBannerAndPreprocessorDirectives<TSyntaxNode>(TSyntaxNode node)
111TSyntaxNode node, out ImmutableArray<SyntaxTrivia> strippedTrivia)
125List<SyntaxTrivia> leadingTriviaToStrip, leadingTriviaToKeep;
166public ImmutableArray<SyntaxTrivia> GetFileBanner(SyntaxNode root)
172public ImmutableArray<SyntaxTrivia> GetFileBanner(SyntaxToken firstToken)