diff --git a/src/lsp.h b/src/lsp.h index fe4330b3..2a7fbfd2 100644 --- a/src/lsp.h +++ b/src/lsp.h @@ -169,8 +169,10 @@ MAKE_REFLECT_STRUCT(lsLocation, uri, range); // cquery extension struct lsLocationEx : lsLocation { optional containerName; + // Avoid circular dependency on symbol.h + optional role; }; -MAKE_REFLECT_STRUCT(lsLocationEx, uri, range, containerName); +MAKE_REFLECT_STRUCT(lsLocationEx, uri, range, containerName, role); template struct lsCommand { diff --git a/src/query_utils.cc b/src/query_utils.cc index 506a453e..2a87ded5 100644 --- a/src/query_utils.cc +++ b/src/query_utils.cc @@ -275,6 +275,7 @@ optional GetLsLocationEx(QueryDatabase* db, lsLocationEx ret; ret.lsLocation::operator=(*ls_loc); if (container) { + ret.role = uint16_t(use.role); EachEntityDef(db, use, [&](const auto& def) { ret.containerName = std::string_view(def.detailed_name); return false;