kadircet created this revision. kadircet added a reviewer: jkorous. Herald added subscribers: cfe-commits, arphaman, MaskRay, ioeric, ilya-biryukov.
USRs for macros were not cannonical due to usage of cursor location instead of definition location. Repository: rCTE Clang Tools Extra https://reviews.llvm.org/D57228 Files: clangd/XRefs.cpp unittests/clangd/SymbolInfoTests.cpp Index: unittests/clangd/SymbolInfoTests.cpp =================================================================== --- unittests/clangd/SymbolInfoTests.cpp +++ unittests/clangd/SymbolInfoTests.cpp @@ -149,7 +149,13 @@ #define MACRO 5\nint i = MAC^RO; )cpp", {CreateExpectedSymbolDetails("MACRO", "", - "c:TestTU.cpp@55@macro@MACRO")}}, + "c:TestTU.cpp@38@macro@MACRO")}}, + { + R"cpp( // Macro reference + #define MACRO 5\nint i = MACRO^; + )cpp", + {CreateExpectedSymbolDetails("MACRO", "", + "c:TestTU.cpp@38@macro@MACRO")}}, { R"cpp( // Multiple symbols returned - using overloaded function name void foo() {} Index: clangd/XRefs.cpp =================================================================== --- clangd/XRefs.cpp +++ clangd/XRefs.cpp @@ -794,7 +794,8 @@ SymbolDetails NewMacro; NewMacro.name = Macro.Name; llvm::SmallString<32> USR; - if (!index::generateUSRForMacro(NewMacro.name, Loc, SM, USR)) { + if (!index::generateUSRForMacro(NewMacro.name, + Macro.Info->getDefinitionLoc(), SM, USR)) { NewMacro.USR = USR.str(); NewMacro.ID = SymbolID(NewMacro.USR); }
Index: unittests/clangd/SymbolInfoTests.cpp =================================================================== --- unittests/clangd/SymbolInfoTests.cpp +++ unittests/clangd/SymbolInfoTests.cpp @@ -149,7 +149,13 @@ #define MACRO 5\nint i = MAC^RO; )cpp", {CreateExpectedSymbolDetails("MACRO", "", - "c:TestTU.cpp@55@macro@MACRO")}}, + "c:TestTU.cpp@38@macro@MACRO")}}, + { + R"cpp( // Macro reference + #define MACRO 5\nint i = MACRO^; + )cpp", + {CreateExpectedSymbolDetails("MACRO", "", + "c:TestTU.cpp@38@macro@MACRO")}}, { R"cpp( // Multiple symbols returned - using overloaded function name void foo() {} Index: clangd/XRefs.cpp =================================================================== --- clangd/XRefs.cpp +++ clangd/XRefs.cpp @@ -794,7 +794,8 @@ SymbolDetails NewMacro; NewMacro.name = Macro.Name; llvm::SmallString<32> USR; - if (!index::generateUSRForMacro(NewMacro.name, Loc, SM, USR)) { + if (!index::generateUSRForMacro(NewMacro.name, + Macro.Info->getDefinitionLoc(), SM, USR)) { NewMacro.USR = USR.str(); NewMacro.ID = SymbolID(NewMacro.USR); }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits