malaperle added a comment.

@ilya-biryukov Hi! I'll be updating William's patches that were in progress. I 
just have a few comments/question before I send a new update. (I also don't 
know if I can update this diff or I have to create a new diff on Phabricator... 
I guess we'll see!!).



================
Comment at: clangd/ClangdUnit.cpp:113
 
+  CppFilePreambleCallbacks(IncludeReferenceMap &IRM)
+      : IRM(IRM) {}
----------------
ilya-biryukov wrote:
> ilya-biryukov wrote:
> > Let's create a new empty map inside this class and have a 
> > `takeIncludeReferences` method (similar to `TopLevelDeclIDs` and 
> > `takeTopLevelDeclIDs`)
> This comment is not addressed yet, but marked as done.
As mentioned below, the idea was to have a single map being appended to, 
without having to merge two separate maps. However, I can change the code so 
that two separate maps are built and merged if you prefer.

But I'm not so clear if that's what you'd prefer:

> You copy the map for preamble and then append to it in 
> CppFilePreambleCallbacks? That also LG, we should not have many references 
> there anyway.

It's not meant to have any copy. The idea was to create a single 
IncludeReferenceMap in CppFile::deferRebuild, populate it with both preamble 
and non-preamble include references and std::move it around for later use 
(stored in ParsedAST).


================
Comment at: clangd/ClangdUnit.cpp:281
+    std::shared_ptr<PCHContainerOperations> PCHs,
+    IntrusiveRefCntPtr<vfs::FileSystem> VFS, IncludeReferenceMap IRM) {
 
----------------
ilya-biryukov wrote:
> Don't we already store the map we need in `PreambleData`? Why do we need an 
> extra `IRM` parameter?
Since the map will be now stored in ParsedAST and the instance doesn't exist 
yet, we need to keep the IRM parameter. I noticed that it wasn't being 
std::move'd though.


================
Comment at: clangd/XRefs.cpp:185
+
+      if ((unsigned)R.start.line ==
+              SourceMgr.getSpellingLineNumber(
----------------
ilya-biryukov wrote:
> why do we need to convert to unsigned? To slience compiler warnings?
Yes, "line" from the protocol is signed, whereas getSpellingColumn/lineNumber 
returns unsigned. I'll extract another var for the line number and cast both to 
int instead to have less casts and make the condition smaller.


Repository:
  rCTE Clang Tools Extra

https://reviews.llvm.org/D38639



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

Reply via email to