@@ -652,6 +652,21 @@ mod tests {
652
652
expect. assert_debug_eq ( & hover. info . actions )
653
653
}
654
654
655
+ fn check_hover_range ( ra_fixture : & str , expect : Expect ) {
656
+ let ( analysis, range) = fixture:: range ( ra_fixture) ;
657
+ let hover = analysis
658
+ . hover_range (
659
+ & HoverConfig {
660
+ links_in_hover : false ,
661
+ documentation : Some ( HoverDocFormat :: Markdown ) ,
662
+ } ,
663
+ range,
664
+ )
665
+ . unwrap ( )
666
+ . unwrap ( ) ;
667
+ expect. assert_eq ( hover. info . markup . as_str ( ) )
668
+ }
669
+
655
670
#[ test]
656
671
fn hover_shows_type_of_an_expression ( ) {
657
672
check (
@@ -3911,4 +3926,95 @@ struct Foo;
3911
3926
"# ] ] ,
3912
3927
) ;
3913
3928
}
3929
+
3930
+ #[ test]
3931
+ fn hover_range_math ( ) {
3932
+ check_hover_range (
3933
+ r#"
3934
+ fn f() { let expr = $01 + 2 * 3$0 }
3935
+ "# ,
3936
+ expect ! [ [ r#"
3937
+ ```rust
3938
+ i32
3939
+ ```"# ] ] ,
3940
+ ) ;
3941
+
3942
+ check_hover_range (
3943
+ r#"
3944
+ fn f() { let expr = 1 $0+ 2 * $03 }
3945
+ "# ,
3946
+ expect ! [ [ r#"
3947
+ ```rust
3948
+ i32
3949
+ ```"# ] ] ,
3950
+ ) ;
3951
+
3952
+ check_hover_range (
3953
+ r#"
3954
+ fn f() { let expr = 1 + $02 * 3$0 }
3955
+ "# ,
3956
+ expect ! [ [ r#"
3957
+ ```rust
3958
+ i32
3959
+ ```"# ] ] ,
3960
+ ) ;
3961
+ }
3962
+
3963
+ #[ test]
3964
+ fn hover_range_arrays ( ) {
3965
+ check_hover_range (
3966
+ r#"
3967
+ fn f() { let expr = $0[1, 2, 3, 4]$0 }
3968
+ "# ,
3969
+ expect ! [ [ r#"
3970
+ ```rust
3971
+ [i32; 4]
3972
+ ```"# ] ] ,
3973
+ ) ;
3974
+
3975
+ check_hover_range (
3976
+ r#"
3977
+ fn f() { let expr = [1, 2, $03, 4]$0 }
3978
+ "# ,
3979
+ expect ! [ [ r#"
3980
+ ```rust
3981
+ [i32; 4]
3982
+ ```"# ] ] ,
3983
+ ) ;
3984
+
3985
+ check_hover_range (
3986
+ r#"
3987
+ fn f() { let expr = [1, 2, $03$0, 4] }
3988
+ "# ,
3989
+ expect ! [ [ r#"
3990
+ ```rust
3991
+ i32
3992
+ ```"# ] ] ,
3993
+ ) ;
3994
+ }
3995
+
3996
+ #[ test]
3997
+ fn hover_range_functions ( ) {
3998
+ check_hover_range (
3999
+ r#"
4000
+ fn f<T>(a: &[T]) { }
4001
+ fn b() { $0f$0(&[1, 2, 3, 4, 5]); }
4002
+ "# ,
4003
+ expect ! [ [ r#"
4004
+ ```rust
4005
+ fn f<i32>(&[i32])
4006
+ ```"# ] ] ,
4007
+ ) ;
4008
+
4009
+ check_hover_range (
4010
+ r#"
4011
+ fn f<T>(a: &[T]) { }
4012
+ fn b() { f($0&[1, 2, 3, 4, 5]$0); }
4013
+ "# ,
4014
+ expect ! [ [ r#"
4015
+ ```rust
4016
+ &[i32; 5]
4017
+ ```"# ] ] ,
4018
+ ) ;
4019
+ }
3914
4020
}
0 commit comments