@@ -304,14 +304,14 @@ fn cargo_to_crate_graph(
304304 for pkg in cargo. packages ( ) {
305305 let mut lib_tgt = None ;
306306 for & tgt in cargo[ pkg] . targets . iter ( ) {
307- if let Some ( crate_id ) = add_target_crate_root (
308- & mut crate_graph ,
309- & cargo [ pkg ] ,
310- & cargo[ tgt ] ,
311- & cfg_options,
312- proc_macro_client,
313- load ,
314- ) {
307+ if let Some ( file_id ) = load ( & cargo [ tgt ] . root ) {
308+ let crate_id = add_target_crate_root (
309+ & mut crate_graph ,
310+ & cargo[ pkg ] ,
311+ & cfg_options,
312+ proc_macro_client,
313+ file_id ,
314+ ) ;
315315 if cargo[ tgt] . kind == TargetKind :: Lib {
316316 lib_tgt = Some ( ( crate_id, cargo[ tgt] . name . clone ( ) ) ) ;
317317 pkg_to_lib_crate. insert ( pkg, crate_id) ;
@@ -380,14 +380,14 @@ fn cargo_to_crate_graph(
380380 continue ;
381381 }
382382
383- if let Some ( crate_id ) = add_target_crate_root (
384- & mut crate_graph ,
385- & rustc_workspace [ pkg ] ,
386- & rustc_workspace[ tgt ] ,
387- & cfg_options,
388- proc_macro_client,
389- load ,
390- ) {
383+ if let Some ( file_id ) = load ( & rustc_workspace [ tgt ] . root ) {
384+ let crate_id = add_target_crate_root (
385+ & mut crate_graph ,
386+ & rustc_workspace[ pkg ] ,
387+ & cfg_options,
388+ proc_macro_client,
389+ file_id ,
390+ ) ;
391391 pkg_to_lib_crate. insert ( pkg, crate_id) ;
392392 // Add dependencies on the core / std / alloc for rustc
393393 for ( name, krate) in public_deps. iter ( ) {
@@ -432,49 +432,45 @@ fn cargo_to_crate_graph(
432432fn add_target_crate_root (
433433 crate_graph : & mut CrateGraph ,
434434 pkg : & cargo_workspace:: PackageData ,
435- tgt : & cargo_workspace:: TargetData ,
436435 cfg_options : & CfgOptions ,
437436 proc_macro_client : & ProcMacroClient ,
438- load : & mut dyn FnMut ( & AbsPath ) -> Option < FileId > ,
439- ) -> Option < CrateId > {
440- let root = tgt. root . as_path ( ) ;
441- if let Some ( file_id) = load ( root) {
442- let edition = pkg. edition ;
443- let cfg_options = {
444- let mut opts = cfg_options. clone ( ) ;
445- for feature in pkg. features . iter ( ) {
446- opts. insert_key_value ( "feature" . into ( ) , feature. into ( ) ) ;
447- }
448- opts. extend ( pkg. cfgs . iter ( ) . cloned ( ) ) ;
449- opts
450- } ;
451- let mut env = Env :: default ( ) ;
452- if let Some ( out_dir) = & pkg. out_dir {
453- // NOTE: cargo and rustc seem to hide non-UTF-8 strings from env! and option_env!()
454- if let Some ( out_dir) = out_dir. to_str ( ) . map ( |s| s. to_owned ( ) ) {
455- env. set ( "OUT_DIR" , out_dir) ;
456- }
437+ file_id : FileId ,
438+ ) -> CrateId {
439+ let edition = pkg. edition ;
440+ let cfg_options = {
441+ let mut opts = cfg_options. clone ( ) ;
442+ for feature in pkg. features . iter ( ) {
443+ opts. insert_key_value ( "feature" . into ( ) , feature. into ( ) ) ;
444+ }
445+ opts. extend ( pkg. cfgs . iter ( ) . cloned ( ) ) ;
446+ opts
447+ } ;
448+ let mut env = Env :: default ( ) ;
449+ if let Some ( out_dir) = & pkg. out_dir {
450+ // NOTE: cargo and rustc seem to hide non-UTF-8 strings from env! and option_env!()
451+ if let Some ( out_dir) = out_dir. to_str ( ) . map ( |s| s. to_owned ( ) ) {
452+ env. set ( "OUT_DIR" , out_dir) ;
457453 }
458- let proc_macro = pkg
459- . proc_macro_dylib_path
460- . as_ref ( )
461- . map ( |it| proc_macro_client. by_dylib_path ( & it) )
462- . unwrap_or_default ( ) ;
463-
464- let display_name = CrateDisplayName :: from_canonical_name ( pkg. name . clone ( ) ) ;
465- let crate_id = crate_graph. add_crate_root (
466- file_id,
467- edition,
468- Some ( display_name) ,
469- cfg_options,
470- env,
471- proc_macro. clone ( ) ,
472- ) ;
473-
474- return Some ( crate_id) ;
475454 }
476- None
455+ let proc_macro = pkg
456+ . proc_macro_dylib_path
457+ . as_ref ( )
458+ . map ( |it| proc_macro_client. by_dylib_path ( & it) )
459+ . unwrap_or_default ( ) ;
460+
461+ let display_name = CrateDisplayName :: from_canonical_name ( pkg. name . clone ( ) ) ;
462+ let crate_id = crate_graph. add_crate_root (
463+ file_id,
464+ edition,
465+ Some ( display_name) ,
466+ cfg_options,
467+ env,
468+ proc_macro. clone ( ) ,
469+ ) ;
470+
471+ crate_id
477472}
473+
478474fn sysroot_to_crate_graph (
479475 crate_graph : & mut CrateGraph ,
480476 sysroot : & Sysroot ,
0 commit comments