Updated the test based on feedback from @aprantl and also to specifically check we don't see the output from the -o and -s commands.
Mar 22 2019
Mar 21 2019
Mar 7 2019
Mar 5 2019
Mar 4 2019
These references were added to support using the index data for symbol rename.
Understood -- thank you for providing the context (the original commit that added this code didn't have the explanation why this reference was added).
Mar 1 2019
These references were added to support using the index data for symbol rename. I.e. so that when you rename the class, you can use the index data to find all occurrences of its name, including its use in constructor/destructor declarations and references (hence the test cases in test/Index/Core/index-source.cpp). If you need to specifically find references of the class symbol, as opposed to its name, could we instead distinguish these cases with a more specific SymbolRole, e.g. NameReference as opposed to Reference, and filter them based on that instead?
Feb 27 2019
Looks good to me.
Jul 10 2018
Jul 1 2018
That would be great @yvvan – thanks!
Jun 29 2018
@yvvan I'm not sure, sorry. I plan on removing/adding alternatives for the Apple specific bits and opening these up for review over the next two weeks if you're ok to wait a little longer.
Jun 27 2018
@yvvan I've just updated them all – sorry for the delay!
Updated to apply on the updated first and second patches + formatting fixes.
Updated to apply on the updated first patch.
Updated to apply on top-of-tree.
Mar 14 2018
@malaperle Just to clarify, what's the particular end-loc we're talking about here? e.g. for a function call, would this be the end of the function's name, or the closing paren?
For the end of the name, couldn't this be derived from the start loc + symbol name length (barring token pastes and escaped new lines in the middle of identifiers, which hopefully aren't too common)?
I can see the value for the closing paren though.
I mean the end of the name referencing the symbol, so that it can be highlighted properly when using the "find references in workspace" feature. There are cases where the name of the symbol itself is not present, for example "MyClass o1, o2;" (o1 and o2 reference the constructor), references to overloaded operators, etc.
Mar 13 2018
For computing the start/end-loc of function bodies, I tried the SingleFileParseMode and SkipFunctionBodies separately ( as a start). The source I use this on looks like this:
Given the discussion in https://reviews.llvm.org/D44247, I think we can do without the start/end-loc of function bodies and try some heuristics client-side. We can always revisit this later if necessary.
However, for the end-loc of occurrences, would you be OK with this being added? I think it would be a good compromise in terms of performance, simplicity and index size.
Feb 12 2018
@ioeric I'm working on a few other priorities over the next few weeks, sorry, but should get back to this relatively soon after that.
I would just land it, but I expect some downstream breakage I want to make sure I have time to fix.
Jan 26 2018
Looks good to me!
Jan 18 2018
- Applied the various refactorings suggested by @ioeric
- Extended c-index-test with a new option to print out the collected unit indexing data, and
- Added tests for the unit indexing functionality using the new option
- Fixed formatting
@ioeric I should have an updated patch up shortly with your inline comments addressed + new tests. Thanks again for reviewing!
Dec 19 2017
This needs to be reworked to remove its dependence on blocks.
Updated to account for the most recent changes to Part 1
Fix out of date header comment in FileIndexData.h
Dec 18 2017
I've refactored the indexing/dependency data collection out from the writing with the new IndexUnitDataConsumer class, and made other smaller changes to address the feedback from @ioeric.
Dec 12 2017
Thanks for taking another look @ioeric – I'll work through your comments and update.
Dec 7 2017
Worked through the comments from @ioeric and split the code for writing out the collected indexing data into a separate patch.
Nov 27 2017
Thanks for the feedback @malaperle!
Nov 9 2017
I think this patch should be split into a number of smaller patches to help the review process.
Things like tools/IndexStore, DirectoryWatcher and other components that are not directly needed right now should definitely be in their own patches.
It would be nice to find some way to split the implementation into multiple patches as well.
This is a lot of work (but great work!) for one patch. Smaller/incremental patches help reviewers understand and (hopefully) capture potential improvement of the design. I would really appreciate it if you could further split the patch.
Nov 6 2017
Based on @arphaman's feedback:
- Pulled the index store related diagnostics out into their own category/diagnostic group
- Removed the CLANG_PROJECT_INDEX_PATH env var check.
- Swapped "/" used in a few places as a separator/root with the equivalent llvm::sys::path call.
- Fixed the typo/convention/documentation issues and simplifications pointed out so far
Oct 31 2017
Thanks @arphaman! I'll work through your comments and update.
I've split out the parts for reading and managing the store data (the IndexStore and DirectoryWatcher libraries) into a separate patch, so this one is now just about the -index-store-path option and everything necessary to write out the index data to the provided path.
Oct 18 2017
Aug 11 2017
May 19 2017
Ah sorry, missed the "Decl::" part of your recommendation. I'll move it.
May 18 2017
Mar 21 2017
Thanks for this – looks good to me!
Mar 17 2017
Mar 13 2017
Mar 7 2017
Mar 6 2017
Feb 23 2017
Feb 16 2017
Remove pointless cast.
Also report an implicit property definition (with relation to the ivar), getter and setter when the @synthesize is implicit.