@@ -850,7 +850,18 @@ fn binding_mode_hints(
850
850
return None ;
851
851
}
852
852
853
- let range = pat. syntax ( ) . text_range ( ) ;
853
+ let outer_paren_pat = pat
854
+ . syntax ( )
855
+ . ancestors ( )
856
+ . skip ( 1 )
857
+ . map_while ( ast:: Pat :: cast)
858
+ . map_while ( |pat| match pat {
859
+ ast:: Pat :: ParenPat ( pat) => Some ( pat) ,
860
+ _ => None ,
861
+ } )
862
+ . last ( ) ;
863
+ let range =
864
+ outer_paren_pat. as_ref ( ) . map_or_else ( || pat. syntax ( ) , |it| it. syntax ( ) ) . text_range ( ) ;
854
865
sema. pattern_adjustments ( & pat) . iter ( ) . for_each ( |ty| {
855
866
let reference = ty. is_reference ( ) ;
856
867
let mut_reference = ty. is_mutable_reference ( ) ;
@@ -875,13 +886,13 @@ fn binding_mode_hints(
875
886
hir:: BindingMode :: Ref ( Mutability :: Shared ) => "ref" ,
876
887
} ;
877
888
acc. push ( InlayHint {
878
- range,
889
+ range : pat . syntax ( ) . text_range ( ) ,
879
890
kind : InlayKind :: BindingModeHint ,
880
891
label : bm. to_string ( ) . into ( ) ,
881
892
tooltip : Some ( InlayTooltip :: String ( "Inferred binding mode" . into ( ) ) ) ,
882
893
} ) ;
883
894
}
884
- ast:: Pat :: OrPat ( pat) => {
895
+ ast:: Pat :: OrPat ( pat) if outer_paren_pat . is_none ( ) => {
885
896
acc. push ( InlayHint {
886
897
range : pat. syntax ( ) . text_range ( ) ,
887
898
kind : InlayKind :: OpeningParenthesis ,
@@ -2973,11 +2984,9 @@ fn __(
2973
2984
//^^^^^^^^^^^(
2974
2985
//^^^^^^^^^^^)
2975
2986
((x,) | (x,)) => (),
2976
- // ^^^^^^^^^^^&
2987
+ //^^ ^^^^^^^^^^^&
2977
2988
//^ ref
2978
2989
//^ ref
2979
- //^^^^^^^^^^^(
2980
- //^^^^^^^^^^^)
2981
2990
}
2982
2991
match &mut (0,) {
2983
2992
(x,) => ()
0 commit comments