kadircet added a comment.

> However those difficulties don't apply here - I believe you can take the 
> current final representation (vector<DocumentSymbol>) + the list of marks and 
> produce a markified vector<DocumentSymbol> via a fairly natural tree walk. 
> And this does a *really* good job of isolating this feature - we literally 
> run the rest of the algorithm without it.
> (This is slightly different to what's done in the patch, I would actually 
> take it out of the DocumentOutline class entirely).
> I don't think this hurts efficiency much (I think/hope this ends up being a 
> move rather than a copy for most nodes). And I think it actually makes the 
> markifying code easier to reason about in this case, as it just deals with 
> line numbers/positions, without having the distraction of SourceLocation.
> @kadircet WDYT of this argument, before we make David go back and forth?

As discussed offline, I am sold. In the end both this approach and inserting 
marks as we build the tree share a lot in common. In both cases when inserting 
a node into the tree we need to figure out whether it should go under the 
current parent or there's a mark that should contain that node, which is 
possibly not present in the tree yet. Instead of looking at ast nodes, it is 
definitely more reasonable to look at the document symbol nodes. Also as you 
mentioned doing this afterwards definitely does a better job at isolating this 
from the rest + enables us to fix up ranges/ordering of the tree produced from 
ast.

Sorry for the hassle here David :/


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D105904/new/

https://reviews.llvm.org/D105904

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to