public SyntaxList <TNode> VisitList <TNode>(SyntaxList <TNode> list) where TNode : CSharpSyntaxNode { SyntaxListBuilder alternate = null; for (int i = 0, n = list.Count; i < n; i++) { var item = list[i]; var visited = (TNode)this.Visit(item); if (item != visited && alternate == null) { alternate = new SyntaxListBuilder(n); alternate.AddRange(list, 0, i); } if (alternate != null) { Debug.Assert(visited != null && visited.Kind != SyntaxKind.None, "Cannot remove node using Syntax.InternalSyntax.SyntaxRewriter."); alternate.Add(visited); } } if (alternate != null) { return(alternate.ToList()); } return(list); }
private void AddSkippedNamespaceText( ref CompilationUnitBodyBuilder body, ref SyntaxListBuilder initialBadNodes, CSharpSyntaxNode skippedSyntax) { if (body.Members.Count > 0) { body.Members[body.Members.Count - 1] = AddTrailingSkippedSyntax(body.Members[body.Members.Count - 1], skippedSyntax); } else if (body.Imports.Count > 0) { body.Imports[body.Imports.Count - 1] = AddTrailingSkippedSyntax(body.Imports[body.Imports.Count - 1], skippedSyntax); } else if (body.Package != null) { body.Package = AddTrailingSkippedSyntax(body.Package, skippedSyntax); } else if (body.Annotations.Count > 0) { body.Annotations[body.Annotations.Count - 1] = AddTrailingSkippedSyntax(body.Annotations[body.Annotations.Count - 1], skippedSyntax); } else { if (initialBadNodes == null) { initialBadNodes = this._pool.Allocate(); } initialBadNodes.AddRange(skippedSyntax); } }
public void AddRange(TNode[] items, int offset, int length) { _builder.AddRange(items, offset, length); }