private static void ClearAndFreeBuilder(SyntaxTriviaListBuilder builder) { // It's possible someone might create a list with a huge amount of trivia // in it. We don't want to hold onto such items forever. So only cache // reasonably sized lists. In IDE testing, around 99% of all trivia lists // were 16 or less elements. const int MaxBuilderCount = 16; if (builder.Count <= MaxBuilderCount) { builder.Clear(); s_builderPool.Free(builder); } }
public override SyntaxToken VisitToken(SyntaxToken token) { SyntaxToken result = token; // only bother visiting trivia if we are removing a node in structured trivia if (this.VisitIntoStructuredTrivia) { result = base.VisitToken(token); } // the next token gets the accrued trivia. if (result.GetKind() != SyntaxKind.None && _residualTrivia != null && _residualTrivia.Count > 0) { _residualTrivia.Add(result.LeadingTrivia); result = result.WithLeadingTrivia(_residualTrivia.ToList()); _residualTrivia.Clear(); } return(result); }