@@ -39,7 +39,7 @@ use cargo::util::{CargoResult, ProcessBuilder};
39
39
use cargo_metadata;
40
40
use crate :: lsp_data:: parse_file_path;
41
41
use url:: Url ;
42
- use log:: { log, trace} ;
42
+ use log:: { log, trace, error } ;
43
43
44
44
use crate :: actions:: progress:: ProgressUpdate ;
45
45
use super :: { BuildResult , Internals } ;
@@ -94,8 +94,8 @@ impl Plan {
94
94
/// `PackageId` and `TargetKind` in `Target`, to be used when processing
95
95
/// cached build plan.
96
96
crate fn cache_compiler_job ( & mut self , id : & PackageId , target : & Target , mode : CompileMode , cmd : & ProcessBuilder ) {
97
- let pkg_key = ( id. clone ( ) , target. clone ( ) , mode) ;
98
- self . compiler_jobs . insert ( pkg_key , cmd. clone ( ) ) ;
97
+ let unit_key = ( id. clone ( ) , target. clone ( ) , mode) ;
98
+ self . compiler_jobs . insert ( unit_key , cmd. clone ( ) ) ;
99
99
}
100
100
101
101
/// Emplace a given `Unit`, along with its `Unit` dependencies (recursively)
@@ -213,17 +213,18 @@ impl Plan {
213
213
// collect every unit having the longest path prefix.
214
214
let max_matching_prefix = other_targets. values ( )
215
215
. map ( |src_dir| matching_prefix_components ( modified, src_dir) )
216
- . max ( ) . unwrap ( ) ;
216
+ . max ( ) ;
217
217
218
- if max_matching_prefix == 0 {
219
- trace ! ( "Modified file didn't correspond to any buildable unit!" ) ;
220
- } else {
221
- let dirty_units = other_targets. iter ( )
222
- . filter ( |( _, src_dir) | max_matching_prefix ==
223
- matching_prefix_components ( modified, src_dir)
224
- ) . map ( |( unit, _) | unit) ;
218
+ match max_matching_prefix {
219
+ Some ( 0 ) => error ! ( "Modified file didn't correspond to any buildable unit!" ) ,
220
+ Some ( max) => {
221
+ let dirty_units = other_targets. iter ( )
222
+ . filter ( |( _, dir) | max == matching_prefix_components ( modified, dir) )
223
+ . map ( |( unit, _) | unit) ;
225
224
226
- result. extend ( dirty_units. cloned ( ) ) ;
225
+ result. extend ( dirty_units. cloned ( ) ) ;
226
+ }
227
+ None => { } // Possible that only build scripts were modified
227
228
}
228
229
}
229
230
}
0 commit comments