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