about summary refs log tree commit diff
path: root/src/librustc/metadata
diff options
context:
space:
mode:
authorTim Chevalier <chevalier@alum.wellesley.edu>2013-01-11 15:07:48 -0800
committerTim Chevalier <chevalier@alum.wellesley.edu>2013-01-14 15:49:53 -0800
commita4dc65baa1caa2ef3e78b3fa8e330dda99d1e752 (patch)
treec6cd09c3f05c8f00bb358d938aa1305894cdf96d /src/librustc/metadata
parent0ca369e9dc5f6ea0ba0c38d047e8d931badfc82c (diff)
syntax/rustc: Eliminate some bad copies
r=pcwalton
Diffstat (limited to 'src/librustc/metadata')
-rw-r--r--src/librustc/metadata/common.rs2
-rw-r--r--src/librustc/metadata/creader.rs3
-rw-r--r--src/librustc/metadata/encoder.rs18
-rw-r--r--src/librustc/metadata/loader.rs2
4 files changed, 12 insertions, 13 deletions
diff --git a/src/librustc/metadata/common.rs b/src/librustc/metadata/common.rs
index e6a367ac1a8..a9094cf6a48 100644
--- a/src/librustc/metadata/common.rs
+++ b/src/librustc/metadata/common.rs
@@ -152,5 +152,5 @@ const tag_lang_items_item: uint = 0x73;
 const tag_lang_items_item_id: uint = 0x74;
 const tag_lang_items_item_node_id: uint = 0x75;
 
-type link_meta = {name: ~str, vers: ~str, extras_hash: ~str};
+type link_meta = {name: @str, vers: @str, extras_hash: @str};
 
diff --git a/src/librustc/metadata/creader.rs b/src/librustc/metadata/creader.rs
index 46275164162..03bd63b8bf7 100644
--- a/src/librustc/metadata/creader.rs
+++ b/src/librustc/metadata/creader.rs
@@ -191,8 +191,7 @@ fn visit_item(e: env, i: @ast::item) {
 
 fn metas_with(+ident: ~str, +key: ~str, +metas: ~[@ast::meta_item])
     -> ~[@ast::meta_item] {
-    // XXX: Bad copies.
-    let name_items = attr::find_meta_items_by_name(copy metas, copy key);
+    let name_items = attr::find_meta_items_by_name(metas, key);
     if name_items.is_empty() {
         vec::append_one(metas, attr::mk_name_value_item_str(key, ident))
     } else {
diff --git a/src/librustc/metadata/encoder.rs b/src/librustc/metadata/encoder.rs
index 6d131a074eb..05000ac85e4 100644
--- a/src/librustc/metadata/encoder.rs
+++ b/src/librustc/metadata/encoder.rs
@@ -881,7 +881,7 @@ fn encode_info_for_foreign_item(ecx: @encode_ctxt,
 }
 
 fn encode_info_for_items(ecx: @encode_ctxt, ebml_w: writer::Encoder,
-                         crate: @crate) -> ~[entry<int>] {
+                         crate: &crate) -> ~[entry<int>] {
     let index = @mut ~[];
     ebml_w.start_tag(tag_items_data);
     index.push({val: crate_node_id, pos: ebml_w.writer.tell()});
@@ -1021,20 +1021,20 @@ fn encode_attributes(ebml_w: writer::Encoder, attrs: ~[attribute]) {
 // metadata that Rust cares about for linking crates. This attribute requires
 // 'name' and 'vers' items, so if the user didn't provide them we will throw
 // them in anyway with default values.
-fn synthesize_crate_attrs(ecx: @encode_ctxt, crate: @crate) -> ~[attribute] {
+fn synthesize_crate_attrs(ecx: @encode_ctxt, crate: &crate) -> ~[attribute] {
 
     fn synthesize_link_attr(ecx: @encode_ctxt, +items: ~[@meta_item]) ->
        attribute {
 
-        assert (ecx.link_meta.name != ~"");
-        assert (ecx.link_meta.vers != ~"");
+        assert ecx.link_meta.name.is_not_empty();
+        assert ecx.link_meta.vers.is_not_empty();
 
         let name_item =
             attr::mk_name_value_item_str(~"name",
-                                         /*bad*/copy ecx.link_meta.name);
+                                         ecx.link_meta.name.to_owned());
         let vers_item =
             attr::mk_name_value_item_str(~"vers",
-                                         /*bad*/copy ecx.link_meta.vers);
+                                         ecx.link_meta.vers.to_owned());
 
         let other_items =
             {
@@ -1156,7 +1156,7 @@ fn encode_crate_dep(ecx: @encode_ctxt, ebml_w: writer::Encoder,
     ebml_w.end_tag();
 }
 
-fn encode_hash(ebml_w: writer::Encoder, hash: ~str) {
+fn encode_hash(ebml_w: writer::Encoder, hash: &str) {
     ebml_w.start_tag(tag_crate_hash);
     ebml_w.writer.write(str::to_bytes(hash));
     ebml_w.end_tag();
@@ -1169,7 +1169,7 @@ const metadata_encoding_version : &[u8] = &[0x72, //'r' as u8,
                                             0x74, //'t' as u8,
                                             0, 0, 0, 1 ];
 
-fn encode_metadata(parms: encode_parms, crate: @crate) -> ~[u8] {
+fn encode_metadata(parms: encode_parms, crate: &crate) -> ~[u8] {
     let wr = @io::BytesWriter();
     let stats =
         {mut inline_bytes: 0,
@@ -1197,7 +1197,7 @@ fn encode_metadata(parms: encode_parms, crate: @crate) -> ~[u8] {
 
     let ebml_w = writer::Encoder(wr as io::Writer);
 
-    encode_hash(ebml_w, /*bad*/copy ecx.link_meta.extras_hash);
+    encode_hash(ebml_w, ecx.link_meta.extras_hash);
 
     let mut i = wr.pos;
     let crate_attrs = synthesize_crate_attrs(ecx, crate);
diff --git a/src/librustc/metadata/loader.rs b/src/librustc/metadata/loader.rs
index 58c9a1b90f2..46f41b07107 100644
--- a/src/librustc/metadata/loader.rs
+++ b/src/librustc/metadata/loader.rs
@@ -77,7 +77,7 @@ fn load_library_crate(cx: ctxt) -> {ident: ~str, data: @~[u8]} {
 }
 
 fn find_library_crate(cx: ctxt) -> Option<{ident: ~str, data: @~[u8]}> {
-    attr::require_unique_names(cx.diag, /*bad*/copy cx.metas);
+    attr::require_unique_names(cx.diag, cx.metas);
     find_library_crate_aux(cx, libname(cx), cx.filesearch)
 }