28
28
//! [`await_notification`]: TestServer::await_notification
29
29
30
30
mod initialize;
31
+ mod inlay_hints;
31
32
mod publish_diagnostics;
32
33
mod pull_diagnostics;
33
34
@@ -48,20 +49,21 @@ use lsp_types::notification::{
48
49
Initialized , Notification ,
49
50
} ;
50
51
use lsp_types:: request:: {
51
- DocumentDiagnosticRequest , HoverRequest , Initialize , Request , Shutdown , WorkspaceConfiguration ,
52
- WorkspaceDiagnosticRequest ,
52
+ DocumentDiagnosticRequest , HoverRequest , Initialize , InlayHintRequest , Request , Shutdown ,
53
+ WorkspaceConfiguration , WorkspaceDiagnosticRequest ,
53
54
} ;
54
55
use lsp_types:: {
55
56
ClientCapabilities , ConfigurationParams , DiagnosticClientCapabilities ,
56
57
DidChangeTextDocumentParams , DidChangeWatchedFilesClientCapabilities ,
57
58
DidChangeWatchedFilesParams , DidCloseTextDocumentParams , DidOpenTextDocumentParams ,
58
59
DocumentDiagnosticParams , DocumentDiagnosticReportResult , FileEvent , Hover , HoverParams ,
59
- InitializeParams , InitializeResult , InitializedParams , NumberOrString , PartialResultParams ,
60
- Position , PreviousResultId , PublishDiagnosticsClientCapabilities ,
61
- TextDocumentClientCapabilities , TextDocumentContentChangeEvent , TextDocumentIdentifier ,
62
- TextDocumentItem , TextDocumentPositionParams , Url , VersionedTextDocumentIdentifier ,
63
- WorkDoneProgressParams , WorkspaceClientCapabilities , WorkspaceDiagnosticParams ,
64
- WorkspaceDiagnosticReportResult , WorkspaceFolder ,
60
+ InitializeParams , InitializeResult , InitializedParams , InlayHint , InlayHintClientCapabilities ,
61
+ InlayHintParams , NumberOrString , PartialResultParams , Position , PreviousResultId ,
62
+ PublishDiagnosticsClientCapabilities , Range , TextDocumentClientCapabilities ,
63
+ TextDocumentContentChangeEvent , TextDocumentIdentifier , TextDocumentItem ,
64
+ TextDocumentPositionParams , Url , VersionedTextDocumentIdentifier , WorkDoneProgressParams ,
65
+ WorkspaceClientCapabilities , WorkspaceDiagnosticParams , WorkspaceDiagnosticReportResult ,
66
+ WorkspaceFolder ,
65
67
} ;
66
68
use ruff_db:: system:: { OsSystem , SystemPath , SystemPathBuf , TestSystem } ;
67
69
use rustc_hash:: FxHashMap ;
@@ -725,6 +727,23 @@ impl TestServer {
725
727
let id = self . send_request :: < HoverRequest > ( params) ;
726
728
self . await_response :: < HoverRequest > ( & id)
727
729
}
730
+
731
+ /// Sends a `textDocument/inlayHint` request for the document at the given path and range.
732
+ pub ( crate ) fn inlay_hints_request (
733
+ & mut self ,
734
+ path : impl AsRef < SystemPath > ,
735
+ range : Range ,
736
+ ) -> Result < Option < Vec < InlayHint > > > {
737
+ let params = InlayHintParams {
738
+ text_document : TextDocumentIdentifier {
739
+ uri : self . file_uri ( path) ,
740
+ } ,
741
+ range,
742
+ work_done_progress_params : WorkDoneProgressParams :: default ( ) ,
743
+ } ;
744
+ let id = self . send_request :: < InlayHintRequest > ( params) ;
745
+ self . await_response :: < InlayHintRequest > ( & id)
746
+ }
728
747
}
729
748
730
749
impl fmt:: Debug for TestServer {
@@ -908,6 +927,19 @@ impl TestServerBuilder {
908
927
self
909
928
}
910
929
930
+ /// Enable or disable inlay hints capability
931
+ pub ( crate ) fn enable_inlay_hints ( mut self , enabled : bool ) -> Self {
932
+ self . client_capabilities
933
+ . text_document
934
+ . get_or_insert_default ( )
935
+ . inlay_hint = if enabled {
936
+ Some ( InlayHintClientCapabilities :: default ( ) )
937
+ } else {
938
+ None
939
+ } ;
940
+ self
941
+ }
942
+
911
943
/// Enable or disable file watching capability
912
944
#[ expect( dead_code) ]
913
945
pub ( crate ) fn enable_did_change_watched_files ( mut self , enabled : bool ) -> Self {
0 commit comments