malaperle added a comment.

In https://reviews.llvm.org/D39050#948500, @akyrtzi wrote:

> @malaperle, to clarify we are not suggesting that you write your own parser, 
> the suggestion is to use clang in 'fast-scan' mode to get the structure of 
> the declarations of a single file, see `CXTranslationUnit_SingleFileParse` 
> (along with enabling skipping of bodies). We have found clang is super fast 
> when you only try to get the structure of a file like this.


Thank you, that sounds very useful. I will try that and get some measurements.

> We can make convenient APIs to provide the syntactic structure of 
> declarations based on their location.

Perhaps just for the end-loc since it's pretty much guaranteed to be needed by 
everyone. But if it's very straightforward, perhaps that's not needed. I'll try 
and see.

> But let's say we added the end-loc, is it enough ? If you want to implement 
> the 'peek the definition' like Eclipse, then it is not enough, you also need 
> to figure out if there are documentation comments associated with the 
> declaration and also show those. Also what if you want to highlight the type 
> signature of a function, then just storing the location of the closing brace 
> of its body is not enough. There can be any arbitrary things you may want to 
> get from the structure of the declaration (e.g. the parameter ranges), but we 
> could provide an API to gather any syntactic structure info you may want.

That's a very good point. I guess in the back of my mind, I have the worry that 
one cannot extend what is stored, either for a different performance trade-off 
or for additional things. The fact that both clang and clangd have to agree on 
the format so that index-while-building can be used seems to make it inherently 
not possible to extend. But perhaps it's better to not overthink this for now.


https://reviews.llvm.org/D39050



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

Reply via email to