about summary refs log tree commit diff
path: root/src/rustc/metadata
diff options
context:
space:
mode:
authorEric Holk <eric.holk@gmail.com>2012-06-28 15:00:03 -0700
committerEric Holk <eric.holk@gmail.com>2012-06-28 15:11:09 -0700
commit87eaf91be34e1a6e38e4a043102910e1f3e77824 (patch)
tree9aba96871ad4d79524b1339364603df966073c2b /src/rustc/metadata
parent54713afa20a9e3cb09ffe678aeb7d32630ef7b59 (diff)
downloadrust-87eaf91be34e1a6e38e4a043102910e1f3e77824.tar.gz
rust-87eaf91be34e1a6e38e4a043102910e1f3e77824.zip
Replaced almost all vector+ in rustc (#2719)
Didn't update shape because the changes were causing segfaults.
Diffstat (limited to 'src/rustc/metadata')
-rw-r--r--src/rustc/metadata/creader.rs2
-rw-r--r--src/rustc/metadata/csearch.rs2
-rw-r--r--src/rustc/metadata/cstore.rs2
-rw-r--r--src/rustc/metadata/decoder.rs6
-rw-r--r--src/rustc/metadata/encoder.rs44
-rw-r--r--src/rustc/metadata/filesearch.rs26
6 files changed, 47 insertions, 35 deletions
diff --git a/src/rustc/metadata/creader.rs b/src/rustc/metadata/creader.rs
index 4f9c4189feb..aa02bb84c8c 100644
--- a/src/rustc/metadata/creader.rs
+++ b/src/rustc/metadata/creader.rs
@@ -164,7 +164,7 @@ fn metas_with(ident: ast::ident, key: ast::ident,
                     metas: [@ast::meta_item]/~) -> [@ast::meta_item]/~ {
     let name_items = attr::find_meta_items_by_name(metas, *key);
     if name_items.is_empty() {
-        metas + [attr::mk_name_value_item_str(key, *ident)]/~
+        vec::append_one(metas, attr::mk_name_value_item_str(key, *ident))
     } else {
         metas
     }
diff --git a/src/rustc/metadata/csearch.rs b/src/rustc/metadata/csearch.rs
index 1f9b2d427f8..6b30bf3090b 100644
--- a/src/rustc/metadata/csearch.rs
+++ b/src/rustc/metadata/csearch.rs
@@ -88,7 +88,7 @@ fn get_item_path(tcx: ty::ctxt, def: ast::def_id) -> ast_map::path {
 
     // FIXME #1920: This path is not always correct if the crate is not linked
     // into the root namespace.
-    [ast_map::path_mod(@cdata.name)]/~ + path
+    vec::append([ast_map::path_mod(@cdata.name)]/~, path)
 }
 
 enum found_ast {
diff --git a/src/rustc/metadata/cstore.rs b/src/rustc/metadata/cstore.rs
index b1eba8e3875..8d828aed69d 100644
--- a/src/rustc/metadata/cstore.rs
+++ b/src/rustc/metadata/cstore.rs
@@ -134,7 +134,7 @@ fn get_used_libraries(cstore: cstore) -> [str]/~ {
 }
 
 fn add_used_link_args(cstore: cstore, args: str) {
-    p(cstore).used_link_args += str::split_char(args, ' ');
+    vec::push_all(p(cstore).used_link_args, str::split_char(args, ' '));
 }
 
 fn get_used_link_args(cstore: cstore) -> [str]/~ {
diff --git a/src/rustc/metadata/decoder.rs b/src/rustc/metadata/decoder.rs
index 856ea024453..b738f1988c2 100644
--- a/src/rustc/metadata/decoder.rs
+++ b/src/rustc/metadata/decoder.rs
@@ -611,9 +611,9 @@ fn get_attributes(md: ebml::doc) -> [ast::attribute]/~ {
             // an attribute
             assert (vec::len(meta_items) == 1u);
             let meta_item = meta_items[0];
-            attrs +=
-                [{node: {style: ast::attr_outer, value: *meta_item},
-                  span: ast_util::dummy_sp()}]/~;
+            vec::push(attrs,
+                      {node: {style: ast::attr_outer, value: *meta_item},
+                       span: ast_util::dummy_sp()});
         };
       }
       option::none { }
diff --git a/src/rustc/metadata/encoder.rs b/src/rustc/metadata/encoder.rs
index 6c5b03a387d..1e4521276d2 100644
--- a/src/rustc/metadata/encoder.rs
+++ b/src/rustc/metadata/encoder.rs
@@ -119,9 +119,11 @@ fn encode_enum_variant_paths(ebml_w: ebml::writer, variants: [variant]/~,
     }
 }
 
-fn add_to_index(ebml_w: ebml::writer, path: [ident]/~, &index: [entry<str>]/~,
+fn add_to_index(ebml_w: ebml::writer, path: [ident]/&, &index: [entry<str>]/~,
                 name: ident) {
-    let full_path = path + [name]/~;
+    let mut full_path = []/~;
+    vec::push_all(full_path, path);
+    vec::push(full_path, name);
     vec::push(index, {val: ast_util::path_name_i(full_path),
                       pos: ebml_w.writer.tell()});
 }
@@ -171,15 +173,16 @@ fn encode_module_item_paths(ebml_w: ebml::writer, ecx: @encode_ctxt,
             ebml_w.wr_tag(tag_paths_data_mod) {||
                encode_name_and_def_id(ebml_w, it.ident, it.id);
                encode_module_item_paths(ebml_w, ecx, _mod,
-                                        path + [it.ident]/~,
+                                        vec::append_one(path, it.ident),
                                         index);
             }
           }
           item_foreign_mod(nmod) {
             ebml_w.wr_tag(tag_paths_data_mod) {||
               encode_name_and_def_id(ebml_w, it.ident, it.id);
-              encode_foreign_module_item_paths(ebml_w, nmod,
-                   path + [it.ident]/~, index);
+              encode_foreign_module_item_paths(
+                  ebml_w, nmod,
+                  vec::append_one(path, it.ident), index);
             }
           }
           item_ty(_, tps, _) {
@@ -197,7 +200,8 @@ fn encode_module_item_paths(ebml_w: ebml::writer, ecx: @encode_ctxt,
                 add_to_index(ebml_w, path, index, it.ident);
                 encode_named_def_id(ebml_w, it.ident,
                                     local_def(ctor.node.id));
-                encode_class_item_paths(ebml_w, items, path + [it.ident]/~,
+                encode_class_item_paths(ebml_w, items,
+                                        vec::append_one(path, it.ident),
                                         index);
             }
           }
@@ -451,11 +455,12 @@ fn encode_info_for_class(ecx: @encode_ctxt, ebml_w: ebml::writer,
                 vec::push(*index, {val: m.id, pos: ebml_w.writer.tell()});
                 vec::push(*global_index,
                           {val: m.id, pos: ebml_w.writer.tell()});
-                let impl_path = path + [ast_map::path_name(m.ident)]/~;
+                let impl_path = vec::append_one(path,
+                                                ast_map::path_name(m.ident));
                 #debug("encode_info_for_class: doing %s %d", *m.ident, m.id);
                 encode_info_for_method(ecx, ebml_w, impl_path,
                                        should_inline(m.attrs), id, m,
-                                       class_tps + m.tps);
+                                       vec::append(class_tps, m.tps));
             }
             _ { /* don't encode private methods */ }
           }
@@ -709,11 +714,13 @@ fn encode_info_for_item(ecx: @encode_ctxt, ebml_w: ebml::writer, item: @item,
         encode_path(ebml_w, path, ast_map::path_name(item.ident));
         ebml_w.end_tag();
 
-        let impl_path = path + [ast_map::path_name(item.ident)]/~;
+        let impl_path = vec::append_one(path,
+                                        ast_map::path_name(item.ident));
         for methods.each {|m|
             vec::push(*index, {val: m.id, pos: ebml_w.writer.tell()});
             encode_info_for_method(ecx, ebml_w, impl_path,
-                   should_inline(m.attrs), item.id, m, tps + m.tps);
+                                   should_inline(m.attrs), item.id, m,
+                                   vec::append(tps, m.tps));
         }
       }
       item_iface(tps, rp, ms) {
@@ -786,8 +793,8 @@ fn encode_info_for_items(ecx: @encode_ctxt, ebml_w: ebml::writer,
                    item_class(tps, _, _, ctor, m_dtor, _) {
                    #debug("encoding info for ctor %s %d", *i.ident,
                           ctor.node.id);
-                   *index +=
-                       [{val: ctor.node.id, pos: ebml_w.writer.tell()}]/~;
+                   vec::push(*index,
+                             {val: ctor.node.id, pos: ebml_w.writer.tell()});
                    encode_info_for_fn(ecx, ebml_w, ctor.node.id, i.ident,
                       *pt, if tps.len() > 0u {
                              some(ii_ctor(ctor, i.ident, tps,
@@ -933,7 +940,7 @@ fn synthesize_crate_attrs(ecx: @encode_ctxt, crate: @crate) -> [attribute]/~ {
                 attr::remove_meta_items_by_name(tmp, @"vers")
             };
 
-        let meta_items = [name_item, vers_item]/~ + other_items;
+        let meta_items = vec::append([name_item, vers_item]/~, other_items);
         let link_item = attr::mk_list_item(@"link", meta_items);
 
         ret attr::mk_attr(link_item);
@@ -942,18 +949,19 @@ fn synthesize_crate_attrs(ecx: @encode_ctxt, crate: @crate) -> [attribute]/~ {
     let mut attrs: [attribute]/~ = []/~;
     let mut found_link_attr = false;
     for crate.node.attrs.each {|attr|
-        attrs +=
+        vec::push(
+            attrs,
             if *attr::get_attr_name(attr) != "link" {
-                [attr]/~
+                attr
             } else {
                 alt attr.node.value.node {
                   meta_list(n, l) {
                     found_link_attr = true;;
-                    [synthesize_link_attr(ecx, l)]/~
+                    synthesize_link_attr(ecx, l)
                   }
-                  _ { [attr]/~ }
+                  _ { attr }
                 }
-            };
+            });
     }
 
     if !found_link_attr { vec::push(attrs, synthesize_link_attr(ecx, []/~)); }
diff --git a/src/rustc/metadata/filesearch.rs b/src/rustc/metadata/filesearch.rs
index c66c02bce9c..9d382467214 100644
--- a/src/rustc/metadata/filesearch.rs
+++ b/src/rustc/metadata/filesearch.rs
@@ -39,16 +39,19 @@ fn mk_filesearch(maybe_sysroot: option<path>,
     impl of filesearch for filesearch_impl {
         fn sysroot() -> path { self.sysroot }
         fn lib_search_paths() -> [path]/~ {
-            self.addl_lib_search_paths
-                + [make_target_lib_path(self.sysroot, self.target_triple)]/~
-                + alt get_cargo_lib_path_nearest() {
-                  result::ok(p) { [p]/~ }
-                  result::err(p) { []/~ }
-                }
-                + alt get_cargo_lib_path() {
-                  result::ok(p) { [p]/~ }
-                  result::err(p) { []/~ }
-                }
+            let mut paths = self.addl_lib_search_paths;
+
+            vec::push(paths,
+                      make_target_lib_path(self.sysroot, self.target_triple));
+            alt get_cargo_lib_path_nearest() {
+              result::ok(p) { vec::push(paths, p) }
+              result::err(p) { }
+            }
+            alt get_cargo_lib_path() {
+              result::ok(p) { vec::push(paths, p) }
+              result::err(p) { }
+            }
+            paths
         }
         fn get_target_lib_path() -> path {
             make_target_lib_path(self.sysroot, self.target_triple)
@@ -91,7 +94,8 @@ fn relative_target_lib_path(target_triple: str) -> [path]/~ {
 
 fn make_target_lib_path(sysroot: path,
                         target_triple: str) -> path {
-    let path = [sysroot]/~ + relative_target_lib_path(target_triple);
+    let path = vec::append([sysroot]/~,
+                           relative_target_lib_path(target_triple));
     let path = path::connect_many(path);
     ret path;
 }