@@ -37,7 +37,7 @@ use syntax::parse;
3737use syntax:: attr;
3838use syntax:: ext:: base:: SyntaxExtension ;
3939use syntax:: parse:: token:: { InternedString , intern} ;
40- use syntax_pos:: { self , Span , mk_sp} ;
40+ use syntax_pos:: { Span , DUMMY_SP , mk_sp} ;
4141use log;
4242
4343pub struct Library {
@@ -56,16 +56,14 @@ pub struct CrateLoader<'a> {
5656
5757fn dump_crates ( cstore : & CStore ) {
5858 info ! ( "resolved crates:" ) ;
59- cstore. iter_crate_data_origins ( |_, data, opt_source | {
59+ cstore. iter_crate_data ( |_, data| {
6060 info ! ( " name: {}" , data. name( ) ) ;
6161 info ! ( " cnum: {}" , data. cnum) ;
6262 info ! ( " hash: {}" , data. hash( ) ) ;
6363 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( ) ) ) ;
6967 } )
7068}
7169
@@ -261,8 +259,7 @@ impl<'a> CrateLoader<'a> {
261259 span : Span ,
262260 lib : Library ,
263261 explicitly_linked : bool )
264- -> ( CrateNum , Rc < cstore:: CrateMetadata > ,
265- cstore:: CrateSource ) {
262+ -> ( CrateNum , Rc < cstore:: CrateMetadata > ) {
266263 info ! ( "register crate `extern crate {} as {}`" , name, ident) ;
267264 let crate_root = lib. metadata . get_root ( ) ;
268265 self . verify_no_symbol_conflicts ( span, & crate_root) ;
@@ -303,17 +300,14 @@ impl<'a> CrateLoader<'a> {
303300 cnum : cnum,
304301 codemap_import_info : RefCell :: new ( vec ! [ ] ) ,
305302 explicitly_linked : Cell :: new ( explicitly_linked) ,
303+ source : cstore:: CrateSource {
304+ dylib : dylib,
305+ rlib : rlib,
306+ } ,
306307 } ) ;
307308
308- let source = cstore:: CrateSource {
309- dylib : dylib,
310- rlib : rlib,
311- cnum : cnum,
312- } ;
313-
314309 self . cstore . set_crate_data ( cnum, cmeta. clone ( ) ) ;
315- self . cstore . add_used_crate_source ( source. clone ( ) ) ;
316- ( cnum, cmeta, source)
310+ ( cnum, cmeta)
317311 }
318312
319313 fn resolve_crate ( & mut self ,
@@ -324,7 +318,7 @@ impl<'a> CrateLoader<'a> {
324318 span : Span ,
325319 kind : PathKind ,
326320 explicitly_linked : bool )
327- -> ( CrateNum , Rc < cstore:: CrateMetadata > , cstore :: CrateSource ) {
321+ -> ( CrateNum , Rc < cstore:: CrateMetadata > ) {
328322 info ! ( "resolving crate `extern crate {} as {}`" , name, ident) ;
329323 let result = match self . existing_match ( name, hash, kind) {
330324 Some ( cnum) => LoadResult :: Previous ( cnum) ,
@@ -356,10 +350,8 @@ impl<'a> CrateLoader<'a> {
356350 match result {
357351 LoadResult :: Previous ( cnum) => {
358352 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)
363355 }
364356 LoadResult :: Loaded ( library) => {
365357 self . register_crate ( root, ident, name, span, library,
@@ -508,9 +500,8 @@ impl<'a> CrateLoader<'a> {
508500
509501 let ( dylib, metadata) = match library {
510502 LoadResult :: Previous ( cnum) => {
511- let dylib = self . cstore . opt_used_crate_source ( cnum) . unwrap ( ) . dylib ;
512503 let data = self . cstore . get_crate_data ( cnum) ;
513- ( dylib, PMDSource :: Registered ( data) )
504+ ( data . source . dylib . clone ( ) , PMDSource :: Registered ( data) )
514505 }
515506 LoadResult :: Loaded ( library) => {
516507 let dylib = library. dylib . clone ( ) ;
@@ -754,9 +745,8 @@ impl<'a> CrateLoader<'a> {
754745 } ;
755746 info ! ( "panic runtime not found -- loading {}" , name) ;
756747
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 ) ;
760750
761751 // Sanity check the loaded crate to ensure it is indeed a panic runtime
762752 // and the panic strategy is indeed what we thought it was.
@@ -836,9 +826,8 @@ impl<'a> CrateLoader<'a> {
836826 } else {
837827 & self . sess . target . target . options . exe_allocation_crate
838828 } ;
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 ) ;
842831
843832 // Sanity check the crate we loaded to ensure that it is indeed an
844833 // allocator.
0 commit comments