@@ -214,7 +214,6 @@ impl<'a> CrateLoader<'a> {
214
214
let root = if root. is_some ( ) { root } else { & crate_paths } ;
215
215
216
216
let Library { dylib, rlib, rmeta, metadata } = lib;
217
-
218
217
let cnum_map = self . resolve_crate_deps ( root, & crate_root, & metadata, cnum, span, dep_kind) ;
219
218
220
219
let dependencies: Vec < CrateNum > = cnum_map. iter ( ) . cloned ( ) . collect ( ) ;
@@ -229,7 +228,7 @@ impl<'a> CrateLoader<'a> {
229
228
. map ( |trait_impls| ( trait_impls. trait_id , trait_impls. impls ) )
230
229
. collect ( ) ;
231
230
232
- let cmeta = cstore:: CrateMetadata {
231
+ let mut cmeta = cstore:: CrateMetadata {
233
232
name,
234
233
extern_crate : Lock :: new ( None ) ,
235
234
def_path_table : Lrc :: new ( def_path_table) ,
@@ -249,8 +248,17 @@ impl<'a> CrateLoader<'a> {
249
248
rlib,
250
249
rmeta,
251
250
} ,
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 ,
252
258
} ;
253
259
260
+ cmeta. derive_attributes ( self . sess ) ;
261
+
254
262
let cmeta = Lrc :: new ( cmeta) ;
255
263
self . cstore . set_crate_data ( cnum, cmeta. clone ( ) ) ;
256
264
( cnum, cmeta)
@@ -641,15 +649,14 @@ impl<'a> CrateLoader<'a> {
641
649
let mut needs_panic_runtime = attr:: contains_name ( & krate. attrs ,
642
650
"needs_panic_runtime" ) ;
643
651
644
- let sess = self . sess ;
645
652
self . cstore . iter_crate_data ( |cnum, data| {
646
653
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 ( ) {
649
656
// Inject a dependency from all #![needs_panic_runtime] to this
650
657
// #![panic_runtime] crate.
651
658
self . inject_dependency_if ( cnum, "a panic runtime" ,
652
- & |data| data. needs_panic_runtime ( sess ) ) ;
659
+ & |data| data. needs_panic_runtime ( ) ) ;
653
660
runtime_found = runtime_found || * data. dep_kind . lock ( ) == DepKind :: Explicit ;
654
661
}
655
662
} ) ;
@@ -686,7 +693,7 @@ impl<'a> CrateLoader<'a> {
686
693
687
694
// Sanity check the loaded crate to ensure it is indeed a panic runtime
688
695
// 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 ( ) {
690
697
self . sess . err ( & format ! ( "the crate `{}` is not a panic runtime" ,
691
698
name) ) ;
692
699
}
@@ -698,7 +705,7 @@ impl<'a> CrateLoader<'a> {
698
705
699
706
self . sess . injected_panic_runtime . set ( Some ( cnum) ) ;
700
707
self . inject_dependency_if ( cnum, "a panic runtime" ,
701
- & |data| data. needs_panic_runtime ( self . sess ) ) ;
708
+ & |data| data. needs_panic_runtime ( ) ) ;
702
709
}
703
710
704
711
fn inject_sanitizer_runtime ( & mut self ) {
@@ -793,7 +800,7 @@ impl<'a> CrateLoader<'a> {
793
800
PathKind :: Crate , dep_kind) ;
794
801
795
802
// 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 ( ) {
797
804
self . sess . err ( & format ! ( "the crate `{}` is not a sanitizer runtime" ,
798
805
name) ) ;
799
806
}
@@ -816,7 +823,7 @@ impl<'a> CrateLoader<'a> {
816
823
PathKind :: Crate , dep_kind) ;
817
824
818
825
// 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 ( ) {
820
827
self . sess . err ( & format ! ( "the crate `profiler_builtins` is not \
821
828
a profiler runtime") ) ;
822
829
}
@@ -833,7 +840,7 @@ impl<'a> CrateLoader<'a> {
833
840
let mut needs_allocator = attr:: contains_name ( & krate. attrs ,
834
841
"needs_allocator" ) ;
835
842
self . cstore . iter_crate_data ( |_, data| {
836
- needs_allocator = needs_allocator || data. needs_allocator ( self . sess ) ;
843
+ needs_allocator = needs_allocator || data. needs_allocator ( ) ;
837
844
} ) ;
838
845
if !needs_allocator {
839
846
self . sess . injected_allocator . set ( None ) ;
0 commit comments