private static void AddNewDirectiveTriviaSpan(TreeTextSpan.Builder spanBuilder, Stack <TreeTextSpan.Builder> spanStack, DirectiveTriviaSyntax directiveTrivia) { var parent = spanStack.Peek(); var newDirectiveSpan = parent.AddChild(directiveTrivia.FullSpan.Start); spanStack.Push(newDirectiveSpan); }
private static void ProcessNodeMembers(TreeTextSpan.Builder builder, SyntaxList <MemberDeclarationSyntax> members) { foreach (var namespaceDeclaration in members.OfType <NamespaceDeclarationSyntax>()) { var childBuilder = builder.AddChild(namespaceDeclaration.FullSpan.Start); childBuilder.SetEnd(namespaceDeclaration.FullSpan.End); ProcessNodeMembers(childBuilder, namespaceDeclaration.Members); } }
private static void ProcessNodeMembers(TreeTextSpan.Builder builder, SyntaxList <MemberDeclarationSyntax> members) { foreach (var namespaceDeclaration in members.Where(member => BaseNamespaceDeclarationSyntaxWrapper.IsInstance(member))) { var childBuilder = builder.AddChild(namespaceDeclaration.FullSpan.Start); childBuilder.SetEnd(namespaceDeclaration.FullSpan.End); ProcessNodeMembers(childBuilder, ((BaseNamespaceDeclarationSyntaxWrapper)namespaceDeclaration).Members); } }
private static TreeTextSpan FinalizeBuilder(TreeTextSpan.Builder builder, Stack <TreeTextSpan.Builder> stack, int end) { // close all spans (including the root) that have not been closed yet while (stack.Count > 0) { var span = stack.Pop(); span.SetEnd(end); } // Fill the gaps to make sure that directives on either side of an conditional directive group are not combined builder.FillGaps(); return(builder.ToSpan()); }
private static void CloseDirectiveTriviaSpan(TreeTextSpan.Builder spanBuilder, Stack <TreeTextSpan.Builder> spanStack, DirectiveTriviaSyntax directiveTrivia) { var previousSpan = spanStack.Pop(); previousSpan.SetEnd(directiveTrivia.FullSpan.End); }