@@ -37,7 +37,7 @@ use syntax::parse;
37
37
use syntax:: attr;
38
38
use syntax:: ext:: base:: SyntaxExtension ;
39
39
use syntax:: parse:: token:: { InternedString , intern} ;
40
- use syntax_pos:: { self , Span , mk_sp} ;
40
+ use syntax_pos:: { Span , DUMMY_SP , mk_sp} ;
41
41
use log;
42
42
43
43
pub struct Library {
@@ -56,16 +56,14 @@ pub struct CrateLoader<'a> {
56
56
57
57
fn dump_crates ( cstore : & CStore ) {
58
58
info ! ( "resolved crates:" ) ;
59
- cstore. iter_crate_data_origins ( |_, data, opt_source | {
59
+ cstore. iter_crate_data ( |_, data| {
60
60
info ! ( " name: {}" , data. name( ) ) ;
61
61
info ! ( " cnum: {}" , data. cnum) ;
62
62
info ! ( " hash: {}" , data. hash( ) ) ;
63
63
info ! ( " reqd: {}" , data. explicitly_linked. get( ) ) ;
64
- opt_source. map ( |cs| {
65
- let CrateSource { dylib, rlib, cnum : _ } = cs;
66
- dylib. map ( |dl| info ! ( " dylib: {}" , dl. 0 . display( ) ) ) ;
67
- rlib. map ( |rl| info ! ( " rlib: {}" , rl. 0 . display( ) ) ) ;
68
- } ) ;
64
+ let CrateSource { dylib, rlib } = data. source . clone ( ) ;
65
+ dylib. map ( |dl| info ! ( " dylib: {}" , dl. 0 . display( ) ) ) ;
66
+ rlib. map ( |rl| info ! ( " rlib: {}" , rl. 0 . display( ) ) ) ;
69
67
} )
70
68
}
71
69
@@ -261,8 +259,7 @@ impl<'a> CrateLoader<'a> {
261
259
span : Span ,
262
260
lib : Library ,
263
261
explicitly_linked : bool )
264
- -> ( CrateNum , Rc < cstore:: CrateMetadata > ,
265
- cstore:: CrateSource ) {
262
+ -> ( CrateNum , Rc < cstore:: CrateMetadata > ) {
266
263
info ! ( "register crate `extern crate {} as {}`" , name, ident) ;
267
264
let crate_root = lib. metadata . get_root ( ) ;
268
265
self . verify_no_symbol_conflicts ( span, & crate_root) ;
@@ -303,17 +300,14 @@ impl<'a> CrateLoader<'a> {
303
300
cnum : cnum,
304
301
codemap_import_info : RefCell :: new ( vec ! [ ] ) ,
305
302
explicitly_linked : Cell :: new ( explicitly_linked) ,
303
+ source : cstore:: CrateSource {
304
+ dylib : dylib,
305
+ rlib : rlib,
306
+ } ,
306
307
} ) ;
307
308
308
- let source = cstore:: CrateSource {
309
- dylib : dylib,
310
- rlib : rlib,
311
- cnum : cnum,
312
- } ;
313
-
314
309
self . cstore . set_crate_data ( cnum, cmeta. clone ( ) ) ;
315
- self . cstore . add_used_crate_source ( source. clone ( ) ) ;
316
- ( cnum, cmeta, source)
310
+ ( cnum, cmeta)
317
311
}
318
312
319
313
fn resolve_crate ( & mut self ,
@@ -324,7 +318,7 @@ impl<'a> CrateLoader<'a> {
324
318
span : Span ,
325
319
kind : PathKind ,
326
320
explicitly_linked : bool )
327
- -> ( CrateNum , Rc < cstore:: CrateMetadata > , cstore :: CrateSource ) {
321
+ -> ( CrateNum , Rc < cstore:: CrateMetadata > ) {
328
322
info ! ( "resolving crate `extern crate {} as {}`" , name, ident) ;
329
323
let result = match self . existing_match ( name, hash, kind) {
330
324
Some ( cnum) => LoadResult :: Previous ( cnum) ,
@@ -356,10 +350,8 @@ impl<'a> CrateLoader<'a> {
356
350
match result {
357
351
LoadResult :: Previous ( cnum) => {
358
352
let data = self . cstore . get_crate_data ( cnum) ;
359
- if explicitly_linked && !data. explicitly_linked . get ( ) {
360
- data. explicitly_linked . set ( explicitly_linked) ;
361
- }
362
- ( cnum, data, self . cstore . used_crate_source ( cnum) )
353
+ data. explicitly_linked . set ( explicitly_linked || data. explicitly_linked . get ( ) ) ;
354
+ ( cnum, data)
363
355
}
364
356
LoadResult :: Loaded ( library) => {
365
357
self . register_crate ( root, ident, name, span, library,
@@ -508,9 +500,8 @@ impl<'a> CrateLoader<'a> {
508
500
509
501
let ( dylib, metadata) = match library {
510
502
LoadResult :: Previous ( cnum) => {
511
- let dylib = self . cstore . opt_used_crate_source ( cnum) . unwrap ( ) . dylib ;
512
503
let data = self . cstore . get_crate_data ( cnum) ;
513
- ( dylib, PMDSource :: Registered ( data) )
504
+ ( data . source . dylib . clone ( ) , PMDSource :: Registered ( data) )
514
505
}
515
506
LoadResult :: Loaded ( library) => {
516
507
let dylib = library. dylib . clone ( ) ;
@@ -754,9 +745,8 @@ impl<'a> CrateLoader<'a> {
754
745
} ;
755
746
info ! ( "panic runtime not found -- loading {}" , name) ;
756
747
757
- let ( cnum, data, _) = self . resolve_crate ( & None , name, name, None ,
758
- syntax_pos:: DUMMY_SP ,
759
- PathKind :: Crate , false ) ;
748
+ let ( cnum, data) =
749
+ self . resolve_crate ( & None , name, name, None , DUMMY_SP , PathKind :: Crate , false ) ;
760
750
761
751
// Sanity check the loaded crate to ensure it is indeed a panic runtime
762
752
// and the panic strategy is indeed what we thought it was.
@@ -836,9 +826,8 @@ impl<'a> CrateLoader<'a> {
836
826
} else {
837
827
& self . sess . target . target . options . exe_allocation_crate
838
828
} ;
839
- let ( cnum, data, _) = self . resolve_crate ( & None , name, name, None ,
840
- syntax_pos:: DUMMY_SP ,
841
- PathKind :: Crate , false ) ;
829
+ let ( cnum, data) =
830
+ self . resolve_crate ( & None , name, name, None , DUMMY_SP , PathKind :: Crate , false ) ;
842
831
843
832
// Sanity check the crate we loaded to ensure that it is indeed an
844
833
// allocator.
0 commit comments