language-server: Support simple semantic queries. (#7639)

Add support for "jump to declaration", "find references", type
information on hover. This support is strictly single-file for now; only
references and declarations within the same file are found. We could go
a bit beyond that, but to properly handle cross-file references we'll
need to build an index and a compilation database, which is beyond the
scope of this change.

On hover, we provide the type information for the instruction under the
cursor as-is. This is frequently not very useful, as the type of a
function F is simply "<type of F>", but is a starting point for richer
information.

Assisted-by: Claude Code
This commit is contained in:
Richard Smith
2026-08-19 14:35:05 +00:00
committed by GitHub
parent a872123a73
commit c78751338b
35 changed files with 1256 additions and 51 deletions
@@ -30,9 +30,14 @@ auto HandleInitialize(
auto encoding = NegotiatePositionEncoding(params.capabilities);
context.SetPositionEncoding(encoding);
llvm::json::Object capabilities{{"documentSymbolProvider", true},
llvm::json::Object capabilities{{"declarationProvider", true},
{"definitionProvider", true},
{"documentSymbolProvider", true},
{"hoverProvider", true},
{"positionEncoding", encoding},
{"referencesProvider", true},
{"textDocumentSync", /*Incremental=*/2},
{"positionEncoding", encoding}};
{"typeDefinitionProvider", true}};
llvm::json::Object reply{{"capabilities", std::move(capabilities)}};
on_done(reply);
}