mirror of
				https://github.com/rust-lang/rust-analyzer.git
				synced 2025-10-31 12:04:43 +00:00 
			
		
		
		
	Merge pull request #19590 from roife/fix-issue-19540
feat: add `pub(crate) mod` option for unlinked files
This commit is contained in:
		
						commit
						4bef2bf192
					
				
					 1 changed files with 18 additions and 0 deletions
				
			
		|  | @ -201,9 +201,11 @@ fn make_fixes( | |||
| 
 | ||||
|     let mod_decl = format!("mod {new_mod_name};"); | ||||
|     let pub_mod_decl = format!("pub mod {new_mod_name};"); | ||||
|     let pub_crate_mod_decl = format!("pub(crate) mod {new_mod_name};"); | ||||
| 
 | ||||
|     let mut mod_decl_builder = TextEdit::builder(); | ||||
|     let mut pub_mod_decl_builder = TextEdit::builder(); | ||||
|     let mut pub_crate_mod_decl_builder = TextEdit::builder(); | ||||
| 
 | ||||
|     let mut items = match &source { | ||||
|         ModuleSource::SourceFile(it) => it.items(), | ||||
|  | @ -232,6 +234,7 @@ fn make_fixes( | |||
|             let indent = IndentLevel::from_node(last.syntax()); | ||||
|             mod_decl_builder.insert(offset, format!("\n{indent}{mod_decl}")); | ||||
|             pub_mod_decl_builder.insert(offset, format!("\n{indent}{pub_mod_decl}")); | ||||
|             pub_crate_mod_decl_builder.insert(offset, format!("\n{indent}{pub_crate_mod_decl}")); | ||||
|         } | ||||
|         None => { | ||||
|             // Prepend before the first item in the file.
 | ||||
|  | @ -242,6 +245,8 @@ fn make_fixes( | |||
|                     let indent = IndentLevel::from_node(first.syntax()); | ||||
|                     mod_decl_builder.insert(offset, format!("{mod_decl}\n\n{indent}")); | ||||
|                     pub_mod_decl_builder.insert(offset, format!("{pub_mod_decl}\n\n{indent}")); | ||||
|                     pub_crate_mod_decl_builder | ||||
|                         .insert(offset, format!("{pub_crate_mod_decl}\n\n{indent}")); | ||||
|                 } | ||||
|                 None => { | ||||
|                     // No items in the file, so just append at the end.
 | ||||
|  | @ -259,6 +264,8 @@ fn make_fixes( | |||
|                     }; | ||||
|                     mod_decl_builder.insert(offset, format!("{indent}{mod_decl}\n")); | ||||
|                     pub_mod_decl_builder.insert(offset, format!("{indent}{pub_mod_decl}\n")); | ||||
|                     pub_crate_mod_decl_builder | ||||
|                         .insert(offset, format!("{indent}{pub_crate_mod_decl}\n")); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|  | @ -277,6 +284,12 @@ fn make_fixes( | |||
|             SourceChange::from_text_edit(parent_file_id, pub_mod_decl_builder.finish()), | ||||
|             trigger_range, | ||||
|         ), | ||||
|         fix( | ||||
|             "add_pub_crate_mod_declaration", | ||||
|             &format!("Insert `{pub_crate_mod_decl}`"), | ||||
|             SourceChange::from_text_edit(parent_file_id, pub_crate_mod_decl_builder.finish()), | ||||
|             trigger_range, | ||||
|         ), | ||||
|     ]) | ||||
| } | ||||
| 
 | ||||
|  | @ -304,6 +317,11 @@ fn f() {} | |||
|                 r#" | ||||
| pub mod foo; | ||||
| 
 | ||||
| fn f() {} | ||||
| "#,
 | ||||
|                 r#" | ||||
| pub(crate) mod foo; | ||||
| 
 | ||||
| fn f() {} | ||||
| "#,
 | ||||
|             ], | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Lukas Wirth
						Lukas Wirth