zyounan added inline comments.

================
Comment at: clang-tools-extra/clangd/InlayHints.cpp:520
     auto ExprStartLoc = SM.getTopMacroCallerLoc(E->getBeginLoc());
-    auto Decomposed = SM.getDecomposedLoc(ExprStartLoc);
+    auto Decomposed = SM.getDecomposedExpansionLoc(ExprStartLoc);
     if (Decomposed.first != MainFileID)
----------------
nridge wrote:
> I admit I struggle with this spelling/expansion loc stuff. But having spent a 
> bit of time reading the implementations of these functions, would I be 
> correct to say that another, perhaps easier to follow, way to express the 
> same thing would be:
> 
> ```
> auto Decomposed = SM.getDecomposedLoc(SM.getFileLoc(E->getBeginLoc()));
> ```
> 
> ?
Yes, indeed. `SM.getFileLoc` performs exactly the same function as 
`getTopMacroCallerLoc` and `getDecomposedExpansionLoc`: 
If Loc is a FileID, just return Loc. 
In another case it falls into a loop until the result is a FileID: First obtain 
the "top macro caller" location, then the beginning expansion location.


================
Comment at: clang-tools-extra/clangd/InlayHints.cpp:521
+    auto Decomposed = SM.getDecomposedExpansionLoc(ExprStartLoc);
     if (Decomposed.first != MainFileID)
       return false;
----------------
nridge wrote:
> zyounan wrote:
> > stupid question: I was suspicious with this check that when would 
> > `Decomposed.first` not being the same as MainFileID? Should the 
> > "top-caller" of the macro always be in main file? I didn't find a case that 
> > differs, except when `getDecomposedLoc` provides wrong FileID.
> I tried adding an assertion in this early-return branch, and it tripped in 
> `ParameterHints.IncludeAtNonGlobalScope`.
> 
> The code there is:
> 
> ```
>   Annotations FooInc(R"cpp(
>     void bar() { foo(42); }
>   )cpp");
>   Annotations FooCC(R"cpp(
>     struct S {
>       void foo(int param);
>       #include "foo.inc"
>     };
>   )cpp");
> ```
> 
> so I guess the decomposed loc there is a file loc, but not in the main file 
> (but rather in `foo.inc`).
Ah, I see. Thanks!


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D144074

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

Reply via email to