@@ -673,6 +673,21 @@ mod tests {
673
673
expect. assert_eq ( hover. info . markup . as_str ( ) )
674
674
}
675
675
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
+
676
691
#[ test]
677
692
fn hover_shows_type_of_an_expression ( ) {
678
693
check (
@@ -3937,7 +3952,7 @@ struct Foo;
3937
3952
fn hover_range_math ( ) {
3938
3953
check_hover_range (
3939
3954
r#"
3940
- fn f() { let expr = $01 + 2 * 3$0 }
3955
+ fn f() { let expr = $01 + 2 * 3$0 }
3941
3956
"# ,
3942
3957
expect ! [ [ r#"
3943
3958
```rust
@@ -3947,7 +3962,7 @@ fn f() { let expr = $01 + 2 * 3$0 }
3947
3962
3948
3963
check_hover_range (
3949
3964
r#"
3950
- fn f() { let expr = 1 $0+ 2 * $03 }
3965
+ fn f() { let expr = 1 $0+ 2 * $03 }
3951
3966
"# ,
3952
3967
expect ! [ [ r#"
3953
3968
```rust
@@ -3957,7 +3972,7 @@ fn f() { let expr = 1 $0+ 2 * $03 }
3957
3972
3958
3973
check_hover_range (
3959
3974
r#"
3960
- fn f() { let expr = 1 + $02 * 3$0 }
3975
+ fn f() { let expr = 1 + $02 * 3$0 }
3961
3976
"# ,
3962
3977
expect ! [ [ r#"
3963
3978
```rust
@@ -3970,7 +3985,7 @@ fn f() { let expr = 1 + $02 * 3$0 }
3970
3985
fn hover_range_arrays ( ) {
3971
3986
check_hover_range (
3972
3987
r#"
3973
- fn f() { let expr = $0[1, 2, 3, 4]$0 }
3988
+ fn f() { let expr = $0[1, 2, 3, 4]$0 }
3974
3989
"# ,
3975
3990
expect ! [ [ r#"
3976
3991
```rust
@@ -3980,7 +3995,7 @@ fn f() { let expr = $0[1, 2, 3, 4]$0 }
3980
3995
3981
3996
check_hover_range (
3982
3997
r#"
3983
- fn f() { let expr = [1, 2, $03, 4]$0 }
3998
+ fn f() { let expr = [1, 2, $03, 4]$0 }
3984
3999
"# ,
3985
4000
expect ! [ [ r#"
3986
4001
```rust
@@ -3990,7 +4005,7 @@ fn f() { let expr = [1, 2, $03, 4]$0 }
3990
4005
3991
4006
check_hover_range (
3992
4007
r#"
3993
- fn f() { let expr = [1, 2, $03$0, 4] }
4008
+ fn f() { let expr = [1, 2, $03$0, 4] }
3994
4009
"# ,
3995
4010
expect ! [ [ r#"
3996
4011
```rust
@@ -4023,4 +4038,51 @@ fn b() { f($0&[1, 2, 3, 4, 5]$0); }
4023
4038
```"# ] ] ,
4024
4039
) ;
4025
4040
}
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
+ }
4026
4088
}
0 commit comments