public static void CollectOutliningSpans( SyntacticDocument document, ImmutableDictionary<Type, ImmutableArray<AbstractSyntaxNodeOutliner>> nodeOutlinerMap, ImmutableDictionary<int, ImmutableArray<AbstractSyntaxTriviaOutliner>> triviaOutlinerMap, List<OutliningSpan> spans, CancellationToken cancellationToken) { var collector = new RegionCollector(document, nodeOutlinerMap, triviaOutlinerMap, spans, cancellationToken); collector.Collect(document.Root); }
/// <summary> /// Keep in sync with <see cref="GetOutliningSpans"/> /// </summary> public async Task <IList <OutliningSpan> > GetOutliningSpansAsync( Document document, CancellationToken cancellationToken) { try { var syntaxRoot = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false); // change this to shared pool once RI var regions = new List <OutliningSpan>(); RegionCollector.CollectOutliningSpans(document, syntaxRoot, _nodeOutlinerMap, _triviaOutlinerMap, regions, cancellationToken); return(regions); } catch (Exception e) when(FatalError.ReportUnlessCanceled(e)) { throw ExceptionUtilities.Unreachable; } }