@@ -214,7 +214,6 @@ impl<'a> CrateLoader<'a> {
214214 let root = if root. is_some ( ) { root } else { & crate_paths } ;
215215
216216 let Library { dylib, rlib, rmeta, metadata } = lib;
217-
218217 let cnum_map = self . resolve_crate_deps ( root, & crate_root, & metadata, cnum, span, dep_kind) ;
219218
220219 let dependencies: Vec < CrateNum > = cnum_map. iter ( ) . cloned ( ) . collect ( ) ;
@@ -229,7 +228,7 @@ impl<'a> CrateLoader<'a> {
229228 . map ( |trait_impls| ( trait_impls. trait_id , trait_impls. impls ) )
230229 . collect ( ) ;
231230
232- let cmeta = cstore:: CrateMetadata {
231+ let mut cmeta = cstore:: CrateMetadata {
233232 name,
234233 extern_crate : Lock :: new ( None ) ,
235234 def_path_table : Lrc :: new ( def_path_table) ,
@@ -249,8 +248,17 @@ impl<'a> CrateLoader<'a> {
249248 rlib,
250249 rmeta,
251250 } ,
251+ compiler_builtins : None ,
252+ needs_allocator : None ,
253+ needs_panic_runtime : None ,
254+ no_builtins : None ,
255+ panic_runtime : None ,
256+ profiler_runtime : None ,
257+ sanitizer_runtime : None ,
252258 } ;
253259
260+ cmeta. derive_attributes ( self . sess ) ;
261+
254262 let cmeta = Lrc :: new ( cmeta) ;
255263 self . cstore . set_crate_data ( cnum, cmeta. clone ( ) ) ;
256264 ( cnum, cmeta)
@@ -641,15 +649,14 @@ impl<'a> CrateLoader<'a> {
641649 let mut needs_panic_runtime = attr:: contains_name ( & krate. attrs ,
642650 "needs_panic_runtime" ) ;
643651
644- let sess = self . sess ;
645652 self . cstore . iter_crate_data ( |cnum, data| {
646653 needs_panic_runtime = needs_panic_runtime ||
647- data. needs_panic_runtime ( sess ) ;
648- if data. is_panic_runtime ( sess ) {
654+ data. needs_panic_runtime ( ) ;
655+ if data. is_panic_runtime ( ) {
649656 // Inject a dependency from all #![needs_panic_runtime] to this
650657 // #![panic_runtime] crate.
651658 self . inject_dependency_if ( cnum, "a panic runtime" ,
652- & |data| data. needs_panic_runtime ( sess ) ) ;
659+ & |data| data. needs_panic_runtime ( ) ) ;
653660 runtime_found = runtime_found || * data. dep_kind . lock ( ) == DepKind :: Explicit ;
654661 }
655662 } ) ;
@@ -686,7 +693,7 @@ impl<'a> CrateLoader<'a> {
686693
687694 // Sanity check the loaded crate to ensure it is indeed a panic runtime
688695 // and the panic strategy is indeed what we thought it was.
689- if !data. is_panic_runtime ( self . sess ) {
696+ if !data. is_panic_runtime ( ) {
690697 self . sess . err ( & format ! ( "the crate `{}` is not a panic runtime" ,
691698 name) ) ;
692699 }
@@ -698,7 +705,7 @@ impl<'a> CrateLoader<'a> {
698705
699706 self . sess . injected_panic_runtime . set ( Some ( cnum) ) ;
700707 self . inject_dependency_if ( cnum, "a panic runtime" ,
701- & |data| data. needs_panic_runtime ( self . sess ) ) ;
708+ & |data| data. needs_panic_runtime ( ) ) ;
702709 }
703710
704711 fn inject_sanitizer_runtime ( & mut self ) {
@@ -793,7 +800,7 @@ impl<'a> CrateLoader<'a> {
793800 PathKind :: Crate , dep_kind) ;
794801
795802 // Sanity check the loaded crate to ensure it is indeed a sanitizer runtime
796- if !data. is_sanitizer_runtime ( self . sess ) {
803+ if !data. is_sanitizer_runtime ( ) {
797804 self . sess . err ( & format ! ( "the crate `{}` is not a sanitizer runtime" ,
798805 name) ) ;
799806 }
@@ -816,7 +823,7 @@ impl<'a> CrateLoader<'a> {
816823 PathKind :: Crate , dep_kind) ;
817824
818825 // Sanity check the loaded crate to ensure it is indeed a profiler runtime
819- if !data. is_profiler_runtime ( self . sess ) {
826+ if !data. is_profiler_runtime ( ) {
820827 self . sess . err ( & format ! ( "the crate `profiler_builtins` is not \
821828 a profiler runtime") ) ;
822829 }
@@ -833,7 +840,7 @@ impl<'a> CrateLoader<'a> {
833840 let mut needs_allocator = attr:: contains_name ( & krate. attrs ,
834841 "needs_allocator" ) ;
835842 self . cstore . iter_crate_data ( |_, data| {
836- needs_allocator = needs_allocator || data. needs_allocator ( self . sess ) ;
843+ needs_allocator = needs_allocator || data. needs_allocator ( ) ;
837844 } ) ;
838845 if !needs_allocator {
839846 self . sess . injected_allocator . set ( None ) ;
0 commit comments