@@ -29,6 +29,7 @@ use project_model::{ManifestPath, ProjectWorkspace, TargetKind};
29
29
use serde_json:: json;
30
30
use stdx:: { format_to, never} ;
31
31
use syntax:: { algo, ast, AstNode , TextRange , TextSize } ;
32
+ use tracing:: error;
32
33
use vfs:: AbsPathBuf ;
33
34
34
35
use crate :: {
@@ -1372,9 +1373,26 @@ pub(crate) fn handle_inlay_hints_resolve(
1372
1373
1373
1374
let resolve_data: lsp_ext:: InlayHintResolveData = serde_json:: from_value ( data) ?;
1374
1375
1375
- let file_range = from_proto:: file_range (
1376
+ match snap. url_file_version ( & resolve_data. text_document . uri ) {
1377
+ Some ( version) if version == resolve_data. text_document . version => { }
1378
+ Some ( version) => {
1379
+ error ! (
1380
+ "attempted inlayHints/resolve of '{}' at version {} while server version is {}" ,
1381
+ resolve_data. text_document. uri, resolve_data. text_document. version, version,
1382
+ ) ;
1383
+ return Ok ( hint) ;
1384
+ }
1385
+ None => {
1386
+ error ! (
1387
+ "attempted inlayHints/resolve of unknown file '{}' at version {}" ,
1388
+ resolve_data. text_document. uri, resolve_data. text_document. version,
1389
+ ) ;
1390
+ return Ok ( hint) ;
1391
+ }
1392
+ }
1393
+ let file_range = from_proto:: file_range_uri (
1376
1394
& snap,
1377
- resolve_data. text_document ,
1395
+ & resolve_data. text_document . uri ,
1378
1396
match resolve_data. position {
1379
1397
PositionOrRange :: Position ( pos) => Range :: new ( pos, pos) ,
1380
1398
PositionOrRange :: Range ( range) => range,
0 commit comments