Skip to content

Commit 83b7215

Browse files
committed
Cleanup attribute code. Issue #487
1 parent 82a74fc commit 83b7215

File tree

3 files changed

+16
-12
lines changed

3 files changed

+16
-12
lines changed

src/comp/metadata/creader.rs

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -56,20 +56,24 @@ fn find_library_crate(&session::session sess, &ast::ident ident,
5656
&vec[@ast::meta_item] metas,
5757
&vec[str] library_search_paths) ->
5858
option::t[tup(str, vec[u8])] {
59-
let str crate_name = ident;
60-
for (@ast::meta_item mi in metas) {
61-
alt (mi.node) {
62-
case (ast::meta_name_value(?name, ?value)) {
63-
if (name == "name") {
64-
crate_name = value;
65-
break;
59+
60+
auto crate_name = {
61+
auto name_items = attr::find_meta_items_by_name(metas, "name");
62+
alt (vec::last(name_items)) {
63+
case (some(?i)) {
64+
alt (i.node) {
65+
case (ast::meta_name_value(_, ?v)) { v }
66+
case (_) {
67+
// FIXME: Probably want a warning here since the user
68+
// is using the wrong type of meta item
69+
ident
70+
}
6671
}
6772
}
68-
case (_) {
69-
// FIXME (#487)
70-
}
73+
case (none) { ident }
7174
}
72-
}
75+
};
76+
7377
auto nn = default_native_lib_naming(sess);
7478
let str prefix = nn.prefix + crate_name;
7579
// FIXME: we could probably use a 'glob' function in std::fs but it will

src/comp/metadata/encoder.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -415,7 +415,6 @@ fn write_int(&io::writer writer, &int n) {
415415
}
416416

417417
fn encode_meta_item(&ebml::writer ebml_w, &meta_item mi) {
418-
// FIXME (#487): Support all forms of meta item
419418
alt (mi.node) {
420419
case (meta_word(?name)) {
421420
ebml::start_tag(ebml_w, tag_meta_item_word);

src/comp/middle/attr.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import front::ast;
77
export attr_metas;
88
export find_linkage_metas;
99
export find_attrs_by_name;
10+
export find_meta_items_by_name;
1011
export contains;
1112
export sort_meta_items;
1213

0 commit comments

Comments
 (0)