mirror of
https://github.com/MaskRay/ccls.git
synced 2024-11-28 18:41:57 +00:00
textDocument/definition: don't jump to the type definition
This commit is contained in:
parent
50d7fbc235
commit
62fbde7873
@ -9,30 +9,6 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
namespace ccls {
|
||||
namespace {
|
||||
std::vector<DeclRef> GetNonDefDeclarationTargets(DB *db, SymbolRef sym) {
|
||||
switch (sym.kind) {
|
||||
case Kind::Var: {
|
||||
std::vector<DeclRef> ret = GetNonDefDeclarations(db, sym);
|
||||
// If there is no declaration, jump to its type.
|
||||
if (ret.empty()) {
|
||||
for (auto &def : db->GetVar(sym).def)
|
||||
if (def.type) {
|
||||
if (Maybe<DeclRef> use =
|
||||
GetDefinitionSpell(db, SymbolIdx{def.type, Kind::Type})) {
|
||||
ret.push_back(*use);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
default:
|
||||
return GetNonDefDeclarations(db, sym);
|
||||
}
|
||||
}
|
||||
} // namespace
|
||||
|
||||
void MessageHandler::textDocument_declaration(TextDocumentPositionParam ¶m,
|
||||
ReplyOnce &reply) {
|
||||
int file_id;
|
||||
@ -84,7 +60,7 @@ void MessageHandler::textDocument_definition(TextDocumentPositionParam ¶m,
|
||||
// |uses| is empty if on a declaration/definition, otherwise it includes
|
||||
// all declarations/definitions.
|
||||
if (drs.empty()) {
|
||||
for (DeclRef dr : GetNonDefDeclarationTargets(db, sym))
|
||||
for (DeclRef dr : GetNonDefDeclarations(db, sym))
|
||||
if (!(dr.file_id == file_id &&
|
||||
dr.range.Contains(ls_pos.line, ls_pos.character)))
|
||||
drs.push_back(dr);
|
||||
|
Loading…
Reference in New Issue
Block a user