@@ -5,7 +5,7 @@ use ide_db::{
5
5
use itertools:: Itertools ;
6
6
use syntax:: {
7
7
ast:: { self , Expr } ,
8
- match_ast, AstNode , NodeOrToken , SyntaxKind , TextRange , TextSize ,
8
+ match_ast, AstNode , NodeOrToken , SyntaxKind , TextRange ,
9
9
} ;
10
10
11
11
use crate :: { AssistContext , AssistId , AssistKind , Assists } ;
@@ -71,10 +71,7 @@ pub(crate) fn unwrap_result_return_type(acc: &mut Assists, ctx: &AssistContext<'
71
71
72
72
if let Some ( NodeOrToken :: Token ( token) ) = ret_type. syntax ( ) . next_sibling_or_token ( ) {
73
73
if token. kind ( ) == SyntaxKind :: WHITESPACE {
74
- text_range = TextRange :: new (
75
- text_range. start ( ) ,
76
- text_range. end ( ) + TextSize :: from ( 1u32 ) ,
77
- ) ;
74
+ text_range = TextRange :: new ( text_range. start ( ) , token. text_range ( ) . end ( ) ) ;
78
75
}
79
76
}
80
77
@@ -134,11 +131,11 @@ fn tail_cb_impl(acc: &mut Vec<ast::Expr>, e: &ast::Expr) {
134
131
// Tries to extract `T` from `Result<T, E>`.
135
132
fn unwrap_result_type ( ty : & ast:: Type ) -> Option < ast:: Type > {
136
133
let ast:: Type :: PathType ( path_ty) = ty else { return None ; } ;
137
- let Some ( path) = path_ty. path ( ) else { return None ; } ;
138
- let Some ( segment) = path. first_segment ( ) else { return None ; } ;
139
- let Some ( generic_arg_list) = segment. generic_arg_list ( ) else { return None ; } ;
134
+ let path = path_ty. path ( ) ? ;
135
+ let segment = path. first_segment ( ) ? ;
136
+ let generic_arg_list = segment. generic_arg_list ( ) ? ;
140
137
let generic_args: Vec < _ > = generic_arg_list. generic_args ( ) . collect ( ) ;
141
- let Some ( ast:: GenericArg :: TypeArg ( ok_type) ) = generic_args. first ( ) else { return None ; } ;
138
+ let ast:: GenericArg :: TypeArg ( ok_type) = generic_args. first ( ) ? else { return None ; } ;
142
139
ok_type. ty ( )
143
140
}
144
141
0 commit comments