@@ -5,7 +5,7 @@ use ide_db::{
55use itertools:: Itertools ;
66use syntax:: {
77 ast:: { self , Expr } ,
8- match_ast, AstNode , NodeOrToken , SyntaxKind , TextRange , TextSize ,
8+ match_ast, AstNode , NodeOrToken , SyntaxKind , TextRange ,
99} ;
1010
1111use crate :: { AssistContext , AssistId , AssistKind , Assists } ;
@@ -71,10 +71,7 @@ pub(crate) fn unwrap_result_return_type(acc: &mut Assists, ctx: &AssistContext<'
7171
7272 if let Some ( NodeOrToken :: Token ( token) ) = ret_type. syntax ( ) . next_sibling_or_token ( ) {
7373 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 ( ) ) ;
7875 }
7976 }
8077
@@ -134,11 +131,11 @@ fn tail_cb_impl(acc: &mut Vec<ast::Expr>, e: &ast::Expr) {
134131// Tries to extract `T` from `Result<T, E>`.
135132fn unwrap_result_type ( ty : & ast:: Type ) -> Option < ast:: Type > {
136133 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 ( ) ? ;
140137 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 ; } ;
142139 ok_type. ty ( )
143140}
144141
0 commit comments