[PATCH] D70480: [clangd] Use expansion location when the ref is inside macros.

Ilya Biryukov via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Nov 21 00:56:59 PST 2019


ilya-biryukov added inline comments.


================
Comment at: clang-tools-extra/clangd/index/SymbolCollector.cpp:280
       (Roles & static_cast<unsigned>(index::SymbolRole::Reference)) &&
-      SM.getFileID(SpellingLoc) == SM.getMainFileID())
+      SM.getFileID(SM.getSpellingLoc(Loc)) == SM.getMainFileID())
     ReferencedDecls.insert(ND);
----------------
hokein wrote:
> ilya-biryukov wrote:
> > We're using `getSpellingLoc` here and `getFileLoc` later. Why not use `getFileLoc` everywhere?
> > 
> > Having a variable (similar to the `SpellingLoc` we had before) and calling `getFileLoc` only once also seems preferable.
> > We're using getSpellingLoc here and getFileLoc later. Why not use getFileLoc everywhere?
> 
> There are two things in SymbolCollector:
> - symbols & ranking signals, we use spelling location for them, the code is part of this, `ReferencedDecls` is used to calculate the ranking
> - references
> 
> this patch only targets the reference part (changing the loc here would break many assumptions I think, and there was a failure test).
- What are the assumptions that it will break?
- What is rationale for using spelling locations for ranking and file location for references?

It would be nice to have this spelled out somewhere in the code, too. Currently this looks like an accidental inconsistency. Especially given that `getFileLoc` and `getSpellingLoc` are often the same.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D70480





More information about the cfe-commits mailing list