@@ -203,9 +203,11 @@ fn make_fixes(
203
203
204
204
let mod_decl = format ! ( "mod {new_mod_name};" ) ;
205
205
let pub_mod_decl = format ! ( "pub mod {new_mod_name};" ) ;
206
+ let pub_crate_mod_decl = format ! ( "pub(crate) mod {new_mod_name};" ) ;
206
207
207
208
let mut mod_decl_builder = TextEdit :: builder ( ) ;
208
209
let mut pub_mod_decl_builder = TextEdit :: builder ( ) ;
210
+ let mut pub_crate_mod_decl_builder = TextEdit :: builder ( ) ;
209
211
210
212
let mut items = match & source {
211
213
ModuleSource :: SourceFile ( it) => it. items ( ) ,
@@ -234,6 +236,7 @@ fn make_fixes(
234
236
let indent = IndentLevel :: from_node ( last. syntax ( ) ) ;
235
237
mod_decl_builder. insert ( offset, format ! ( "\n {indent}{mod_decl}" ) ) ;
236
238
pub_mod_decl_builder. insert ( offset, format ! ( "\n {indent}{pub_mod_decl}" ) ) ;
239
+ pub_crate_mod_decl_builder. insert ( offset, format ! ( "\n {indent}{pub_crate_mod_decl}" ) ) ;
237
240
}
238
241
None => {
239
242
// Prepend before the first item in the file.
@@ -244,6 +247,8 @@ fn make_fixes(
244
247
let indent = IndentLevel :: from_node ( first. syntax ( ) ) ;
245
248
mod_decl_builder. insert ( offset, format ! ( "{mod_decl}\n \n {indent}" ) ) ;
246
249
pub_mod_decl_builder. insert ( offset, format ! ( "{pub_mod_decl}\n \n {indent}" ) ) ;
250
+ pub_crate_mod_decl_builder
251
+ . insert ( offset, format ! ( "{pub_crate_mod_decl}\n \n {indent}" ) ) ;
247
252
}
248
253
None => {
249
254
// No items in the file, so just append at the end.
@@ -261,6 +266,8 @@ fn make_fixes(
261
266
} ;
262
267
mod_decl_builder. insert ( offset, format ! ( "{indent}{mod_decl}\n " ) ) ;
263
268
pub_mod_decl_builder. insert ( offset, format ! ( "{indent}{pub_mod_decl}\n " ) ) ;
269
+ pub_crate_mod_decl_builder
270
+ . insert ( offset, format ! ( "{indent}{pub_crate_mod_decl}\n " ) ) ;
264
271
}
265
272
}
266
273
}
@@ -279,6 +286,12 @@ fn make_fixes(
279
286
SourceChange :: from_text_edit( parent_file_id, pub_mod_decl_builder. finish( ) ) ,
280
287
trigger_range,
281
288
) ,
289
+ fix(
290
+ "add_pub_crate_mod_declaration" ,
291
+ & format!( "Insert `{pub_crate_mod_decl}`" ) ,
292
+ SourceChange :: from_text_edit( parent_file_id, pub_crate_mod_decl_builder. finish( ) ) ,
293
+ trigger_range,
294
+ ) ,
282
295
] )
283
296
}
284
297
@@ -306,6 +319,11 @@ fn f() {}
306
319
r#"
307
320
pub mod foo;
308
321
322
+ fn f() {}
323
+ "# ,
324
+ r#"
325
+ pub(crate) mod foo;
326
+
309
327
fn f() {}
310
328
"# ,
311
329
] ,
0 commit comments