about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorMichael Sullivan <sully@msully.net>2012-06-25 20:00:46 -0700
committerMichael Sullivan <sully@msully.net>2012-06-25 20:00:46 -0700
commit329eca6044fdf376a7a89ec7a96dba7a8b884cf7 (patch)
tree7008814278a066914b6ba36818388d5212ffda9f /src/test
parentc087aaf56b1109163126fea4c2760f8414ffbe56 (diff)
downloadrust-329eca6044fdf376a7a89ec7a96dba7a8b884cf7.tar.gz
rust-329eca6044fdf376a7a89ec7a96dba7a8b884cf7.zip
Make vectors uglier ([]/~). Sorry. Should be temporary. Closes #2725.
Diffstat (limited to 'src/test')
-rw-r--r--src/test/auxiliary/cci_class_6.rs6
-rw-r--r--src/test/auxiliary/cci_iter_lib.rs2
-rw-r--r--src/test/auxiliary/cci_no_inline_lib.rs2
-rw-r--r--src/test/auxiliary/issue2378a.rs2
-rw-r--r--src/test/auxiliary/issue2378b.rs2
-rw-r--r--src/test/bench/core-uint-to-str.rs2
-rw-r--r--src/test/bench/core-vec-append.rs8
-rw-r--r--src/test/bench/graph500-bfs.rs18
-rw-r--r--src/test/bench/msgsend-ring-new.rs6
-rw-r--r--src/test/bench/msgsend-ring.rs6
-rw-r--r--src/test/bench/msgsend.rs6
-rw-r--r--src/test/bench/shootout-ackermann.rs2
-rw-r--r--src/test/bench/shootout-binarytrees.rs2
-rw-r--r--src/test/bench/shootout-fannkuchredux.rs2
-rw-r--r--src/test/bench/shootout-fasta.rs24
-rw-r--r--src/test/bench/shootout-fibo.rs2
-rw-r--r--src/test/bench/shootout-k-nucleotide.rs34
-rw-r--r--src/test/bench/shootout-mandelbrot.rs10
-rw-r--r--src/test/bench/shootout-nbody.rs14
-rw-r--r--src/test/bench/shootout-pfib.rs10
-rw-r--r--src/test/bench/shootout-spectralnorm.rs8
-rw-r--r--src/test/bench/shootout-threadring.rs2
-rw-r--r--src/test/bench/std-smallintmap.rs2
-rw-r--r--src/test/bench/sudoku.rs8
-rw-r--r--src/test/bench/task-perf-alloc-unwind.rs6
-rw-r--r--src/test/bench/task-perf-one-million.rs6
-rw-r--r--src/test/bench/task-perf-spawnalot.rs2
-rw-r--r--src/test/bench/task-perf-word-count-generic.rs14
-rw-r--r--src/test/bench/task-perf-word-count.rs16
-rw-r--r--src/test/compile-fail/ambig_impl_unify.rs6
-rw-r--r--src/test/compile-fail/assign-super.rs4
-rw-r--r--src/test/compile-fail/attr-bad-meta.rs2
-rw-r--r--src/test/compile-fail/bad-expr-path.rs2
-rw-r--r--src/test/compile-fail/bad-expr-path2.rs2
-rw-r--r--src/test/compile-fail/bad-main.rs2
-rw-r--r--src/test/compile-fail/bad-module.rs2
-rw-r--r--src/test/compile-fail/block-arg-as-stmt-with-value.rs2
-rw-r--r--src/test/compile-fail/block-must-not-have-result-for.rs2
-rw-r--r--src/test/compile-fail/borrowck-assign-comp-idx.rs6
-rw-r--r--src/test/compile-fail/borrowck-binding-mutbl.rs4
-rw-r--r--src/test/compile-fail/borrowck-loan-vec-content.rs6
-rw-r--r--src/test/compile-fail/borrowck-mut-vec-as-imm-slice-bad.rs4
-rw-r--r--src/test/compile-fail/empty-vec-trailing-comma.rs2
-rw-r--r--src/test/compile-fail/fail-type-err.rs2
-rw-r--r--src/test/compile-fail/import.rs2
-rw-r--r--src/test/compile-fail/import2.rs2
-rw-r--r--src/test/compile-fail/import3.rs2
-rw-r--r--src/test/compile-fail/import4.rs2
-rw-r--r--src/test/compile-fail/infinite-vec-type-recursion.rs4
-rw-r--r--src/test/compile-fail/issue-1655.rs2
-rw-r--r--src/test/compile-fail/issue-2149.rs4
-rw-r--r--src/test/compile-fail/issue-2150.rs2
-rw-r--r--src/test/compile-fail/issue-2509-a.rs2
-rw-r--r--src/test/compile-fail/liveness-issue-2163.rs4
-rw-r--r--src/test/compile-fail/liveness-use-in-index-lvalue.rs2
-rw-r--r--src/test/compile-fail/lub-in-args.rs4
-rw-r--r--src/test/compile-fail/mutable-huh-variance-box.rs6
-rw-r--r--src/test/compile-fail/mutable-huh-variance-deep.rs4
-rw-r--r--src/test/compile-fail/mutable-huh-variance-ptr.rs8
-rw-r--r--src/test/compile-fail/mutable-huh-variance-rec.rs6
-rw-r--r--src/test/compile-fail/mutable-huh-variance-unique.rs6
-rw-r--r--src/test/compile-fail/mutable-huh-variance-vec1.rs6
-rw-r--r--src/test/compile-fail/mutable-huh-variance-vec2.rs6
-rw-r--r--src/test/compile-fail/mutable-huh-variance-vec3.rs4
-rw-r--r--src/test/compile-fail/mutable-huh-variance-vec4.rs18
-rw-r--r--src/test/compile-fail/mutable-huh-vec-assign.rs4
-rw-r--r--src/test/compile-fail/nested-ty-params.rs2
-rw-r--r--src/test/compile-fail/no-capture-arc.rs2
-rw-r--r--src/test/compile-fail/no-reuse-move-arc.rs2
-rw-r--r--src/test/compile-fail/non-const.rs4
-rw-r--r--src/test/compile-fail/non-copyable-void.rs2
-rw-r--r--src/test/compile-fail/nonsense-constraints.rs6
-rw-r--r--src/test/compile-fail/pattern-tyvar-2.rs2
-rw-r--r--src/test/compile-fail/pattern-tyvar.rs2
-rw-r--r--src/test/compile-fail/qquote-1.rs2
-rw-r--r--src/test/compile-fail/qquote-2.rs2
-rw-r--r--src/test/compile-fail/regions-escape-loop-via-vec.rs4
-rw-r--r--src/test/compile-fail/seq-args.rs2
-rw-r--r--src/test/compile-fail/tag-that-dare-not-speak-its-name.rs2
-rw-r--r--src/test/compile-fail/tstate-unsat-in-called-fn-expr.rs2
-rw-r--r--src/test/compile-fail/tstate-unsat-in-fn-expr.rs2
-rw-r--r--src/test/compile-fail/unique-vec-res.rs6
-rw-r--r--src/test/compile-fail/vec-add.rs50
-rw-r--r--src/test/compile-fail/vec-concat-bug.rs6
-rw-r--r--src/test/compile-fail/vec-field.rs2
-rw-r--r--src/test/compile-fail/vec-res-add.rs4
-rw-r--r--src/test/compile-fail/vector-no-ann.rs2
-rw-r--r--src/test/pretty/blank-lines.rs4
-rw-r--r--src/test/pretty/block-disambig.rs4
-rw-r--r--src/test/pretty/vec-comments.pp8
-rw-r--r--src/test/pretty/vec-comments.rs8
-rw-r--r--src/test/pretty/vec-type.pp4
-rw-r--r--src/test/pretty/vec-type.rs4
-rw-r--r--src/test/run-fail/bug-2470-bounds-check-overflow-2.rs2
-rw-r--r--src/test/run-fail/bug-2470-bounds-check-overflow-3.rs4
-rw-r--r--src/test/run-fail/bug-2470-bounds-check-overflow.rs2
-rw-r--r--src/test/run-fail/unwind-box-vec.rs2
-rw-r--r--src/test/run-fail/unwind-interleaved.rs4
-rw-r--r--src/test/run-fail/unwind-misc-1.rs6
-rw-r--r--src/test/run-fail/unwind-partial-box.rs2
-rw-r--r--src/test/run-fail/unwind-partial-unique.rs2
-rw-r--r--src/test/run-fail/unwind-partial-vec.rs4
-rw-r--r--src/test/run-fail/unwind-rec.rs2
-rw-r--r--src/test/run-fail/unwind-rec2.rs6
-rw-r--r--src/test/run-fail/unwind-tup.rs2
-rw-r--r--src/test/run-fail/unwind-tup2.rs6
-rw-r--r--src/test/run-fail/vec-overrun.rs2
-rw-r--r--src/test/run-fail/vec-underrun.rs2
-rw-r--r--src/test/run-fail/zip-different-lengths.rs8
-rw-r--r--src/test/run-pass-fulldeps/issue-1926.rs2
-rw-r--r--src/test/run-pass-fulldeps/qquote.rs2
-rw-r--r--src/test/run-pass/alloca-from-derived-tydesc.rs6
-rw-r--r--src/test/run-pass/alt-join.rs4
-rw-r--r--src/test/run-pass/argv.rs4
-rw-r--r--src/test/run-pass/auto-loop.rs2
-rw-r--r--src/test/run-pass/auto_serialize.rs8
-rw-r--r--src/test/run-pass/autobind.rs4
-rw-r--r--src/test/run-pass/block-arg-can-be-followed-by-binop.rs2
-rw-r--r--src/test/run-pass/block-arg-can-be-followed-by-block-arg.rs2
-rw-r--r--src/test/run-pass/block-arg-can-be-followed-by-call.rs2
-rw-r--r--src/test/run-pass/block-arg-in-parentheses.rs16
-rw-r--r--src/test/run-pass/block-arg.rs2
-rw-r--r--src/test/run-pass/block-iter-1.rs4
-rw-r--r--src/test/run-pass/block-iter-2.rs4
-rw-r--r--src/test/run-pass/block-vec-map2.rs6
-rw-r--r--src/test/run-pass/borrowck-mut-vec-as-imm-slice.rs4
-rw-r--r--src/test/run-pass/break.rs4
-rw-r--r--src/test/run-pass/cci_iter_exe.rs2
-rw-r--r--src/test/run-pass/cci_no_inline_exe.rs2
-rw-r--r--src/test/run-pass/class-iface-bounded-param.rs2
-rw-r--r--src/test/run-pass/class-implements-multiple-ifaces.rs10
-rw-r--r--src/test/run-pass/class-poly-methods-cross-crate.rs4
-rw-r--r--src/test/run-pass/class-poly-methods.rs10
-rw-r--r--src/test/run-pass/const-bound.rs2
-rw-r--r--src/test/run-pass/cycle-collection4.rs4
-rw-r--r--src/test/run-pass/deep-vector.rs2
-rw-r--r--src/test/run-pass/deep-vector2.rs2
-rw-r--r--src/test/run-pass/dvec-test.rs10
-rw-r--r--src/test/run-pass/empty-mutable-vec.rs2
-rw-r--r--src/test/run-pass/expr-alt-fail.rs2
-rw-r--r--src/test/run-pass/expr-fn.rs2
-rw-r--r--src/test/run-pass/for-destruct.rs2
-rw-r--r--src/test/run-pass/for-loop-fail.rs2
-rw-r--r--src/test/run-pass/foreach-nested.rs2
-rw-r--r--src/test/run-pass/generic-ivec-leak.rs2
-rw-r--r--src/test/run-pass/generic-ivec.rs2
-rw-r--r--src/test/run-pass/hashmap-memory.rs6
-rw-r--r--src/test/run-pass/iface-generic.rs14
-rw-r--r--src/test/run-pass/iface-to-str.rs8
-rw-r--r--src/test/run-pass/impl-variance.rs8
-rw-r--r--src/test/run-pass/import-glob-crate.rs4
-rw-r--r--src/test/run-pass/import-in-block.rs4
-rw-r--r--src/test/run-pass/import4.rs2
-rw-r--r--src/test/run-pass/import5.rs2
-rw-r--r--src/test/run-pass/import7.rs2
-rw-r--r--src/test/run-pass/infer-fn-tail-expr.rs2
-rw-r--r--src/test/run-pass/integral-indexing.rs2
-rw-r--r--src/test/run-pass/issue-1821.rs2
-rw-r--r--src/test/run-pass/issue-1989.rs2
-rw-r--r--src/test/run-pass/issue-2101.rs2
-rw-r--r--src/test/run-pass/issue-2502.rs6
-rw-r--r--src/test/run-pass/issue-2611.rs2
-rw-r--r--src/test/run-pass/issue-687.rs16
-rw-r--r--src/test/run-pass/iter-all.rs6
-rw-r--r--src/test/run-pass/iter-any.rs6
-rw-r--r--src/test/run-pass/iter-contains.rs10
-rw-r--r--src/test/run-pass/iter-count.rs8
-rw-r--r--src/test/run-pass/iter-eachi.rs2
-rw-r--r--src/test/run-pass/iter-filter-to-vec.rs10
-rw-r--r--src/test/run-pass/iter-flat-map-to-vec.rs22
-rw-r--r--src/test/run-pass/iter-foldl.rs4
-rw-r--r--src/test/run-pass/iter-map-to-vec.rs10
-rw-r--r--src/test/run-pass/iter-min-max.rs8
-rw-r--r--src/test/run-pass/iter-to-vec.rs12
-rw-r--r--src/test/run-pass/ivec-add.rs4
-rw-r--r--src/test/run-pass/ivec-pass-by-value.rs4
-rw-r--r--src/test/run-pass/ivec-tag.rs8
-rw-r--r--src/test/run-pass/lambda-infer-unresolved.rs4
-rw-r--r--src/test/run-pass/linear-for-loop.rs2
-rw-r--r--src/test/run-pass/liveness-move-in-loop.rs4
-rw-r--r--src/test/run-pass/log-knows-the-names-of-variants-in-std.rs2
-rw-r--r--src/test/run-pass/log-linearized.rs4
-rw-r--r--src/test/run-pass/log-str.rs2
-rw-r--r--src/test/run-pass/loop-scope.rs2
-rw-r--r--src/test/run-pass/main-ivec.rs2
-rw-r--r--src/test/run-pass/maybe-mutable.rs6
-rw-r--r--src/test/run-pass/mod-view-items.rs2
-rw-r--r--src/test/run-pass/monad.rs6
-rw-r--r--src/test/run-pass/morestack6.rs2
-rw-r--r--src/test/run-pass/move-arg-2-unique.rs4
-rw-r--r--src/test/run-pass/move-arg-2.rs4
-rw-r--r--src/test/run-pass/mutable-alias-vec.rs4
-rw-r--r--src/test/run-pass/mutable-huh-variance-vec1.rs4
-rw-r--r--src/test/run-pass/mutable-huh-variance-vec2.rs4
-rw-r--r--src/test/run-pass/mutable-vec-drop.rs4
-rw-r--r--src/test/run-pass/native-fn-linkname.rs2
-rw-r--r--src/test/run-pass/native2.rs2
-rw-r--r--src/test/run-pass/newtype-polymorphic.rs6
-rw-r--r--src/test/run-pass/operator-overloading-leaks.rs24
-rw-r--r--src/test/run-pass/option-ext.rs2
-rw-r--r--src/test/run-pass/path.rs2
-rw-r--r--src/test/run-pass/pure-sum.rs8
-rw-r--r--src/test/run-pass/rcvr-borrowed-to-slice.rs6
-rw-r--r--src/test/run-pass/reflect-visit-data.rs12
-rw-r--r--src/test/run-pass/reflect-visit-type.rs6
-rw-r--r--src/test/run-pass/regions-borrow-evec-uniq.rs2
-rw-r--r--src/test/run-pass/ret-break-cont-in-block.rs22
-rw-r--r--src/test/run-pass/sendfn-deep-copy.rs2
-rw-r--r--src/test/run-pass/seq-compare.rs18
-rw-r--r--src/test/run-pass/shadow.rs8
-rw-r--r--src/test/run-pass/shape_intrinsic_tag_then_rec.rs2
-rw-r--r--src/test/run-pass/size-and-align.rs4
-rw-r--r--src/test/run-pass/static-impl.rs14
-rw-r--r--src/test/run-pass/swap-2.rs2
-rw-r--r--src/test/run-pass/tag-in-block.rs2
-rw-r--r--src/test/run-pass/task-comm-16.rs2
-rw-r--r--src/test/run-pass/task-comm-3.rs4
-rw-r--r--src/test/run-pass/task-comm.rs8
-rw-r--r--src/test/run-pass/task-killjoin-rsrc.rs4
-rw-r--r--src/test/run-pass/type-param.rs2
-rw-r--r--src/test/run-pass/type-params-in-for-each.rs4
-rw-r--r--src/test/run-pass/type-ptr.rs2
-rw-r--r--src/test/run-pass/unique-assign-generic.rs4
-rw-r--r--src/test/run-pass/unique-autoderef-index.rs2
-rw-r--r--src/test/run-pass/unique-create.rs2
-rw-r--r--src/test/run-pass/unique-drop-complex.rs2
-rw-r--r--src/test/run-pass/unique-in-vec-copy.rs2
-rw-r--r--src/test/run-pass/unique-in-vec.rs4
-rw-r--r--src/test/run-pass/utf8_chars.rs8
-rw-r--r--src/test/run-pass/vec-concat.rs6
-rw-r--r--src/test/run-pass/vec-drop.rs4
-rw-r--r--src/test/run-pass/vec-growth.rs10
-rw-r--r--src/test/run-pass/vec-ivec-deadlock.rs2
-rw-r--r--src/test/run-pass/vec-late-init.rs4
-rw-r--r--src/test/run-pass/vec-push.rs2
-rw-r--r--src/test/run-pass/vec-self-append.rs6
-rw-r--r--src/test/run-pass/vec-slice.rs2
-rw-r--r--src/test/run-pass/vec-trailing-comma.rs8
-rw-r--r--src/test/run-pass/vec.rs2
-rw-r--r--src/test/run-pass/vector-no-ann-2.rs2
-rw-r--r--src/test/run-pass/while-with-break.rs4
-rw-r--r--src/test/run-pass/zip-same-length.rs8
242 files changed, 614 insertions, 614 deletions
diff --git a/src/test/auxiliary/cci_class_6.rs b/src/test/auxiliary/cci_class_6.rs
index 15fa3e3e785..8460b670753 100644
--- a/src/test/auxiliary/cci_class_6.rs
+++ b/src/test/auxiliary/cci_class_6.rs
@@ -2,17 +2,17 @@ mod kitties {
 
 class cat<U> {
   priv {
-    let mut info : [U];
+    let mut info : [U]/~;
     let mut meows : uint;
   }
 
   let how_hungry : int;
 
-  new(in_x : uint, in_y : int, -in_info: [U])
+  new(in_x : uint, in_y : int, -in_info: [U]/~)
     { self.meows = in_x; self.how_hungry = in_y;
       self.info <- in_info; }
 
-  fn speak<T>(stuff: [T]) {
+  fn speak<T>(stuff: [T]/~) {
     self.meows += stuff.len();
   }
   fn meow_count() -> uint { self.meows }
diff --git a/src/test/auxiliary/cci_iter_lib.rs b/src/test/auxiliary/cci_iter_lib.rs
index 50d9df243e7..af575dc00f6 100644
--- a/src/test/auxiliary/cci_iter_lib.rs
+++ b/src/test/auxiliary/cci_iter_lib.rs
@@ -1,7 +1,7 @@
 #[link(name="cci_iter_lib", vers="0.0")];
 
 #[inline]
-fn iter<T>(v: [T], f: fn(T)) {
+fn iter<T>(v: [T]/~, f: fn(T)) {
     let mut i = 0u;
     let n = vec::len(v);
     while i < n {
diff --git a/src/test/auxiliary/cci_no_inline_lib.rs b/src/test/auxiliary/cci_no_inline_lib.rs
index 42f959a4a7d..468ebeb198c 100644
--- a/src/test/auxiliary/cci_no_inline_lib.rs
+++ b/src/test/auxiliary/cci_no_inline_lib.rs
@@ -1,7 +1,7 @@
 #[link(name="cci_no_inline_lib", vers="0.0")];
 
 // same as cci_iter_lib, more-or-less, but not marked inline
-fn iter(v: [uint], f: fn(uint)) {
+fn iter(v: [uint]/~, f: fn(uint)) {
     let mut i = 0u;
     let n = vec::len(v);
     while i < n {
diff --git a/src/test/auxiliary/issue2378a.rs b/src/test/auxiliary/issue2378a.rs
index 35269a2d653..dfe0f582435 100644
--- a/src/test/auxiliary/issue2378a.rs
+++ b/src/test/auxiliary/issue2378a.rs
@@ -1,7 +1,7 @@
 enum maybe<T> { just(T), nothing }
 
 impl methods<T:copy> for maybe<T> {
-    fn [](idx: uint) -> T {
+    fn []/~(idx: uint) -> T {
         alt self {
           just(t) { t }
           nothing { fail; }
diff --git a/src/test/auxiliary/issue2378b.rs b/src/test/auxiliary/issue2378b.rs
index 9cfe4d3a368..e26be8c6973 100644
--- a/src/test/auxiliary/issue2378b.rs
+++ b/src/test/auxiliary/issue2378b.rs
@@ -6,7 +6,7 @@ import issue2378a::methods;
 type two_maybes<T> = {a: maybe<T>, b: maybe<T>};
 
 impl methods<T:copy> for two_maybes<T> {
-    fn [](idx: uint) -> (T, T) {
+    fn []/~(idx: uint) -> (T, T) {
         (self.a[idx], self.b[idx])
     }
 }
\ No newline at end of file
diff --git a/src/test/bench/core-uint-to-str.rs b/src/test/bench/core-uint-to-str.rs
index 026ce3fe061..a711ae5dd46 100644
--- a/src/test/bench/core-uint-to-str.rs
+++ b/src/test/bench/core-uint-to-str.rs
@@ -1,4 +1,4 @@
-fn main(args: [str]) {
+fn main(args: [str]/~) {
     let args = if os::getenv("RUST_BENCH").is_some() {
         ["", "10000000"]
     } else if args.len() <= 1u {
diff --git a/src/test/bench/core-vec-append.rs b/src/test/bench/core-vec-append.rs
index cde1c76e344..e46cf25fade 100644
--- a/src/test/bench/core-vec-append.rs
+++ b/src/test/bench/core-vec-append.rs
@@ -4,15 +4,15 @@ use std;
 import dvec::{dvec, extensions};
 import io::writer_util;
 
-fn collect_raw(num: uint) -> [uint] {
-    let mut result = [];
+fn collect_raw(num: uint) -> [uint]/~ {
+    let mut result = []/~;
     for uint::range(0u, num) { |i|
         vec::push(result, i);
     }
     ret result;
 }
 
-fn collect_dvec(num: uint) -> [mut uint] {
+fn collect_dvec(num: uint) -> [mut uint]/~ {
     let result = dvec();
     for uint::range(0u, num) { |i|
         result.push(i);
@@ -20,7 +20,7 @@ fn collect_dvec(num: uint) -> [mut uint] {
     ret dvec::unwrap(result);
 }
 
-fn main(args: [str]) {
+fn main(args: [str]/~) {
     let args = if os::getenv("RUST_BENCH").is_some() {
         ["", "50000000"]
     } else if args.len() <= 1u {
diff --git a/src/test/bench/graph500-bfs.rs b/src/test/bench/graph500-bfs.rs
index 56733b29178..edad5e0dbba 100644
--- a/src/test/bench/graph500-bfs.rs
+++ b/src/test/bench/graph500-bfs.rs
@@ -16,10 +16,10 @@ import comm::*;
 import int::abs;
 
 type node_id = i64;
-type graph = [[node_id]];
-type bfs_result = [node_id];
+type graph = [[node_id]/~]/~;
+type bfs_result = [node_id]/~;
 
-fn make_edges(scale: uint, edgefactor: uint) -> [(node_id, node_id)] {
+fn make_edges(scale: uint, edgefactor: uint) -> [(node_id, node_id)]/~ {
     let r = rand::xorshift();
 
     fn choose_edge(i: node_id, j: node_id, scale: uint, r: rand::rng)
@@ -65,7 +65,7 @@ fn make_edges(scale: uint, edgefactor: uint) -> [(node_id, node_id)] {
     }
 }
 
-fn make_graph(N: uint, edges: [(node_id, node_id)]) -> graph {
+fn make_graph(N: uint, edges: [(node_id, node_id)]/~) -> graph {
     let graph = vec::from_fn(N) {|_i| 
         map::hashmap::<node_id, ()>({|x| x as uint }, {|x, y| x == y })
     };
@@ -82,7 +82,7 @@ fn make_graph(N: uint, edges: [(node_id, node_id)]) -> graph {
     }
 }
 
-fn gen_search_keys(graph: graph, n: uint) -> [node_id] {
+fn gen_search_keys(graph: graph, n: uint) -> [node_id]/~ {
     let keys = map::hashmap::<node_id, ()>({|x| x as uint }, {|x, y| x == y });
     let r = rand::rng();
 
@@ -102,7 +102,7 @@ fn gen_search_keys(graph: graph, n: uint) -> [node_id] {
 
 Nodes that are unreachable have a parent of -1."]
 fn bfs(graph: graph, key: node_id) -> bfs_result {
-    let marks : [mut node_id] 
+    let marks : [mut node_id]/~ 
         = vec::to_mut(vec::from_elem(vec::len(graph), -1i64));
 
     let Q = deque::create();
@@ -278,7 +278,7 @@ fn pbfs(&&graph: arc::arc<graph>, key: node_id) -> bfs_result {
 }
 
 #[doc="Performs at least some of the validation in the Graph500 spec."]
-fn validate(edges: [(node_id, node_id)], 
+fn validate(edges: [(node_id, node_id)]/~, 
             root: node_id, tree: bfs_result) -> bool {
     // There are 5 things to test. Below is code for each of them.
 
@@ -293,7 +293,7 @@ fn validate(edges: [(node_id, node_id)],
     let mut status = true;
     let level = tree.map() {|parent| 
         let mut parent = parent;
-        let mut path = [];
+        let mut path = []/~;
 
         if parent == -1i64 {
             // This node was not in the tree.
@@ -371,7 +371,7 @@ fn validate(edges: [(node_id, node_id)],
     true
 }
 
-fn main(args: [str]) {
+fn main(args: [str]/~) {
     let args = if os::getenv("RUST_BENCH").is_some() {
         ["", "15", "48"]
     } else if args.len() <= 1u {
diff --git a/src/test/bench/msgsend-ring-new.rs b/src/test/bench/msgsend-ring-new.rs
index cba62f2ada1..b8e74520b8f 100644
--- a/src/test/bench/msgsend-ring-new.rs
+++ b/src/test/bench/msgsend-ring-new.rs
@@ -21,7 +21,7 @@ fn thread_ring(i: uint,
     };
 }
 
-fn main(args: [str]) {
+fn main(args: [str]/~) {
     let args = if os::getenv("RUST_BENCH").is_some() {
         ["", "100", "10000"]
     } else if args.len() <= 1u {
@@ -39,7 +39,7 @@ fn main(args: [str]) {
     let start = time::precise_time_s();
 
     // create the ring
-    let mut futures = [];
+    let mut futures = []/~;
 
     for uint::range(1u, num_tasks) {|i|
         let get_chan = port();
@@ -50,7 +50,7 @@ fn main(args: [str]) {
                 let p = port();
                 get_chan_chan.send(chan(p));
                 thread_ring(i, msg_per_task, num_chan,  p)
-            }];
+            }]/~;
         }
         
         num_chan = get_chan.recv();
diff --git a/src/test/bench/msgsend-ring.rs b/src/test/bench/msgsend-ring.rs
index 442b6e62dd1..5b59005e572 100644
--- a/src/test/bench/msgsend-ring.rs
+++ b/src/test/bench/msgsend-ring.rs
@@ -21,7 +21,7 @@ fn thread_ring(i: uint,
     };
 }
 
-fn main(args: [str]) {
+fn main(args: [str]/~) {
     let args = if os::getenv("RUST_BENCH").is_some() {
         ["", "100", "10000"]
     } else if args.len() <= 1u {
@@ -39,7 +39,7 @@ fn main(args: [str]) {
     let start = time::precise_time_s();
 
     // create the ring
-    let mut futures = [];
+    let mut futures = []/~;
 
     for uint::range(1u, num_tasks) {|i|
         let get_chan = port();
@@ -49,7 +49,7 @@ fn main(args: [str]) {
             let p = port();
             get_chan_chan.send(chan(p));
             thread_ring(i, msg_per_task, num_chan,  p)
-        }];
+        }]/~;
         
         num_chan = get_chan.recv();
     };
diff --git a/src/test/bench/msgsend.rs b/src/test/bench/msgsend.rs
index b6a6ba60a9f..cea712635a0 100644
--- a/src/test/bench/msgsend.rs
+++ b/src/test/bench/msgsend.rs
@@ -27,7 +27,7 @@ fn server(requests: comm::port<request>, responses: comm::chan<uint>) {
     comm::send(responses, count);
 }
 
-fn run(args: [str]) {
+fn run(args: [str]/~) {
     let from_child = comm::port();
     let to_parent = comm::chan(from_child);
     let to_child = task::spawn_listener {|po|
@@ -37,7 +37,7 @@ fn run(args: [str]) {
     let workers = option::get(uint::from_str(args[2]));
     let start = std::time::precise_time_s();
     let to_child = to_child;
-    let mut worker_results = [];
+    let mut worker_results = []/~;
     for uint::range(0u, workers) {|_i|
         let builder = task::builder();
         vec::push(worker_results, task::future_result(builder));
@@ -58,7 +58,7 @@ fn run(args: [str]) {
     io::stdout().write_str(#fmt("Throughput=%f per sec\n", thruput));
 }
 
-fn main(args: [str]) {
+fn main(args: [str]/~) {
     let args = if os::getenv("RUST_BENCH").is_some() {
         ["", "1000000", "10000"]
     } else if args.len() <= 1u {
diff --git a/src/test/bench/shootout-ackermann.rs b/src/test/bench/shootout-ackermann.rs
index 8969bdfc0b7..8f1f95b2581 100644
--- a/src/test/bench/shootout-ackermann.rs
+++ b/src/test/bench/shootout-ackermann.rs
@@ -12,7 +12,7 @@ fn ack(m: int, n: int) -> int {
     }
 }
 
-fn main(args: [str]) {
+fn main(args: [str]/~) {
     let args = if os::getenv("RUST_BENCH").is_some() {
         ["", "12"]
     } else if args.len() <= 1u {
diff --git a/src/test/bench/shootout-binarytrees.rs b/src/test/bench/shootout-binarytrees.rs
index 6486602cc6e..b2769a36e89 100644
--- a/src/test/bench/shootout-binarytrees.rs
+++ b/src/test/bench/shootout-binarytrees.rs
@@ -22,7 +22,7 @@ fn bottom_up_tree(arena: &a.arena::arena, item: int, depth: int) -> &a.tree {
     ret new(*arena) nil;
 }
 
-fn main(args: [str]) {
+fn main(args: [str]/~) {
     let args = if os::getenv("RUST_BENCH").is_some() {
         ["", "17"]
     } else if args.len() <= 1u {
diff --git a/src/test/bench/shootout-fannkuchredux.rs b/src/test/bench/shootout-fannkuchredux.rs
index 654f75d8260..7a518e8c394 100644
--- a/src/test/bench/shootout-fannkuchredux.rs
+++ b/src/test/bench/shootout-fannkuchredux.rs
@@ -58,7 +58,7 @@ fn fannkuch(n: int) -> int {
     ret flips;
 }
 
-fn main(args: [str]) {
+fn main(args: [str]/~) {
     let args = if os::getenv("RUST_BENCH").is_some() {
         ["", "10"]
     } else if args.len() <= 1u {
diff --git a/src/test/bench/shootout-fasta.rs b/src/test/bench/shootout-fasta.rs
index 4910673cb29..0670f928adb 100644
--- a/src/test/bench/shootout-fasta.rs
+++ b/src/test/bench/shootout-fasta.rs
@@ -23,16 +23,16 @@ fn myrandom_next(r: myrandom, mx: u32) -> u32 {
 
 type aminoacids = {ch: char, prob: u32};
 
-fn make_cumulative(aa: [aminoacids]) -> [aminoacids] {
+fn make_cumulative(aa: [aminoacids]/~) -> [aminoacids]/~ {
     let mut cp: u32 = 0u32;
-    let mut ans: [aminoacids] = [];
-    for aa.each {|a| cp += a.prob; ans += [{ch: a.ch, prob: cp}]; }
+    let mut ans: [aminoacids]/~ = []/~;
+    for aa.each {|a| cp += a.prob; ans += [{ch: a.ch, prob: cp}]/~; }
     ret ans;
 }
 
-fn select_random(r: u32, genelist: [aminoacids]) -> char {
+fn select_random(r: u32, genelist: [aminoacids]/~) -> char {
     if r < genelist[0].prob { ret genelist[0].ch; }
-    fn bisect(v: [aminoacids], lo: uint, hi: uint, target: u32) -> char {
+    fn bisect(v: [aminoacids]/~, lo: uint, hi: uint, target: u32) -> char {
         if hi > lo + 1u {
             let mid: uint = lo + (hi - lo) / 2u;
             if target < v[mid].prob {
@@ -43,7 +43,7 @@ fn select_random(r: u32, genelist: [aminoacids]) -> char {
     ret bisect(genelist, 0u, vec::len::<aminoacids>(genelist) - 1u, r);
 }
 
-fn make_random_fasta(wr: io::writer, id: str, desc: str, genelist: [aminoacids], n: int) {
+fn make_random_fasta(wr: io::writer, id: str, desc: str, genelist: [aminoacids]/~, n: int) {
     wr.write_line(">" + id + " " + desc);
     let rng = @{mut last: std::rand::rng().next()};
     let mut op: str = "";
@@ -74,7 +74,7 @@ fn make_repeat_fasta(wr: io::writer, id: str, desc: str, s: str, n: int) unsafe
 
 fn acid(ch: char, prob: u32) -> aminoacids { ret {ch: ch, prob: prob}; }
 
-fn main(args: [str]) {
+fn main(args: [str]/~) {
     let args = if os::getenv("RUST_BENCH").is_some() {
         // alioth tests k-nucleotide with this data at 25,000,000
         ["", "5000000"]
@@ -85,22 +85,22 @@ fn main(args: [str]) {
     };
 
     let writer = if os::getenv("RUST_BENCH").is_some() {
-        result::get(io::file_writer("./shootout-fasta.data", [io::truncate, io::create]))
+        result::get(io::file_writer("./shootout-fasta.data", [io::truncate, io::create]/~))
     } else {
         io::stdout()
     };
 
     let n = int::from_str(args[1]).get();
 
-    let iub: [aminoacids] =
+    let iub: [aminoacids]/~ =
         make_cumulative([acid('a', 27u32), acid('c', 12u32), acid('g', 12u32),
                          acid('t', 27u32), acid('B', 2u32), acid('D', 2u32),
                          acid('H', 2u32), acid('K', 2u32), acid('M', 2u32),
                          acid('N', 2u32), acid('R', 2u32), acid('S', 2u32),
-                         acid('V', 2u32), acid('W', 2u32), acid('Y', 2u32)]);
-    let homosapiens: [aminoacids] =
+                         acid('V', 2u32), acid('W', 2u32), acid('Y', 2u32)]/~);
+    let homosapiens: [aminoacids]/~ =
         make_cumulative([acid('a', 30u32), acid('c', 20u32), acid('g', 20u32),
-                         acid('t', 30u32)]);
+                         acid('t', 30u32)]/~);
     let alu: str =
         "GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGG" +
             "GAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGA" +
diff --git a/src/test/bench/shootout-fibo.rs b/src/test/bench/shootout-fibo.rs
index df621254284..2f076343cfd 100644
--- a/src/test/bench/shootout-fibo.rs
+++ b/src/test/bench/shootout-fibo.rs
@@ -8,7 +8,7 @@ fn fib(n: int) -> int {
     }
 }
 
-fn main(args: [str]) {
+fn main(args: [str]/~) {
     let args = if os::getenv("RUST_BENCH").is_some() {
         ["", "40"]
     } else if args.len() <= 1u {
diff --git a/src/test/bench/shootout-k-nucleotide.rs b/src/test/bench/shootout-k-nucleotide.rs
index 26e8b938468..b6811db4b62 100644
--- a/src/test/bench/shootout-k-nucleotide.rs
+++ b/src/test/bench/shootout-k-nucleotide.rs
@@ -10,7 +10,7 @@ import std::map::hashmap;
 import std::sort;
 
 // given a map, print a sorted version of it
-fn sort_and_fmt(mm: hashmap<[u8], uint>, total: uint) -> str { 
+fn sort_and_fmt(mm: hashmap<[u8]/~, uint>, total: uint) -> str { 
    fn pct(xx: uint, yy: uint) -> float {
       ret (xx as float) * 100f / (yy as float);
    }
@@ -28,14 +28,14 @@ fn sort_and_fmt(mm: hashmap<[u8], uint>, total: uint) -> str {
    }
 
    // sort by key, then by value
-   fn sortKV<TT: copy, UU: copy>(orig: [(TT,UU)]) -> [(TT,UU)] {
+   fn sortKV<TT: copy, UU: copy>(orig: [(TT,UU)]/~) -> [(TT,UU)]/~ {
       ret sort::merge_sort(le_by_val, sort::merge_sort(le_by_key, orig));
    }
 
-   let mut pairs = [];
+   let mut pairs = []/~;
 
    // map -> [(k,%)]
-   mm.each(fn&(key: [u8], val: uint) -> bool {
+   mm.each(fn&(key: [u8]/~, val: uint) -> bool {
       vec::push(pairs, (key, pct(val, total)));
       ret true;
    });
@@ -44,7 +44,7 @@ fn sort_and_fmt(mm: hashmap<[u8], uint>, total: uint) -> str {
    
    let mut buffer = "";
 
-   pairs_sorted.each(fn&(kv: ([u8], float)) -> bool unsafe {
+   pairs_sorted.each(fn&(kv: ([u8]/~, float)) -> bool unsafe {
       let (k,v) = kv;
       buffer += (#fmt["%s %0.3f\n", str::to_upper(str::unsafe::from_bytes(k)), v]);
       ret true;
@@ -54,7 +54,7 @@ fn sort_and_fmt(mm: hashmap<[u8], uint>, total: uint) -> str {
 }
 
 // given a map, search for the frequency of a pattern
-fn find(mm: hashmap<[u8], uint>, key: str) -> uint {
+fn find(mm: hashmap<[u8]/~, uint>, key: str) -> uint {
    alt mm.find(str::bytes(str::to_lower(key))) {
       option::none      { ret 0u; }
       option::some(num) { ret num; }
@@ -62,17 +62,17 @@ fn find(mm: hashmap<[u8], uint>, key: str) -> uint {
 }
 
 // given a map, increment the counter for a key
-fn update_freq(mm: hashmap<[u8], uint>, key: [u8]) {
+fn update_freq(mm: hashmap<[u8]/~, uint>, key: [u8]/~) {
    alt mm.find(key) {
       option::none      { mm.insert(key, 1u      ); }
       option::some(val) { mm.insert(key, 1u + val); }
    }
 }
 
-// given a [u8], for each window call a function
+// given a [u8]/~, for each window call a function
 // i.e., for "hello" and windows of size four,
 // run it("hell") and it("ello"), then return "llo"
-fn windows_with_carry(bb: [const u8], nn: uint, it: fn(window: [u8])) -> [u8] {
+fn windows_with_carry(bb: [const u8]/~, nn: uint, it: fn(window: [u8]/~)) -> [u8]/~ {
    let mut ii = 0u;
 
    let len = vec::len(bb);
@@ -84,18 +84,18 @@ fn windows_with_carry(bb: [const u8], nn: uint, it: fn(window: [u8])) -> [u8] {
    ret vec::slice(bb, len - (nn - 1u), len); 
 }
 
-fn make_sequence_processor(sz: uint, from_parent: comm::port<[u8]>, to_parent: comm::chan<str>) {
+fn make_sequence_processor(sz: uint, from_parent: comm::port<[u8]/~>, to_parent: comm::chan<str>) {
    
-   let freqs: hashmap<[u8], uint> = map::bytes_hash();
-   let mut carry: [u8] = [];
+   let freqs: hashmap<[u8]/~, uint> = map::bytes_hash();
+   let mut carry: [u8]/~ = []/~;
    let mut total: uint = 0u;
 
-   let mut line: [u8];
+   let mut line: [u8]/~;
 
    loop {
 
       line = comm::recv(from_parent);
-      if line == [] { break; }
+      if line == []/~ { break; }
 
       carry = windows_with_carry(carry + line, sz, { |window|
          update_freq(freqs, window);
@@ -119,7 +119,7 @@ fn make_sequence_processor(sz: uint, from_parent: comm::port<[u8]>, to_parent: c
 }
 
 // given a FASTA file on stdin, process sequence THREE
-fn main(args: [str]) {
+fn main(args: [str]/~) {
    let rdr = if os::getenv("RUST_BENCH").is_some() {
        // FIXME: Using this compile-time env variable is a crummy way to
        // get to this massive data set, but #include_bin chokes on it (#2598)
@@ -135,10 +135,10 @@ fn main(args: [str]) {
 
 
    // initialize each sequence sorter
-   let sizes = [1u,2u,3u,4u,6u,12u,18u];
+   let sizes = [1u,2u,3u,4u,6u,12u,18u]/~;
    let from_child = vec::map (sizes, { |_sz|     comm::port() });
    let to_parent  = vec::mapi(sizes, { |ii, _sz| comm::chan(from_child[ii]) });
-   let to_child   = vec::mapi(sizes, fn@(ii: uint, sz: uint) -> comm::chan<[u8]> {
+   let to_child   = vec::mapi(sizes, fn@(ii: uint, sz: uint) -> comm::chan<[u8]/~> {
       ret task::spawn_listener { |from_parent|
          make_sequence_processor(sz, from_parent, to_parent[ii]);
       };
diff --git a/src/test/bench/shootout-mandelbrot.rs b/src/test/bench/shootout-mandelbrot.rs
index 7254b5bbb9e..8b91f8310e7 100644
--- a/src/test/bench/shootout-mandelbrot.rs
+++ b/src/test/bench/shootout-mandelbrot.rs
@@ -17,7 +17,7 @@ import io::writer_util;
 import std::map::hashmap;
 
 type cmplx = {re: f64, im: f64};
-type line = {i: uint, b: [u8]};
+type line = {i: uint, b: [u8]/~};
 
 impl arith for cmplx {
     fn *(x: cmplx) -> cmplx {
@@ -65,7 +65,7 @@ fn fillbyte(x: cmplx, incr: f64) -> u8 {
 
 fn chanmb(i: uint, size: uint, ch: comm::chan<line>) -> ()
 {
-    let mut crv = [];
+    let mut crv = []/~;
     let incr = 2f64/(size as f64);
     let y = incr*(i as f64) - 1f64;
     let xincr = 8f64*incr;
@@ -101,7 +101,7 @@ fn writer(path: str, writech: comm::chan<comm::chan<line>>, size: uint)
         _ {
             result::get(
                 io::file_writer(path,
-                [io::create, io::truncate]))
+                [io::create, io::truncate]/~))
         }
     };
     cout.write_line("P4");
@@ -121,7 +121,7 @@ fn writer(path: str, writech: comm::chan<comm::chan<line>>, size: uint)
                     #debug("WS %u", prev);
                     // FIXME (#2280): this temporary shouldn't be
                     // necessary, but seems to be, for borrowing.
-                    let v : [u8] = lines.get(prev);
+                    let v : [u8]/~ = lines.get(prev);
                     cout.write(v);
                     done += 1_u;
                     lines.remove(prev);
@@ -140,7 +140,7 @@ fn writer(path: str, writech: comm::chan<comm::chan<line>>, size: uint)
     }
 }
 
-fn main(args: [str]) {
+fn main(args: [str]/~) {
     let args = if os::getenv("RUST_BENCH").is_some() {
         ["", "4000", "10"]
     } else {
diff --git a/src/test/bench/shootout-nbody.rs b/src/test/bench/shootout-nbody.rs
index 9cc506887e4..518d1c39d85 100644
--- a/src/test/bench/shootout-nbody.rs
+++ b/src/test/bench/shootout-nbody.rs
@@ -13,7 +13,7 @@ native mod libc {
     fn sqrt(n: float) -> float;
 }
 
-fn main(args: [str]) {
+fn main(args: [str]/~) {
     let args = if os::getenv("RUST_BENCH").is_some() {
         ["", "4000000"]
     } else if args.len() <= 1u {
@@ -22,7 +22,7 @@ fn main(args: [str]) {
         args
     };
     let n = int::from_str(args[1]).get();
-    let bodies: [Body::props] = NBodySystem::MakeNBodySystem();
+    let bodies: [Body::props]/~ = NBodySystem::MakeNBodySystem();
     io::println(#fmt("%f", NBodySystem::energy(bodies)));
     let mut i: int = 0;
     while i < n { NBodySystem::advance(bodies, 0.01); i += 1; }
@@ -34,11 +34,11 @@ fn main(args: [str]) {
 
 mod NBodySystem {
 
-    fn MakeNBodySystem() -> [Body::props] {
+    fn MakeNBodySystem() -> [Body::props]/~ {
         // these each return a Body::props
-        let bodies: [Body::props] =
+        let bodies: [Body::props]/~ =
             [Body::sun(), Body::jupiter(), Body::saturn(), Body::uranus(),
-             Body::neptune()];
+             Body::neptune()]/~;
 
         let mut px: float = 0.0;
         let mut py: float = 0.0;
@@ -59,7 +59,7 @@ mod NBodySystem {
         ret bodies;
     }
 
-    fn advance(bodies: [Body::props], dt: float) {
+    fn advance(bodies: [Body::props]/~, dt: float) {
 
         let mut i: int = 0;
         while i < 5 {
@@ -98,7 +98,7 @@ mod NBodySystem {
         b.z += dt * b.vz;
     }
 
-    fn energy(bodies: [Body::props]) -> float unsafe {
+    fn energy(bodies: [Body::props]/~) -> float unsafe {
         let mut dx: float;
         let mut dy: float;
         let mut dz: float;
diff --git a/src/test/bench/shootout-pfib.rs b/src/test/bench/shootout-pfib.rs
index bb922c93e61..b81d27df5b5 100644
--- a/src/test/bench/shootout-pfib.rs
+++ b/src/test/bench/shootout-pfib.rs
@@ -46,8 +46,8 @@ fn fib(n: int) -> int {
 
 type config = {stress: bool};
 
-fn parse_opts(argv: [str]) -> config {
-    let opts = [getopts::optflag("stress")];
+fn parse_opts(argv: [str]/~) -> config {
+    let opts = [getopts::optflag("stress")]/~;
 
     let opt_args = vec::slice(argv, 1u, vec::len(argv));
 
@@ -69,16 +69,16 @@ fn stress_task(&&id: int) {
 }
 
 fn stress(num_tasks: int) {
-    let mut results = [];
+    let mut results = []/~;
     for range(0, num_tasks) {|i|
         let builder = task::builder();
-        results += [task::future_result(builder)];
+        results += [task::future_result(builder)]/~;
         task::run(builder) {|| stress_task(i); }
     }
     for results.each {|r| future::get(r); }
 }
 
-fn main(args: [str]) {
+fn main(args: [str]/~) {
     let args = if os::getenv("RUST_BENCH").is_some() {
         ["", "20"]
     } else if args.len() <= 1u {
diff --git a/src/test/bench/shootout-spectralnorm.rs b/src/test/bench/shootout-spectralnorm.rs
index 22b2b332586..37e3380554b 100644
--- a/src/test/bench/shootout-spectralnorm.rs
+++ b/src/test/bench/shootout-spectralnorm.rs
@@ -6,7 +6,7 @@ fn eval_A(i: uint, j: uint) -> float {
     1.0/(((i+j)*(i+j+1u)/2u+i+1u) as float)
 }
 
-fn eval_A_times_u(u: [const float], Au: [mut float]) {
+fn eval_A_times_u(u: [const float]/~, Au: [mut float]/~) {
     let N = vec::len(u);
     let mut i = 0u;
     while i < N {
@@ -20,7 +20,7 @@ fn eval_A_times_u(u: [const float], Au: [mut float]) {
     }
 }
 
-fn eval_At_times_u(u: [const float], Au: [mut float]) {
+fn eval_At_times_u(u: [const float]/~, Au: [mut float]/~) {
     let N = vec::len(u);
     let mut i = 0u;
     while i < N {
@@ -34,13 +34,13 @@ fn eval_At_times_u(u: [const float], Au: [mut float]) {
     }
 }
 
-fn eval_AtA_times_u(u: [const float], AtAu: [mut float]) {
+fn eval_AtA_times_u(u: [const float]/~, AtAu: [mut float]/~) {
     let v = vec::to_mut(vec::from_elem(vec::len(u), 0.0));
     eval_A_times_u(u, v);
     eval_At_times_u(v, AtAu);
 }
 
-fn main(args: [str]) {
+fn main(args: [str]/~) {
     let args = if os::getenv("RUST_BENCH").is_some() {
         ["", "2000"]
     } else if args.len() <= 1u {
diff --git a/src/test/bench/shootout-threadring.rs b/src/test/bench/shootout-threadring.rs
index 5f9219d0804..9d8c5cc165b 100644
--- a/src/test/bench/shootout-threadring.rs
+++ b/src/test/bench/shootout-threadring.rs
@@ -37,7 +37,7 @@ fn roundtrip(id: int, p: comm::port<int>, ch: comm::chan<int>) {
     }
 }
 
-fn main(args: [str]) {
+fn main(args: [str]/~) {
     let args = if os::getenv("RUST_BENCH").is_some() {
         ["", "2000000"]
     } else if args.len() <= 1u {
diff --git a/src/test/bench/std-smallintmap.rs b/src/test/bench/std-smallintmap.rs
index 86b13dfc171..b043264ff93 100644
--- a/src/test/bench/std-smallintmap.rs
+++ b/src/test/bench/std-smallintmap.rs
@@ -17,7 +17,7 @@ fn check_sequential(min: uint, max: uint, map: smallintmap<uint>) {
     }
 }
 
-fn main(args: [str]) {
+fn main(args: [str]/~) {
     let args = if os::getenv("RUST_BENCH").is_some() {
         ["", "100000", "100"]
     } else if args.len() <= 1u {
diff --git a/src/test/bench/sudoku.rs b/src/test/bench/sudoku.rs
index 3973905c807..5b3b104a342 100644
--- a/src/test/bench/sudoku.rs
+++ b/src/test/bench/sudoku.rs
@@ -22,7 +22,7 @@ import io::{writer_util, reader_util};
 export grid_t, read_grid, solve_grid, write_grid;
 
 // internal type of sudoku grids
-type grid = [[mut u8]];
+type grid = [[mut u8]/~]/~;
 
 // exported type of sudoku grids
 enum grid_t { grid_ctor(grid), }
@@ -92,11 +92,11 @@ fn solve_grid(g: grid_t) {
         }
     }
 
-    let mut work: [(u8, u8)] = []; /* queue of uncolored fields */
+    let mut work: [(u8, u8)]/~ = []/~; /* queue of uncolored fields */
     for u8::range(0u8, 9u8) { |row|
         for u8::range(0u8, 9u8) { |col|
             let color = (*g)[row][col];
-            if color == 0u8 { work += [(row, col)]; }
+            if color == 0u8 { work += [(row, col)]/~; }
         }
     }
 
@@ -126,7 +126,7 @@ fn write_grid(f: io::writer, g: grid_t) {
      }
 }
 
-fn main(args: [str]) {
+fn main(args: [str]/~) {
     let grid = if vec::len(args) == 1u {
         // FIXME create sudoku inline since nested vec consts dont work yet
         // (#571)
diff --git a/src/test/bench/task-perf-alloc-unwind.rs b/src/test/bench/task-perf-alloc-unwind.rs
index aee9b148cca..f10e198e29f 100644
--- a/src/test/bench/task-perf-alloc-unwind.rs
+++ b/src/test/bench/task-perf-alloc-unwind.rs
@@ -36,7 +36,7 @@ enum st {
         fn_box: fn@() -> @nillist,
         fn_unique: fn~() -> ~nillist,
         tuple: (@nillist, ~nillist),
-        vec: [@nillist],
+        vec: [@nillist]/~,
         res: r
     })
 }
@@ -62,7 +62,7 @@ fn recurse_or_fail(depth: int, st: option<st>) {
                 fn_box: fn@() -> @nillist { @nil::<()> },
                 fn_unique: fn~() -> ~nillist { ~nil::<()> },
                 tuple: (@nil, ~nil),
-                vec: [@nil],
+                vec: [@nil]/~,
                 res: r(@nil)
             })
           }
@@ -77,7 +77,7 @@ fn recurse_or_fail(depth: int, st: option<st>) {
                 fn_unique: fn~() -> ~nillist { ~cons((), @*fn_unique()) },
                 tuple: (@cons((), first(st.tuple)),
                         ~cons((), @*second(st.tuple))),
-                vec: st.vec + [@cons((), st.vec.last())],
+                vec: st.vec + [@cons((), st.vec.last())]/~,
                 res: r(@cons((), st.res._l))
             })
           }
diff --git a/src/test/bench/task-perf-one-million.rs b/src/test/bench/task-perf-one-million.rs
index 5faf7f85857..14896a3e73e 100644
--- a/src/test/bench/task-perf-one-million.rs
+++ b/src/test/bench/task-perf-one-million.rs
@@ -9,7 +9,7 @@ enum msg {
 fn calc(children: uint, parent_ch: comm::chan<msg>) {
     let port = comm::port();
     let chan = comm::chan(port);
-    let mut child_chs = [];
+    let mut child_chs = []/~;
     let mut sum = 0;
 
     iter::repeat (children) {||
@@ -45,7 +45,7 @@ fn calc(children: uint, parent_ch: comm::chan<msg>) {
     comm::send(parent_ch, done(sum + 1));
 }
 
-fn main(args: [str]) {
+fn main(args: [str]/~) {
     let args = if os::getenv("RUST_BENCH").is_some() {
         ["", "100000"]
     } else if args.len() <= 1u {
@@ -69,4 +69,4 @@ fn main(args: [str]) {
       done(sum) { sum }
     };
     #error("How many tasks? %d tasks.", sum);
-}
\ No newline at end of file
+}
diff --git a/src/test/bench/task-perf-spawnalot.rs b/src/test/bench/task-perf-spawnalot.rs
index c3dd93ce117..686a2175061 100644
--- a/src/test/bench/task-perf-spawnalot.rs
+++ b/src/test/bench/task-perf-spawnalot.rs
@@ -8,7 +8,7 @@ fn f(&&n: uint) {
 
 fn g() { }
 
-fn main(args: [str]) {
+fn main(args: [str]/~) {
     let args = if os::getenv("RUST_BENCH").is_some() {
         ["", "400"]
     } else if args.len() <= 1u {
diff --git a/src/test/bench/task-perf-word-count-generic.rs b/src/test/bench/task-perf-word-count-generic.rs
index c4e51902628..e4528333373 100644
--- a/src/test/bench/task-perf-word-count-generic.rs
+++ b/src/test/bench/task-perf-word-count-generic.rs
@@ -92,12 +92,12 @@ mod map_reduce {
 
     fn start_mappers<K1: copy send, K2: copy send, V: copy send>(
         map: mapper<K1, K2, V>,
-        ctrl: chan<ctrl_proto<K2, V>>, inputs: [K1])
-        -> [joinable_task]
+        ctrl: chan<ctrl_proto<K2, V>>, inputs: [K1]/~)
+        -> [joinable_task]/~
     {
-        let mut tasks = [];
+        let mut tasks = []/~;
         for inputs.each {|i|
-            tasks += [spawn_joinable {|| map_task(map, ctrl, i)}];
+            tasks += [spawn_joinable {|| map_task(map, ctrl, i)}]/~;
         }
         ret tasks;
     }
@@ -176,7 +176,7 @@ mod map_reduce {
     fn map_reduce<K1: copy send, K2: copy send, V: copy send>(
         map: mapper<K1, K2, V>,
         reduce: reducer<K2, V>,
-        inputs: [K1])
+        inputs: [K1]/~)
     {
         let ctrl = port();
 
@@ -209,7 +209,7 @@ mod map_reduce {
                     let r = reduce, kk = k;
                     tasks += [
                         spawn_joinable {|| reduce_task(r, kk, ch) }
-                    ];
+                    ]/~;
                     c = recv(p);
                     treemap::insert(reducers, k, c);
                   }
@@ -229,7 +229,7 @@ mod map_reduce {
     }
 }
 
-fn main(argv: [str]) {
+fn main(argv: [str]/~) {
     if vec::len(argv) < 2u {
         let out = io::stdout();
 
diff --git a/src/test/bench/task-perf-word-count.rs b/src/test/bench/task-perf-word-count.rs
index 12fd0943b4c..a1493badbf3 100644
--- a/src/test/bench/task-perf-word-count.rs
+++ b/src/test/bench/task-perf-word-count.rs
@@ -58,12 +58,12 @@ mod map_reduce {
 
     enum reduce_proto { emit_val(int), done, ref, release, }
 
-    fn start_mappers(ctrl: chan<ctrl_proto>, -inputs: [str]) ->
-       [future::future<task::task_result>] {
-        let mut results = [];
+    fn start_mappers(ctrl: chan<ctrl_proto>, -inputs: [str]/~) ->
+       [future::future<task::task_result>]/~ {
+        let mut results = []/~;
         for inputs.each {|i|
             let builder = task::builder();
-            results += [task::future_result(builder)];
+            results += [task::future_result(builder)]/~;
             task::run(builder) {|| map_task(ctrl, i)}
         }
         ret results;
@@ -128,7 +128,7 @@ mod map_reduce {
         reduce(key, {||get(p, state)});
     }
 
-    fn map_reduce(-inputs: [str]) {
+    fn map_reduce(-inputs: [str]/~) {
         let ctrl = port::<ctrl_proto>();
 
         // This task becomes the master control task. It task::_spawns
@@ -161,7 +161,7 @@ mod map_reduce {
                     let p = port();
                     let ch = chan(p);
                     let builder = task::builder();
-                    results += [task::future_result(builder)];
+                    results += [task::future_result(builder)]/~;
                     task::run(builder) {||reduce_task(k, ch)}
                     c = recv(p);
                     reducers.insert(k, c);
@@ -178,9 +178,9 @@ mod map_reduce {
     }
 }
 
-fn main(argv: [str]) {
+fn main(argv: [str]/~) {
     let inputs = if vec::len(argv) < 2u {
-        [input1(), input2(), input3()]
+        [input1(), input2(), input3()]/~
     } else {
         vec::map(vec::slice(argv, 1u, vec::len(argv)),
                  {|f| result::get(io::read_whole_file_str(f)) })
diff --git a/src/test/compile-fail/ambig_impl_unify.rs b/src/test/compile-fail/ambig_impl_unify.rs
index 2f020742d54..038ade94bd4 100644
--- a/src/test/compile-fail/ambig_impl_unify.rs
+++ b/src/test/compile-fail/ambig_impl_unify.rs
@@ -1,12 +1,12 @@
-impl methods for [uint] {
+impl methods for [uint]/~ {
     fn foo() -> int {1} //! NOTE candidate #1 is `methods::foo`
 }
 
-impl methods for [int] {
+impl methods for [int]/~ {
     fn foo() -> int {2} //! NOTE candidate #2 is `methods::foo`
 }
 
 fn main() {
-    let x = [];
+    let x = []/~;
     x.foo(); //! ERROR multiple applicable methods in scope
 }
\ No newline at end of file
diff --git a/src/test/compile-fail/assign-super.rs b/src/test/compile-fail/assign-super.rs
index b50f2d95f56..70532cef3ae 100644
--- a/src/test/compile-fail/assign-super.rs
+++ b/src/test/compile-fail/assign-super.rs
@@ -1,5 +1,5 @@
 fn main() {
-    let mut x: [mut int] = [mut 3];
-    let y: [int] = [3];
+    let mut x: [mut int]/~ = [mut 3]/~;
+    let y: [int]/~ = [3]/~;
     x = y; //! ERROR values differ in mutability
 }
\ No newline at end of file
diff --git a/src/test/compile-fail/attr-bad-meta.rs b/src/test/compile-fail/attr-bad-meta.rs
index ec883d5ba20..f1f04c8ae98 100644
--- a/src/test/compile-fail/attr-bad-meta.rs
+++ b/src/test/compile-fail/attr-bad-meta.rs
@@ -2,4 +2,4 @@
 
 // asterisk is bogus
 #[attr*]
-mod m { }
\ No newline at end of file
+mod m { }
diff --git a/src/test/compile-fail/bad-expr-path.rs b/src/test/compile-fail/bad-expr-path.rs
index d70d935f602..34690d29a3c 100644
--- a/src/test/compile-fail/bad-expr-path.rs
+++ b/src/test/compile-fail/bad-expr-path.rs
@@ -2,4 +2,4 @@
 
 mod m1 { }
 
-fn main(args: [str]) { log(debug, m1::a); }
+fn main(args: [str]/~) { log(debug, m1::a); }
diff --git a/src/test/compile-fail/bad-expr-path2.rs b/src/test/compile-fail/bad-expr-path2.rs
index da6cfb652b5..14bcfdf8352 100644
--- a/src/test/compile-fail/bad-expr-path2.rs
+++ b/src/test/compile-fail/bad-expr-path2.rs
@@ -4,4 +4,4 @@ mod m1 {
     mod a { }
 }
 
-fn main(args: [str]) { log(debug, m1::a); }
+fn main(args: [str]/~) { log(debug, m1::a); }
diff --git a/src/test/compile-fail/bad-main.rs b/src/test/compile-fail/bad-main.rs
index 06bcbf5d9c2..775f1137e1b 100644
--- a/src/test/compile-fail/bad-main.rs
+++ b/src/test/compile-fail/bad-main.rs
@@ -1,3 +1,3 @@
-// error-pattern:expecting `native fn([str])
+// error-pattern:expecting `native fn([str]/~)
 
 fn main(x: int) { }
diff --git a/src/test/compile-fail/bad-module.rs b/src/test/compile-fail/bad-module.rs
index 662e3108bf0..d96ea37cc78 100644
--- a/src/test/compile-fail/bad-module.rs
+++ b/src/test/compile-fail/bad-module.rs
@@ -1,4 +1,4 @@
 // error-pattern: unresolved import
 import thing;
 
-fn main() { let foo = thing::len([]); }
+fn main() { let foo = thing::len([]/~); }
diff --git a/src/test/compile-fail/block-arg-as-stmt-with-value.rs b/src/test/compile-fail/block-arg-as-stmt-with-value.rs
index dfa39082a94..76519ff6dad 100644
--- a/src/test/compile-fail/block-arg-as-stmt-with-value.rs
+++ b/src/test/compile-fail/block-arg-as-stmt-with-value.rs
@@ -1,6 +1,6 @@
 
 fn compute1() -> float {
-    let v = [0f, 1f, 2f, 3f];
+    let v = [0f, 1f, 2f, 3f]/~;
 
     vec::foldl(0f, v) { |x, y| x + y } - 10f
     //!^ ERROR mismatched types: expected `()`
diff --git a/src/test/compile-fail/block-must-not-have-result-for.rs b/src/test/compile-fail/block-must-not-have-result-for.rs
index e4830ea519e..e069a356aae 100644
--- a/src/test/compile-fail/block-must-not-have-result-for.rs
+++ b/src/test/compile-fail/block-must-not-have-result-for.rs
@@ -1,7 +1,7 @@
 // error-pattern:mismatched types: expected `()` but found `bool`
 
 fn main() {
-    for vec::each([0]) {|_i|
+    for vec::each([0]/~) {|_i|
         true
     }
 }
\ No newline at end of file
diff --git a/src/test/compile-fail/borrowck-assign-comp-idx.rs b/src/test/compile-fail/borrowck-assign-comp-idx.rs
index a83f727369e..e2a7610ddc6 100644
--- a/src/test/compile-fail/borrowck-assign-comp-idx.rs
+++ b/src/test/compile-fail/borrowck-assign-comp-idx.rs
@@ -1,7 +1,7 @@
 type point = { x: int, y: int };
 
 fn a() {
-    let mut p = [mut 1];
+    let mut p = [mut 1]/~;
 
     // Create an immutable pointer into p's contents:
     let _q: &int = &p[0]; //! NOTE loan of mutable vec content granted here
@@ -15,7 +15,7 @@ fn b() {
     // here we alias the mutable vector into an imm slice and try to
     // modify the original:
 
-    let mut p = [mut 1];
+    let mut p = [mut 1]/~;
 
     borrow(p) {|| //! NOTE loan of mutable vec content granted here
         p[0] = 5; //! ERROR assigning to mutable vec content prohibited due to outstanding loan
@@ -25,7 +25,7 @@ fn b() {
 fn c() {
     // Legal because the scope of the borrow does not include the
     // modification:
-    let mut p = [mut 1];
+    let mut p = [mut 1]/~;
     borrow(p, {||});
     p[0] = 5;
 }
diff --git a/src/test/compile-fail/borrowck-binding-mutbl.rs b/src/test/compile-fail/borrowck-binding-mutbl.rs
index 183106aa28e..0da9a8a860f 100644
--- a/src/test/compile-fail/borrowck-binding-mutbl.rs
+++ b/src/test/compile-fail/borrowck-binding-mutbl.rs
@@ -1,8 +1,8 @@
-fn impure(_v: [int]) {
+fn impure(_v: [int]/~) {
 }
 
 fn main() {
-    let x = {mut f: [3]};
+    let x = {mut f: [3]/~};
 
     alt x {
       {f: v} => {
diff --git a/src/test/compile-fail/borrowck-loan-vec-content.rs b/src/test/compile-fail/borrowck-loan-vec-content.rs
index 80e23570a0d..2e54f948de2 100644
--- a/src/test/compile-fail/borrowck-loan-vec-content.rs
+++ b/src/test/compile-fail/borrowck-loan-vec-content.rs
@@ -7,13 +7,13 @@ fn takes_imm_elt(_v: &int, f: fn()) {
 }
 
 fn has_mut_vec_and_does_not_try_to_change_it() {
-    let v = [mut 1, 2, 3];
+    let v = [mut 1, 2, 3]/~;
     takes_imm_elt(&v[0]) {||
     }
 }
 
 fn has_mut_vec_but_tries_to_change_it() {
-    let v = [mut 1, 2, 3];
+    let v = [mut 1, 2, 3]/~;
     takes_imm_elt(&v[0]) {|| //! NOTE loan of mutable vec content granted here
         v[1] = 4; //! ERROR assigning to mutable vec content prohibited due to outstanding loan
     }
@@ -24,7 +24,7 @@ fn takes_const_elt(_v: &const int, f: fn()) {
 }
 
 fn has_mut_vec_and_tries_to_change_it() {
-    let v = [mut 1, 2, 3];
+    let v = [mut 1, 2, 3]/~;
     takes_const_elt(&const v[0]) {||
         v[1] = 4;
     }
diff --git a/src/test/compile-fail/borrowck-mut-vec-as-imm-slice-bad.rs b/src/test/compile-fail/borrowck-mut-vec-as-imm-slice-bad.rs
index c14c35189b5..8735e8e48ba 100644
--- a/src/test/compile-fail/borrowck-mut-vec-as-imm-slice-bad.rs
+++ b/src/test/compile-fail/borrowck-mut-vec-as-imm-slice-bad.rs
@@ -4,11 +4,11 @@ fn want_slice(v: [int]/&) -> int {
     ret sum;
 }
 
-fn has_mut_vec(+v: @[mut int]) -> int {
+fn has_mut_vec(+v: @[mut int]/~) -> int {
     want_slice(*v) //! ERROR illegal borrow unless pure: creating immutable alias to aliasable, mutable memory
         //!^ NOTE impure due to access to impure function
 }
 
 fn main() {
-    assert has_mut_vec(@[mut 1, 2, 3]) == 6;
+    assert has_mut_vec(@[mut 1, 2, 3]/~) == 6;
 }
\ No newline at end of file
diff --git a/src/test/compile-fail/empty-vec-trailing-comma.rs b/src/test/compile-fail/empty-vec-trailing-comma.rs
index e7bb6b704a1..2d01da0f485 100644
--- a/src/test/compile-fail/empty-vec-trailing-comma.rs
+++ b/src/test/compile-fail/empty-vec-trailing-comma.rs
@@ -1,3 +1,3 @@
 fn main() {
-    let v = [,]; //! ERROR unexpected token: ','
+    let v = [,]/~; //! ERROR unexpected token: ','
 }
diff --git a/src/test/compile-fail/fail-type-err.rs b/src/test/compile-fail/fail-type-err.rs
index e0d3680a381..2bf07c0bf91 100644
--- a/src/test/compile-fail/fail-type-err.rs
+++ b/src/test/compile-fail/fail-type-err.rs
@@ -1,2 +1,2 @@
 // error-pattern:expected `str` but found `[int]/~`
-fn main() { fail [0i]; }
+fn main() { fail [0i]/~; }
diff --git a/src/test/compile-fail/import.rs b/src/test/compile-fail/import.rs
index b789a25e7a7..992f4e66eb8 100644
--- a/src/test/compile-fail/import.rs
+++ b/src/test/compile-fail/import.rs
@@ -4,4 +4,4 @@ import zed::baz;
 mod zed {
     fn bar() { #debug("bar"); }
 }
-fn main(args: [str]) { bar(); }
+fn main(args: [str]/~) { bar(); }
diff --git a/src/test/compile-fail/import2.rs b/src/test/compile-fail/import2.rs
index ef81ebfcb4b..ea0c2dcd9b0 100644
--- a/src/test/compile-fail/import2.rs
+++ b/src/test/compile-fail/import2.rs
@@ -4,4 +4,4 @@ mod baz { }
 mod zed {
     fn bar() { #debug("bar3"); }
 }
-fn main(args: [str]) { bar(); }
+fn main(args: [str]/~) { bar(); }
diff --git a/src/test/compile-fail/import3.rs b/src/test/compile-fail/import3.rs
index 35a9c587373..9bb941c6daf 100644
--- a/src/test/compile-fail/import3.rs
+++ b/src/test/compile-fail/import3.rs
@@ -1,4 +1,4 @@
 // error-pattern: unresolved modulename
 import main::bar;
 
-fn main(args: [str]) { #debug("foo"); }
+fn main(args: [str]/~) { #debug("foo"); }
diff --git a/src/test/compile-fail/import4.rs b/src/test/compile-fail/import4.rs
index aed46fb1232..ab9a9e2e544 100644
--- a/src/test/compile-fail/import4.rs
+++ b/src/test/compile-fail/import4.rs
@@ -3,4 +3,4 @@
 mod a { import foo = b::foo; export foo; }
 mod b { import foo = a::foo; export foo; }
 
-fn main(args: [str]) { #debug("loop"); }
+fn main(args: [str]/~) { #debug("loop"); }
diff --git a/src/test/compile-fail/infinite-vec-type-recursion.rs b/src/test/compile-fail/infinite-vec-type-recursion.rs
index 709c5b628ee..35d01d0b624 100644
--- a/src/test/compile-fail/infinite-vec-type-recursion.rs
+++ b/src/test/compile-fail/infinite-vec-type-recursion.rs
@@ -1,6 +1,6 @@
 // -*- rust -*-
 // error-pattern: illegal recursive type
 
-type x = [x];
+type x = [x]/~;
 
-fn main() { let b: x = []; }
+fn main() { let b: x = []/~; }
diff --git a/src/test/compile-fail/issue-1655.rs b/src/test/compile-fail/issue-1655.rs
index 1e0887c1645..32785c23167 100644
--- a/src/test/compile-fail/issue-1655.rs
+++ b/src/test/compile-fail/issue-1655.rs
@@ -7,5 +7,5 @@ mod blade_runner {
                 was also a really good movie.
 
                 Alien 3 was crap though."
-    )]
+    )]/~
 }
diff --git a/src/test/compile-fail/issue-2149.rs b/src/test/compile-fail/issue-2149.rs
index 8bd0a2eb614..6363ca5fb6c 100644
--- a/src/test/compile-fail/issue-2149.rs
+++ b/src/test/compile-fail/issue-2149.rs
@@ -1,5 +1,5 @@
-impl monad<A> for [A] {
-    fn bind<B>(f: fn(A) -> [B]) {
+impl monad<A> for [A]/~ {
+    fn bind<B>(f: fn(A) -> [B]/~) {
         let mut r = fail;
         for self.each {|elt| r += f(elt); }
         //!^ WARNING unreachable expression
diff --git a/src/test/compile-fail/issue-2150.rs b/src/test/compile-fail/issue-2150.rs
index 6fc8bf78af6..a4877dad5b9 100644
--- a/src/test/compile-fail/issue-2150.rs
+++ b/src/test/compile-fail/issue-2150.rs
@@ -1,4 +1,4 @@
-fn fail_len(v: [const int]) -> uint {
+fn fail_len(v: [const int]/~) -> uint {
     let mut i = fail;
     for v.each {|x| i += 1u; }
     //!^ WARNING unreachable statement
diff --git a/src/test/compile-fail/issue-2509-a.rs b/src/test/compile-fail/issue-2509-a.rs
index 69970f8dc95..2113a1ec127 100644
--- a/src/test/compile-fail/issue-2509-a.rs
+++ b/src/test/compile-fail/issue-2509-a.rs
@@ -4,6 +4,6 @@ class c { //! ERROR a class must have at least one field
 
 fn main() {
     let a = c();
-    let x = [a];
+    let x = [a]/~;
     let _y = x[0];
 }
diff --git a/src/test/compile-fail/liveness-issue-2163.rs b/src/test/compile-fail/liveness-issue-2163.rs
index 6045a137a9e..e5a7cd0365d 100644
--- a/src/test/compile-fail/liveness-issue-2163.rs
+++ b/src/test/compile-fail/liveness-issue-2163.rs
@@ -1,5 +1,5 @@
-fn main(_s: [str]) {
-    let a: [int] = [];
+fn main(_s: [str]/~) {
+    let a: [int]/~ = []/~;
     vec::each(a) { |_x| //! ERROR not all control paths return a value
     }
 }
diff --git a/src/test/compile-fail/liveness-use-in-index-lvalue.rs b/src/test/compile-fail/liveness-use-in-index-lvalue.rs
index 50d0662f803..fd7ad945a57 100644
--- a/src/test/compile-fail/liveness-use-in-index-lvalue.rs
+++ b/src/test/compile-fail/liveness-use-in-index-lvalue.rs
@@ -1,5 +1,5 @@
 fn test() {
-    let w: [int];
+    let w: [int]/~;
     w[5] = 0; //! ERROR use of possibly uninitialized variable: `w`
 }
 
diff --git a/src/test/compile-fail/lub-in-args.rs b/src/test/compile-fail/lub-in-args.rs
index 8b59d12783b..1b10639445a 100644
--- a/src/test/compile-fail/lub-in-args.rs
+++ b/src/test/compile-fail/lub-in-args.rs
@@ -1,8 +1,8 @@
 fn two_args<T>(x: T, y: T) { }
 
 fn main() {
-    let x: [mut int] = [mut 3];
-    let y: [int] = [3];
+    let x: [mut int]/~ = [mut 3]/~;
+    let y: [int]/~ = [3]/~;
     let a: @mut int = @mut 3;
     let b: @int = @3;
 
diff --git a/src/test/compile-fail/mutable-huh-variance-box.rs b/src/test/compile-fail/mutable-huh-variance-box.rs
index db38c4ad289..7fbb8bca0f7 100644
--- a/src/test/compile-fail/mutable-huh-variance-box.rs
+++ b/src/test/compile-fail/mutable-huh-variance-box.rs
@@ -1,10 +1,10 @@
 // error-pattern: mismatched types
 
 fn main() {
-    let v = @mut [0];
+    let v = @mut [0]/~;
 
-    fn f(&&v: @mut [const int]) {
-        *v = [mut 3]
+    fn f(&&v: @mut [const int]/~) {
+        *v = [mut 3]/~
     }
 
     f(v);
diff --git a/src/test/compile-fail/mutable-huh-variance-deep.rs b/src/test/compile-fail/mutable-huh-variance-deep.rs
index 7de97e59173..1d7de6b078f 100644
--- a/src/test/compile-fail/mutable-huh-variance-deep.rs
+++ b/src/test/compile-fail/mutable-huh-variance-deep.rs
@@ -1,9 +1,9 @@
 // error-pattern: mismatched types
 
 fn main() {
-    let v = [mut @mut ~mut [0]];
+    let v = [mut @mut ~mut [0]/~]/~;
 
-    fn f(&&v: [mut @mut ~mut [const int]]) {
+    fn f(&&v: [mut @mut ~mut [const int]/~]/~) {
     }
 
     f(v);
diff --git a/src/test/compile-fail/mutable-huh-variance-ptr.rs b/src/test/compile-fail/mutable-huh-variance-ptr.rs
index 852b474eebb..2b807f6cc24 100644
--- a/src/test/compile-fail/mutable-huh-variance-ptr.rs
+++ b/src/test/compile-fail/mutable-huh-variance-ptr.rs
@@ -3,12 +3,12 @@
 use std;
 
 fn main() {
-    let a = [0];
-    let v: *mut [int] = ptr::mut_addr_of(a);
+    let a = [0]/~;
+    let v: *mut [int]/~ = ptr::mut_addr_of(a);
 
-    fn f(&&v: *mut [const int]) {
+    fn f(&&v: *mut [const int]/~) {
         unsafe {
-            *v = [mut 3]
+            *v = [mut 3]/~
         }
     }
 
diff --git a/src/test/compile-fail/mutable-huh-variance-rec.rs b/src/test/compile-fail/mutable-huh-variance-rec.rs
index 78143f7fbc6..326dcd2c1ae 100644
--- a/src/test/compile-fail/mutable-huh-variance-rec.rs
+++ b/src/test/compile-fail/mutable-huh-variance-rec.rs
@@ -1,10 +1,10 @@
 // error-pattern: mismatched types
 
 fn main() {
-    let v = {mut g: [0]};
+    let v = {mut g: [0]/~};
 
-    fn f(&&v: {mut g: [const int]}) {
-        v.g = [mut 3]
+    fn f(&&v: {mut g: [const int]/~}) {
+        v.g = [mut 3]/~
     }
 
     f(v);
diff --git a/src/test/compile-fail/mutable-huh-variance-unique.rs b/src/test/compile-fail/mutable-huh-variance-unique.rs
index cd8d2ca6f10..2cc0bcb6145 100644
--- a/src/test/compile-fail/mutable-huh-variance-unique.rs
+++ b/src/test/compile-fail/mutable-huh-variance-unique.rs
@@ -1,10 +1,10 @@
 // error-pattern: mismatched types
 
 fn main() {
-    let v = ~mut [0];
+    let v = ~mut [0]/~;
 
-    fn f(&&v: ~mut [const int]) {
-        *v = [mut 3]
+    fn f(&&v: ~mut [const int]/~) {
+        *v = [mut 3]/~
     }
 
     f(v);
diff --git a/src/test/compile-fail/mutable-huh-variance-vec1.rs b/src/test/compile-fail/mutable-huh-variance-vec1.rs
index 3519127ab1b..ba25fbbb9d7 100644
--- a/src/test/compile-fail/mutable-huh-variance-vec1.rs
+++ b/src/test/compile-fail/mutable-huh-variance-vec1.rs
@@ -1,10 +1,10 @@
 fn main() {
     // Note: explicit type annot is required here
     // because otherwise the inference gets smart
-    // and assigns a type of [mut [const int]].
-    let v: [mut [int]] = [mut [0]];
+    // and assigns a type of [mut [const int]/~]/~.
+    let v: [mut [int]/~]/~ = [mut [0]/~]/~;
 
-    fn f(&&v: [mut [const int]]) {
+    fn f(&&v: [mut [const int]/~]/~) {
         v[0] = [mut 3]
     }
 
diff --git a/src/test/compile-fail/mutable-huh-variance-vec2.rs b/src/test/compile-fail/mutable-huh-variance-vec2.rs
index 09c3565e8b2..cab07b804e6 100644
--- a/src/test/compile-fail/mutable-huh-variance-vec2.rs
+++ b/src/test/compile-fail/mutable-huh-variance-vec2.rs
@@ -1,10 +1,10 @@
 fn main() {
     // Note: explicit type annot is required here
     // because otherwise the inference gets smart
-    // and assigns a type of [mut [const int]].
-    let v: [mut [mut int]] = [mut [mut 0]];
+    // and assigns a type of [mut [const int]/~]/~.
+    let v: [mut [mut int]/~]/~ = [mut [mut 0]/~]/~;
 
-    fn f(&&v: [mut [const int]]) {
+    fn f(&&v: [mut [const int]/~]/~) {
         v[0] = [3]
     }
 
diff --git a/src/test/compile-fail/mutable-huh-variance-vec3.rs b/src/test/compile-fail/mutable-huh-variance-vec3.rs
index 97b6ccabdfd..afba07126cf 100644
--- a/src/test/compile-fail/mutable-huh-variance-vec3.rs
+++ b/src/test/compile-fail/mutable-huh-variance-vec3.rs
@@ -1,10 +1,10 @@
 fn main() {
     // Note: explicit type annot is required here
     // because otherwise the inference gets smart
-    // and assigns a type of [mut [const int]].
+    // and assigns a type of [mut [const int]/~]/~.
     let v: [mut[mut[int]]] = [mut [mut [0]]];
 
-    fn f(&&v: [mut [mut [const int]]]) {
+    fn f(&&v: [mut [mut [const int]/~]/~]/~) {
         v[0][1] = [mut 3]
     }
 
diff --git a/src/test/compile-fail/mutable-huh-variance-vec4.rs b/src/test/compile-fail/mutable-huh-variance-vec4.rs
index 74b6ad9ff62..a7394928076 100644
--- a/src/test/compile-fail/mutable-huh-variance-vec4.rs
+++ b/src/test/compile-fail/mutable-huh-variance-vec4.rs
@@ -3,26 +3,26 @@ fn main() {
     // Note: here we do not have any type annotations
     // but we do express conflicting requirements:
 
-    let v = [mut [0]];
-    let w = [mut [mut 0]];
-    let x = [mut [mut 0]];
+    let v = [mut [0]/~]/~;
+    let w = [mut [mut 0]/~]/~;
+    let x = [mut [mut 0]/~]/~;
 
-    fn f(&&v: [mut [int]]) {
+    fn f(&&v: [mut [int]/~]/~) {
         v[0] = [3]
     }
 
-    fn g(&&v: [const [const int]]) {
+    fn g(&&v: [const [const int]/~]/~) {
     }
 
-    fn h(&&v: [mut [mut int]]) {
+    fn h(&&v: [mut [mut int]/~]/~) {
         v[0] = [mut 3]
     }
 
-    fn i(&&v: [mut [const int]]) {
+    fn i(&&v: [mut [const int]/~]/~) {
         v[0] = [mut 3]
     }
 
-    fn j(&&v: [[const int]]) {
+    fn j(&&v: [[const int]/~]/~) {
     }
 
     f(v);
@@ -38,7 +38,7 @@ fn main() {
     j(w); //! ERROR (values differ in mutability)
 
     // Note that without adding f() or h() to the mix, it is valid for
-    // x to have the type [mut [const int]], and thus we can safely
+    // x to have the type [mut [const int]/~]/~, and thus we can safely
     // call g() and i() but not j():
     g(x);
     i(x);
diff --git a/src/test/compile-fail/mutable-huh-vec-assign.rs b/src/test/compile-fail/mutable-huh-vec-assign.rs
index 0f2845a8bd0..3a94c6d9b17 100644
--- a/src/test/compile-fail/mutable-huh-vec-assign.rs
+++ b/src/test/compile-fail/mutable-huh-vec-assign.rs
@@ -1,10 +1,10 @@
 fn main() {
-    fn f(&&v: [const int]) {
+    fn f(&&v: [const int]/~) {
         // This shouldn't be possible
         v[0] = 1 //! ERROR assigning to const vec content
     }
 
-    let v = [0];
+    let v = [0]/~;
 
     f(v);
 }
diff --git a/src/test/compile-fail/nested-ty-params.rs b/src/test/compile-fail/nested-ty-params.rs
index c8d08ad320d..12e2205c3b2 100644
--- a/src/test/compile-fail/nested-ty-params.rs
+++ b/src/test/compile-fail/nested-ty-params.rs
@@ -1,5 +1,5 @@
 // error-pattern:attempt to use a type argument out of scope
-fn hd<U>(v: [U]) -> U {
+fn hd<U>(v: [U]/~) -> U {
     fn hd1(w: [U]) -> U { ret w[0]; }
 
     ret hd1(v);
diff --git a/src/test/compile-fail/no-capture-arc.rs b/src/test/compile-fail/no-capture-arc.rs
index 6c8c80dab0a..ec489529739 100644
--- a/src/test/compile-fail/no-capture-arc.rs
+++ b/src/test/compile-fail/no-capture-arc.rs
@@ -3,7 +3,7 @@
 import comm::*;
 
 fn main() {
-    let v = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
+    let v = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]/~;
     let arc_v = arc::arc(v);
     
     task::spawn() {||
diff --git a/src/test/compile-fail/no-reuse-move-arc.rs b/src/test/compile-fail/no-reuse-move-arc.rs
index fa88111d274..2369edd43dc 100644
--- a/src/test/compile-fail/no-reuse-move-arc.rs
+++ b/src/test/compile-fail/no-reuse-move-arc.rs
@@ -1,7 +1,7 @@
 import comm::*;
 
 fn main() {
-    let v = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
+    let v = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]/~;
     let arc_v = arc::arc(v);
 
     task::spawn() {|move arc_v| //! NOTE move of variable occurred here
diff --git a/src/test/compile-fail/non-const.rs b/src/test/compile-fail/non-const.rs
index c438a5bafba..ab542f3bc1e 100644
--- a/src/test/compile-fail/non-const.rs
+++ b/src/test/compile-fail/non-const.rs
@@ -17,8 +17,8 @@ class r2 {
 fn main() {
     foo({f: 3});
     foo({mut f: 3}); //! ERROR missing `const`
-    foo([1]);
-    foo([mut 1]); //! ERROR missing `const`
+    foo([1]/~);
+    foo([mut 1]/~); //! ERROR missing `const`
     foo(~1);
     foo(~mut 1); //! ERROR missing `const`
     foo(@1);
diff --git a/src/test/compile-fail/non-copyable-void.rs b/src/test/compile-fail/non-copyable-void.rs
index 91a625b05d0..07b93989ba7 100644
--- a/src/test/compile-fail/non-copyable-void.rs
+++ b/src/test/compile-fail/non-copyable-void.rs
@@ -1,5 +1,5 @@
 fn main() {
-    let x : *[int] = ptr::addr_of([1,2,3]);
+    let x : *[int]/~ = ptr::addr_of([1,2,3]/~);
     let y : *libc::c_void = x as *libc::c_void;
     unsafe {
         let _z = *y;
diff --git a/src/test/compile-fail/nonsense-constraints.rs b/src/test/compile-fail/nonsense-constraints.rs
index b3ac40be24a..e05581aa10b 100644
--- a/src/test/compile-fail/nonsense-constraints.rs
+++ b/src/test/compile-fail/nonsense-constraints.rs
@@ -3,10 +3,10 @@
 use std;
 import uint;
 
-fn enum_chars(start: u8, end: u8) : uint::le(start, end) -> [char] {
+fn enum_chars(start: u8, end: u8) : uint::le(start, end) -> [char]/~ {
     let i = start;
-    let r = [];
-    while i <= end { r += [i as char]; i += 1u as u8; }
+    let r = []/~;
+    while i <= end { r += [i as char]/~; i += 1u as u8; }
     ret r;
 }
 
diff --git a/src/test/compile-fail/pattern-tyvar-2.rs b/src/test/compile-fail/pattern-tyvar-2.rs
index 6ebc4a27626..162240ed8aa 100644
--- a/src/test/compile-fail/pattern-tyvar-2.rs
+++ b/src/test/compile-fail/pattern-tyvar-2.rs
@@ -6,7 +6,7 @@ import option::some;
 
 // error-pattern: mismatched types
 
-enum bar { t1((), option<[int]>), t2, }
+enum bar { t1((), option<[int]/~>), t2, }
 
 fn foo(t: bar) -> int { alt t { t1(_, some(x)) { ret x * 3; } _ { fail; } } }
 
diff --git a/src/test/compile-fail/pattern-tyvar.rs b/src/test/compile-fail/pattern-tyvar.rs
index 607e32685f3..60c555413ae 100644
--- a/src/test/compile-fail/pattern-tyvar.rs
+++ b/src/test/compile-fail/pattern-tyvar.rs
@@ -5,7 +5,7 @@ import option::some;
 
 // error-pattern: mismatched types
 
-enum bar { t1((), option<[int]>), t2, }
+enum bar { t1((), option<[int]/~>), t2, }
 
 fn foo(t: bar) {
     alt t {
diff --git a/src/test/compile-fail/qquote-1.rs b/src/test/compile-fail/qquote-1.rs
index 0750a7c9dfd..c88bf563e71 100644
--- a/src/test/compile-fail/qquote-1.rs
+++ b/src/test/compile-fail/qquote-1.rs
@@ -29,7 +29,7 @@ impl of fake_ext_ctxt for fake_session {
 }
 
 fn mk_ctxt() -> fake_ext_ctxt {
-    let opts : fake_options = {cfg: []};
+    let opts : fake_options = {cfg: []/~};
     {opts: @opts, parse_sess: new_parse_sess()} as fake_ext_ctxt
 }
 
diff --git a/src/test/compile-fail/qquote-2.rs b/src/test/compile-fail/qquote-2.rs
index a4871e5d497..af5cf1c3fab 100644
--- a/src/test/compile-fail/qquote-2.rs
+++ b/src/test/compile-fail/qquote-2.rs
@@ -29,7 +29,7 @@ impl of fake_ext_ctxt for fake_session {
 }
 
 fn mk_ctxt() -> fake_ext_ctxt {
-    let opts : fake_options = {cfg: []};
+    let opts : fake_options = {cfg: []/~};
     {opts: @opts, parse_sess: new_parse_sess()} as fake_ext_ctxt
 }
 
diff --git a/src/test/compile-fail/regions-escape-loop-via-vec.rs b/src/test/compile-fail/regions-escape-loop-via-vec.rs
index b44c38e68f8..309cb030233 100644
--- a/src/test/compile-fail/regions-escape-loop-via-vec.rs
+++ b/src/test/compile-fail/regions-escape-loop-via-vec.rs
@@ -2,10 +2,10 @@
 // This generates a ton of error msgs at the moment.
 fn broken() -> int {
     let mut x = 3;
-    let mut y = [&mut x]; //! ERROR reference is not valid
+    let mut y = [&mut x]/~; //! ERROR reference is not valid
     while x < 10 {
         let mut z = x;
-        y += [&mut z];
+        y += [&mut z]/~;
         x += 1;
     }
     vec::foldl(0, y) {|v, p| v + *p }
diff --git a/src/test/compile-fail/seq-args.rs b/src/test/compile-fail/seq-args.rs
index 4273675e4da..0587e21e5aa 100644
--- a/src/test/compile-fail/seq-args.rs
+++ b/src/test/compile-fail/seq-args.rs
@@ -2,7 +2,7 @@ use std;
 fn main() {
 iface seq { }
 
-impl <T> of seq<T> for [T] { //! ERROR wrong number of type arguments
+impl <T> of seq<T> for [T]/~ { //! ERROR wrong number of type arguments
     /* ... */
 }
 impl of seq<bool> for u32 {
diff --git a/src/test/compile-fail/tag-that-dare-not-speak-its-name.rs b/src/test/compile-fail/tag-that-dare-not-speak-its-name.rs
index 01d428c7917..a7b0bb7175d 100644
--- a/src/test/compile-fail/tag-that-dare-not-speak-its-name.rs
+++ b/src/test/compile-fail/tag-that-dare-not-speak-its-name.rs
@@ -5,7 +5,7 @@
 
 use core;
 
-fn last<T: copy>(v: [const T]) -> core::option<T> {
+fn last<T: copy>(v: [const T]/~) -> core::option<T> {
     fail;
 }
 
diff --git a/src/test/compile-fail/tstate-unsat-in-called-fn-expr.rs b/src/test/compile-fail/tstate-unsat-in-called-fn-expr.rs
index 010ac92f7b0..24cfa527e95 100644
--- a/src/test/compile-fail/tstate-unsat-in-called-fn-expr.rs
+++ b/src/test/compile-fail/tstate-unsat-in-called-fn-expr.rs
@@ -2,7 +2,7 @@ fn foo(v: [int]) : vec::is_empty(v) { #debug("%d", v[0]); }
 
 fn main() {
     let f = fn@() {
-        let v = [1];
+        let v = [1]/~;
         foo(v); //! ERROR unsatisfied precondition constraint
     }();
     log(error, f);
diff --git a/src/test/compile-fail/tstate-unsat-in-fn-expr.rs b/src/test/compile-fail/tstate-unsat-in-fn-expr.rs
index b9cd2582537..753655d354c 100644
--- a/src/test/compile-fail/tstate-unsat-in-fn-expr.rs
+++ b/src/test/compile-fail/tstate-unsat-in-fn-expr.rs
@@ -2,7 +2,7 @@ fn foo(v: [int]) : vec::is_empty(v) { #debug("%d", v[0]); }
 
 fn main() {
     let f = fn@() {
-        let v = [1];
+        let v = [1]/~;
         foo(v); //! ERROR unsatisfied precondition constraint
     };
     log(error, f());
diff --git a/src/test/compile-fail/unique-vec-res.rs b/src/test/compile-fail/unique-vec-res.rs
index 92dcd538aa7..5159d0ddbfe 100644
--- a/src/test/compile-fail/unique-vec-res.rs
+++ b/src/test/compile-fail/unique-vec-res.rs
@@ -6,15 +6,15 @@ class r {
   drop { *(self.i) = *(self.i) + 1; }
 }
 
-fn f<T>(+i: [T], +j: [T]) {
+fn f<T>(+i: [T]/~, +j: [T]/~) {
     let k = i + j;
 }
 
 fn main() {
     let i1 = @mut 0;
     let i2 = @mut 1;
-    let r1 <- [~r(i1)];
-    let r2 <- [~r(i2)];
+    let r1 <- [~r(i1)]/~;
+    let r2 <- [~r(i2)]/~;
     f(r1, r2);
     log(debug, (r2, *i1));
     log(debug, (r1, *i2));
diff --git a/src/test/compile-fail/vec-add.rs b/src/test/compile-fail/vec-add.rs
index 6642112d998..583ffb9c197 100644
--- a/src/test/compile-fail/vec-add.rs
+++ b/src/test/compile-fail/vec-add.rs
@@ -4,19 +4,19 @@
 // the right hand side in all cases. We are getting compiler errors
 // about this now, so I'm xfailing the test for now. -eholk
 
-fn add(i: [int], m: [mut int], c: [const int]) {
+fn add(i: [int]/~, m: [mut int]/~, c: [const int]/~) {
 
     // Check that:
     //  (1) vectors of any two mutabilities can be added
     //  (2) result has mutability of lhs
 
-   add(i + [3],
-       m + [3],
-       [3]);
+   add(i + [3]/~,
+       m + [3]/~,
+       [3]/~);
 
-   add(i + [mut 3],
-       m + [mut 3],
-       [mut 3]);
+   add(i + [mut 3]/~,
+       m + [mut 3]/~,
+       [mut 3]/~);
 
    add(i + i,
        m + i,
@@ -30,33 +30,33 @@ fn add(i: [int], m: [mut int], c: [const int]) {
        m + c,
        c);
 
-   add(m + [3], //! ERROR mismatched types
-       m + [3],
-       m + [3]);
+   add(m + [3]/~, //! ERROR mismatched types
+       m + [3]/~,
+       m + [3]/~);
 
-   add(i + [3],
-       i + [3], //! ERROR mismatched types
-       i + [3]);
+   add(i + [3]/~,
+       i + [3]/~, //! ERROR mismatched types
+       i + [3]/~);
 
-   add(c + [3], //! ERROR mismatched types
+   add(c + [3]/~, //! ERROR mismatched types
                 //!^ ERROR binary operation + cannot be applied
-       c + [3], //! ERROR binary operation + cannot be applied
+       c + [3]/~, //! ERROR binary operation + cannot be applied
                 //!^ mismatched types
-       [3]);
+       [3]/~);
 
-   add(m + [mut 3], //! ERROR mismatched types
-       m + [mut 3],
-       m + [mut 3]);
+   add(m + [mut 3]/~, //! ERROR mismatched types
+       m + [mut 3]/~,
+       m + [mut 3]/~);
 
-   add(i + [mut 3],
-       i + [mut 3], //! ERROR mismatched types
-       i + [mut 3]);
+   add(i + [mut 3]/~,
+       i + [mut 3]/~, //! ERROR mismatched types
+       i + [mut 3]/~);
 
-   add(c + [mut 3], //! ERROR binary operation + cannot be applied
+   add(c + [mut 3]/~, //! ERROR binary operation + cannot be applied
                     //!^ mismatched types
-       c + [mut 3], //! ERROR binary operation + cannot be applied
+       c + [mut 3]/~, //! ERROR binary operation + cannot be applied
                     //!^ mismatched types
-       [mut 3]);
+       [mut 3]/~);
 
    add(m + i, //! ERROR mismatched types
        m + i,
diff --git a/src/test/compile-fail/vec-concat-bug.rs b/src/test/compile-fail/vec-concat-bug.rs
index 510bef1cae0..40e6e2b0358 100644
--- a/src/test/compile-fail/vec-concat-bug.rs
+++ b/src/test/compile-fail/vec-concat-bug.rs
@@ -1,8 +1,8 @@
-fn concat<T: copy>(v: [const [const T]]) -> [T] {
-    let mut r = [];
+fn concat<T: copy>(v: [const [const T]/~]/~) -> [T]/~ {
+    let mut r = []/~;
 
     // Earlier versions of our type checker accepted this:
-    vec::iter(v) {|&&inner: [T]|
+    vec::iter(v) {|&&inner: [T]/~|
         //!^ ERROR values differ in mutability
         r += inner;
     }
diff --git a/src/test/compile-fail/vec-field.rs b/src/test/compile-fail/vec-field.rs
index 7eb7e118b39..936b14b6c7d 100644
--- a/src/test/compile-fail/vec-field.rs
+++ b/src/test/compile-fail/vec-field.rs
@@ -2,7 +2,7 @@
 // issue #367
 
 fn f() {
-    let v = [1i];
+    let v = [1i]/~;
     log(debug, v.some_field_name); //type error
 }
 
diff --git a/src/test/compile-fail/vec-res-add.rs b/src/test/compile-fail/vec-res-add.rs
index f6388b19798..4ce5ad3cbf0 100644
--- a/src/test/compile-fail/vec-res-add.rs
+++ b/src/test/compile-fail/vec-res-add.rs
@@ -8,8 +8,8 @@ class r {
 
 fn main() {
     // This can't make sense as it would copy the classes
-    let i <- [r(0)];
-    let j <- [r(1)];
+    let i <- [r(0)]/~;
+    let j <- [r(1)]/~;
     let k = i + j;
     log(debug, j);
 }
diff --git a/src/test/compile-fail/vector-no-ann.rs b/src/test/compile-fail/vector-no-ann.rs
index 8d4478d949f..c68995a6854 100644
--- a/src/test/compile-fail/vector-no-ann.rs
+++ b/src/test/compile-fail/vector-no-ann.rs
@@ -1,3 +1,3 @@
 fn main() {
-    let _foo = []; //! ERROR unconstrained type
+    let _foo = []/~; //! ERROR unconstrained type
 }
diff --git a/src/test/pretty/blank-lines.rs b/src/test/pretty/blank-lines.rs
index 13cf815e80d..837b85280ec 100644
--- a/src/test/pretty/blank-lines.rs
+++ b/src/test/pretty/blank-lines.rs
@@ -1,5 +1,5 @@
 // pp-exact
-fn f() -> [int] {
+fn f() -> [int]/~ {
     let picard = 0;
 
     let data = 1;
@@ -7,7 +7,7 @@ fn f() -> [int] {
     let worf = 2;
 
 
-    let enterprise = [picard, data, worf];
+    let enterprise = [picard, data, worf]/~;
 
 
 
diff --git a/src/test/pretty/block-disambig.rs b/src/test/pretty/block-disambig.rs
index 4157515b41c..a6e0cc7f610 100644
--- a/src/test/pretty/block-disambig.rs
+++ b/src/test/pretty/block-disambig.rs
@@ -39,9 +39,9 @@ fn test8() -> int {
 fn test9() { let regs = @mut 0; alt check true { true { } } *regs += 1; }
 
 fn test10() -> int {
-    let regs = @mut [0];
+    let regs = @mut [0]/~;
     alt check true { true { } }
     (*regs)[0]
 }
 
-fn test11() -> [int] { if true { } [1, 2] }
+fn test11() -> [int]/~ { if true { } [1, 2]/~ }
diff --git a/src/test/pretty/vec-comments.pp b/src/test/pretty/vec-comments.pp
index 2cd5fffdf75..5492484d0c8 100644
--- a/src/test/pretty/vec-comments.pp
+++ b/src/test/pretty/vec-comments.pp
@@ -9,11 +9,11 @@ fn main() {
          // Comment
          1,
          // Comment
-         2];
+         2]/~;
     let v2 =
         [0, // Comment
          1, // Comment
-         2]; // Comment
+         2]/~; // Comment
     let v3 =
         [
          /* Comment */
@@ -21,9 +21,9 @@ fn main() {
          /* Comment */
          1,
          /* Comment */
-         2];
+         2]/~;
     let v4 =
         [0, /* Comment */
          1, /* Comment */
-         2]; /* Comment */
+         2]/~; /* Comment */
 }
diff --git a/src/test/pretty/vec-comments.rs b/src/test/pretty/vec-comments.rs
index 2cd5fffdf75..5492484d0c8 100644
--- a/src/test/pretty/vec-comments.rs
+++ b/src/test/pretty/vec-comments.rs
@@ -9,11 +9,11 @@ fn main() {
          // Comment
          1,
          // Comment
-         2];
+         2]/~;
     let v2 =
         [0, // Comment
          1, // Comment
-         2]; // Comment
+         2]/~; // Comment
     let v3 =
         [
          /* Comment */
@@ -21,9 +21,9 @@ fn main() {
          /* Comment */
          1,
          /* Comment */
-         2];
+         2]/~;
     let v4 =
         [0, /* Comment */
          1, /* Comment */
-         2]; /* Comment */
+         2]/~; /* Comment */
 }
diff --git a/src/test/pretty/vec-type.pp b/src/test/pretty/vec-type.pp
index 60265eebcf7..af111a64c3f 100644
--- a/src/test/pretty/vec-type.pp
+++ b/src/test/pretty/vec-type.pp
@@ -1,5 +1,5 @@
 // pp-exact:vec-type.pp
 
-fn f1(x: [int]) { }
+fn f1(x: [int]/~) { }
 
-fn g1() { f1([1, 2, 3]); }
+fn g1() { f1([1, 2, 3]/~); }
diff --git a/src/test/pretty/vec-type.rs b/src/test/pretty/vec-type.rs
index 60265eebcf7..af111a64c3f 100644
--- a/src/test/pretty/vec-type.rs
+++ b/src/test/pretty/vec-type.rs
@@ -1,5 +1,5 @@
 // pp-exact:vec-type.pp
 
-fn f1(x: [int]) { }
+fn f1(x: [int]/~) { }
 
-fn g1() { f1([1, 2, 3]); }
+fn g1() { f1([1, 2, 3]/~); }
diff --git a/src/test/run-fail/bug-2470-bounds-check-overflow-2.rs b/src/test/run-fail/bug-2470-bounds-check-overflow-2.rs
index 215fd53ce5e..dcea4e893f6 100644
--- a/src/test/run-fail/bug-2470-bounds-check-overflow-2.rs
+++ b/src/test/run-fail/bug-2470-bounds-check-overflow-2.rs
@@ -2,7 +2,7 @@
 // error-pattern:bounds check
 
 fn main() {
-    let x = [1u,2u,3u];
+    let x = [1u,2u,3u]/~;
 
     // This should cause a bounds-check failure, but may not if we do our
     // bounds checking by comparing a scaled index value to the vector's
diff --git a/src/test/run-fail/bug-2470-bounds-check-overflow-3.rs b/src/test/run-fail/bug-2470-bounds-check-overflow-3.rs
index 26737f8a9fa..a547bc1a3f3 100644
--- a/src/test/run-fail/bug-2470-bounds-check-overflow-3.rs
+++ b/src/test/run-fail/bug-2470-bounds-check-overflow-3.rs
@@ -3,7 +3,7 @@
 
 #[cfg(target_arch="x86")]
 fn main() {
-    let x = [1u,2u,3u];
+    let x = [1u,2u,3u]/~;
 
     // This should cause a bounds-check failure, but may not if we do our
     // bounds checking by truncating the index value to the size of the
@@ -23,6 +23,6 @@ fn main() {
 #[cfg(target_arch="x86_64")]
 fn main() {
     // This version just fails anyways, for symmetry on 64-bit hosts.
-    let x = [1u,2u,3u];
+    let x = [1u,2u,3u]/~;
     #error("ov3 0x%x",  x[200]);
 }
diff --git a/src/test/run-fail/bug-2470-bounds-check-overflow.rs b/src/test/run-fail/bug-2470-bounds-check-overflow.rs
index 84bd9ab5c76..710cecd99e2 100644
--- a/src/test/run-fail/bug-2470-bounds-check-overflow.rs
+++ b/src/test/run-fail/bug-2470-bounds-check-overflow.rs
@@ -8,7 +8,7 @@ fn main() {
     // address of the 0th cell in the array (even though the index is
     // huge).
 
-    let x = [1u,2u,3u];
+    let x = [1u,2u,3u]/~;
     vec::unpack_slice(x) {|p, _len|
         let base = p as uint;                     // base = 0x1230 say
         let idx = base / sys::size_of::<uint>();  // idx  = 0x0246 say
diff --git a/src/test/run-fail/unwind-box-vec.rs b/src/test/run-fail/unwind-box-vec.rs
index 7aa411ab017..616a9e75cef 100644
--- a/src/test/run-fail/unwind-box-vec.rs
+++ b/src/test/run-fail/unwind-box-vec.rs
@@ -5,7 +5,7 @@ fn failfn() {
 }
 
 fn main() {
-    let x = @[0, 1, 2, 3, 4, 5];
+    let x = @[0, 1, 2, 3, 4, 5]/~;
     failfn();
     log(error, x);
 }
\ No newline at end of file
diff --git a/src/test/run-fail/unwind-interleaved.rs b/src/test/run-fail/unwind-interleaved.rs
index 0aacf579a6d..d914ff82219 100644
--- a/src/test/run-fail/unwind-interleaved.rs
+++ b/src/test/run-fail/unwind-interleaved.rs
@@ -5,8 +5,8 @@ fn a() { }
 fn b() { fail; }
 
 fn main() {
-    let x = [0];
+    let x = [0]/~;
     a();
-    let y = [0];
+    let y = [0]/~;
     b();
 }
\ No newline at end of file
diff --git a/src/test/run-fail/unwind-misc-1.rs b/src/test/run-fail/unwind-misc-1.rs
index ad6f9feafc3..442efe3be25 100644
--- a/src/test/run-fail/unwind-misc-1.rs
+++ b/src/test/run-fail/unwind-misc-1.rs
@@ -7,16 +7,16 @@ import uint;
 
 fn main() {
     let count = @mut 0u;
-    fn hash(&&s: [@str]) -> uint {
+    fn hash(&&s: [@str]/~) -> uint {
         if (vec::len(s) > 0u && str::eq(*s[0], "boom")) { fail; }
         ret 10u;
     }
-    fn eq(&&s: [@str], &&t: [@str]) -> bool {
+    fn eq(&&s: [@str]/~, &&t: [@str]/~) -> bool {
         ret s == t;
     }
 
     let map = map::hashmap(hash, eq);
-    let mut arr = [];
+    let mut arr = []/~;
     for uint::range(0u, 10u) {|i|
         arr += [@"key stuff"];
         map.insert(arr, arr + [@"value stuff"]);
diff --git a/src/test/run-fail/unwind-partial-box.rs b/src/test/run-fail/unwind-partial-box.rs
index a08bb27811b..7ff5c6ec7f3 100644
--- a/src/test/run-fail/unwind-partial-box.rs
+++ b/src/test/run-fail/unwind-partial-box.rs
@@ -1,6 +1,6 @@
 // error-pattern:fail
 
-fn f() -> [int] { fail; }
+fn f() -> [int]/~ { fail; }
 
 // Voodoo. In unwind-alt we had to do this to trigger the bug. Might
 // have been to do with memory allocation patterns.
diff --git a/src/test/run-fail/unwind-partial-unique.rs b/src/test/run-fail/unwind-partial-unique.rs
index b7f5d1054ec..5f998e802dc 100644
--- a/src/test/run-fail/unwind-partial-unique.rs
+++ b/src/test/run-fail/unwind-partial-unique.rs
@@ -1,6 +1,6 @@
 // error-pattern:fail
 
-fn f() -> [int] { fail; }
+fn f() -> [int]/~ { fail; }
 
 // Voodoo. In unwind-alt we had to do this to trigger the bug. Might
 // have been to do with memory allocation patterns.
diff --git a/src/test/run-fail/unwind-partial-vec.rs b/src/test/run-fail/unwind-partial-vec.rs
index 0e4b27cd836..feb7449c532 100644
--- a/src/test/run-fail/unwind-partial-vec.rs
+++ b/src/test/run-fail/unwind-partial-vec.rs
@@ -1,6 +1,6 @@
 // error-pattern:fail
 
-fn f() -> [int] { fail; }
+fn f() -> [int]/~ { fail; }
 
 // Voodoo. In unwind-alt we had to do this to trigger the bug. Might
 // have been to do with memory allocation patterns.
@@ -9,7 +9,7 @@ fn prime() {
 }
 
 fn partial() {
-    let x = [[0], f(), [0]];
+    let x = [[0]/~, f(), [0]/~]/~;
 }
 
 fn main() {
diff --git a/src/test/run-fail/unwind-rec.rs b/src/test/run-fail/unwind-rec.rs
index c6dd2d0abdf..58fb32cf3e5 100644
--- a/src/test/run-fail/unwind-rec.rs
+++ b/src/test/run-fail/unwind-rec.rs
@@ -1,6 +1,6 @@
 // error-pattern:fail
 
-fn build() -> [int] {
+fn build() -> [int]/~ {
     fail;
 }
 
diff --git a/src/test/run-fail/unwind-rec2.rs b/src/test/run-fail/unwind-rec2.rs
index 4e4afd31a84..10e9cd70323 100644
--- a/src/test/run-fail/unwind-rec2.rs
+++ b/src/test/run-fail/unwind-rec2.rs
@@ -1,10 +1,10 @@
 // error-pattern:fail
 
-fn build1() -> [int] {
-    [0,0,0,0,0,0,0]
+fn build1() -> [int]/~ {
+    [0,0,0,0,0,0,0]/~
 }
 
-fn build2() -> [int] {
+fn build2() -> [int]/~ {
     fail;
 }
 
diff --git a/src/test/run-fail/unwind-tup.rs b/src/test/run-fail/unwind-tup.rs
index 6562c5ded27..219e4d2a311 100644
--- a/src/test/run-fail/unwind-tup.rs
+++ b/src/test/run-fail/unwind-tup.rs
@@ -1,6 +1,6 @@
 // error-pattern:fail
 
-fn fold_local() -> @[int]{
+fn fold_local() -> @[int]/~{
     fail;
 }
 
diff --git a/src/test/run-fail/unwind-tup2.rs b/src/test/run-fail/unwind-tup2.rs
index 0c1d0890b9d..cba38527da9 100644
--- a/src/test/run-fail/unwind-tup2.rs
+++ b/src/test/run-fail/unwind-tup2.rs
@@ -1,10 +1,10 @@
 // error-pattern:fail
 
-fn fold_local() -> @[int]{
-    @[0,0,0,0,0,0]
+fn fold_local() -> @[int]/~{
+    @[0,0,0,0,0,0]/~
 }
 
-fn fold_remote() -> @[int]{
+fn fold_remote() -> @[int]/~{
     fail;
 }
 
diff --git a/src/test/run-fail/vec-overrun.rs b/src/test/run-fail/vec-overrun.rs
index 7a429e08cae..f0d21ec7a73 100644
--- a/src/test/run-fail/vec-overrun.rs
+++ b/src/test/run-fail/vec-overrun.rs
@@ -2,7 +2,7 @@
 
 // error-pattern:bounds check
 fn main() {
-    let v: [int] = [10];
+    let v: [int]/~ = [10]/~;
     let x: int = 0;
     assert (v[x] == 10);
     // Bounds-check failure.
diff --git a/src/test/run-fail/vec-underrun.rs b/src/test/run-fail/vec-underrun.rs
index 9caf82d1ae0..faeeed44603 100644
--- a/src/test/run-fail/vec-underrun.rs
+++ b/src/test/run-fail/vec-underrun.rs
@@ -2,7 +2,7 @@
 
 // error-pattern:bounds check
 fn main() {
-    let v: [int] = [10, 20];
+    let v: [int]/~ = [10, 20]/~;
     let x: int = 0;
     assert (v[x] == 10);
     // Bounds-check failure.
diff --git a/src/test/run-fail/zip-different-lengths.rs b/src/test/run-fail/zip-different-lengths.rs
index 736b61cb935..f41c03e7e76 100644
--- a/src/test/run-fail/zip-different-lengths.rs
+++ b/src/test/run-fail/zip-different-lengths.rs
@@ -6,18 +6,18 @@ import uint;
 import u8;
 import vec::*;
 
-fn enum_chars(start: u8, end: u8) -> [char] {
+fn enum_chars(start: u8, end: u8) -> [char]/~ {
     assert start < end;
     let mut i = start;
-    let mut r = [];
+    let mut r = []/~;
     while i <= end { vec::push(r, i as char); i += 1u as u8; }
     ret r;
 }
 
-fn enum_uints(start: uint, end: uint) -> [uint] {
+fn enum_uints(start: uint, end: uint) -> [uint]/~ {
     assert start < end;
     let mut i = start;
-    let mut r = [];
+    let mut r = []/~;
     while i <= end { vec::push(r, i); i += 1u; }
     ret r;
 }
diff --git a/src/test/run-pass-fulldeps/issue-1926.rs b/src/test/run-pass-fulldeps/issue-1926.rs
index 383a1acec39..856e916ac0c 100644
--- a/src/test/run-pass-fulldeps/issue-1926.rs
+++ b/src/test/run-pass-fulldeps/issue-1926.rs
@@ -39,7 +39,7 @@ impl of fake_ext_ctxt for fake_session {
 }
 
 fn mk_ctxt() -> fake_ext_ctxt {
-    let opts : fake_options = {cfg: []};
+    let opts : fake_options = {cfg: []/~};
     {opts: @opts, parse_sess: new_parse_sess()} as fake_ext_ctxt
 }
 
diff --git a/src/test/run-pass-fulldeps/qquote.rs b/src/test/run-pass-fulldeps/qquote.rs
index 625e3be7ecd..d6da96d0393 100644
--- a/src/test/run-pass-fulldeps/qquote.rs
+++ b/src/test/run-pass-fulldeps/qquote.rs
@@ -19,7 +19,7 @@ iface fake_ext_ctxt {
 type fake_session = ();
 
 impl of fake_ext_ctxt for fake_session {
-    fn cfg() -> ast::crate_cfg { [] }
+    fn cfg() -> ast::crate_cfg { []/~ }
     fn parse_sess() -> parse::parse_sess { parse::new_parse_sess(none) }
 }
 
diff --git a/src/test/run-pass/alloca-from-derived-tydesc.rs b/src/test/run-pass/alloca-from-derived-tydesc.rs
index 1bad1418382..df4fac9945f 100644
--- a/src/test/run-pass/alloca-from-derived-tydesc.rs
+++ b/src/test/run-pass/alloca-from-derived-tydesc.rs
@@ -1,7 +1,7 @@
 enum option<T> { some(T), none, }
 
-type r<T> = {mut v: [option<T>]};
+type r<T> = {mut v: [option<T>]/~};
 
-fn f<T>() -> [T] { ret []; }
+fn f<T>() -> [T]/~ { ret []/~; }
 
-fn main() { let r: r<int> = {mut v: []}; r.v = f(); }
+fn main() { let r: r<int> = {mut v: []/~}; r.v = f(); }
diff --git a/src/test/run-pass/alt-join.rs b/src/test/run-pass/alt-join.rs
index 60ddb99c26a..ecc24877d2f 100644
--- a/src/test/run-pass/alt-join.rs
+++ b/src/test/run-pass/alt-join.rs
@@ -4,12 +4,12 @@ import option;
 
 fn foo<T>(y: option<T>) {
     let mut x: int;
-    let mut rs: [int] = [];
+    let mut rs: [int]/~ = []/~;
     /* tests that x doesn't get put in the precondition for the
        entire if expression */
 
     if true {
-    } else { alt y { none::<T> { x = 17; } _ { x = 42; } } rs += [x]; }
+    } else { alt y { none::<T> { x = 17; } _ { x = 42; } } rs += [x]/~; }
     ret;
 }
 
diff --git a/src/test/run-pass/argv.rs b/src/test/run-pass/argv.rs
index f0a7681acfe..d49f54115ec 100644
--- a/src/test/run-pass/argv.rs
+++ b/src/test/run-pass/argv.rs
@@ -1,5 +1,5 @@
-fn main(args: [str]) {
+fn main(args: [str]/~) {
     let vs: [str] = ["hi", "there", "this", "is", "a", "vec"];
-    let vvs: [[str]] = [args, vs];
+    let vvs: [[str]/~]/~ = [args, vs]/~;
     for vvs.each {|vs| for vs.each {|s| log(debug, s); } }
 }
diff --git a/src/test/run-pass/auto-loop.rs b/src/test/run-pass/auto-loop.rs
index 223aca32bcb..7a795f7cdfe 100644
--- a/src/test/run-pass/auto-loop.rs
+++ b/src/test/run-pass/auto-loop.rs
@@ -1,5 +1,5 @@
 fn main() {
     let mut sum = 0;
-    for vec::each([1, 2, 3, 4, 5]) {|x| sum += x; }
+    for vec::each([1, 2, 3, 4, 5]/~) {|x| sum += x; }
     assert (sum == 15);
 }
diff --git a/src/test/run-pass/auto_serialize.rs b/src/test/run-pass/auto_serialize.rs
index deb87b813d1..6a3d54b5e35 100644
--- a/src/test/run-pass/auto_serialize.rs
+++ b/src/test/run-pass/auto_serialize.rs
@@ -58,7 +58,7 @@ type some_rec = {v: uint_vec};
 enum an_enum = some_rec;
 
 #[auto_serialize]
-type uint_vec = [uint];
+type uint_vec = [uint]/~;
 
 #[auto_serialize]
 type point = {x: uint, y: uint};
@@ -91,7 +91,7 @@ fn main() {
                        deserialize_spanned_uint,
                        serialize_spanned_uint);
 
-    test_ser_and_deser(an_enum({v: [1u, 2u, 3u]}),
+    test_ser_and_deser(an_enum({v: [1u, 2u, 3u]/~}),
                        "an_enum({v: [1u, 2u, 3u]})",
                        serialize_an_enum,
                        deserialize_an_enum,
@@ -103,7 +103,7 @@ fn main() {
                        deserialize_point,
                        serialize_point);
 
-    test_ser_and_deser([1u, 2u, 3u],
+    test_ser_and_deser([1u, 2u, 3u]/~,
                        "[1u, 2u, 3u]",
                        serialize_uint_vec,
                        deserialize_uint_vec,
@@ -132,4 +132,4 @@ fn main() {
                        serialize_c_like,
                        deserialize_c_like,
                        serialize_c_like);
-}
\ No newline at end of file
+}
diff --git a/src/test/run-pass/autobind.rs b/src/test/run-pass/autobind.rs
index 3269af16afa..e4a0db4f15d 100644
--- a/src/test/run-pass/autobind.rs
+++ b/src/test/run-pass/autobind.rs
@@ -1,9 +1,9 @@
 fn f<T: copy>(x: [T]) -> T { ret x[0]; }
 
-fn g(act: fn([int]) -> int) -> int { ret act([1, 2, 3]); }
+fn g(act: fn([int]/~) -> int) -> int { ret act([1, 2, 3]/~); }
 
 fn main() {
     assert (g(f) == 1);
-    let f1: fn([str]) -> str = f;
+    let f1: fn([str]/~) -> str = f;
     assert (f1(["x", "y", "z"]) == "x");
 }
diff --git a/src/test/run-pass/block-arg-can-be-followed-by-binop.rs b/src/test/run-pass/block-arg-can-be-followed-by-binop.rs
index a8e763e96a6..1b00df3b750 100644
--- a/src/test/run-pass/block-arg-can-be-followed-by-binop.rs
+++ b/src/test/run-pass/block-arg-can-be-followed-by-binop.rs
@@ -1,5 +1,5 @@
 fn main() {
-    let v = [-1f, 0f, 1f, 2f, 3f];
+    let v = [-1f, 0f, 1f, 2f, 3f]/~;
 
     // Trailing expressions require parentheses:
     let y = vec::foldl(0f, v) { |x, y| x + y } + 10f;
diff --git a/src/test/run-pass/block-arg-can-be-followed-by-block-arg.rs b/src/test/run-pass/block-arg-can-be-followed-by-block-arg.rs
index 71342eee6e8..57ced911004 100644
--- a/src/test/run-pass/block-arg-can-be-followed-by-block-arg.rs
+++ b/src/test/run-pass/block-arg-can-be-followed-by-block-arg.rs
@@ -1,6 +1,6 @@
 fn main() {
     fn f(i: fn() -> uint) -> uint { i() }
-    let v = [-1f, 0f, 1f, 2f, 3f];
+    let v = [-1f, 0f, 1f, 2f, 3f]/~;
     let z = vec::foldl(f, v) { |x, _y| x } { || 22u };
     assert z == 22u;
 }
diff --git a/src/test/run-pass/block-arg-can-be-followed-by-call.rs b/src/test/run-pass/block-arg-can-be-followed-by-call.rs
index b570a8bdd82..31bb412de3b 100644
--- a/src/test/run-pass/block-arg-can-be-followed-by-call.rs
+++ b/src/test/run-pass/block-arg-can-be-followed-by-call.rs
@@ -1,6 +1,6 @@
 fn main() {
     fn f(i: uint) -> uint { i }
-    let v = [-1f, 0f, 1f, 2f, 3f];
+    let v = [-1f, 0f, 1f, 2f, 3f]/~;
     let z = vec::foldl(f, v) { |x, _y| x } (22u);
     assert z == 22u;
 }
diff --git a/src/test/run-pass/block-arg-in-parentheses.rs b/src/test/run-pass/block-arg-in-parentheses.rs
index 4a5a0fbea07..9d51c993898 100644
--- a/src/test/run-pass/block-arg-in-parentheses.rs
+++ b/src/test/run-pass/block-arg-in-parentheses.rs
@@ -1,26 +1,26 @@
-fn w_semi(v: [int]) -> int {
+fn w_semi(v: [int]/~) -> int {
     // the semicolon causes compiler not to
     // complain about the ignored return value:
     vec::foldl(0, v) {|x,y| x+y};
     -10
 }
 
-fn w_paren1(v: [int]) -> int {
+fn w_paren1(v: [int]/~) -> int {
     (vec::foldl(0, v) {|x,y| x+y}) - 10
 }
 
-fn w_paren2(v: [int]) -> int {
+fn w_paren2(v: [int]/~) -> int {
     (vec::foldl(0, v) {|x,y| x+y} - 10)
 }
 
-fn w_ret(v: [int]) -> int {
+fn w_ret(v: [int]/~) -> int {
     ret vec::foldl(0, v) {|x,y| x+y} - 10;
 }
 
 fn main() {
-    assert w_semi([0, 1, 2, 3]) == -10;
-    assert w_paren1([0, 1, 2, 3]) == -4;
-    assert w_paren2([0, 1, 2, 3]) == -4;
-    assert w_ret([0, 1, 2, 3]) == -4;
+    assert w_semi([0, 1, 2, 3]/~) == -10;
+    assert w_paren1([0, 1, 2, 3]/~) == -4;
+    assert w_paren2([0, 1, 2, 3]/~) == -4;
+    assert w_ret([0, 1, 2, 3]/~) == -4;
 }
 
diff --git a/src/test/run-pass/block-arg.rs b/src/test/run-pass/block-arg.rs
index b13b819b2dc..f33d12f4361 100644
--- a/src/test/run-pass/block-arg.rs
+++ b/src/test/run-pass/block-arg.rs
@@ -1,6 +1,6 @@
 // Check usage and precedence of block arguments in expressions:
 fn main() {
-    let v = [-1f, 0f, 1f, 2f, 3f];
+    let v = [-1f, 0f, 1f, 2f, 3f]/~;
 
     // Statement form does not require parentheses:
     vec::iter(v) { |i|
diff --git a/src/test/run-pass/block-iter-1.rs b/src/test/run-pass/block-iter-1.rs
index 8e868a18612..12b7372227a 100644
--- a/src/test/run-pass/block-iter-1.rs
+++ b/src/test/run-pass/block-iter-1.rs
@@ -1,7 +1,7 @@
-fn iter_vec<T>(v: [T], f: fn(T)) { for v.each {|x| f(x); } }
+fn iter_vec<T>(v: [T]/~, f: fn(T)) { for v.each {|x| f(x); } }
 
 fn main() {
-    let v = [1, 2, 3, 4, 5, 6, 7];
+    let v = [1, 2, 3, 4, 5, 6, 7]/~;
     let mut odds = 0;
     iter_vec(v, {|i|
         log(error, i);
diff --git a/src/test/run-pass/block-iter-2.rs b/src/test/run-pass/block-iter-2.rs
index bcb1ea76151..ac96dbed60f 100644
--- a/src/test/run-pass/block-iter-2.rs
+++ b/src/test/run-pass/block-iter-2.rs
@@ -1,7 +1,7 @@
-fn iter_vec<T>(v: [T], f: fn(T)) { for v.each {|x| f(x); } }
+fn iter_vec<T>(v: [T]/~, f: fn(T)) { for v.each {|x| f(x); } }
 
 fn main() {
-    let v = [1, 2, 3, 4, 5];
+    let v = [1, 2, 3, 4, 5]/~;
     let mut sum = 0;
     iter_vec(v, {|i|
         iter_vec(v, {|j|
diff --git a/src/test/run-pass/block-vec-map2.rs b/src/test/run-pass/block-vec-map2.rs
index 0532f013383..087268010c8 100644
--- a/src/test/run-pass/block-vec-map2.rs
+++ b/src/test/run-pass/block-vec-map2.rs
@@ -3,9 +3,9 @@ import vec;
 
 fn main() {
     let v =
-        vec::map2([1, 2, 3, 4, 5],
-                  [true, false, false, true, true],
+        vec::map2([1, 2, 3, 4, 5]/~,
+                  [true, false, false, true, true]/~,
                   {|i, b| if b { -i } else { i } });
     log(error, v);
-    assert (v == [-1, 2, 3, -4, -5]);
+    assert (v == [-1, 2, 3, -4, -5]/~);
 }
diff --git a/src/test/run-pass/borrowck-mut-vec-as-imm-slice.rs b/src/test/run-pass/borrowck-mut-vec-as-imm-slice.rs
index a6279d12ab8..1795d3b5aed 100644
--- a/src/test/run-pass/borrowck-mut-vec-as-imm-slice.rs
+++ b/src/test/run-pass/borrowck-mut-vec-as-imm-slice.rs
@@ -4,10 +4,10 @@ fn want_slice(v: [int]/&) -> int {
     ret sum;
 }
 
-fn has_mut_vec(+v: [mut int]) -> int {
+fn has_mut_vec(+v: [mut int]/~) -> int {
     want_slice(v)
 }
 
 fn main() {
-    assert has_mut_vec([mut 1, 2, 3]) == 6;
+    assert has_mut_vec([mut 1, 2, 3]/~) == 6;
 }
\ No newline at end of file
diff --git a/src/test/run-pass/break.rs b/src/test/run-pass/break.rs
index 4770b9ce886..008410c22e5 100644
--- a/src/test/run-pass/break.rs
+++ b/src/test/run-pass/break.rs
@@ -6,7 +6,7 @@ fn main() {
     assert (i == 10);
     loop { i += 1; if i == 20 { break; } }
     assert (i == 20);
-    for vec::each([1, 2, 3, 4, 5, 6]) {|x|
+    for vec::each([1, 2, 3, 4, 5, 6]/~) {|x|
         if x == 3 { break; } assert (x <= 3);
     }
     i = 0;
@@ -16,7 +16,7 @@ fn main() {
         i += 1; if i % 2 == 0 { cont; } assert (i % 2 != 0); 
         if i >= 10 { break; }
     }
-    for vec::each([1, 2, 3, 4, 5, 6]) {|x|
+    for vec::each([1, 2, 3, 4, 5, 6]/~) {|x|
         if x % 2 == 0 { cont; }
         assert (x % 2 != 0);
     }
diff --git a/src/test/run-pass/cci_iter_exe.rs b/src/test/run-pass/cci_iter_exe.rs
index 27fd452c8ed..4535e0a8a78 100644
--- a/src/test/run-pass/cci_iter_exe.rs
+++ b/src/test/run-pass/cci_iter_exe.rs
@@ -6,7 +6,7 @@ use cci_iter_lib;
 fn main() {
     //let bt0 = sys::rusti::frame_address(1u32);
     //#debug["%?", bt0];
-    cci_iter_lib::iter([1, 2, 3]) {|i|
+    cci_iter_lib::iter([1, 2, 3]/~) {|i|
         io::print(#fmt["%d", i]);
         //assert bt0 == sys::rusti::frame_address(2u32);
     }
diff --git a/src/test/run-pass/cci_no_inline_exe.rs b/src/test/run-pass/cci_no_inline_exe.rs
index f9863f12b4f..1336cd77c6b 100644
--- a/src/test/run-pass/cci_no_inline_exe.rs
+++ b/src/test/run-pass/cci_no_inline_exe.rs
@@ -12,7 +12,7 @@ fn main() {
     // actually working.
     //let bt0 = sys::frame_address();
     //#debug["%?", bt0];
-    iter([1u, 2u, 3u]) {|i|
+    iter([1u, 2u, 3u]/~) {|i|
         io::print(#fmt["%u\n", i]);
 
         //let bt1 = sys::frame_address();
diff --git a/src/test/run-pass/class-iface-bounded-param.rs b/src/test/run-pass/class-iface-bounded-param.rs
index 4da75037421..e6af2bd60bd 100644
--- a/src/test/run-pass/class-iface-bounded-param.rs
+++ b/src/test/run-pass/class-iface-bounded-param.rs
@@ -19,5 +19,5 @@ fn main() {
     let m = int_hash();
     m.insert(1, 2);
     m.insert(3, 4);
-    assert iter::to_vec(keys(m)) == [1, 3];
+    assert iter::to_vec(keys(m)) == [1, 3]/~;
 }
diff --git a/src/test/run-pass/class-implements-multiple-ifaces.rs b/src/test/run-pass/class-implements-multiple-ifaces.rs
index fe3f160c1f8..3e1a9895665 100644
--- a/src/test/run-pass/class-implements-multiple-ifaces.rs
+++ b/src/test/run-pass/class-implements-multiple-ifaces.rs
@@ -18,7 +18,7 @@ iface bitey {
   fn bite() -> body_part;
 }
 
-fn vec_includes<T>(xs: [T], x: T) -> bool {
+fn vec_includes<T>(xs: [T]/~, x: T) -> bool {
   for each(xs) {|y| if y == x { ret true; }}
   ret false;
 }
@@ -53,7 +53,7 @@ class cat : noisy, scratchy, bitey {
       let t : hashmap<body_part, uint> =
         hashmap::<body_part, uint>(hsher, eqer);
       self.bite_counts = t;
-      iter([finger, toe, nose, ear]) {|p|
+      iter([finger, toe, nose, ear]/~) {|p|
           self.bite_counts.insert(p, 0u);
       };
     }
@@ -61,7 +61,7 @@ class cat : noisy, scratchy, bitey {
   fn speak() -> int { self.meow() as int }
   fn meow_count() -> uint { *self.meows }
   fn scratch() -> option<furniture> {
-    let all = [chair, couch, bed];
+    let all = [chair, couch, bed]/~;
     log(error, self.scratched);
     let mut rslt = none;
     for each(all) {|thing| if !self.scratched.contains(thing) {
@@ -71,7 +71,7 @@ class cat : noisy, scratchy, bitey {
   }
   fn bite() -> body_part {
     #error("In bite()");
-    let all = [toe, nose, ear];
+    let all = [toe, nose, ear]/~;
     let mut min = finger;
     iter(all) {|next|
       #debug("min = %?", min);
@@ -92,7 +92,7 @@ fn annoy_neighbors<T: noisy>(critter: T) {
 }
 
 fn bite_everything<T: bitey>(critter: T) -> bool {
-  let mut left : [body_part] = [finger, toe, nose, ear];
+  let mut left : [body_part]/~ = [finger, toe, nose, ear]/~;
   while vec::len(left) > 0u {
     let part = critter.bite();
     #debug("%? %?", left, part);
diff --git a/src/test/run-pass/class-poly-methods-cross-crate.rs b/src/test/run-pass/class-poly-methods-cross-crate.rs
index 28ddbfdd1e2..b21f1d4f709 100644
--- a/src/test/run-pass/class-poly-methods-cross-crate.rs
+++ b/src/test/run-pass/class-poly-methods-cross-crate.rs
@@ -4,11 +4,11 @@ use cci_class_6;
 import cci_class_6::kitties::*;
 
 fn main() {
-  let nyan : cat<char> = cat::<char>(52u, 99, ['p']);
+  let nyan : cat<char> = cat::<char>(52u, 99, ['p']/~);
   let kitty = cat(1000u, 2, ["tabby"]);
   assert(nyan.how_hungry == 99);
   assert(kitty.how_hungry == 2);
-  nyan.speak([1u,2u,3u]);
+  nyan.speak([1u,2u,3u]/~);
   assert(nyan.meow_count() == 55u);
   kitty.speak(["meow", "mew", "purr", "chirp"]);
   assert(kitty.meow_count() == 1004u);
diff --git a/src/test/run-pass/class-poly-methods.rs b/src/test/run-pass/class-poly-methods.rs
index 0d738913ee5..0b6b3865d56 100644
--- a/src/test/run-pass/class-poly-methods.rs
+++ b/src/test/run-pass/class-poly-methods.rs
@@ -1,27 +1,27 @@
 class cat<U> {
   priv {
-    let mut info : [U];
+    let mut info : [U]/~;
     let mut meows : uint;
   }
 
   let how_hungry : int;
 
-  new(in_x : uint, in_y : int, -in_info: [U])
+  new(in_x : uint, in_y : int, -in_info: [U]/~)
     { self.meows = in_x; self.how_hungry = in_y;
       self.info <- in_info; }
 
-  fn speak<T>(stuff: [T]) {
+  fn speak<T>(stuff: [T]/~) {
     self.meows += stuff.len();
   }
   fn meow_count() -> uint { self.meows }
 }
 
 fn main() {
-  let nyan : cat<int> = cat::<int>(52u, 99, [9]);
+  let nyan : cat<int> = cat::<int>(52u, 99, [9]/~);
   let kitty = cat(1000u, 2, ["tabby"]);
   assert(nyan.how_hungry == 99);
   assert(kitty.how_hungry == 2);
-  nyan.speak([1,2,3]);
+  nyan.speak([1,2,3]/~);
   assert(nyan.meow_count() == 55u);
   kitty.speak(["meow", "mew", "purr", "chirp"]);
   assert(kitty.meow_count() == 1004u);
diff --git a/src/test/run-pass/const-bound.rs b/src/test/run-pass/const-bound.rs
index ac532ea0569..f2a436e0374 100644
--- a/src/test/run-pass/const-bound.rs
+++ b/src/test/run-pass/const-bound.rs
@@ -7,7 +7,7 @@ fn foo<T: copy const>(x: T) -> T { x }
 fn main() {
     foo(1);
     foo("hi");
-    foo([1, 2, 3]);
+    foo([1, 2, 3]/~);
     foo({field: 42});
     foo((1, 2u));
     foo(@1);
diff --git a/src/test/run-pass/cycle-collection4.rs b/src/test/run-pass/cycle-collection4.rs
index ccbcdf6037b..fbe6389fc87 100644
--- a/src/test/run-pass/cycle-collection4.rs
+++ b/src/test/run-pass/cycle-collection4.rs
@@ -1,10 +1,10 @@
 type foo = { mut z : fn@() };
 
 fn nop() { }
-fn nop_foo(_y: [int], _x : @foo) { }
+fn nop_foo(_y: [int]/~, _x : @foo) { }
 
 fn main() {
     let w = @{ mut z: {||nop()} };
-    let x = {||nop_foo([], w)};
+    let x = {||nop_foo([]/~, w)};
     w.z = x;
 }
\ No newline at end of file
diff --git a/src/test/run-pass/deep-vector.rs b/src/test/run-pass/deep-vector.rs
index 7952bf84f77..c7bb5e3f48c 100644
--- a/src/test/run-pass/deep-vector.rs
+++ b/src/test/run-pass/deep-vector.rs
@@ -1998,5 +1998,5 @@ fn main() {
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-    ];
+    ]/~;
 }
\ No newline at end of file
diff --git a/src/test/run-pass/deep-vector2.rs b/src/test/run-pass/deep-vector2.rs
index 2db5841ac1d..7a2eaa37f24 100644
--- a/src/test/run-pass/deep-vector2.rs
+++ b/src/test/run-pass/deep-vector2.rs
@@ -7998,5 +7998,5 @@ fn main() {
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-    ];
+    ]/~;
 }
\ No newline at end of file
diff --git a/src/test/run-pass/dvec-test.rs b/src/test/run-pass/dvec-test.rs
index 15441ee1034..d3e2038922f 100644
--- a/src/test/run-pass/dvec-test.rs
+++ b/src/test/run-pass/dvec-test.rs
@@ -4,17 +4,17 @@ fn main() {
     let d = dvec();
     d.push(3);
     d.push(4);
-    assert d.get() == [3, 4];
-    d.set([mut 5]);
+    assert d.get() == [3, 4]/~;
+    d.set([mut 5]/~);
     d.push(6);
     d.push(7);
     d.push(8);
     d.push(9);
     d.push(10);
-    d.push_all([11, 12, 13]);
-    d.push_slice([11, 12, 13], 1u, 2u);
+    d.push_all([11, 12, 13]/~);
+    d.push_slice([11, 12, 13]/~, 1u, 2u);
 
-    let exp = [5, 6, 7, 8, 9, 10, 11, 12, 13, 12];
+    let exp = [5, 6, 7, 8, 9, 10, 11, 12, 13, 12]/~;
     assert d.get() == exp;
     assert d.get() == exp;
     assert d.len() == exp.len();
diff --git a/src/test/run-pass/empty-mutable-vec.rs b/src/test/run-pass/empty-mutable-vec.rs
index eaec2ab31d5..cb2c13a8844 100644
--- a/src/test/run-pass/empty-mutable-vec.rs
+++ b/src/test/run-pass/empty-mutable-vec.rs
@@ -1,3 +1,3 @@
 
 
-fn main() { let v: [mut int] = [mut]; }
+fn main() { let v: [mut int]/~ = [mut]/~; }
diff --git a/src/test/run-pass/expr-alt-fail.rs b/src/test/run-pass/expr-alt-fail.rs
index 7dfffcc1120..47c2c46a532 100644
--- a/src/test/run-pass/expr-alt-fail.rs
+++ b/src/test/run-pass/expr-alt-fail.rs
@@ -4,7 +4,7 @@ fn test_simple() {
 }
 
 fn test_box() {
-    let r = alt true { true { [10] } false { fail } };
+    let r = alt true { true { [10]/~ } false { fail } };
     assert (r[0] == 10);
 }
 
diff --git a/src/test/run-pass/expr-fn.rs b/src/test/run-pass/expr-fn.rs
index a3bd2449bb2..a872884f95c 100644
--- a/src/test/run-pass/expr-fn.rs
+++ b/src/test/run-pass/expr-fn.rs
@@ -4,7 +4,7 @@ fn test_int() {
 }
 
 fn test_vec() {
-    fn f() -> [int] { [10, 11] }
+    fn f() -> [int]/~ { [10, 11]/~ }
     assert (f()[1] == 11);
 }
 
diff --git a/src/test/run-pass/for-destruct.rs b/src/test/run-pass/for-destruct.rs
index 71480c47a75..ef28e7255c2 100644
--- a/src/test/run-pass/for-destruct.rs
+++ b/src/test/run-pass/for-destruct.rs
@@ -1,5 +1,5 @@
 fn main() {
-    for vec::each([{x: 10, y: 20}, {x: 30, y: 0}]) {|elt|
+    for vec::each([{x: 10, y: 20}, {x: 30, y: 0}]/~) {|elt|
         assert (elt.x + elt.y == 30);
     }
 }
diff --git a/src/test/run-pass/for-loop-fail.rs b/src/test/run-pass/for-loop-fail.rs
index 177fd1f5c54..0c72a5d05f8 100644
--- a/src/test/run-pass/for-loop-fail.rs
+++ b/src/test/run-pass/for-loop-fail.rs
@@ -1 +1 @@
-fn main() { let x: [int] = []; for x.each {|_i| fail "moop"; } }
+fn main() { let x: [int]/~ = []/~; for x.each {|_i| fail "moop"; } }
diff --git a/src/test/run-pass/foreach-nested.rs b/src/test/run-pass/foreach-nested.rs
index 3cc0a5a82f1..007117b04cb 100644
--- a/src/test/run-pass/foreach-nested.rs
+++ b/src/test/run-pass/foreach-nested.rs
@@ -5,7 +5,7 @@
 fn two(it: fn(int)) { it(0); it(1); }
 
 fn main() {
-    let a: [mut int] = [mut -1, -1, -1, -1];
+    let a: [mut int]/~ = [mut -1, -1, -1, -1]/~;
     let mut p: int = 0;
     two {|i|
         two {|j| a[p] = 10 * i + j; p += 1; };
diff --git a/src/test/run-pass/generic-ivec-leak.rs b/src/test/run-pass/generic-ivec-leak.rs
index 1e7de587fb9..22726635da5 100644
--- a/src/test/run-pass/generic-ivec-leak.rs
+++ b/src/test/run-pass/generic-ivec-leak.rs
@@ -1,4 +1,4 @@
 enum wrapper<T> { wrapped(T), }
 
-fn main() { let w = wrapped([1, 2, 3, 4, 5]); }
+fn main() { let w = wrapped([1, 2, 3, 4, 5]/~); }
 
diff --git a/src/test/run-pass/generic-ivec.rs b/src/test/run-pass/generic-ivec.rs
index 26298de5b94..c7d5828fbcd 100644
--- a/src/test/run-pass/generic-ivec.rs
+++ b/src/test/run-pass/generic-ivec.rs
@@ -1,3 +1,3 @@
 fn f<T>(v: @T) { }
-fn main() { f(@[1, 2, 3, 4, 5]); }
+fn main() { f(@[1, 2, 3, 4, 5]/~); }
 
diff --git a/src/test/run-pass/hashmap-memory.rs b/src/test/run-pass/hashmap-memory.rs
index 9d8e7ec116e..ccbb07fce1f 100644
--- a/src/test/run-pass/hashmap-memory.rs
+++ b/src/test/run-pass/hashmap-memory.rs
@@ -31,9 +31,9 @@ mod map_reduce {
 
     type mapper = native fn(str, putter);
 
-    enum ctrl_proto { find_reducer([u8], chan<int>), mapper_done, }
+    enum ctrl_proto { find_reducer([u8]/~, chan<int>), mapper_done, }
 
-    fn start_mappers(ctrl: chan<ctrl_proto>, inputs: [str]) {
+    fn start_mappers(ctrl: chan<ctrl_proto>, inputs: [str]/~) {
         for inputs.each {|i|
             task::spawn {|| map_task(ctrl, i); };
         }
@@ -63,7 +63,7 @@ mod map_reduce {
         send(ctrl, mapper_done);
     }
 
-    fn map_reduce(inputs: [str]) {
+    fn map_reduce(inputs: [str]/~) {
         let ctrl = port();
 
         // This task becomes the master control task. It spawns others
diff --git a/src/test/run-pass/iface-generic.rs b/src/test/run-pass/iface-generic.rs
index 5ad911d553e..21345ed9850 100644
--- a/src/test/run-pass/iface-generic.rs
+++ b/src/test/run-pass/iface-generic.rs
@@ -12,20 +12,20 @@ impl of to_str for () {
 }
 
 iface map<T> {
-    fn map<U>(f: fn(T) -> U) -> [U];
+    fn map<U>(f: fn(T) -> U) -> [U]/~;
 }
-impl <T> of map<T> for [T] {
-    fn map<U>(f: fn(T) -> U) -> [U] {
-        let mut r = [];
-        for self.each {|x| r += [f(x)]; }
+impl <T> of map<T> for [T]/~ {
+    fn map<U>(f: fn(T) -> U) -> [U]/~ {
+        let mut r = []/~;
+        for self.each {|x| r += [f(x)]/~; }
         r
     }
 }
 
-fn foo<U, T: map<U>>(x: T) -> [str] {
+fn foo<U, T: map<U>>(x: T) -> [str]/~ {
     x.map({|_e| "hi" })
 }
-fn bar<U: to_str, T: map<U>>(x: T) -> [str] {
+fn bar<U: to_str, T: map<U>>(x: T) -> [str]/~ {
     x.map({|_e| _e.to_str() })
 }
 
diff --git a/src/test/run-pass/iface-to-str.rs b/src/test/run-pass/iface-to-str.rs
index cf30cefbd33..1490ec3d93f 100644
--- a/src/test/run-pass/iface-to-str.rs
+++ b/src/test/run-pass/iface-to-str.rs
@@ -6,7 +6,7 @@ impl of to_str for int {
     fn to_str() -> str { int::str(self) }
 }
 
-impl <T: to_str> of to_str for [T] {
+impl <T: to_str> of to_str for [T]/~ {
     fn to_str() -> str {
         "[" + str::connect(vec::map(self, {|e| e.to_str()}), ", ") + "]"
     }
@@ -14,15 +14,15 @@ impl <T: to_str> of to_str for [T] {
 
 fn main() {
     assert 1.to_str() == "1";
-    assert [2, 3, 4].to_str() == "[2, 3, 4]";
+    assert [2, 3, 4]/~.to_str() == "[2, 3, 4]";
 
     fn indirect<T: to_str>(x: T) -> str {
         x.to_str() + "!"
     }
-    assert indirect([10, 20]) == "[10, 20]!";
+    assert indirect([10, 20]/~) == "[10, 20]!";
 
     fn indirect2<T: to_str>(x: T) -> str {
         indirect(x)
     }
-    assert indirect2([1]) == "[1]!";
+    assert indirect2([1]/~) == "[1]!";
 }
diff --git a/src/test/run-pass/impl-variance.rs b/src/test/run-pass/impl-variance.rs
index 5e0b7b26268..b78c8241efa 100644
--- a/src/test/run-pass/impl-variance.rs
+++ b/src/test/run-pass/impl-variance.rs
@@ -1,12 +1,12 @@
-impl extensions<T> for [const T] {
+impl extensions<T> for [const T]/~ {
     fn foo() -> uint { vec::len(self) }
 }
 
 fn main() {
-    let v = [const 0];
+    let v = [const 0]/~;
     assert v.foo() == 1u;
-    let v = [0];
+    let v = [0]/~;
     assert v.foo() == 1u;
-    let v = [mut 0];
+    let v = [mut 0]/~;
     assert v.foo() == 1u;
 }
\ No newline at end of file
diff --git a/src/test/run-pass/import-glob-crate.rs b/src/test/run-pass/import-glob-crate.rs
index c1473b1a0d4..92519f9945f 100644
--- a/src/test/run-pass/import-glob-crate.rs
+++ b/src/test/run-pass/import-glob-crate.rs
@@ -4,6 +4,6 @@ import vec::*;
 
 fn main() {
     let mut v = from_elem(0u, 0);
-    v = vec::append(v, [4, 2]);
-    assert (reversed(v) == [2, 4]);
+    v = vec::append(v, [4, 2]/~);
+    assert (reversed(v) == [2, 4]/~);
 }
diff --git a/src/test/run-pass/import-in-block.rs b/src/test/run-pass/import-in-block.rs
index b8a74753895..33876d9800e 100644
--- a/src/test/run-pass/import-in-block.rs
+++ b/src/test/run-pass/import-in-block.rs
@@ -3,9 +3,9 @@ use std;
 fn main() {
     import vec;
     import vec::to_mut;
-    log(debug, vec::len(to_mut([1, 2])));
+    log(debug, vec::len(to_mut([1, 2]/~)));
     {
         import vec::*;
-        log(debug, len([2]));
+        log(debug, len([2]/~));
     }
 }
diff --git a/src/test/run-pass/import4.rs b/src/test/run-pass/import4.rs
index 42a0bc0fb73..a307e7ac190 100644
--- a/src/test/run-pass/import4.rs
+++ b/src/test/run-pass/import4.rs
@@ -5,4 +5,4 @@ mod zed {
     fn bar() { #debug("bar"); }
 }
 
-fn main(args: [str]) { let zed = 42; bar(); }
+fn main(args: [str]/~) { let zed = 42; bar(); }
diff --git a/src/test/run-pass/import5.rs b/src/test/run-pass/import5.rs
index f1b0c5daac9..11c5a31fdbb 100644
--- a/src/test/run-pass/import5.rs
+++ b/src/test/run-pass/import5.rs
@@ -7,4 +7,4 @@ mod foo {
     }
 }
 
-fn main(args: [str]) { bar(); }
+fn main(args: [str]/~) { bar(); }
diff --git a/src/test/run-pass/import7.rs b/src/test/run-pass/import7.rs
index d8a8e5467ea..a63673214a2 100644
--- a/src/test/run-pass/import7.rs
+++ b/src/test/run-pass/import7.rs
@@ -12,4 +12,4 @@ mod bar {
         mod zed { }
     }
 }
-fn main(args: [str]) { baz(); }
+fn main(args: [str]/~) { baz(); }
diff --git a/src/test/run-pass/infer-fn-tail-expr.rs b/src/test/run-pass/infer-fn-tail-expr.rs
index 4658ea4329c..d9fb1216a4e 100644
--- a/src/test/run-pass/infer-fn-tail-expr.rs
+++ b/src/test/run-pass/infer-fn-tail-expr.rs
@@ -1,5 +1,5 @@
 // issue #680
 
-fn f() -> [int] { [] }
+fn f() -> [int]/~ { []/~ }
 
 fn main() { }
diff --git a/src/test/run-pass/integral-indexing.rs b/src/test/run-pass/integral-indexing.rs
index 0351736b2a3..c41ff28a2d8 100644
--- a/src/test/run-pass/integral-indexing.rs
+++ b/src/test/run-pass/integral-indexing.rs
@@ -3,7 +3,7 @@
 
 // This is a testcase for issue #94.
 fn main() {
-    let v: [int] = [0, 1, 2, 3, 4, 5];
+    let v: [int]/~ = [0, 1, 2, 3, 4, 5]/~;
     let s: str = "abcdef";
     assert (v[3u] == 3);
     assert (v[3u8] == 3);
diff --git a/src/test/run-pass/issue-1821.rs b/src/test/run-pass/issue-1821.rs
index 9bb5ed0c2ef..07100a20860 100644
--- a/src/test/run-pass/issue-1821.rs
+++ b/src/test/run-pass/issue-1821.rs
@@ -1,5 +1,5 @@
 // Issue #1821 - Don't recurse trying to typecheck this
 enum t {
-    foo([t])
+    foo([t]/~)
 }
 fn main() {}
\ No newline at end of file
diff --git a/src/test/run-pass/issue-1989.rs b/src/test/run-pass/issue-1989.rs
index 92b7709a8a1..07d13b56edc 100644
--- a/src/test/run-pass/issue-1989.rs
+++ b/src/test/run-pass/issue-1989.rs
@@ -19,6 +19,6 @@ fn empty_pointy() -> @pointy {
 
 fn main()
 {
-    let v = [empty_pointy(), empty_pointy()];
+    let v = [empty_pointy(), empty_pointy()]/~;
     v[0].a = p(v[0]);
 }
diff --git a/src/test/run-pass/issue-2101.rs b/src/test/run-pass/issue-2101.rs
index 35434e11f61..4ae5a11c566 100644
--- a/src/test/run-pass/issue-2101.rs
+++ b/src/test/run-pass/issue-2101.rs
@@ -9,7 +9,7 @@ fn init(ar: &a.arena::arena, str: str) -> &a.hold {
     new(*ar) s(str)
 }
 
-fn main(args: [str]) {
+fn main(args: [str]/~) {
     let ar = arena::arena();
     let leak = init(&ar, args[0]);
     alt *leak {
diff --git a/src/test/run-pass/issue-2502.rs b/src/test/run-pass/issue-2502.rs
index 6aa35169dd5..add0c3e6dff 100644
--- a/src/test/run-pass/issue-2502.rs
+++ b/src/test/run-pass/issue-2502.rs
@@ -1,11 +1,11 @@
 class font/& {
-    let fontbuf: &self.[u8];
+    let fontbuf: &self.[u8]/~;
 
-    new(fontbuf: &self.[u8]) {
+    new(fontbuf: &self.[u8]/~) {
         self.fontbuf = fontbuf;
     }
 
-    fn buf() -> &self.[u8] {
+    fn buf() -> &self.[u8]/~ {
         self.fontbuf
     }
 }
diff --git a/src/test/run-pass/issue-2611.rs b/src/test/run-pass/issue-2611.rs
index ebd77749354..dc2a2f1b005 100644
--- a/src/test/run-pass/issue-2611.rs
+++ b/src/test/run-pass/issue-2611.rs
@@ -3,7 +3,7 @@ import iter;
 import iter::base_iter;
 
 impl Q<A> for base_iter<A> {
-   fn flat_map_to_vec<B:copy, IB:base_iter<B>>(op: fn(B) -> IB) -> [B] {
+   fn flat_map_to_vec<B:copy, IB:base_iter<B>>(op: fn(B) -> IB) -> [B]/~ {
       iter::flat_map_to_vec(self, op)
    }
 }
diff --git a/src/test/run-pass/issue-687.rs b/src/test/run-pass/issue-687.rs
index 1bb4f69fb02..a721aa0ddea 100644
--- a/src/test/run-pass/issue-687.rs
+++ b/src/test/run-pass/issue-687.rs
@@ -7,16 +7,16 @@ import comm::port;
 import comm::recv;
 import comm::send;
 
-enum msg { closed, received([u8]), }
+enum msg { closed, received([u8]/~), }
 
-fn producer(c: chan<[u8]>) {
-    send(c, [1u8, 2u8, 3u8, 4u8]);
-    let empty: [u8] = [];
+fn producer(c: chan<[u8]/~>) {
+    send(c, [1u8, 2u8, 3u8, 4u8]/~);
+    let empty: [u8]/~ = []/~;
     send(c, empty);
 }
 
-fn packager(cb: chan<chan<[u8]>>, msg: chan<msg>) {
-    let p: port<[u8]> = port();
+fn packager(cb: chan<chan<[u8]/~>>, msg: chan<msg>) {
+    let p: port<[u8]/~> = port();
     send(cb, chan(p));
     loop {
         #debug("waiting for bytes");
@@ -39,11 +39,11 @@ fn packager(cb: chan<chan<[u8]>>, msg: chan<msg>) {
 fn main() {
     let p: port<msg> = port();
     let ch = chan(p);
-    let recv_reader: port<chan<[u8]>> = port();
+    let recv_reader: port<chan<[u8]/~>> = port();
     let recv_reader_chan = chan(recv_reader);
     let pack = task::spawn {|| packager(recv_reader_chan, ch); };
 
-    let source_chan: chan<[u8]> = recv(recv_reader);
+    let source_chan: chan<[u8]/~> = recv(recv_reader);
     let prod = task::spawn {|| producer(source_chan); };
 
     loop {
diff --git a/src/test/run-pass/iter-all.rs b/src/test/run-pass/iter-all.rs
index 1de45c97d19..d2625414399 100644
--- a/src/test/run-pass/iter-all.rs
+++ b/src/test/run-pass/iter-all.rs
@@ -1,9 +1,9 @@
 fn is_even(&&x: uint) -> bool { (x % 2u) == 0u }
 
 fn main() {
-    assert ![1u, 2u].all(is_even);
-    assert [2u, 4u].all(is_even);
-    assert [].all(is_even);
+    assert ![1u, 2u]/~.all(is_even);
+    assert [2u, 4u]/~.all(is_even);
+    assert []/~.all(is_even);
 
     assert !some(1u).all(is_even);
     assert some(2u).all(is_even);
diff --git a/src/test/run-pass/iter-any.rs b/src/test/run-pass/iter-any.rs
index 40cd8a18039..8cba862d8fa 100644
--- a/src/test/run-pass/iter-any.rs
+++ b/src/test/run-pass/iter-any.rs
@@ -1,9 +1,9 @@
 fn is_even(&&x: uint) -> bool { (x % 2u) == 0u }
 
 fn main() {
-    assert ![1u, 3u].any(is_even);
-    assert [1u, 2u].any(is_even);
-    assert ![].any(is_even);
+    assert ![1u, 3u]/~.any(is_even);
+    assert [1u, 2u]/~.any(is_even);
+    assert ![]/~.any(is_even);
 
     assert !some(1u).any(is_even);
     assert some(2u).any(is_even);
diff --git a/src/test/run-pass/iter-contains.rs b/src/test/run-pass/iter-contains.rs
index 5af80d47a10..bd5e7a4bf52 100644
--- a/src/test/run-pass/iter-contains.rs
+++ b/src/test/run-pass/iter-contains.rs
@@ -1,9 +1,9 @@
 fn main() {
-    assert [].contains(22u) == false;
-    assert [1u, 3u].contains(22u) == false;
-    assert [22u, 1u, 3u].contains(22u) == true;
-    assert [1u, 22u, 3u].contains(22u) == true;
-    assert [1u, 3u, 22u].contains(22u) == true;
+    assert []/~.contains(22u) == false;
+    assert [1u, 3u]/~.contains(22u) == false;
+    assert [22u, 1u, 3u]/~.contains(22u) == true;
+    assert [1u, 22u, 3u]/~.contains(22u) == true;
+    assert [1u, 3u, 22u]/~.contains(22u) == true;
     assert none.contains(22u) == false;
     assert some(1u).contains(22u) == false;
     assert some(22u).contains(22u) == true;
diff --git a/src/test/run-pass/iter-count.rs b/src/test/run-pass/iter-count.rs
index 54c9c1e2b73..3cca6d748c8 100644
--- a/src/test/run-pass/iter-count.rs
+++ b/src/test/run-pass/iter-count.rs
@@ -1,8 +1,8 @@
 fn main() {
-    assert [].count(22u) == 0u;
-    assert [1u, 3u].count(22u) == 0u;
-    assert [22u, 1u, 3u].count(22u) == 1u;
-    assert [22u, 1u, 22u].count(22u) == 2u;
+    assert []/~.count(22u) == 0u;
+    assert [1u, 3u]/~.count(22u) == 0u;
+    assert [22u, 1u, 3u]/~.count(22u) == 1u;
+    assert [22u, 1u, 22u]/~.count(22u) == 2u;
     assert none.count(22u) == 0u;
     assert some(1u).count(22u) == 0u;
     assert some(22u).count(22u) == 1u;
diff --git a/src/test/run-pass/iter-eachi.rs b/src/test/run-pass/iter-eachi.rs
index 30efd24a55f..432a0080143 100644
--- a/src/test/run-pass/iter-eachi.rs
+++ b/src/test/run-pass/iter-eachi.rs
@@ -1,6 +1,6 @@
 fn main() {
     let mut c = 0u;
-    for [1u, 2u, 3u, 4u, 5u].eachi { |i, v|
+    for [1u, 2u, 3u, 4u, 5u]/~.eachi { |i, v|
         assert (i + 1u) == v;
         c += 1u;
     }
diff --git a/src/test/run-pass/iter-filter-to-vec.rs b/src/test/run-pass/iter-filter-to-vec.rs
index 91b4eeffe7d..c16cdc69ad1 100644
--- a/src/test/run-pass/iter-filter-to-vec.rs
+++ b/src/test/run-pass/iter-filter-to-vec.rs
@@ -1,9 +1,9 @@
 fn is_even(&&x: uint) -> bool { (x % 2u) == 0u }
 
 fn main() {
-    assert [1u, 3u].filter_to_vec(is_even) == [];
-    assert [1u, 2u, 3u].filter_to_vec(is_even) == [2u];
-    assert none.filter_to_vec(is_even) == [];
-    assert some(1u).filter_to_vec(is_even) == [];
-    assert some(2u).filter_to_vec(is_even) == [2u];
+    assert [1u, 3u]/~.filter_to_vec(is_even) == []/~;
+    assert [1u, 2u, 3u]/~.filter_to_vec(is_even) == [2u]/~;
+    assert none.filter_to_vec(is_even) == []/~;
+    assert some(1u).filter_to_vec(is_even) == []/~;
+    assert some(2u).filter_to_vec(is_even) == [2u]/~;
 }
\ No newline at end of file
diff --git a/src/test/run-pass/iter-flat-map-to-vec.rs b/src/test/run-pass/iter-flat-map-to-vec.rs
index d4395b487f4..92fdafc7f95 100644
--- a/src/test/run-pass/iter-flat-map-to-vec.rs
+++ b/src/test/run-pass/iter-flat-map-to-vec.rs
@@ -1,21 +1,21 @@
 // xfail-test -- flat_map_to_vec currently disable
 
-fn repeat(&&x: uint) -> [uint] { [x, x] }
+fn repeat(&&x: uint) -> [uint]/~ { [x, x]/~ }
 
 fn incd_if_even(&&x: uint) -> option<uint> {
     if (x % 2u) == 0u {some(x + 1u)} else {none}
 }
 
 fn main() {
-    assert [1u, 3u].flat_map_to_vec(repeat) == [1u, 1u, 3u, 3u];
-    assert [].flat_map_to_vec(repeat) == [];
-    assert none.flat_map_to_vec(repeat) == [];
-    assert some(1u).flat_map_to_vec(repeat) == [1u, 1u];
-    assert some(2u).flat_map_to_vec(repeat) == [2u, 2u];
+    assert [1u, 3u]/~.flat_map_to_vec(repeat) == [1u, 1u, 3u, 3u]/~;
+    assert []/~.flat_map_to_vec(repeat) == []/~;
+    assert none.flat_map_to_vec(repeat) == []/~;
+    assert some(1u).flat_map_to_vec(repeat) == [1u, 1u]/~;
+    assert some(2u).flat_map_to_vec(repeat) == [2u, 2u]/~;
 
-    assert [1u, 2u, 5u].flat_map_to_vec(incd_if_even) == [3u];
-    assert [].flat_map_to_vec(incd_if_even) == [];
-    assert none.flat_map_to_vec(incd_if_even) == [];
-    assert some(1u).flat_map_to_vec(incd_if_even) == [];
-    assert some(2u).flat_map_to_vec(incd_if_even) == [3u];
+    assert [1u, 2u, 5u]/~.flat_map_to_vec(incd_if_even) == [3u]/~;
+    assert []/~.flat_map_to_vec(incd_if_even) == []/~;
+    assert none.flat_map_to_vec(incd_if_even) == []/~;
+    assert some(1u).flat_map_to_vec(incd_if_even) == []/~;
+    assert some(2u).flat_map_to_vec(incd_if_even) == [3u]/~;
 }
\ No newline at end of file
diff --git a/src/test/run-pass/iter-foldl.rs b/src/test/run-pass/iter-foldl.rs
index 9f5fafcd5bc..d2678c5ba85 100644
--- a/src/test/run-pass/iter-foldl.rs
+++ b/src/test/run-pass/iter-foldl.rs
@@ -1,8 +1,8 @@
 fn add(&&x: float, &&y: uint) -> float { x + (y as float) }
 
 fn main() {
-    assert [1u, 3u].foldl(20f, add) == 24f;
-    assert [].foldl(20f, add) == 20f;
+    assert [1u, 3u]/~.foldl(20f, add) == 24f;
+    assert []/~.foldl(20f, add) == 20f;
     assert none.foldl(20f, add) == 20f;
     assert some(1u).foldl(20f, add) == 21f;
     assert some(2u).foldl(20f, add) == 22f;
diff --git a/src/test/run-pass/iter-map-to-vec.rs b/src/test/run-pass/iter-map-to-vec.rs
index ea98196fbdd..68bf3248ecb 100644
--- a/src/test/run-pass/iter-map-to-vec.rs
+++ b/src/test/run-pass/iter-map-to-vec.rs
@@ -1,9 +1,9 @@
 fn inc(&&x: uint) -> uint { x + 1u }
 
 fn main() {
-    assert [1u, 3u].map_to_vec(inc) == [2u, 4u];
-    assert [1u, 2u, 3u].map_to_vec(inc) == [2u, 3u, 4u];
-    assert none.map_to_vec(inc) == [];
-    assert some(1u).map_to_vec(inc) == [2u];
-    assert some(2u).map_to_vec(inc) == [3u];
+    assert [1u, 3u]/~.map_to_vec(inc) == [2u, 4u]/~;
+    assert [1u, 2u, 3u]/~.map_to_vec(inc) == [2u, 3u, 4u]/~;
+    assert none.map_to_vec(inc) == []/~;
+    assert some(1u).map_to_vec(inc) == [2u]/~;
+    assert some(2u).map_to_vec(inc) == [3u]/~;
 }
\ No newline at end of file
diff --git a/src/test/run-pass/iter-min-max.rs b/src/test/run-pass/iter-min-max.rs
index 338ba795111..4c67670367e 100644
--- a/src/test/run-pass/iter-min-max.rs
+++ b/src/test/run-pass/iter-min-max.rs
@@ -1,11 +1,11 @@
 fn is_even(&&x: uint) -> bool { (x % 2u) == 0u }
 
 fn main() {
-    assert [1u, 3u].min() == 1u;
-    assert [3u, 1u].min() == 1u;
+    assert [1u, 3u]/~.min() == 1u;
+    assert [3u, 1u]/~.min() == 1u;
     assert some(1u).min() == 1u;
 
-    assert [1u, 3u].max() == 3u;
-    assert [3u, 1u].max() == 3u;
+    assert [1u, 3u]/~.max() == 3u;
+    assert [3u, 1u]/~.max() == 3u;
     assert some(3u).max() == 3u;
 }
\ No newline at end of file
diff --git a/src/test/run-pass/iter-to-vec.rs b/src/test/run-pass/iter-to-vec.rs
index 3b2f1b2ced5..c8fcb881934 100644
--- a/src/test/run-pass/iter-to-vec.rs
+++ b/src/test/run-pass/iter-to-vec.rs
@@ -1,8 +1,8 @@
 fn main() {
-    assert [1u, 3u].to_vec() == [1u, 3u];
-    let e: [uint] = [];
-    assert e.to_vec() == [];
-    assert none::<uint>.to_vec() == [];
-    assert some(1u).to_vec() == [1u];
-    assert some(2u).to_vec() == [2u];
+    assert [1u, 3u]/~.to_vec() == [1u, 3u]/~;
+    let e: [uint]/~ = []/~;
+    assert e.to_vec() == []/~;
+    assert none::<uint>.to_vec() == []/~;
+    assert some(1u).to_vec() == [1u]/~;
+    assert some(2u).to_vec() == [2u]/~;
 }
\ No newline at end of file
diff --git a/src/test/run-pass/ivec-add.rs b/src/test/run-pass/ivec-add.rs
index b0289ceb64d..6ca1b2fb5d4 100644
--- a/src/test/run-pass/ivec-add.rs
+++ b/src/test/run-pass/ivec-add.rs
@@ -1,6 +1,6 @@
-fn double<T: copy>(a: T) -> [T] { ret [a] + [a]; }
+fn double<T: copy>(a: T) -> [T]/~ { ret [a]/~ + [a]/~; }
 
-fn double_int(a: int) -> [int] { ret [a] + [a]; }
+fn double_int(a: int) -> [int]/~ { ret [a]/~ + [a]/~; }
 
 fn main() {
     let mut d = double(1);
diff --git a/src/test/run-pass/ivec-pass-by-value.rs b/src/test/run-pass/ivec-pass-by-value.rs
index 557c3dc9b3e..69c19f5d9b0 100644
--- a/src/test/run-pass/ivec-pass-by-value.rs
+++ b/src/test/run-pass/ivec-pass-by-value.rs
@@ -1,3 +1,3 @@
-fn f(a: [int]) { }
-fn main() { f([1, 2, 3, 4, 5]); }
+fn f(a: [int]/~) { }
+fn main() { f([1, 2, 3, 4, 5]/~); }
 
diff --git a/src/test/run-pass/ivec-tag.rs b/src/test/run-pass/ivec-tag.rs
index dce947bb622..a1d0eccb50a 100644
--- a/src/test/run-pass/ivec-tag.rs
+++ b/src/test/run-pass/ivec-tag.rs
@@ -7,16 +7,16 @@ import comm::port;
 import comm::send;
 import comm::recv;
 
-fn producer(c: chan<[u8]>) {
+fn producer(c: chan<[u8]/~>) {
     send(c,
          [1u8, 2u8, 3u8, 4u8, 5u8, 6u8, 7u8, 8u8, 9u8, 10u8, 11u8, 12u8,
-          13u8]);
+          13u8]/~);
 }
 
 fn main() {
-    let p: port<[u8]> = port();
+    let p: port<[u8]/~> = port();
     let ch = chan(p);
     let prod = task::spawn {|| producer(ch); };
 
-    let data: [u8] = recv(p);
+    let data: [u8]/~ = recv(p);
 }
diff --git a/src/test/run-pass/lambda-infer-unresolved.rs b/src/test/run-pass/lambda-infer-unresolved.rs
index 36b93774c86..3bf96f6dccb 100644
--- a/src/test/run-pass/lambda-infer-unresolved.rs
+++ b/src/test/run-pass/lambda-infer-unresolved.rs
@@ -1,7 +1,7 @@
 // This should typecheck even though the type of e is not fully
 // resolved when we finish typechecking the fn@.
 fn main() {
-    let e = @{mut refs: [], n: 0};
+    let e = @{mut refs: []/~, n: 0};
     let f = fn@ () { log(error, e.n); };
-    e.refs += [1];
+    e.refs += [1]/~;
 }
diff --git a/src/test/run-pass/linear-for-loop.rs b/src/test/run-pass/linear-for-loop.rs
index f106e8c8a45..c963c781053 100644
--- a/src/test/run-pass/linear-for-loop.rs
+++ b/src/test/run-pass/linear-for-loop.rs
@@ -1,7 +1,7 @@
 
 
 fn main() {
-    let x = [1, 2, 3];
+    let x = [1, 2, 3]/~;
     let mut y = 0;
     for x.each {|i| log(debug, i); y += i; }
     log(debug, y);
diff --git a/src/test/run-pass/liveness-move-in-loop.rs b/src/test/run-pass/liveness-move-in-loop.rs
index a7f9547c059..edc3d97d794 100644
--- a/src/test/run-pass/liveness-move-in-loop.rs
+++ b/src/test/run-pass/liveness-move-in-loop.rs
@@ -1,11 +1,11 @@
 fn take(-x: int) -> int {x}
 
 fn the_loop() {
-    let mut list = [];
+    let mut list = []/~;
     loop {
         let x = 5;
         if x > 3 {
-            list += [take(x)];
+            list += [take(x)]/~;
         } else {
             break;
         }
diff --git a/src/test/run-pass/log-knows-the-names-of-variants-in-std.rs b/src/test/run-pass/log-knows-the-names-of-variants-in-std.rs
index 31f6b31fa37..78d912ff4c8 100644
--- a/src/test/run-pass/log-knows-the-names-of-variants-in-std.rs
+++ b/src/test/run-pass/log-knows-the-names-of-variants-in-std.rs
@@ -11,7 +11,7 @@ fn check_log<T>(exp: str, v: T) {
 }
 
 fn main() {
-    let x = list::from_vec([a(22u), b("hi")]);
+    let x = list::from_vec([a(22u), b("hi")]/~);
     let exp = "@cons(a(22), @cons(b(~\"hi\"), @nil))";
     assert #fmt["%?", x] == exp;
     check_log(exp, x);
diff --git a/src/test/run-pass/log-linearized.rs b/src/test/run-pass/log-linearized.rs
index 3e202e84b81..8bf9a94fa00 100644
--- a/src/test/run-pass/log-linearized.rs
+++ b/src/test/run-pass/log-linearized.rs
@@ -5,10 +5,10 @@ enum option<T> {
     some(T),
 }
 
-type smallintmap<T> = @{mut v: [mut option<T>]};
+type smallintmap<T> = @{mut v: [mut option<T>]/~};
 
 fn mk<T>() -> smallintmap<T> {
-    let v: [mut option<T>] = [mut];
+    let v: [mut option<T>]/~ = [mut]/~;
     ret @{mut v: v};
 }
 
diff --git a/src/test/run-pass/log-str.rs b/src/test/run-pass/log-str.rs
index 0c32e92f71f..e9b0f1e0c6d 100644
--- a/src/test/run-pass/log-str.rs
+++ b/src/test/run-pass/log-str.rs
@@ -1,4 +1,4 @@
 fn main() {
-    assert "~[1, 2, 3]" == sys::log_str([1, 2, 3]);
+    assert "~[1, 2, 3]" == sys::log_str([1, 2, 3]/~);
     assert #fmt["%?/%6?", [1, 2, 3], "hi"] == "~[1, 2, 3]/ ~\"hi\"";
 }
diff --git a/src/test/run-pass/loop-scope.rs b/src/test/run-pass/loop-scope.rs
index 3fe01a229ee..f43f8673a50 100644
--- a/src/test/run-pass/loop-scope.rs
+++ b/src/test/run-pass/loop-scope.rs
@@ -1,5 +1,5 @@
 fn main() {
-    let x = [10, 20, 30];
+    let x = [10, 20, 30]/~;
     let mut sum = 0;
     for x.each {|x| sum += x; }
     assert (sum == 60);
diff --git a/src/test/run-pass/main-ivec.rs b/src/test/run-pass/main-ivec.rs
index 8db23350855..b7c01eb9ad1 100644
--- a/src/test/run-pass/main-ivec.rs
+++ b/src/test/run-pass/main-ivec.rs
@@ -1 +1 @@
-fn main(args: [str]) { for args.each {|s| log(debug, s); } }
+fn main(args: [str]/~) { for args.each {|s| log(debug, s); } }
diff --git a/src/test/run-pass/maybe-mutable.rs b/src/test/run-pass/maybe-mutable.rs
index 4f305ff8378..41a649052b7 100644
--- a/src/test/run-pass/maybe-mutable.rs
+++ b/src/test/run-pass/maybe-mutable.rs
@@ -2,15 +2,15 @@
 
 
 // -*- rust -*-
-fn len(v: [const int]) -> uint {
+fn len(v: [const int]/~) -> uint {
     let mut i = 0u;
     while i < vec::len(v) { i += 1u; }
     ret i;
 }
 
 fn main() {
-    let v0 = [1, 2, 3, 4, 5];
+    let v0 = [1, 2, 3, 4, 5]/~;
     log(debug, len(v0));
-    let v1 = [mut 1, 2, 3, 4, 5];
+    let v1 = [mut 1, 2, 3, 4, 5]/~;
     log(debug, len(v1));
 }
diff --git a/src/test/run-pass/mod-view-items.rs b/src/test/run-pass/mod-view-items.rs
index 7046f1e3d78..c92821da978 100644
--- a/src/test/run-pass/mod-view-items.rs
+++ b/src/test/run-pass/mod-view-items.rs
@@ -7,7 +7,7 @@
 mod m {
     use std;
     import vec;
-    fn f() -> [int] { vec::from_elem(1u, 0) }
+    fn f() -> [int]/~ { vec::from_elem(1u, 0) }
 }
 
 fn main() { let x = m::f(); }
diff --git a/src/test/run-pass/monad.rs b/src/test/run-pass/monad.rs
index d14de311d9e..e171cad58fb 100644
--- a/src/test/run-pass/monad.rs
+++ b/src/test/run-pass/monad.rs
@@ -1,6 +1,6 @@
-impl monad<A> for [A] {
-    fn bind<B>(f: fn(A) -> [B]) -> [B] {
-        let mut r = [];
+impl monad<A> for [A]/~ {
+    fn bind<B>(f: fn(A) -> [B]/~) -> [B]/~ {
+        let mut r = []/~;
         for self.each {|elt| r += f(elt); }
         r
     }
diff --git a/src/test/run-pass/morestack6.rs b/src/test/run-pass/morestack6.rs
index 461be434b0a..10fe6d9a340 100644
--- a/src/test/run-pass/morestack6.rs
+++ b/src/test/run-pass/morestack6.rs
@@ -56,7 +56,7 @@ fn main() {
         calllink08,
         calllink09,
         calllink10
-    ];
+    ]/~;
     let rng = rand::rng();
     for fns.each {|f|
         let sz = rng.next() % 256u32 + 256u32;
diff --git a/src/test/run-pass/move-arg-2-unique.rs b/src/test/run-pass/move-arg-2-unique.rs
index dde8e6d4d40..39a0ac1fe4a 100644
--- a/src/test/run-pass/move-arg-2-unique.rs
+++ b/src/test/run-pass/move-arg-2-unique.rs
@@ -1,10 +1,10 @@
 fn test(-foo: ~[int]) { assert (foo[0] == 10); }
 
 fn main() {
-    let x = ~[10];
+    let x = ~[10]/~;
     // Test forgetting a local by move-in
     test(x);
 
     // Test forgetting a temporary by move-in.
-    test(~[10]);
+    test(~[10]/~);
 }
diff --git a/src/test/run-pass/move-arg-2.rs b/src/test/run-pass/move-arg-2.rs
index 65a3913132c..d70ccc36dbe 100644
--- a/src/test/run-pass/move-arg-2.rs
+++ b/src/test/run-pass/move-arg-2.rs
@@ -1,10 +1,10 @@
 fn test(-foo: @[int]) { assert (foo[0] == 10); }
 
 fn main() {
-    let x = @[10];
+    let x = @[10]/~;
     // Test forgetting a local by move-in
     test(x);
 
     // Test forgetting a temporary by move-in.
-    test(@[10]);
+    test(@[10]/~);
 }
diff --git a/src/test/run-pass/mutable-alias-vec.rs b/src/test/run-pass/mutable-alias-vec.rs
index b56f80d9700..edc682b892d 100644
--- a/src/test/run-pass/mutable-alias-vec.rs
+++ b/src/test/run-pass/mutable-alias-vec.rs
@@ -3,10 +3,10 @@
 // -*- rust -*-
 use std;
 
-fn grow(&v: [int]) { v += [1]; }
+fn grow(&v: [int]/~) { v += [1]/~; }
 
 fn main() {
-    let mut v: [int] = [];
+    let mut v: [int]/~ = []/~;
     grow(v);
     grow(v);
     grow(v);
diff --git a/src/test/run-pass/mutable-huh-variance-vec1.rs b/src/test/run-pass/mutable-huh-variance-vec1.rs
index 31cfab18ddc..403716321bc 100644
--- a/src/test/run-pass/mutable-huh-variance-vec1.rs
+++ b/src/test/run-pass/mutable-huh-variance-vec1.rs
@@ -1,12 +1,12 @@
 // error-pattern: mismatched types
 
 fn main() {
-    let v = [[0]];
+    let v = [[0]/~]/~;
 
     // This is ok because the outer vec is covariant with respect
     // to the inner vec. If the outer vec was mut then we
     // couldn't do this.
-    fn f(&&v: [[const int]]) {
+    fn f(&&v: [[const int]/~]/~) {
     }
 
     f(v);
diff --git a/src/test/run-pass/mutable-huh-variance-vec2.rs b/src/test/run-pass/mutable-huh-variance-vec2.rs
index 7815554cdab..56c8def9ac6 100644
--- a/src/test/run-pass/mutable-huh-variance-vec2.rs
+++ b/src/test/run-pass/mutable-huh-variance-vec2.rs
@@ -1,12 +1,12 @@
 // error-pattern: mismatched types
 
 fn main() {
-    let v = [[0]];
+    let v = [[0]/~]/~;
 
     // This is ok because the outer vec is covariant with respect
     // to the inner vec. If the outer vec was mut then we
     // couldn't do this.
-    fn f(&&v: [const [const int]]) {
+    fn f(&&v: [const [const int]/~]/~) {
     }
 
     f(v);
diff --git a/src/test/run-pass/mutable-vec-drop.rs b/src/test/run-pass/mutable-vec-drop.rs
index 2b1433d8a65..b7aa4278b49 100644
--- a/src/test/run-pass/mutable-vec-drop.rs
+++ b/src/test/run-pass/mutable-vec-drop.rs
@@ -1,6 +1,6 @@
 
 fn main() {
     // This just tests whether the vec leaks its members.
-    let pvec: [mut @{a: int, b: int}] =
-        [mut @{a: 1, b: 2}, @{a: 3, b: 4}, @{a: 5, b: 6}];
+    let pvec: [mut @{a: int, b: int}]/~ =
+        [mut @{a: 1, b: 2}, @{a: 3, b: 4}, @{a: 5, b: 6}]/~;
 }
diff --git a/src/test/run-pass/native-fn-linkname.rs b/src/test/run-pass/native-fn-linkname.rs
index 72d0ab01f96..eaa6522e2d1 100644
--- a/src/test/run-pass/native-fn-linkname.rs
+++ b/src/test/run-pass/native-fn-linkname.rs
@@ -12,7 +12,7 @@ native mod libc {
 
 fn strlen(str: str) -> uint unsafe {
     // C string is terminated with a zero
-    let bytes = str::bytes(str) + [0u8];
+    let bytes = str::bytes(str) + [0u8]/~;
     ret libc::my_strlen(vec::unsafe::to_ptr(bytes));
 }
 
diff --git a/src/test/run-pass/native2.rs b/src/test/run-pass/native2.rs
index 3ad9f330548..5fbef59101e 100644
--- a/src/test/run-pass/native2.rs
+++ b/src/test/run-pass/native2.rs
@@ -24,4 +24,4 @@ native mod libc {
 #[nolink]
 native mod baz { }
 
-fn main(args: [str]) { }
+fn main(args: [str]/~) { }
diff --git a/src/test/run-pass/newtype-polymorphic.rs b/src/test/run-pass/newtype-polymorphic.rs
index 69efb129146..4398f40a08a 100644
--- a/src/test/run-pass/newtype-polymorphic.rs
+++ b/src/test/run-pass/newtype-polymorphic.rs
@@ -1,11 +1,11 @@
-enum myvec<X> = [X];
+enum myvec<X> = [X]/~;
 
-fn myvec_deref<X: copy>(mv: myvec<X>) -> [X] { ret *mv; }
+fn myvec_deref<X: copy>(mv: myvec<X>) -> [X]/~ { ret *mv; }
 
 fn myvec_elt<X: copy>(mv: myvec<X>) -> X { ret mv[0]; }
 
 fn main() {
-    let mv = myvec([1, 2, 3]);
+    let mv = myvec([1, 2, 3]/~);
     assert (myvec_deref(mv)[1] == 2);
     assert (myvec_elt(mv) == 1);
     assert (mv[2] == 3);
diff --git a/src/test/run-pass/operator-overloading-leaks.rs b/src/test/run-pass/operator-overloading-leaks.rs
index a67bffa2e92..07186db4da9 100644
--- a/src/test/run-pass/operator-overloading-leaks.rs
+++ b/src/test/run-pass/operator-overloading-leaks.rs
@@ -1,11 +1,11 @@
 // The cases commented as "Leaks" need to not leak. Issue #2581
 
-impl methods<T: copy> for [T] {
-    fn -(x: [T]/&) -> [T] {
+impl methods<T: copy> for [T]/~ {
+    fn -(x: [T]/&) -> [T]/~ {
         [x[0], x[0], x[0]]
     }
 
-    fn foo(x: [T]/&) -> [T] {
+    fn foo(x: [T]/&) -> [T]/~ {
         [x[0], x[0], x[0]]
     }
 }
@@ -30,23 +30,23 @@ impl methods for @int {
 
 fn main() {
     // leaks
-    let mut bar = [1, 2, 3];
-    bar -= [3, 2, 1];
-    bar -= [4, 5, 6];
+    let mut bar = [1, 2, 3]/~;
+    bar -= [3, 2, 1]/~;
+    bar -= [4, 5, 6]/~;
     
     io::println(#fmt("%?", bar));
 
     // okay
-    let mut bar = [1, 2, 3];
-    bar = bar.foo([3, 2, 1]);
-    bar = bar.foo([4, 5, 6]);
+    let mut bar = [1, 2, 3]/~;
+    bar = bar.foo([3, 2, 1]/~);
+    bar = bar.foo([4, 5, 6]/~);
 
     io::println(#fmt("%?", bar));
 
     // okay
-    let mut bar = [1, 2, 3];
-    bar = bar - [3, 2, 1];
-    bar = bar - [4, 5, 6];
+    let mut bar = [1, 2, 3]/~;
+    bar = bar - [3, 2, 1]/~;
+    bar = bar - [4, 5, 6]/~;
 
     io::println(#fmt("%?", bar));
 
diff --git a/src/test/run-pass/option-ext.rs b/src/test/run-pass/option-ext.rs
index cb6b63059f4..cde7d73e720 100644
--- a/src/test/run-pass/option-ext.rs
+++ b/src/test/run-pass/option-ext.rs
@@ -1,4 +1,4 @@
-fn main(args: [str]) {
+fn main(args: [str]/~) {
     let thing = "{{ f }}";
     let f = str::find_str(thing, "{{");
 
diff --git a/src/test/run-pass/path.rs b/src/test/run-pass/path.rs
index 4fe43d18121..96a7a7229b6 100644
--- a/src/test/run-pass/path.rs
+++ b/src/test/run-pass/path.rs
@@ -4,4 +4,4 @@ mod foo {
     fn bar(offset: uint) { }
 }
 
-fn main(args: [str]) { foo::bar(0u); }
+fn main(args: [str]/~) { foo::bar(0u); }
diff --git a/src/test/run-pass/pure-sum.rs b/src/test/run-pass/pure-sum.rs
index f5bc71d94b0..823f6751c23 100644
--- a/src/test/run-pass/pure-sum.rs
+++ b/src/test/run-pass/pure-sum.rs
@@ -1,6 +1,6 @@
 // Check that pure functions can modify local state.
 
-pure fn sums_to(v: [int], sum: int) -> bool {
+pure fn sums_to(v: [int]/~, sum: int) -> bool {
     let mut i = 0u, sum0 = 0;
     while i < v.len() {
         sum0 += v[i];
@@ -9,7 +9,7 @@ pure fn sums_to(v: [int], sum: int) -> bool {
     ret sum0 == sum;
 }
 
-pure fn sums_to_using_uniq(v: [int], sum: int) -> bool {
+pure fn sums_to_using_uniq(v: [int]/~, sum: int) -> bool {
     let mut i = 0u, sum0 = ~mut 0;
     while i < v.len() {
         *sum0 += v[i];
@@ -18,7 +18,7 @@ pure fn sums_to_using_uniq(v: [int], sum: int) -> bool {
     ret *sum0 == sum;
 }
 
-pure fn sums_to_using_rec(v: [int], sum: int) -> bool {
+pure fn sums_to_using_rec(v: [int]/~, sum: int) -> bool {
     let mut i = 0u, sum0 = {f: 0};
     while i < v.len() {
         sum0.f += v[i];
@@ -27,7 +27,7 @@ pure fn sums_to_using_rec(v: [int], sum: int) -> bool {
     ret sum0.f == sum;
 }
 
-pure fn sums_to_using_uniq_rec(v: [int], sum: int) -> bool {
+pure fn sums_to_using_uniq_rec(v: [int]/~, sum: int) -> bool {
     let mut i = 0u, sum0 = {f: ~mut 0};
     while i < v.len() {
         *sum0.f += v[i];
diff --git a/src/test/run-pass/rcvr-borrowed-to-slice.rs b/src/test/run-pass/rcvr-borrowed-to-slice.rs
index 38f9f685050..6718de9d9d6 100644
--- a/src/test/run-pass/rcvr-borrowed-to-slice.rs
+++ b/src/test/run-pass/rcvr-borrowed-to-slice.rs
@@ -10,17 +10,17 @@ impl foo/& for [int]/& {
 fn call_sum(x: [int]/&) -> int { x.sum() }
 
 fn main() {
-    let x = [1, 2, 3];
+    let x = [1, 2, 3]/~;
     let y = call_sum(x);
     #debug["y==%d", y];
     assert y == 6;
 
-    let x = [mut 1, 2, 3];
+    let x = [mut 1, 2, 3]/~;
     let y = x.sum();
     #debug["y==%d", y];
     assert y == 6;
 
-    let x = [1, 2, 3];
+    let x = [1, 2, 3]/~;
     let y = x.sum();
     #debug["y==%d", y];
     assert y == 6;
diff --git a/src/test/run-pass/reflect-visit-data.rs b/src/test/run-pass/reflect-visit-data.rs
index 391acdaa9a2..d0818bda7c4 100644
--- a/src/test/run-pass/reflect-visit-data.rs
+++ b/src/test/run-pass/reflect-visit-data.rs
@@ -250,14 +250,14 @@ impl ptr_visitor<V: ty_visitor movable_ptr>
     }
 
     fn visit_enter_vec(mtbl: uint) -> bool {
-        self.align_to::<[u8]>();
+        self.align_to::<[u8]/~>();
         if ! self.inner.visit_enter_vec(mtbl) { ret false; }
         true
     }
 
     fn visit_leave_vec(mtbl: uint) -> bool {
         if ! self.inner.visit_leave_vec(mtbl) { ret false; }
-        self.bump_past::<[u8]>();
+        self.bump_past::<[u8]/~>();
         true
     }
 
@@ -547,7 +547,7 @@ impl ptr_visitor<V: ty_visitor movable_ptr>
 enum my_visitor = @{
     mut ptr1: *c_void,
     mut ptr2: *c_void,
-    mut vals: [str]
+    mut vals: [str]/~
 };
 
 impl extra_methods for my_visitor {
@@ -572,7 +572,7 @@ impl of ty_visitor for my_visitor {
     fn visit_bool() -> bool {
 /*
         self.get::<bool>() {|b|
-            self.vals += [bool::to_str(b)];
+            self.vals += [bool::to_str(b)]/~;
         }
 */
         true
@@ -580,7 +580,7 @@ impl of ty_visitor for my_visitor {
     fn visit_int() -> bool {
 /*
         self.get::<int>() {|i|
-            self.vals += [int::to_str(i, 10u)];
+            self.vals += [int::to_str(i, 10u)]/~;
         }
 */
         true
@@ -699,7 +699,7 @@ fn main() {
     let p = ptr::addr_of(r) as *c_void;
     let u = my_visitor(@{mut ptr1: p,
                          mut ptr2: p,
-                         mut vals: []});
+                         mut vals: []/~});
     let v = ptr_visit_adaptor({inner: u});
     let vv = v as intrinsic::ty_visitor;
     intrinsic::visit_ty::<(int,int,int,bool,bool)>(vv);
diff --git a/src/test/run-pass/reflect-visit-type.rs b/src/test/run-pass/reflect-visit-type.rs
index 8e90e438068..33f5115df5f 100644
--- a/src/test/run-pass/reflect-visit-type.rs
+++ b/src/test/run-pass/reflect-visit-type.rs
@@ -1,7 +1,7 @@
 // FIXME: un-xfail after snapshot
 // xfail-test
 
-enum my_visitor = @{ mut types: [str] };
+enum my_visitor = @{ mut types: [str]/~ };
 
 impl of intrinsic::ty_visitor for my_visitor {
     fn visit_bot() -> bool {
@@ -139,14 +139,14 @@ impl of intrinsic::ty_visitor for my_visitor {
 }
 
 fn main() {
-    let v = my_visitor(@{mut types: []});
+    let v = my_visitor(@{mut types: []/~});
     let vv = v as intrinsic::ty_visitor;
 
     intrinsic::visit_ty::<bool>(vv);
     intrinsic::visit_ty::<int>(vv);
     intrinsic::visit_ty::<i8>(vv);
     intrinsic::visit_ty::<i16>(vv);
-    intrinsic::visit_ty::<[int]>(vv);
+    intrinsic::visit_ty::<[int]/~>(vv);
 
     for (copy v.types).each {|s|
         io::println(#fmt("type: %s", s));
diff --git a/src/test/run-pass/regions-borrow-evec-uniq.rs b/src/test/run-pass/regions-borrow-evec-uniq.rs
index 3cfcd015dde..8ee9dc7f958 100644
--- a/src/test/run-pass/regions-borrow-evec-uniq.rs
+++ b/src/test/run-pass/regions-borrow-evec-uniq.rs
@@ -7,7 +7,7 @@ fn main() {
     let r = foo(p);
     assert r == 1;
 
-    let p = [5,4,3,2,1];
+    let p = [5,4,3,2,1]/~;
     let r = foo(p);
     assert r == 5;
 }
diff --git a/src/test/run-pass/ret-break-cont-in-block.rs b/src/test/run-pass/ret-break-cont-in-block.rs
index e93ce8a32e9..94d78b5f556 100644
--- a/src/test/run-pass/ret-break-cont-in-block.rs
+++ b/src/test/run-pass/ret-break-cont-in-block.rs
@@ -1,4 +1,4 @@
-fn iter<T>(v: [T], it: fn(T) -> bool) {
+fn iter<T>(v: [T]/~, it: fn(T) -> bool) {
     let mut i = 0u, l = v.len();
     while i < l {
         if !it(v[i]) { break; }
@@ -6,7 +6,7 @@ fn iter<T>(v: [T], it: fn(T) -> bool) {
     }
 }
 
-fn find_pos<T>(n: T, h: [T]) -> option<uint> {
+fn find_pos<T>(n: T, h: [T]/~) -> option<uint> {
     let mut i = 0u;
     for iter(h) {|e|
         if e == n { ret some(i); }
@@ -15,7 +15,7 @@ fn find_pos<T>(n: T, h: [T]) -> option<uint> {
     none
 }
 
-fn bail_deep(x: [[bool]]) {
+fn bail_deep(x: [[bool]/~]/~) {
     let mut seen = false;
     for iter(x) {|x|
         for iter(x) {|x|
@@ -27,8 +27,8 @@ fn bail_deep(x: [[bool]]) {
 }
 
 fn ret_deep() -> str {
-    for iter([1, 2]) {|e|
-        for iter([3, 4]) {|x|
+    for iter([1, 2]/~) {|e|
+        for iter([3, 4]/~) {|x|
             if e + x > 4 { ret "hi"; }
         }
     }
@@ -37,7 +37,7 @@ fn ret_deep() -> str {
 
 fn main() {
     let mut last = 0;
-    for vec::all([1, 2, 3, 4, 5, 6, 7]) {|e|
+    for vec::all([1, 2, 3, 4, 5, 6, 7]/~) {|e|
         last = e;
         if e == 5 { break; }
         if e % 2 == 1 { cont; }
@@ -45,13 +45,13 @@ fn main() {
     };
     assert last == 5;
 
-    assert find_pos(1, [0, 1, 2, 3]) == some(1u);
-    assert find_pos(1, [0, 4, 2, 3]) == none;
+    assert find_pos(1, [0, 1, 2, 3]/~) == some(1u);
+    assert find_pos(1, [0, 4, 2, 3]/~) == none;
     assert find_pos("hi", ["foo", "bar", "baz", "hi"]) == some(3u);
 
-    bail_deep([[false, false], [true, true], [false, true]]);
-    bail_deep([[true]]);
-    bail_deep([[false, false, false]]);
+    bail_deep([[false, false]/~, [true, true]/~, [false, true]/~]/~);
+    bail_deep([[true]/~]/~);
+    bail_deep([[false, false, false]/~]/~);
 
     assert ret_deep() == "hi";
 }
diff --git a/src/test/run-pass/sendfn-deep-copy.rs b/src/test/run-pass/sendfn-deep-copy.rs
index 96e06e65c70..a5fd483e3f8 100644
--- a/src/test/run-pass/sendfn-deep-copy.rs
+++ b/src/test/run-pass/sendfn-deep-copy.rs
@@ -8,7 +8,7 @@ fn main() { test05(); }
 fn mk_counter<A:copy>() -> fn~(A) -> (A,uint) {
     // The only reason that the counter is generic is so that it closes
     // over both a type descriptor and some data.
-    let v = [mut 0u];
+    let v = [mut 0u]/~;
     ret fn~(a: A) -> (A,uint) {
         let n = v[0];
         v[0] = n + 1u;
diff --git a/src/test/run-pass/seq-compare.rs b/src/test/run-pass/seq-compare.rs
index 79a318eefd2..423d755076f 100644
--- a/src/test/run-pass/seq-compare.rs
+++ b/src/test/run-pass/seq-compare.rs
@@ -4,13 +4,13 @@ fn main() {
     assert ("hello" < "hellr");
     assert ("hello " > "hello");
     assert ("hello" != "there");
-    assert ([1, 2, 3, 4] > [1, 2, 3]);
-    assert ([1, 2, 3] < [1, 2, 3, 4]);
-    assert ([1, 2, 4, 4] > [1, 2, 3, 4]);
-    assert ([1, 2, 3, 4] < [1, 2, 4, 4]);
-    assert ([1, 2, 3] <= [1, 2, 3]);
-    assert ([1, 2, 3] <= [1, 2, 3, 3]);
-    assert ([1, 2, 3, 4] > [1, 2, 3]);
-    assert ([1, 2, 3] == [1, 2, 3]);
-    assert ([1, 2, 3] != [1, 1, 3]);
+    assert ([1, 2, 3, 4]/~ > [1, 2, 3]/~);
+    assert ([1, 2, 3]/~ < [1, 2, 3, 4]/~);
+    assert ([1, 2, 4, 4]/~ > [1, 2, 3, 4]/~);
+    assert ([1, 2, 3, 4]/~ < [1, 2, 4, 4]/~);
+    assert ([1, 2, 3]/~ <= [1, 2, 3]/~);
+    assert ([1, 2, 3]/~ <= [1, 2, 3, 3]/~);
+    assert ([1, 2, 3, 4]/~ > [1, 2, 3]/~);
+    assert ([1, 2, 3]/~ == [1, 2, 3]/~);
+    assert ([1, 2, 3]/~ != [1, 1, 3]/~);
 }
diff --git a/src/test/run-pass/shadow.rs b/src/test/run-pass/shadow.rs
index 5ec60b38c10..11ee08d3c2e 100644
--- a/src/test/run-pass/shadow.rs
+++ b/src/test/run-pass/shadow.rs
@@ -1,7 +1,7 @@
 // -*- rust -*-
-fn foo(c: [int]) {
+fn foo(c: [int]/~) {
     let a: int = 5;
-    let mut b: [int] = [];
+    let mut b: [int]/~ = []/~;
 
 
     alt none::<int> {
@@ -9,7 +9,7 @@ fn foo(c: [int]) {
         for c.each {|i|
             log(debug, a);
             let a = 17;
-            b += [a];
+            b += [a]/~;
         }
       }
       _ { }
@@ -18,4 +18,4 @@ fn foo(c: [int]) {
 
 enum t<T> { none, some(T), }
 
-fn main() { let x = 10; let x = x + 20; assert (x == 30); foo([]); }
+fn main() { let x = 10; let x = x + 20; assert (x == 30); foo([]/~); }
diff --git a/src/test/run-pass/shape_intrinsic_tag_then_rec.rs b/src/test/run-pass/shape_intrinsic_tag_then_rec.rs
index 65b793564ad..3a40b378f14 100644
--- a/src/test/run-pass/shape_intrinsic_tag_then_rec.rs
+++ b/src/test/run-pass/shape_intrinsic_tag_then_rec.rs
@@ -16,7 +16,7 @@ enum opt_span {
 type span = {lo: uint, hi: uint, expanded_from: opt_span};
 type spanned<T> = { data: T, span: span };
 type ty_ = uint;
-type path_ = { global: bool, idents: [str], types: [@ty] };
+type path_ = { global: bool, idents: [str]/~, types: [@ty]/~ };
 type path = spanned<path_>;
 type ty = spanned<ty_>;
 
diff --git a/src/test/run-pass/size-and-align.rs b/src/test/run-pass/size-and-align.rs
index ce70efa318e..3617546d0fc 100644
--- a/src/test/run-pass/size-and-align.rs
+++ b/src/test/run-pass/size-and-align.rs
@@ -4,7 +4,7 @@
 // -*- rust -*-
 enum clam<T> { a(T, int), b, }
 
-fn uhoh<T>(v: [clam<T>]) {
+fn uhoh<T>(v: [clam<T>]/~) {
     alt v[1] {
       a::<T>(t, u) { #debug("incorrect"); log(debug, u); fail; }
       b::<T> { #debug("correct"); }
@@ -12,6 +12,6 @@ fn uhoh<T>(v: [clam<T>]) {
 }
 
 fn main() {
-    let v: [clam<int>] = [b::<int>, b::<int>, a::<int>(42, 17)];
+    let v: [clam<int>]/~ = [b::<int>, b::<int>, a::<int>(42, 17)]/~;
     uhoh::<int>(v);
 }
diff --git a/src/test/run-pass/static-impl.rs b/src/test/run-pass/static-impl.rs
index 10a67b9217c..edceedae71d 100644
--- a/src/test/run-pass/static-impl.rs
+++ b/src/test/run-pass/static-impl.rs
@@ -17,12 +17,12 @@ impl util for uint {
     }
 }
 
-impl util<T> for [T] {
+impl util<T> for [T]/~ {
     fn length_() -> uint { vec::len(self) }
     fn iter_(f: fn(T)) { for self.each {|x| f(x); } }
-    fn map_<U>(f: fn(T) -> U) -> [U] {
-        let mut r = [];
-        for self.each {|elt| r += [f(elt)]; }
+    fn map_<U>(f: fn(T) -> U) -> [U]/~ {
+        let mut r = []/~;
+        for self.each {|elt| r += [f(elt)]/~; }
         r
     }
 }
@@ -33,9 +33,9 @@ fn main() {
     assert 10u.plus() == 30;
     assert "hi".plus() == 200;
 
-    assert [1].length_().str() == "1";
-    assert [3, 4].map_({|a| a + 4})[0] == 7;
-    assert [3, 4].map_::<uint>({|a| a as uint + 4u})[0] == 7u;
+    assert [1]/~.length_().str() == "1";
+    assert [3, 4]/~.map_({|a| a + 4})[0] == 7;
+    assert [3, 4]/~.map_::<uint>({|a| a as uint + 4u})[0] == 7u;
     let mut x = 0u;
     10u.times {|_n| x += 2u;}
     assert x == 20u;
diff --git a/src/test/run-pass/swap-2.rs b/src/test/run-pass/swap-2.rs
index f94205f4a9f..a70ffba452e 100644
--- a/src/test/run-pass/swap-2.rs
+++ b/src/test/run-pass/swap-2.rs
@@ -1,7 +1,7 @@
 fn swap<T>(v: [mut T], i: int, j: int) { v[i] <-> v[j]; }
 
 fn main() {
-    let a: [mut int] = [mut 0, 1, 2, 3, 4, 5, 6];
+    let a: [mut int]/~ = [mut 0, 1, 2, 3, 4, 5, 6]/~;
     swap(a, 2, 4);
     assert (a[2] == 4);
     assert (a[4] == 2);
diff --git a/src/test/run-pass/tag-in-block.rs b/src/test/run-pass/tag-in-block.rs
index c08d440874d..5d3088cc8ae 100644
--- a/src/test/run-pass/tag-in-block.rs
+++ b/src/test/run-pass/tag-in-block.rs
@@ -6,4 +6,4 @@ fn foo() {
     fn baz() { zed(nil); }
 }
 
-fn main(args: [str]) { }
+fn main(args: [str]/~) { }
diff --git a/src/test/run-pass/task-comm-16.rs b/src/test/run-pass/task-comm-16.rs
index d250b311ccc..5c7b8c7b282 100644
--- a/src/test/run-pass/task-comm-16.rs
+++ b/src/test/run-pass/task-comm-16.rs
@@ -25,7 +25,7 @@ fn test_rec() {
 fn test_vec() {
     let po = port();
     let ch = chan(po);
-    let v0: [int] = [0, 1, 2];
+    let v0: [int]/~ = [0, 1, 2]/~;
     send(ch, v0);
     let v1 = recv(po);
     assert (v1[0] == 0);
diff --git a/src/test/run-pass/task-comm-3.rs b/src/test/run-pass/task-comm-3.rs
index 8364c3a3fd0..17cd1a1ce93 100644
--- a/src/test/run-pass/task-comm-3.rs
+++ b/src/test/run-pass/task-comm-3.rs
@@ -30,10 +30,10 @@ fn test00() {
     let mut i: int = 0;
 
     // Create and spawn tasks...
-    let mut results = [];
+    let mut results = []/~;
     while i < number_of_tasks {
         let builder = task::builder();
-        results += [task::future_result(builder)];
+        results += [task::future_result(builder)]/~;
         task::run(builder) {|copy i|
             test00_start(ch, i, number_of_messages)
         }
diff --git a/src/test/run-pass/task-comm.rs b/src/test/run-pass/task-comm.rs
index 9118075c642..97c2a8643ad 100644
--- a/src/test/run-pass/task-comm.rs
+++ b/src/test/run-pass/task-comm.rs
@@ -38,11 +38,11 @@ fn test00() {
 
     let mut i: int = 0;
 
-    let mut results = [];
+    let mut results = []/~;
     while i < number_of_tasks {
         i = i + 1;
         let builder = task::builder();
-        results += [task::future_result(builder)];
+        results += [task::future_result(builder)]/~;
         task::run(builder) {|copy i|
             test00_start(ch, i, number_of_messages);
         }
@@ -125,11 +125,11 @@ fn test06() {
 
     let mut i: int = 0;
 
-    let mut results = [];
+    let mut results = []/~;
     while i < number_of_tasks {
         i = i + 1;
         let builder = task::builder();
-        results += [task::future_result(builder)];
+        results += [task::future_result(builder)]/~;
         task::run(builder) {|copy i|
             test06_start(i);
         };
diff --git a/src/test/run-pass/task-killjoin-rsrc.rs b/src/test/run-pass/task-killjoin-rsrc.rs
index 0696d176147..6dd5827836e 100644
--- a/src/test/run-pass/task-killjoin-rsrc.rs
+++ b/src/test/run-pass/task-killjoin-rsrc.rs
@@ -14,7 +14,7 @@ class notify {
                task::get_task(),
                ptr::addr_of(*(self.v)) as uint,
                task::failing(),
-               *(self.v)];
+               *(self.v)]/~;
         let b = *(self.v);
         comm::send(self.ch, b);
     }
@@ -26,7 +26,7 @@ fn joinable(f: fn~()) -> comm::port<bool> {
         let b = @mut false;
         #error["wrapper: task=%? allocated v=%x",
                task::get_task(),
-               ptr::addr_of(*b) as uint];
+               ptr::addr_of(*b) as uint]/~;
         let _r = notify(c, b);
         f();
         *b = true;
diff --git a/src/test/run-pass/type-param.rs b/src/test/run-pass/type-param.rs
index 8d4bccc11ff..68be7c56d4b 100644
--- a/src/test/run-pass/type-param.rs
+++ b/src/test/run-pass/type-param.rs
@@ -2,4 +2,4 @@
 
 type lteq<T> = native fn(T) -> bool;
 
-fn main(args: [str]) { }
+fn main(args: [str]/~) { }
diff --git a/src/test/run-pass/type-params-in-for-each.rs b/src/test/run-pass/type-params-in-for-each.rs
index 3e84e341733..9173e258003 100644
--- a/src/test/run-pass/type-params-in-for-each.rs
+++ b/src/test/run-pass/type-params-in-for-each.rs
@@ -5,8 +5,8 @@ fn range(lo: uint, hi: uint, it: fn(uint)) {
     while lo_ < hi { it(lo_); lo_ += 1u; }
 }
 
-fn create_index<T>(index: [{a: T, b: uint}], hash_fn: native fn(T) -> uint) {
-    range(0u, 256u) {|_i| let bucket: [T] = []; }
+fn create_index<T>(index: [{a: T, b: uint}]/~, hash_fn: native fn(T) -> uint) {
+    range(0u, 256u) {|_i| let bucket: [T]/~ = []/~; }
 }
 
 fn main() { }
diff --git a/src/test/run-pass/type-ptr.rs b/src/test/run-pass/type-ptr.rs
index e608a9f9836..9569954ebe6 100644
--- a/src/test/run-pass/type-ptr.rs
+++ b/src/test/run-pass/type-ptr.rs
@@ -2,4 +2,4 @@ fn f(a: *int) -> *int { ret a; }
 
 fn g(a: *int) -> *int { let b = f(a); ret b; }
 
-fn main(args: [str]) { ret; }
+fn main(args: [str]/~) { ret; }
diff --git a/src/test/run-pass/unique-assign-generic.rs b/src/test/run-pass/unique-assign-generic.rs
index ba8b4bb5723..230aa21cb90 100644
--- a/src/test/run-pass/unique-assign-generic.rs
+++ b/src/test/run-pass/unique-assign-generic.rs
@@ -6,6 +6,6 @@ fn f<T: copy>(t: T) -> T {
 fn main() {
     let t = f(~100);
     assert t == ~100;
-    let t = f(~@[100]);
-    assert t == ~@[100];
+    let t = f(~@[100]/~);
+    assert t == ~@[100]/~;
 }
diff --git a/src/test/run-pass/unique-autoderef-index.rs b/src/test/run-pass/unique-autoderef-index.rs
index 6b978fc1506..43d894ed3ac 100644
--- a/src/test/run-pass/unique-autoderef-index.rs
+++ b/src/test/run-pass/unique-autoderef-index.rs
@@ -1,4 +1,4 @@
 fn main() {
-    let i = ~[100];
+    let i = ~[100]/~;
     assert i[0] == 100;
 }
\ No newline at end of file
diff --git a/src/test/run-pass/unique-create.rs b/src/test/run-pass/unique-create.rs
index c46cf29ba5d..24714a94873 100644
--- a/src/test/run-pass/unique-create.rs
+++ b/src/test/run-pass/unique-create.rs
@@ -3,5 +3,5 @@ fn main() {
 }
 
 fn vec() {
-    [0];
+    [0]/~;
 }
\ No newline at end of file
diff --git a/src/test/run-pass/unique-drop-complex.rs b/src/test/run-pass/unique-drop-complex.rs
index 23048eb7868..6ae3224ccfc 100644
--- a/src/test/run-pass/unique-drop-complex.rs
+++ b/src/test/run-pass/unique-drop-complex.rs
@@ -1,3 +1,3 @@
 fn main() {
-    let x = ~[0,0,0,0,0];
+    let x = ~[0,0,0,0,0]/~;
 }
\ No newline at end of file
diff --git a/src/test/run-pass/unique-in-vec-copy.rs b/src/test/run-pass/unique-in-vec-copy.rs
index 1a9eb581c24..ed9ffd26ae8 100644
--- a/src/test/run-pass/unique-in-vec-copy.rs
+++ b/src/test/run-pass/unique-in-vec-copy.rs
@@ -1,5 +1,5 @@
 fn main() {
-    let a = [~mut 10];
+    let a = [~mut 10]/~;
     let b = a;
 
     assert *a[0] == 10;
diff --git a/src/test/run-pass/unique-in-vec.rs b/src/test/run-pass/unique-in-vec.rs
index 0f5bbce050f..62391debea2 100644
--- a/src/test/run-pass/unique-in-vec.rs
+++ b/src/test/run-pass/unique-in-vec.rs
@@ -1,3 +1,3 @@
 fn main() {
-    assert [~100][0] == ~100;
-}
\ No newline at end of file
+    assert ([~100]/~)[0] == ~100;
+}
diff --git a/src/test/run-pass/utf8_chars.rs b/src/test/run-pass/utf8_chars.rs
index 99842f2ebc7..99c6a0cc510 100644
--- a/src/test/run-pass/utf8_chars.rs
+++ b/src/test/run-pass/utf8_chars.rs
@@ -4,7 +4,7 @@ import vec;
 
 fn main() {
     // Chars of 1, 2, 3, and 4 bytes
-    let chs: [char] = ['e', 'é', '€', 0x10000 as char];
+    let chs: [char]/~ = ['e', 'é', '€', 0x10000 as char]/~;
     let s: str = str::from_chars(chs);
 
     assert (str::len(s) == 10u);
@@ -15,9 +15,9 @@ fn main() {
     assert (str::char_at(s, 1u) == 'é');
 
     assert (str::is_utf8(str::bytes(s)));
-    assert (!str::is_utf8([0x80_u8]));
-    assert (!str::is_utf8([0xc0_u8]));
-    assert (!str::is_utf8([0xc0_u8, 0x10_u8]));
+    assert (!str::is_utf8([0x80_u8]/~));
+    assert (!str::is_utf8([0xc0_u8]/~));
+    assert (!str::is_utf8([0xc0_u8, 0x10_u8]/~));
 
     let mut stack = "a×c€";
     assert (str::pop_char(stack) == '€');
diff --git a/src/test/run-pass/vec-concat.rs b/src/test/run-pass/vec-concat.rs
index 3a5a1916d64..6aa5f5ef424 100644
--- a/src/test/run-pass/vec-concat.rs
+++ b/src/test/run-pass/vec-concat.rs
@@ -1,8 +1,8 @@
 // -*- rust -*-
 fn main() {
-    let a: [int] = [1, 2, 3, 4, 5];
-    let b: [int] = [6, 7, 8, 9, 0];
-    let v: [int] = a + b;
+    let a: [int]/~ = [1, 2, 3, 4, 5]/~;
+    let b: [int]/~ = [6, 7, 8, 9, 0]/~;
+    let v: [int]/~ = a + b;
     log(debug, v[9]);
     assert (v[0] == 1);
     assert (v[7] == 8);
diff --git a/src/test/run-pass/vec-drop.rs b/src/test/run-pass/vec-drop.rs
index 499b24d43f0..9b75d0c2155 100644
--- a/src/test/run-pass/vec-drop.rs
+++ b/src/test/run-pass/vec-drop.rs
@@ -3,6 +3,6 @@
 fn main() {
     // This just tests whether the vec leaks its members.
 
-    let pvec: [@{x: int, y: int}] =
-        [@{x: 1, y: 2}, @{x: 3, y: 4}, @{x: 5, y: 6}];
+    let pvec: [@{x: int, y: int}]/~ =
+        [@{x: 1, y: 2}, @{x: 3, y: 4}, @{x: 5, y: 6}]/~;
 }
diff --git a/src/test/run-pass/vec-growth.rs b/src/test/run-pass/vec-growth.rs
index 343004c81c2..b6c4aa3659f 100644
--- a/src/test/run-pass/vec-growth.rs
+++ b/src/test/run-pass/vec-growth.rs
@@ -1,11 +1,11 @@
 
 
 fn main() {
-    let mut v = [1];
-    v += [2];
-    v += [3];
-    v += [4];
-    v += [5];
+    let mut v = [1]/~;
+    v += [2]/~;
+    v += [3]/~;
+    v += [4]/~;
+    v += [5]/~;
     assert (v[0] == 1);
     assert (v[1] == 2);
     assert (v[2] == 3);
diff --git a/src/test/run-pass/vec-ivec-deadlock.rs b/src/test/run-pass/vec-ivec-deadlock.rs
index a2571b57b7a..4fb7eb8f7f5 100644
--- a/src/test/run-pass/vec-ivec-deadlock.rs
+++ b/src/test/run-pass/vec-ivec-deadlock.rs
@@ -1 +1 @@
-fn main() { let a = [1, 2, 3, 4, 5]; let mut b = [a, a]; b += b; }
+fn main() { let a = [1, 2, 3, 4, 5]/~; let mut b = [a, a]/~; b += b; }
diff --git a/src/test/run-pass/vec-late-init.rs b/src/test/run-pass/vec-late-init.rs
index 9b97ed092cd..6f5efa0bd01 100644
--- a/src/test/run-pass/vec-late-init.rs
+++ b/src/test/run-pass/vec-late-init.rs
@@ -1,7 +1,7 @@
 
 
 fn main() {
-    let mut later: [int];
-    if true { later = [1]; } else { later = [2]; }
+    let mut later: [int]/~;
+    if true { later = [1]/~; } else { later = [2]/~; }
     log(debug, later[0]);
 }
diff --git a/src/test/run-pass/vec-push.rs b/src/test/run-pass/vec-push.rs
index 15b9239c44b..2505b7141b1 100644
--- a/src/test/run-pass/vec-push.rs
+++ b/src/test/run-pass/vec-push.rs
@@ -1 +1 @@
-fn main() { let mut v = [1, 2, 3]; vec::push(v, 1); }
+fn main() { let mut v = [1, 2, 3]/~; vec::push(v, 1); }
diff --git a/src/test/run-pass/vec-self-append.rs b/src/test/run-pass/vec-self-append.rs
index e9e6cce4a87..c897a327a5e 100644
--- a/src/test/run-pass/vec-self-append.rs
+++ b/src/test/run-pass/vec-self-append.rs
@@ -3,7 +3,7 @@ import vec;
 
 fn test_heap_to_heap() {
     // a spills onto the heap
-    let mut a = [0, 1, 2, 3, 4];
+    let mut a = [0, 1, 2, 3, 4]/~;
     a += a;
     assert (vec::len(a) == 10u);
     assert (a[0] == 0);
@@ -20,7 +20,7 @@ fn test_heap_to_heap() {
 
 fn test_stack_to_heap() {
     // a is entirely on the stack
-    let mut a = [0, 1, 2];
+    let mut a = [0, 1, 2]/~;
     // a spills to the heap
     a += a;
     assert (vec::len(a) == 6u);
@@ -34,7 +34,7 @@ fn test_stack_to_heap() {
 
 fn test_loop() {
     // Make sure we properly handle repeated self-appends.
-    let mut a: [int] = [0];
+    let mut a: [int]/~ = [0]/~;
     let mut i = 20;
     let mut expected_len = 1u;
     while i > 0 {
diff --git a/src/test/run-pass/vec-slice.rs b/src/test/run-pass/vec-slice.rs
index b8ec6563a96..e1961d59b39 100644
--- a/src/test/run-pass/vec-slice.rs
+++ b/src/test/run-pass/vec-slice.rs
@@ -1,5 +1,5 @@
 fn main() {
-    let  v = [1,2,3,4,5];
+    let  v = [1,2,3,4,5]/~;
     let v2 = vec::slice(v, 1, 3);
     assert (v2[0] == 2);
     assert (v2[1] == 3);
diff --git a/src/test/run-pass/vec-trailing-comma.rs b/src/test/run-pass/vec-trailing-comma.rs
index 473ffe9f11d..b0dac0abd7e 100644
--- a/src/test/run-pass/vec-trailing-comma.rs
+++ b/src/test/run-pass/vec-trailing-comma.rs
@@ -1,10 +1,10 @@
 // Issue #2482.
 
 fn main() {
-    let v1: [int] = [10, 20, 30,];
-    let v2: [int] = [10, 20, 30];
+    let v1: [int]/~ = [10, 20, 30,]/~;
+    let v2: [int]/~ = [10, 20, 30]/~;
     assert (v1[2] == v2[2]);
-    let v3: [int] = [10,];
-    let v4: [int] = [10];
+    let v3: [int]/~ = [10,]/~;
+    let v4: [int]/~ = [10]/~;
     assert (v3[0] == v4[0]);
 }
diff --git a/src/test/run-pass/vec.rs b/src/test/run-pass/vec.rs
index f1cc97ab61a..cc70cd8cf8a 100644
--- a/src/test/run-pass/vec.rs
+++ b/src/test/run-pass/vec.rs
@@ -3,7 +3,7 @@
 
 // -*- rust -*-
 fn main() {
-    let v: [int] = [10, 20];
+    let v: [int]/~ = [10, 20]/~;
     assert (v[0] == 10);
     assert (v[1] == 20);
     let mut x: int = 0;
diff --git a/src/test/run-pass/vector-no-ann-2.rs b/src/test/run-pass/vector-no-ann-2.rs
index 10a9cd9c6b8..7e0e614c0df 100644
--- a/src/test/run-pass/vector-no-ann-2.rs
+++ b/src/test/run-pass/vector-no-ann-2.rs
@@ -1 +1 @@
-fn main() { let quux: @[uint] = @[]; }
+fn main() { let quux: @[uint]/~ = @[]/~; }
diff --git a/src/test/run-pass/while-with-break.rs b/src/test/run-pass/while-with-break.rs
index 24907f948dc..68c0779657e 100644
--- a/src/test/run-pass/while-with-break.rs
+++ b/src/test/run-pass/while-with-break.rs
@@ -8,8 +8,8 @@ fn main() {
         log(debug, i);
         i = i + 1;
         if i == 95 {
-            let v: [int] =
-                [1, 2, 3, 4, 5]; // we check that it is freed by break
+            let v: [int]/~ =
+                [1, 2, 3, 4, 5]/~; // we check that it is freed by break
 
             #debug("breaking");
             break;
diff --git a/src/test/run-pass/zip-same-length.rs b/src/test/run-pass/zip-same-length.rs
index ef095dca8e9..4c5c3343512 100644
--- a/src/test/run-pass/zip-same-length.rs
+++ b/src/test/run-pass/zip-same-length.rs
@@ -5,18 +5,18 @@ import uint;
 import u8;
 import vec::{head, is_not_empty, last, same_length, zip};
 
-fn enum_chars(start: u8, end: u8) -> [char] {
+fn enum_chars(start: u8, end: u8) -> [char]/~ {
     assert start < end;
     let mut i = start;
-    let mut r = [];
+    let mut r = []/~;
     while i <= end { vec::push(r, i as char); i += 1u as u8; }
     ret r;
 }
 
-fn enum_uints(start: uint, end: uint) -> [uint] {
+fn enum_uints(start: uint, end: uint) -> [uint]/~ {
     assert start < end;
     let mut i = start;
-    let mut r = [];
+    let mut r = []/~;
     while i <= end { vec::push(r, i); i += 1u; }
     ret r;
 }