@@ -314,16 +314,21 @@ fn load_library_crate(sess: session::session, ident: ast::ident, span: span,
314
314
}
315
315
}
316
316
317
- fn metas_with_ident ( ident : ast:: ident ,
317
+ fn metas_with ( ident : ast:: ident , key : str ,
318
318
metas : [ @ast:: meta_item ] ) -> [ @ast:: meta_item ] {
319
- let name_items = attr:: find_meta_items_by_name ( metas, "name" ) ;
319
+ let name_items = attr:: find_meta_items_by_name ( metas, key ) ;
320
320
if name_items. is_empty ( ) {
321
- metas + [ attr:: mk_name_value_item_str ( "name" , ident) ]
321
+ metas + [ attr:: mk_name_value_item_str ( key , ident) ]
322
322
} else {
323
323
metas
324
324
}
325
325
}
326
326
327
+ fn metas_with_ident ( ident : ast:: ident ,
328
+ metas : [ @ast:: meta_item ] ) -> [ @ast:: meta_item ] {
329
+ metas_with ( ident, "name" , metas)
330
+ }
331
+
327
332
fn existing_match ( e : env , metas : [ @ast:: meta_item ] ) -> option < int > {
328
333
let maybe_entry = e. crate_cache . find { |c|
329
334
metadata_matches ( * c. metas , metas)
@@ -381,11 +386,12 @@ fn resolve_crate_deps(e: env, cdata: @[u8]) -> cstore::cnum_map {
381
386
let cnum_map = int_hash :: < ast:: crate_num > ( ) ;
382
387
for decoder:: get_crate_deps( cdata) . each { |dep|
383
388
let extrn_cnum = dep. cnum;
384
- let cname = dep. ident ;
389
+ let cname = dep. name ;
390
+ let cvers = dep. vers ;
385
391
// FIXME: We really need to know the linkage metas of our transitive
386
392
// dependencies in order to resolve them correctly.
387
- let cmetas = [ ] ;
388
- #debug ( "resolving dep %s" , cname) ;
393
+ let cmetas = metas_with ( cvers , "vers" , [ ] ) ;
394
+ #debug ( "resolving dep %s ver: %s " , cname, dep . vers ) ;
389
395
alt existing_match ( e, metas_with_ident ( cname, cmetas) ) {
390
396
some ( local_cnum) {
391
397
#debug ( "already have it" ) ;
0 commit comments