mirror of
				https://github.com/rust-lang/rust-analyzer.git
				synced 2025-10-31 12:04:43 +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()); | ||||
|         } | ||||
| 
 | ||||
|         let mut final_placeholder = None; | ||||
|         for tail_expr in exprs_to_unwrap { | ||||
|             match &tail_expr { | ||||
|                 ast::Expr::CallExpr(call_expr) => { | ||||
|  | @ -145,12 +146,27 @@ pub(crate) fn unwrap_return_type(acc: &mut Assists, ctx: &AssistContext<'_>) -> | |||
|                         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()); | ||||
|         builder.add_file_edits(ctx.file_id(), editor); | ||||
|     }) | ||||
|  | @ -300,7 +316,42 @@ fn foo() -> i32 { | |||
|     if true { | ||||
|         42 | ||||
|     } 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