@@ -7,43 +7,41 @@ use rustc_session::Session;
77use std:: fs as std_fs;
88use std:: path:: PathBuf ;
99
10- pub fn copy_cgu_workproducts_to_incr_comp_cache_dir (
10+ pub fn copy_cgu_workproduct_to_incr_comp_cache_dir (
1111 sess : & Session ,
1212 cgu_name : & str ,
13- files : & [ PathBuf ] ,
13+ path : & Option < PathBuf > ,
1414) -> 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 ) ;
1616 sess. opts . incremental . as_ref ( ) ?;
1717
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 ;
3531 }
36- } )
37- . collect :: < Option < Vec < _ > > > ( ) ?;
32+ }
33+ } else {
34+ None
35+ } ;
3836
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 } ;
4038
4139 let work_product_id = WorkProductId :: from_cgu_name ( cgu_name) ;
4240 Some ( ( work_product_id, work_product) )
4341}
4442
4543pub 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 {
4745 let path = in_incr_comp_dir_sess ( sess, file_name) ;
4846 match std_fs:: remove_file ( & path) {
4947 Ok ( ( ) ) => { }
0 commit comments