diff --git a/src/plugins/clangcodemodel/test/clangdtests.cpp b/src/plugins/clangcodemodel/test/clangdtests.cpp index d0726af4a49..20938701157 100644 --- a/src/plugins/clangcodemodel/test/clangdtests.cpp +++ b/src/plugins/clangcodemodel/test/clangdtests.cpp @@ -506,9 +506,6 @@ void ClangdTestLocalReferences::test() client()->findLocalUsages(doc, cursor, std::move(handler)); timer.start(10000); loop.exec(); - QEXPECT_FAIL("cursor not on identifier", "clangd bug: go to definition does not return", Abort); - QEXPECT_FAIL("template parameter member access", - "clangd bug: go to definition does not return", Abort); QVERIFY(timer.isActive()); timer.stop(); diff --git a/src/plugins/languageclient/languageclientsymbolsupport.cpp b/src/plugins/languageclient/languageclientsymbolsupport.cpp index fabb628bebc..8199084c416 100644 --- a/src/plugins/languageclient/languageclientsymbolsupport.cpp +++ b/src/plugins/languageclient/languageclientsymbolsupport.cpp @@ -78,14 +78,18 @@ static void handleGotoDefinitionResponse(const GotoDefinitionRequest::Response & { if (Utils::optional _result = response.result()) { const GotoResult result = _result.value(); - if (Utils::holds_alternative(result)) - return; - if (auto ploc = Utils::get_if(&result)) { + if (Utils::holds_alternative(result)) { + callback({}); + } else if (auto ploc = Utils::get_if(&result)) { callback(linkUnderCursor.value_or(ploc->toLink())); } else if (auto plloc = Utils::get_if>(&result)) { if (!plloc->isEmpty()) callback(linkUnderCursor.value_or(plloc->value(0).toLink())); + else + callback({}); } + } else { + callback({}); } }