Skip to content

Commit 805598d

Browse files
authored
Merge pull request rust-lang#18922 from Veykril/push-tmtzukrsnott
fix: Don't return inlay hints outside requested range
2 parents 6bf1459 + 79f1471 commit 805598d

File tree

2 files changed

+28
-24
lines changed

2 files changed

+28
-24
lines changed

src/tools/rust-analyzer/crates/ide/src/inlay_hints.rs

+3
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,9 @@ pub(crate) fn inlay_hints(
112112
}
113113
hints(event);
114114
}
115+
if let Some(range_limit) = range_limit {
116+
acc.retain(|hint| range_limit.contains_range(hint.range));
117+
}
115118
acc
116119
}
117120

src/tools/rust-analyzer/crates/ide/src/inlay_hints/bind_pat.rs

+25-24
Original file line numberDiff line numberDiff line change
@@ -392,36 +392,37 @@ fn main() {
392392
#[test]
393393
fn check_hint_range_limit() {
394394
let fixture = r#"
395-
//- minicore: fn, sized
396-
fn foo() -> impl Fn() { loop {} }
397-
fn foo1() -> impl Fn(f64) { loop {} }
398-
fn foo2() -> impl Fn(f64, f64) { loop {} }
399-
fn foo3() -> impl Fn(f64, f64) -> u32 { loop {} }
400-
fn foo4() -> &'static dyn Fn(f64, f64) -> u32 { loop {} }
401-
fn foo5() -> &'static dyn Fn(&'static dyn Fn(f64, f64) -> u32, f64) -> u32 { loop {} }
402-
fn foo6() -> impl Fn(f64, f64) -> u32 + Sized { loop {} }
403-
fn foo7() -> *const (impl Fn(f64, f64) -> u32 + Sized) { loop {} }
404-
405-
fn main() {
406-
let foo = foo();
407-
let foo = foo1();
408-
let foo = foo2();
409-
// ^^^ impl Fn(f64, f64)
410-
let foo = foo3();
411-
// ^^^ impl Fn(f64, f64) -> u32
412-
let foo = foo4();
413-
let foo = foo5();
414-
let foo = foo6();
415-
let foo = foo7();
416-
}
417-
"#;
395+
//- minicore: fn, sized
396+
fn foo() -> impl Fn() { loop {} }
397+
fn foo1() -> impl Fn(f64) { loop {} }
398+
fn foo2() -> impl Fn(f64, f64) { loop {} }
399+
fn foo3() -> impl Fn(f64, f64) -> u32 { loop {} }
400+
fn foo4() -> &'static dyn Fn(f64, f64) -> u32 { loop {} }
401+
fn foo5() -> &'static dyn Fn(&'static dyn Fn(f64, f64) -> u32, f64) -> u32 { loop {} }
402+
fn foo6() -> impl Fn(f64, f64) -> u32 + Sized { loop {} }
403+
fn foo7() -> *const (impl Fn(f64, f64) -> u32 + Sized) { loop {} }
404+
405+
fn main() {
406+
let foo = foo();
407+
let foo = foo1();
408+
let foo = foo2();
409+
// ^^^ impl Fn(f64, f64)
410+
let foo = foo3();
411+
// ^^^ impl Fn(f64, f64) -> u32
412+
let foo = foo4();
413+
// ^^^ &dyn Fn(f64, f64) -> u32
414+
let foo = foo5();
415+
let foo = foo6();
416+
let foo = foo7();
417+
}
418+
"#;
418419
let (analysis, file_id) = fixture::file(fixture);
419420
let expected = extract_annotations(&analysis.file_text(file_id).unwrap());
420421
let inlay_hints = analysis
421422
.inlay_hints(
422423
&InlayHintsConfig { type_hints: true, ..DISABLED_CONFIG },
423424
file_id,
424-
Some(TextRange::new(TextSize::from(500), TextSize::from(600))),
425+
Some(TextRange::new(TextSize::from(491), TextSize::from(640))),
425426
)
426427
.unwrap();
427428
let actual =

0 commit comments

Comments
 (0)