[PATCH] D101388: [clangd] Add SymbolID to LocatedSymbol.

Sam McCall via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Apr 28 02:41:11 PDT 2021


sammccall accepted this revision.
sammccall added a comment.
This revision is now accepted and ready to land.

LG, but can you amend the description a bit?

> We do not have to both locate the symbol and also query the SymbolID (using getSymbolInfo).

IIRC this isn't really the reason, it's because getSymbolInfo and locateSymbolAt don't have the same semantics *for choosing symbols* and we want the ID of the symbol that matches the latter.



================
Comment at: clang-tools-extra/clangd/XRefs.cpp:260
       Macro.Definition = Loc;
+      Macro.ID = getSymbolID(M->Name, M->Info, AST.getSourceManager());
       return Macro;
----------------
note that this populates SymbolID even if there's no ID available, so it's incorrect if the type is Optional<SymbolID>


================
Comment at: clang-tools-extra/clangd/XRefs.h:51
   llvm::Optional<Location> Definition;
+  // SymbolID of the symbol. Not present for file referents.
+  llvm::Optional<SymbolID> ID;
----------------
There are other cases too, maybe just "if available"


================
Comment at: clang-tools-extra/clangd/XRefs.h:52
+  // SymbolID of the symbol. Not present for file referents.
+  llvm::Optional<SymbolID> ID;
 };
----------------
SymbolID is already inherently optional (it has a zero value for a whil enow)


================
Comment at: clang-tools-extra/clangd/unittests/XRefsTests.cpp:924
       EXPECT_EQ(Results[0].PreferredDeclaration.range, *WantDecl) << Test;
+      EXPECT_THAT(Results[0], HasID()) << Test;
       llvm::Optional<Range> GotDef;
----------------
nit, just `EXPECT_TRUE(Results[0].ID)`, and remove the matcher?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D101388



More information about the cfe-commits mailing list