aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Ridge <zeratul976@hotmail.com>2024-03-05 23:12:43 -0500
committerGitHub <noreply@github.com>2024-03-05 23:12:43 -0500
commitd1aec79a2ce077e49da7699c4ca2dee239d0a249 (patch)
treeade9f98a0cd05dfc5919468a75efbe441b9c10c3
parent5549b0173661155d4ca9acf4958fe6dce34c2cd5 (diff)
downloadllvm-d1aec79a2ce077e49da7699c4ca2dee239d0a249.zip
llvm-d1aec79a2ce077e49da7699c4ca2dee239d0a249.tar.gz
llvm-d1aec79a2ce077e49da7699c4ca2dee239d0a249.tar.bz2
[clangd] Remove calls to getFileLoc() in declToSym() (#83532)
toHalfOpenFileRange() already handles translating macro locations to file locations, and it can provide a better result by knowing about both ends of the range. Fixes https://github.com/clangd/clangd/issues/1941
-rw-r--r--clang-tools-extra/clangd/FindSymbols.cpp4
-rw-r--r--clang-tools-extra/clangd/unittests/FindSymbolsTests.cpp9
2 files changed, 10 insertions, 3 deletions
diff --git a/clang-tools-extra/clangd/FindSymbols.cpp b/clang-tools-extra/clangd/FindSymbols.cpp
index 5b3e46a..5244a4e 100644
--- a/clang-tools-extra/clangd/FindSymbols.cpp
+++ b/clang-tools-extra/clangd/FindSymbols.cpp
@@ -223,8 +223,8 @@ std::string getSymbolDetail(ASTContext &Ctx, const NamedDecl &ND) {
std::optional<DocumentSymbol> declToSym(ASTContext &Ctx, const NamedDecl &ND) {
auto &SM = Ctx.getSourceManager();
- SourceLocation BeginLoc = SM.getFileLoc(ND.getBeginLoc());
- SourceLocation EndLoc = SM.getFileLoc(ND.getEndLoc());
+ SourceLocation BeginLoc = ND.getBeginLoc();
+ SourceLocation EndLoc = ND.getEndLoc();
const auto SymbolRange =
toHalfOpenFileRange(SM, Ctx.getLangOpts(), {BeginLoc, EndLoc});
if (!SymbolRange)
diff --git a/clang-tools-extra/clangd/unittests/FindSymbolsTests.cpp b/clang-tools-extra/clangd/unittests/FindSymbolsTests.cpp
index b1b8b4c..4276a44 100644
--- a/clang-tools-extra/clangd/unittests/FindSymbolsTests.cpp
+++ b/clang-tools-extra/clangd/unittests/FindSymbolsTests.cpp
@@ -750,6 +750,9 @@ TEST(DocumentSymbols, RangeFromMacro) {
$fullDef[[FF3() {
int var = 42;
}]]
+
+ #define FF4(name) int name = 0
+ $FooRange[[FF4($FooSelectionRange[[foo]])]];
)");
TU.Code = Main.code().str();
EXPECT_THAT(
@@ -766,7 +769,11 @@ TEST(DocumentSymbols, RangeFromMacro) {
AllOf(withName("FF3"), withDetail("()"),
symRange(Main.range("fullDef")),
children(AllOf(withName("waldo"), withDetail("void ()"),
- symRange(Main.range("fullDef")))))));
+ symRange(Main.range("fullDef"))))),
+ AllOf(
+ withName("FF4"), withDetail("(foo)"),
+ children(AllOf(withName("foo"), symRange(Main.range("FooRange")),
+ symNameRange(Main.range("FooSelectionRange")))))));
}
TEST(DocumentSymbols, FuncTemplates) {