sammccall added inline comments.

================
Comment at: clang-tools-extra/clangd/CodeComplete.h:141
+  /// Ideally this must be disabled when being used by ClangdLSPServer.
+  bool EnableInstrumentationMode = false;
+  std::function<void(const CodeCompleteResult&)>* RecordCCResults;
----------------
I'm wondering if we can simplify this interface a bit. I'm not sure why we need 
another callback rather than just returning the CodeCompleteResult in the usual 
way.

Another option:
 - if we invoke a callback for each completion instead of for the result set as 
a whole, we don't need to work out where to stash anything.
 - the work done after `addCandidate` is pretty trivial, so invoking a callback 
there provides basically all the information about the result set. The Top-N 
truncation is probably something you'd rather *not* have for analysis.
 - code completion always ends with the callback being invoked, so cross-result 
analysis can be done at that point.

So I think this could just be a single
`std::function<void(const CodeCompletion&, const SymbolQualitySignals &, const 
SymbolRelevanceSignals &)>`.
If it's non-null, addCandidate would call toCodeCompletion on the bundle and 
pass it to the callback at the end.


================
Comment at: clang-tools-extra/clangd/CodeComplete.h:218
+    // Signals captured when instrumentation is enabled during code completion.
+    std::shared_ptr<SymbolQualitySignals> QualitySignals;
+    std::shared_ptr<SymbolRelevanceSignals> RelevanceSignals;
----------------
why shared rather than unique?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D75603



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

Reply via email to