ckandeler updated this revision to Diff 374520. ckandeler added a comment. Fixed formatting.
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D110324/new/ https://reviews.llvm.org/D110324 Files: clang-tools-extra/clangd/XRefs.cpp clang-tools-extra/clangd/unittests/XRefsTests.cpp Index: clang-tools-extra/clangd/unittests/XRefsTests.cpp =================================================================== --- clang-tools-extra/clangd/unittests/XRefsTests.cpp +++ clang-tools-extra/clangd/unittests/XRefsTests.cpp @@ -1947,6 +1947,9 @@ void $overridedecl[[func]]() override; }; void Derived::$overridedef[[func]]() {} + class Derived2 : public Base { + void $overridedef[[func]]() override {} + }; void test(Derived* D) { D->func(); // No references to the overrides. })cpp"; Index: clang-tools-extra/clangd/XRefs.cpp =================================================================== --- clang-tools-extra/clangd/XRefs.cpp +++ clang-tools-extra/clangd/XRefs.cpp @@ -1431,17 +1431,20 @@ !OverriddenBy.Subjects.empty()) Index->relations( OverriddenBy, [&](const SymbolID &Subject, const Symbol &Object) { - if (auto LSPLoc = - toLSPLocation(Object.CanonicalDeclaration, *MainFilePath)) { + const auto LSPLocDecl = + toLSPLocation(Object.CanonicalDeclaration, *MainFilePath); + const auto LSPLocDef = + toLSPLocation(Object.Definition, *MainFilePath); + if (LSPLocDecl && LSPLocDecl != LSPLocDef) { ReferencesResult::Reference Result; - Result.Loc = std::move(*LSPLoc); + Result.Loc = std::move(*LSPLocDecl); Result.Attributes = ReferencesResult::Declaration | ReferencesResult::Override; Results.References.push_back(std::move(Result)); } - if (auto LSPLoc = toLSPLocation(Object.Definition, *MainFilePath)) { + if (LSPLocDef) { ReferencesResult::Reference Result; - Result.Loc = std::move(*LSPLoc); + Result.Loc = std::move(*LSPLocDef); Result.Attributes = ReferencesResult::Declaration | ReferencesResult::Definition | ReferencesResult::Override;
Index: clang-tools-extra/clangd/unittests/XRefsTests.cpp =================================================================== --- clang-tools-extra/clangd/unittests/XRefsTests.cpp +++ clang-tools-extra/clangd/unittests/XRefsTests.cpp @@ -1947,6 +1947,9 @@ void $overridedecl[[func]]() override; }; void Derived::$overridedef[[func]]() {} + class Derived2 : public Base { + void $overridedef[[func]]() override {} + }; void test(Derived* D) { D->func(); // No references to the overrides. })cpp"; Index: clang-tools-extra/clangd/XRefs.cpp =================================================================== --- clang-tools-extra/clangd/XRefs.cpp +++ clang-tools-extra/clangd/XRefs.cpp @@ -1431,17 +1431,20 @@ !OverriddenBy.Subjects.empty()) Index->relations( OverriddenBy, [&](const SymbolID &Subject, const Symbol &Object) { - if (auto LSPLoc = - toLSPLocation(Object.CanonicalDeclaration, *MainFilePath)) { + const auto LSPLocDecl = + toLSPLocation(Object.CanonicalDeclaration, *MainFilePath); + const auto LSPLocDef = + toLSPLocation(Object.Definition, *MainFilePath); + if (LSPLocDecl && LSPLocDecl != LSPLocDef) { ReferencesResult::Reference Result; - Result.Loc = std::move(*LSPLoc); + Result.Loc = std::move(*LSPLocDecl); Result.Attributes = ReferencesResult::Declaration | ReferencesResult::Override; Results.References.push_back(std::move(Result)); } - if (auto LSPLoc = toLSPLocation(Object.Definition, *MainFilePath)) { + if (LSPLocDef) { ReferencesResult::Reference Result; - Result.Loc = std::move(*LSPLoc); + Result.Loc = std::move(*LSPLocDef); Result.Attributes = ReferencesResult::Declaration | ReferencesResult::Definition | ReferencesResult::Override;
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits