@@ -7,43 +7,41 @@ use rustc_session::Session;
7
7
use std:: fs as std_fs;
8
8
use std:: path:: PathBuf ;
9
9
10
- pub fn copy_cgu_workproducts_to_incr_comp_cache_dir (
10
+ pub fn copy_cgu_workproduct_to_incr_comp_cache_dir (
11
11
sess : & Session ,
12
12
cgu_name : & str ,
13
- files : & [ PathBuf ] ,
13
+ path : & Option < PathBuf > ,
14
14
) -> Option < ( WorkProductId , WorkProduct ) > {
15
- debug ! ( "copy_cgu_workproducts_to_incr_comp_cache_dir ({:?},{:?})" , cgu_name, files ) ;
15
+ debug ! ( "copy_cgu_workproduct_to_incr_comp_cache_dir ({:?},{:?})" , cgu_name, path ) ;
16
16
sess. opts . incremental . as_ref ( ) ?;
17
17
18
- let saved_files = files
19
- . iter ( )
20
- . map ( |path| {
21
- let file_name = format ! ( "{}.o" , cgu_name) ;
22
- let path_in_incr_dir = in_incr_comp_dir_sess ( sess, & file_name) ;
23
- match link_or_copy ( path, & path_in_incr_dir) {
24
- Ok ( _) => Some ( file_name) ,
25
- Err ( err) => {
26
- sess. warn ( & format ! (
27
- "error copying object file `{}` \
28
- to incremental directory as `{}`: {}",
29
- path. display( ) ,
30
- path_in_incr_dir. display( ) ,
31
- err
32
- ) ) ;
33
- None
34
- }
18
+ let saved_file = if let Some ( path) = path {
19
+ let file_name = format ! ( "{}.o" , cgu_name) ;
20
+ let path_in_incr_dir = in_incr_comp_dir_sess ( sess, & file_name) ;
21
+ match link_or_copy ( path, & path_in_incr_dir) {
22
+ Ok ( _) => Some ( file_name) ,
23
+ Err ( err) => {
24
+ sess. warn ( & format ! (
25
+ "error copying object file `{}` to incremental directory as `{}`: {}" ,
26
+ path. display( ) ,
27
+ path_in_incr_dir. display( ) ,
28
+ err
29
+ ) ) ;
30
+ return None ;
35
31
}
36
- } )
37
- . collect :: < Option < Vec < _ > > > ( ) ?;
32
+ }
33
+ } else {
34
+ None
35
+ } ;
38
36
39
- let work_product = WorkProduct { cgu_name : cgu_name. to_string ( ) , saved_files } ;
37
+ let work_product = WorkProduct { cgu_name : cgu_name. to_string ( ) , saved_file } ;
40
38
41
39
let work_product_id = WorkProductId :: from_cgu_name ( cgu_name) ;
42
40
Some ( ( work_product_id, work_product) )
43
41
}
44
42
45
43
pub fn delete_workproduct_files ( sess : & Session , work_product : & WorkProduct ) {
46
- for file_name in & work_product. saved_files {
44
+ if let Some ( ref file_name) = work_product. saved_file {
47
45
let path = in_incr_comp_dir_sess ( sess, file_name) ;
48
46
match std_fs:: remove_file ( & path) {
49
47
Ok ( ( ) ) => { }
0 commit comments