ioeric accepted this revision.
ioeric added a comment.
This revision is now accepted and ready to land.

Nice! Thanks for making the refactoring and adding tests! I think this is good 
to go now.

I'm not very familiar with code outside of the index library (Driver, Basic 
etc), but the changes seem reasonable to me. Feel free to get another pair of 
eyes for them ;)



================
Comment at: include/clang/Index/RecordingAction.h:42
+std::unique_ptr<FrontendAction>
+createIndexDataRecordingAction(RecordingOptions RecordOpts,
+                               std::unique_ptr<FrontendAction> WrappedAction);
----------------
Add a FIXME that this is not implemented yet.


================
Comment at: lib/Index/IndexingAction.cpp:758
+
+  class IndexUnitDataRecorder : public IndexUnitDataConsumer {
+  public:
----------------
nathawes wrote:
> ioeric wrote:
> > I think the inheritance of `IndexUnitDataConsumer`  and the creation of 
> > factory should be in user code (e.g. implementation for on-disk 
> > persist-index-data should come from the compiler invocation code 
> > `ExecuteCompilerInvocation.cpp` or at least a separate file in the library 
> > that compiler invocation can use), and the user should only use 
> > `createUnitIndexingAction` by providing a factory.  Currently, 
> > `createUnitIndexingAction` and `createIndexDataRecordingAction` are mostly 
> > identical except for the code that implements `IndexUnitDataConsumer ` and 
> > creates the factory.
> > 
> > The current `createIndexDataRecordingAction` would probably only used by 
> > the compiler invocation, and we can keep the generalized 
> > `createUnitIndexingAction` in the public APIs.
> `IndexUnitDataRecorder` here is just a stub I added when I split the patch up 
> – the follow-up revision has it in a separate file. I'll move the separate 
> files to this patch and stub out the method bodies with TODOs instead.
> 
> I've made `createIndexDataRecordingAction` call `createUnitIndexingAction` to 
> remove the duplication, and pulled it, `RecordingOptions` and 
> `getRecordingOptionsFromFrontendOptions` to a new header 
> (`RecordingAction.h`) that `ExecuteComilerInvocation.cpp` uses. Does that 
> sound ok?
Sounds good. Thanks for the explanation! 


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