diff --git a/src/comp/metadata/creader.rs b/src/comp/metadata/creader.rs index de504efb008..3aaf89126f6 100644 --- a/src/comp/metadata/creader.rs +++ b/src/comp/metadata/creader.rs @@ -119,37 +119,24 @@ fn find_library_crate(sess: session::session, ident: ast::ident, attr::require_unique_names(sess, metas); - let crate_name = - { - let name_items = attr::find_meta_items_by_name(metas, "name"); - alt vec::last(name_items) { - some(i) { - alt attr::get_meta_item_value_str(i) { - some(n) { n } - // FIXME: Probably want a warning here since the user - // is using the wrong type of meta item - _ { ident } - } - } - none. { ident } - } - }; - + // Metadata "name" will be used to find the crate. Use `ident' + // as "name" if the attribute is not explicitly specified + if !attr::contains_name(metas, "name") { + metas += [attr::mk_name_value_item_str("name", ident)]; + } let nn = default_native_lib_naming(sess, sess.get_opts().static); let x = - find_library_crate_aux(nn, crate_name, metas, - sess.filesearch()); + find_library_crate_aux(nn, metas, sess.filesearch()); if x != none || sess.get_opts().static { ret x; } let nn2 = default_native_lib_naming(sess, true); - ret find_library_crate_aux(nn2, crate_name, metas, - sess.filesearch()); + ret find_library_crate_aux(nn2, metas, sess.filesearch()); } -fn find_library_crate_aux(nn: {prefix: str, suffix: str}, crate_name: str, +fn find_library_crate_aux(nn: {prefix: str, suffix: str}, metas: [@ast::meta_item], filesearch: filesearch::filesearch) -> option::t<{ident: str, data: @[u8]}> { - let prefix: str = nn.prefix + crate_name; + let prefix: str = nn.prefix; let suffix: str = nn.suffix; ret filesearch::search(filesearch, { |path|