Skip to content

Commit 506db18

Browse files
committed
test: Add tests for when hovering fails
1 parent 48f43df commit 506db18

File tree

1 file changed

+68
-6
lines changed

1 file changed

+68
-6
lines changed

crates/ide/src/hover.rs

Lines changed: 68 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -673,6 +673,21 @@ mod tests {
673673
expect.assert_eq(hover.info.markup.as_str())
674674
}
675675

676+
fn check_hover_range_no_results(ra_fixture: &str) {
677+
let (analysis, range) = fixture::range(ra_fixture);
678+
let hover = analysis
679+
.hover_range(
680+
&HoverConfig {
681+
links_in_hover: false,
682+
documentation: Some(HoverDocFormat::Markdown),
683+
},
684+
range,
685+
)
686+
.unwrap();
687+
println!("AAA {:#?}", hover);
688+
assert!(hover.is_none());
689+
}
690+
676691
#[test]
677692
fn hover_shows_type_of_an_expression() {
678693
check(
@@ -3937,7 +3952,7 @@ struct Foo;
39373952
fn hover_range_math() {
39383953
check_hover_range(
39393954
r#"
3940-
fn f() { let expr = $01 + 2 * 3$0 }
3955+
fn f() { let expr = $01 + 2 * 3$0 }
39413956
"#,
39423957
expect![[r#"
39433958
```rust
@@ -3947,7 +3962,7 @@ fn f() { let expr = $01 + 2 * 3$0 }
39473962

39483963
check_hover_range(
39493964
r#"
3950-
fn f() { let expr = 1 $0+ 2 * $03 }
3965+
fn f() { let expr = 1 $0+ 2 * $03 }
39513966
"#,
39523967
expect![[r#"
39533968
```rust
@@ -3957,7 +3972,7 @@ fn f() { let expr = 1 $0+ 2 * $03 }
39573972

39583973
check_hover_range(
39593974
r#"
3960-
fn f() { let expr = 1 + $02 * 3$0 }
3975+
fn f() { let expr = 1 + $02 * 3$0 }
39613976
"#,
39623977
expect![[r#"
39633978
```rust
@@ -3970,7 +3985,7 @@ fn f() { let expr = 1 + $02 * 3$0 }
39703985
fn hover_range_arrays() {
39713986
check_hover_range(
39723987
r#"
3973-
fn f() { let expr = $0[1, 2, 3, 4]$0 }
3988+
fn f() { let expr = $0[1, 2, 3, 4]$0 }
39743989
"#,
39753990
expect![[r#"
39763991
```rust
@@ -3980,7 +3995,7 @@ fn f() { let expr = $0[1, 2, 3, 4]$0 }
39803995

39813996
check_hover_range(
39823997
r#"
3983-
fn f() { let expr = [1, 2, $03, 4]$0 }
3998+
fn f() { let expr = [1, 2, $03, 4]$0 }
39843999
"#,
39854000
expect![[r#"
39864001
```rust
@@ -3990,7 +4005,7 @@ fn f() { let expr = [1, 2, $03, 4]$0 }
39904005

39914006
check_hover_range(
39924007
r#"
3993-
fn f() { let expr = [1, 2, $03$0, 4] }
4008+
fn f() { let expr = [1, 2, $03$0, 4] }
39944009
"#,
39954010
expect![[r#"
39964011
```rust
@@ -4023,4 +4038,51 @@ fn b() { f($0&[1, 2, 3, 4, 5]$0); }
40234038
```"#]],
40244039
);
40254040
}
4041+
4042+
#[test]
4043+
fn hover_range_shows_nothing_when_invalid() {
4044+
check_hover_range_no_results(
4045+
r#"
4046+
fn f<T>(a: &[T]) { }
4047+
fn b()$0 { f(&[1, 2, 3, 4, 5]); }$0
4048+
"#,
4049+
);
4050+
4051+
check_hover_range_no_results(
4052+
r#"
4053+
fn f<T>$0(a: &[T]) { }
4054+
fn b() { f(&[1, 2, 3,$0 4, 5]); }
4055+
"#,
4056+
);
4057+
4058+
check_hover_range_no_results(
4059+
r#"
4060+
fn $0f() { let expr = [1, 2, 3, 4]$0 }
4061+
"#,
4062+
);
4063+
}
4064+
4065+
#[test]
4066+
fn hover_range_shows_unit_for_statements() {
4067+
check_hover_range(
4068+
r#"
4069+
fn f<T>(a: &[T]) { }
4070+
fn b() { $0f(&[1, 2, 3, 4, 5]); }$0
4071+
"#,
4072+
expect![[r#"
4073+
```rust
4074+
()
4075+
```"#]],
4076+
);
4077+
4078+
check_hover_range(
4079+
r#"
4080+
fn f() { let expr$0 = $0[1, 2, 3, 4] }
4081+
"#,
4082+
expect![[r#"
4083+
```rust
4084+
()
4085+
```"#]],
4086+
);
4087+
}
40264088
}

0 commit comments

Comments
 (0)