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