sammccall added a comment.

Changing the strings here makes sense, but I'm confused by the use of 
tryGetRealPathName.
Also, we ended up dropping the filename in favor of UniqueID in 
IncludeStructure, so that's an alternative here.

Yes, I think we need a test here with a scope wide enough that it tests that 
the callsites of addMapping/getMapping line up.



================
Comment at: clang-tools-extra/clangd/index/CanonicalIncludes.cpp:73
+      auto Filename = SM.getFileEntryForID(SM.getFileID(Range.getBegin()))
+                          ->tryGetRealPathName();
+      Includes->addMapping(Filename, isLiteralInclude(Text)
----------------
offline we had discussed getName rather than tryGetRealPathName instead.

The comment in HeaderStructure says specifically that we avoid 
tryGetRealPathName because it's not preserved in the preamble.
I suspect that this will give incorrect results in cases involving non-preamble 
`#includes`.

In any case we should have a comment somewhere on CanonicalIncludes about how 
we're identifying files, and why it's stable enough. The lack of such a comment 
is really what led to the bug on friday :-)


================
Comment at: clang-tools-extra/clangd/index/CanonicalIncludes.cpp:73
+      auto Filename = SM.getFileEntryForID(SM.getFileID(Range.getBegin()))
+                          ->tryGetRealPathName();
+      Includes->addMapping(Filename, isLiteralInclude(Text)
----------------
sammccall wrote:
> offline we had discussed getName rather than tryGetRealPathName instead.
> 
> The comment in HeaderStructure says specifically that we avoid 
> tryGetRealPathName because it's not preserved in the preamble.
> I suspect that this will give incorrect results in cases involving 
> non-preamble `#includes`.
> 
> In any case we should have a comment somewhere on CanonicalIncludes about how 
> we're identifying files, and why it's stable enough. The lack of such a 
> comment is really what led to the bug on friday :-)
tryGetRealPathName can be the empty string, what do we do in such cases?

(In practice I think this is going to happen in the case where you have a 
non-preamble `#include` of a header-guarded file which was also part of the 
preamble) 


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D123031

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

Reply via email to