mirror of
				https://github.com/rust-lang/rust-analyzer.git
				synced 2025-10-31 20:09:01 +00:00 
			
		
		
		
	minor: Use placeholders in unwrap_return_type
				
					
				
			This commit is contained in:
		
							parent
							
								
									a5a79f5957
								
							
						
					
					
						commit
						c552f72f6a
					
				
					 1 changed files with 53 additions and 2 deletions
				
			
		|  | @ -92,6 +92,7 @@ pub(crate) fn unwrap_return_type(acc: &mut Assists, ctx: &AssistContext<'_>) -> | ||||||
|             editor.replace(type_ref.syntax(), happy_type.syntax()); |             editor.replace(type_ref.syntax(), happy_type.syntax()); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         let mut final_placeholder = None; | ||||||
|         for tail_expr in exprs_to_unwrap { |         for tail_expr in exprs_to_unwrap { | ||||||
|             match &tail_expr { |             match &tail_expr { | ||||||
|                 ast::Expr::CallExpr(call_expr) => { |                 ast::Expr::CallExpr(call_expr) => { | ||||||
|  | @ -145,12 +146,27 @@ pub(crate) fn unwrap_return_type(acc: &mut Assists, ctx: &AssistContext<'_>) -> | ||||||
|                         continue; |                         continue; | ||||||
|                     } |                     } | ||||||
| 
 | 
 | ||||||
|                     editor.replace(path_expr.syntax(), make.expr_unit().syntax()); |                     let new_tail_expr = make.expr_unit(); | ||||||
|  |                     editor.replace(path_expr.syntax(), new_tail_expr.syntax()); | ||||||
|  |                     if let Some(cap) = ctx.config.snippet_cap { | ||||||
|  |                         editor.add_annotation( | ||||||
|  |                             new_tail_expr.syntax(), | ||||||
|  |                             builder.make_placeholder_snippet(cap), | ||||||
|  |                         ); | ||||||
|  | 
 | ||||||
|  |                         final_placeholder = Some(new_tail_expr); | ||||||
|  |                     } | ||||||
|                 } |                 } | ||||||
|                 _ => (), |                 _ => (), | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         if let Some(cap) = ctx.config.snippet_cap { | ||||||
|  |             if let Some(final_placeholder) = final_placeholder { | ||||||
|  |                 editor.add_annotation(final_placeholder.syntax(), builder.make_tabstop_after(cap)); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         editor.add_mappings(make.finish_with_mappings()); |         editor.add_mappings(make.finish_with_mappings()); | ||||||
|         builder.add_file_edits(ctx.file_id(), editor); |         builder.add_file_edits(ctx.file_id(), editor); | ||||||
|     }) |     }) | ||||||
|  | @ -300,7 +316,42 @@ fn foo() -> i32 { | ||||||
|     if true { |     if true { | ||||||
|         42 |         42 | ||||||
|     } else { |     } else { | ||||||
|         () |         ${1:()}$0 | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | "#,
 | ||||||
|  |             "Unwrap Option return type", | ||||||
|  |         ); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     #[test] | ||||||
|  |     fn unwrap_option_return_type_multi_none() { | ||||||
|  |         check_assist_by_label( | ||||||
|  |             unwrap_return_type, | ||||||
|  |             r#" | ||||||
|  | //- minicore: option
 | ||||||
|  | fn foo() -> Option<i3$02> { | ||||||
|  |     if false { | ||||||
|  |         return None; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     if true { | ||||||
|  |         Some(42) | ||||||
|  |     } else { | ||||||
|  |         None | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | "#,
 | ||||||
|  |             r#" | ||||||
|  | fn foo() -> i32 { | ||||||
|  |     if false { | ||||||
|  |         return ${1:()}; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     if true { | ||||||
|  |         42 | ||||||
|  |     } else { | ||||||
|  |         ${2:()}$0 | ||||||
|     } |     } | ||||||
| } | } | ||||||
| "#,
 | "#,
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Giga Bowser
						Giga Bowser