@@ -6,7 +6,6 @@ use ide_db::helpers::{mod_path_to_ast, FamousDefs};
6
6
use ide_db:: RootDatabase ;
7
7
use itertools:: Itertools ;
8
8
use syntax:: ast:: { self , make, AstNode , HasName , MatchArm , MatchArmList , MatchExpr , Pat } ;
9
- use syntax:: TextRange ;
10
9
11
10
use crate :: {
12
11
utils:: { self , render_snippet, Cursor } ,
@@ -40,21 +39,15 @@ use crate::{
40
39
pub ( crate ) fn add_missing_match_arms ( acc : & mut Assists , ctx : & AssistContext ) -> Option < ( ) > {
41
40
let match_expr = ctx. find_node_at_offset_with_descend :: < ast:: MatchExpr > ( ) ?;
42
41
let match_arm_list = match_expr. match_arm_list ( ) ?;
43
- let target_range: TextRange ;
42
+ let target_range = ctx . sema . original_range ( match_expr . syntax ( ) ) . range ;
44
43
45
44
if let None = cursor_at_trivial_match_arm_list ( & ctx, & match_expr, & match_arm_list) {
46
- target_range = TextRange :: new (
47
- ctx. sema . original_range ( match_expr. syntax ( ) ) . range . start ( ) ,
48
- ctx. sema . original_range ( match_arm_list. syntax ( ) ) . range . start ( ) ,
49
- ) ;
50
-
51
- let cursor_in_range = target_range. contains_range ( ctx. selection_trimmed ( ) ) ;
52
- if !cursor_in_range {
45
+ let arm_list_range = ctx. sema . original_range ( match_arm_list. syntax ( ) ) . range ;
46
+ let cursor_in_range = arm_list_range. contains_range ( ctx. selection_trimmed ( ) ) ;
47
+ if cursor_in_range {
53
48
cov_mark:: hit!( not_applicable_outside_of_range_right) ;
54
49
return None ;
55
50
}
56
- } else {
57
- target_range = ctx. sema . original_range ( match_expr. syntax ( ) ) . range ;
58
51
}
59
52
60
53
let expr = match_expr. expr ( ) ?;
@@ -953,7 +946,9 @@ fn main() {
953
946
}
954
947
}
955
948
"# ,
956
- "match E::X " ,
949
+ "match E::X {
950
+ E::X => {}
951
+ }" ,
957
952
) ;
958
953
}
959
954
0 commit comments