summary refs log tree commit diff
path: root/src/test/compile-fail
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-06-07 19:42:22 -0700
committerBrian Anderson <banderson@mozilla.com>2012-06-07 19:42:27 -0700
commit7ef825bb607c4e934c92bd0b73ecbc4c24f3286b (patch)
treec5800f031f1959f2d91c61b890547a3b37f3a0af /src/test/compile-fail
parentc058f1d9927874fd5bfe40d5e6698880a07c36bb (diff)
downloadrust-7ef825bb607c4e934c92bd0b73ecbc4c24f3286b.tar.gz
rust-7ef825bb607c4e934c92bd0b73ecbc4c24f3286b.zip
Revert "remove alias analysis and replace with borrowck"
18s perf regression compiling rustc with opts

This reverts commit 7f6ee0ce0df8af4c21b065cb49b95079ae643f77.
Diffstat (limited to 'src/test/compile-fail')
-rw-r--r--src/test/compile-fail/borrowck-assign-comp-idx.rs3
-rw-r--r--src/test/compile-fail/borrowck-assign-comp.rs3
-rw-r--r--src/test/compile-fail/borrowck-lend-args.rs3
-rw-r--r--src/test/compile-fail/borrowck-lend-flow.rs3
-rw-r--r--src/test/compile-fail/borrowck-loan-blocks-move-cc.rs3
-rw-r--r--src/test/compile-fail/borrowck-loan-blocks-move.rs3
-rw-r--r--src/test/compile-fail/borrowck-loan-blocks-mut-uniq.rs3
-rw-r--r--src/test/compile-fail/borrowck-loan-rcvr-overloaded-op.rs3
-rw-r--r--src/test/compile-fail/borrowck-loan-rcvr.rs3
-rw-r--r--src/test/compile-fail/borrowck-loan-vec-content.rs3
-rw-r--r--src/test/compile-fail/borrowck-mut-vec-as-imm-slice-bad.rs3
-rw-r--r--src/test/compile-fail/borrowck-no-cycle-in-exchange-heap.rs13
-rw-r--r--src/test/compile-fail/borrowck-pat-enum-in-box.rs3
-rw-r--r--src/test/compile-fail/borrowck-pat-enum.rs3
-rw-r--r--src/test/compile-fail/borrowck-pat-reassign-binding.rs2
-rw-r--r--src/test/compile-fail/borrowck-pat-reassign-sometimes-binding.rs2
-rw-r--r--src/test/compile-fail/borrowck-pure-scope-in-call.rs3
-rw-r--r--src/test/compile-fail/borrowck-unchecked-with-borrow.rs3
-rw-r--r--src/test/compile-fail/borrowck-uniq-via-box.rs3
-rw-r--r--src/test/compile-fail/borrowck-uniq-via-lend.rs3
-rw-r--r--src/test/compile-fail/borrowck-uniq-via-ref.rs2
-rw-r--r--src/test/compile-fail/issue-511.rs6
-rw-r--r--src/test/compile-fail/unsafe-alias-2.rs8
-rw-r--r--src/test/compile-fail/unsafe-alias.rs10
-rw-r--r--src/test/compile-fail/unsafe-alt.rs8
-rw-r--r--src/test/compile-fail/unsafe-mutable-alias.rs8
26 files changed, 95 insertions, 15 deletions
diff --git a/src/test/compile-fail/borrowck-assign-comp-idx.rs b/src/test/compile-fail/borrowck-assign-comp-idx.rs
index a83f727369e..c418c855237 100644
--- a/src/test/compile-fail/borrowck-assign-comp-idx.rs
+++ b/src/test/compile-fail/borrowck-assign-comp-idx.rs
@@ -1,3 +1,6 @@
+// xfail-fast  (compile-flags unsupported on windows)
+// compile-flags:--borrowck=err
+
 type point = { x: int, y: int };
 
 fn a() {
diff --git a/src/test/compile-fail/borrowck-assign-comp.rs b/src/test/compile-fail/borrowck-assign-comp.rs
index 2e045b84c60..c8830957c76 100644
--- a/src/test/compile-fail/borrowck-assign-comp.rs
+++ b/src/test/compile-fail/borrowck-assign-comp.rs
@@ -1,3 +1,6 @@
+// xfail-fast  (compile-flags unsupported on windows)
+// compile-flags:--borrowck=err
+
 type point = { x: int, y: int };
 
 fn a() {
diff --git a/src/test/compile-fail/borrowck-lend-args.rs b/src/test/compile-fail/borrowck-lend-args.rs
index ef8914b134f..aa2358121e2 100644
--- a/src/test/compile-fail/borrowck-lend-args.rs
+++ b/src/test/compile-fail/borrowck-lend-args.rs
@@ -1,3 +1,6 @@
+// xfail-fast  (compile-flags unsupported on windows)
+// compile-flags:--borrowck=err
+
 fn borrow(_v: &int) {}
 
 fn borrow_from_arg_imm_ref(&&v: ~int) {
diff --git a/src/test/compile-fail/borrowck-lend-flow.rs b/src/test/compile-fail/borrowck-lend-flow.rs
index e3916867412..def99033e5e 100644
--- a/src/test/compile-fail/borrowck-lend-flow.rs
+++ b/src/test/compile-fail/borrowck-lend-flow.rs
@@ -1,3 +1,6 @@
+// xfail-fast  (compile-flags unsupported on windows)
+// compile-flags:--borrowck=err
+
 // Note: the borrowck analysis is currently flow-insensitive.
 // Therefore, some of these errors are marked as spurious and could be
 // corrected by a simple change to the analysis.  The others are
diff --git a/src/test/compile-fail/borrowck-loan-blocks-move-cc.rs b/src/test/compile-fail/borrowck-loan-blocks-move-cc.rs
index 0862af2e6fa..d9f3bd05676 100644
--- a/src/test/compile-fail/borrowck-loan-blocks-move-cc.rs
+++ b/src/test/compile-fail/borrowck-loan-blocks-move-cc.rs
@@ -1,3 +1,6 @@
+// xfail-fast  (compile-flags unsupported on windows)
+// compile-flags:--borrowck=err
+
 fn borrow(v: &int, f: fn(x: &int)) {
     f(v);
 }
diff --git a/src/test/compile-fail/borrowck-loan-blocks-move.rs b/src/test/compile-fail/borrowck-loan-blocks-move.rs
index b5044754ac0..6c26aafd425 100644
--- a/src/test/compile-fail/borrowck-loan-blocks-move.rs
+++ b/src/test/compile-fail/borrowck-loan-blocks-move.rs
@@ -1,3 +1,6 @@
+// xfail-fast  (compile-flags unsupported on windows)
+// compile-flags:--borrowck=err
+
 fn take(-_v: ~int) {
 }
 
diff --git a/src/test/compile-fail/borrowck-loan-blocks-mut-uniq.rs b/src/test/compile-fail/borrowck-loan-blocks-mut-uniq.rs
index 186229f39bd..d7538f168ab 100644
--- a/src/test/compile-fail/borrowck-loan-blocks-mut-uniq.rs
+++ b/src/test/compile-fail/borrowck-loan-blocks-mut-uniq.rs
@@ -1,3 +1,6 @@
+// xfail-fast  (compile-flags unsupported on windows)
+// compile-flags:--borrowck=err
+
 fn borrow(v: &int, f: fn(x: &int)) {
     f(v);
 }
diff --git a/src/test/compile-fail/borrowck-loan-rcvr-overloaded-op.rs b/src/test/compile-fail/borrowck-loan-rcvr-overloaded-op.rs
index a268b37ca72..7f45a50cbf4 100644
--- a/src/test/compile-fail/borrowck-loan-rcvr-overloaded-op.rs
+++ b/src/test/compile-fail/borrowck-loan-rcvr-overloaded-op.rs
@@ -1,3 +1,6 @@
+// xfail-fast  (compile-flags unsupported on windows)
+// compile-flags:--borrowck=err
+
 type point = { x: int, y: int };
 
 impl foo for point {
diff --git a/src/test/compile-fail/borrowck-loan-rcvr.rs b/src/test/compile-fail/borrowck-loan-rcvr.rs
index ec543bfc4f9..1fba825d5ab 100644
--- a/src/test/compile-fail/borrowck-loan-rcvr.rs
+++ b/src/test/compile-fail/borrowck-loan-rcvr.rs
@@ -1,3 +1,6 @@
+// xfail-fast  (compile-flags unsupported on windows)
+// compile-flags:--borrowck=err
+
 type point = { x: int, y: int };
 
 impl foo for point {
diff --git a/src/test/compile-fail/borrowck-loan-vec-content.rs b/src/test/compile-fail/borrowck-loan-vec-content.rs
index 80e23570a0d..c3d0a62f05e 100644
--- a/src/test/compile-fail/borrowck-loan-vec-content.rs
+++ b/src/test/compile-fail/borrowck-loan-vec-content.rs
@@ -1,3 +1,6 @@
+// xfail-fast  (compile-flags unsupported on windows)
+// compile-flags:--borrowck=err
+
 // Here we check that it is allowed to lend out an element of a
 // (locally rooted) mutable, unique vector, and that we then prevent
 // modifications to the contents.
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..803f30f8e33 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
@@ -1,3 +1,6 @@
+// xfail-fast  (compile-flags unsupported on windows)
+// compile-flags:--borrowck=err
+
 fn want_slice(v: [int]/&) -> int {
     let mut sum = 0;
     for vec::each(v) { |i| sum += i; }
diff --git a/src/test/compile-fail/borrowck-no-cycle-in-exchange-heap.rs b/src/test/compile-fail/borrowck-no-cycle-in-exchange-heap.rs
deleted file mode 100644
index a546ef867e1..00000000000
--- a/src/test/compile-fail/borrowck-no-cycle-in-exchange-heap.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-enum cycle {
-    node({mut a: ~cycle}),
-    empty
-}
-fn main() {
-    let x = ~node({mut a: ~empty});
-    // Create a cycle!
-    alt check *x { //! NOTE loan of immutable local variable granted here
-      node(y) {
-        y.a <- x; //! ERROR moving out of immutable local variable prohibited due to outstanding loan
-      }
-    };
-}
\ No newline at end of file
diff --git a/src/test/compile-fail/borrowck-pat-enum-in-box.rs b/src/test/compile-fail/borrowck-pat-enum-in-box.rs
index 29de06a1104..32135b5ad8f 100644
--- a/src/test/compile-fail/borrowck-pat-enum-in-box.rs
+++ b/src/test/compile-fail/borrowck-pat-enum-in-box.rs
@@ -1,3 +1,6 @@
+// xfail-fast  (compile-flags unsupported on windows)
+// compile-flags:--borrowck=err
+
 fn match_imm_box(v: &const @option<int>) -> int {
     alt *v {
       @some(i) {i}
diff --git a/src/test/compile-fail/borrowck-pat-enum.rs b/src/test/compile-fail/borrowck-pat-enum.rs
index 8e87e5d7420..753b51b0251 100644
--- a/src/test/compile-fail/borrowck-pat-enum.rs
+++ b/src/test/compile-fail/borrowck-pat-enum.rs
@@ -1,3 +1,6 @@
+// xfail-fast  (compile-flags unsupported on windows)
+// compile-flags:--borrowck=err
+
 fn match_ref(&&v: option<int>) -> int {
     alt v {
       some(i) {
diff --git a/src/test/compile-fail/borrowck-pat-reassign-binding.rs b/src/test/compile-fail/borrowck-pat-reassign-binding.rs
index cf1199557bd..5018d4835ae 100644
--- a/src/test/compile-fail/borrowck-pat-reassign-binding.rs
+++ b/src/test/compile-fail/borrowck-pat-reassign-binding.rs
@@ -1,3 +1,5 @@
+// xfail-fast  (compile-flags unsupported on windows)
+// compile-flags:--borrowck=err
 // xfail-pretty -- comments are infaithfully preserved
 
 fn main() {
diff --git a/src/test/compile-fail/borrowck-pat-reassign-sometimes-binding.rs b/src/test/compile-fail/borrowck-pat-reassign-sometimes-binding.rs
index db8129d005a..bf28af2db4d 100644
--- a/src/test/compile-fail/borrowck-pat-reassign-sometimes-binding.rs
+++ b/src/test/compile-fail/borrowck-pat-reassign-sometimes-binding.rs
@@ -1,3 +1,5 @@
+// xfail-fast  (compile-flags unsupported on windows)
+// compile-flags:--borrowck=err
 // xfail-pretty -- comments are infaithfully preserved
 
 fn main() {
diff --git a/src/test/compile-fail/borrowck-pure-scope-in-call.rs b/src/test/compile-fail/borrowck-pure-scope-in-call.rs
index 4469dca3620..9e83fd4be35 100644
--- a/src/test/compile-fail/borrowck-pure-scope-in-call.rs
+++ b/src/test/compile-fail/borrowck-pure-scope-in-call.rs
@@ -1,3 +1,6 @@
+// xfail-fast  (compile-flags unsupported on windows)
+// compile-flags:--borrowck=err
+
 pure fn pure_borrow(_x: &int, _y: ()) {}
 
 fn test1(x: @mut ~int) {
diff --git a/src/test/compile-fail/borrowck-unchecked-with-borrow.rs b/src/test/compile-fail/borrowck-unchecked-with-borrow.rs
index a5f8b947bf2..cefe3ba0553 100644
--- a/src/test/compile-fail/borrowck-unchecked-with-borrow.rs
+++ b/src/test/compile-fail/borrowck-unchecked-with-borrow.rs
@@ -1,3 +1,6 @@
+// xfail-fast  (compile-flags unsupported on windows)
+// compile-flags:--borrowck=err
+
 fn impure(_i: int) {}
 
 // check that unchecked alone does not override borrowck:
diff --git a/src/test/compile-fail/borrowck-uniq-via-box.rs b/src/test/compile-fail/borrowck-uniq-via-box.rs
index cf0f5439afc..4433dba0c19 100644
--- a/src/test/compile-fail/borrowck-uniq-via-box.rs
+++ b/src/test/compile-fail/borrowck-uniq-via-box.rs
@@ -1,3 +1,6 @@
+// xfail-fast  (compile-flags unsupported on windows)
+// compile-flags:--borrowck=err
+
 fn borrow(_v: &int) {}
 
 fn box_mut(v: @mut ~int) {
diff --git a/src/test/compile-fail/borrowck-uniq-via-lend.rs b/src/test/compile-fail/borrowck-uniq-via-lend.rs
index 78bba1576e8..787285e7bf5 100644
--- a/src/test/compile-fail/borrowck-uniq-via-lend.rs
+++ b/src/test/compile-fail/borrowck-uniq-via-lend.rs
@@ -1,3 +1,6 @@
+// xfail-fast  (compile-flags unsupported on windows)
+// compile-flags:--borrowck=err
+
 fn borrow(_v: &int) {}
 
 fn local() {
diff --git a/src/test/compile-fail/borrowck-uniq-via-ref.rs b/src/test/compile-fail/borrowck-uniq-via-ref.rs
index 156106b880c..b0fae6622d0 100644
--- a/src/test/compile-fail/borrowck-uniq-via-ref.rs
+++ b/src/test/compile-fail/borrowck-uniq-via-ref.rs
@@ -1,3 +1,5 @@
+// xfail-fast  (compile-flags unsupported on windows)
+// compile-flags:--borrowck=err
 fn borrow(_v: &int) {}
 
 fn box_mut(v: &mut ~int) {
diff --git a/src/test/compile-fail/issue-511.rs b/src/test/compile-fail/issue-511.rs
index 793bb48c79a..40d25a37566 100644
--- a/src/test/compile-fail/issue-511.rs
+++ b/src/test/compile-fail/issue-511.rs
@@ -8,6 +8,8 @@ fn f<T>(&o: option<T>) {
 fn main() {
     f::<int>(option::none);
     //!^ ERROR taking mut reference to static item
-    //!^^ ERROR illegal borrow unless pure: creating mutable alias to aliasable, immutable memory
-    //!^^^ NOTE impure due to access to impure function
+
+    // Additional errors reported by borrowck:
+    //^^ ERROR illegal borrow unless pure: creating mutable alias to aliasable, immutable memory
+    //^^^ NOTE impure due to access to impure function
 }
\ No newline at end of file
diff --git a/src/test/compile-fail/unsafe-alias-2.rs b/src/test/compile-fail/unsafe-alias-2.rs
new file mode 100644
index 00000000000..ac20aeec931
--- /dev/null
+++ b/src/test/compile-fail/unsafe-alias-2.rs
@@ -0,0 +1,8 @@
+// error-pattern:invalidate reference x
+
+fn whoknows(x: @mut {mut x: int}) { x.x = 10; }
+
+fn main() {
+    let box = @mut {mut x: 1};
+    alt *box { x { whoknows(box); log(error, x); } }
+}
diff --git a/src/test/compile-fail/unsafe-alias.rs b/src/test/compile-fail/unsafe-alias.rs
new file mode 100644
index 00000000000..0b13c5b5305
--- /dev/null
+++ b/src/test/compile-fail/unsafe-alias.rs
@@ -0,0 +1,10 @@
+// error-pattern:may alias with argument
+
+fn foo(x: {mut x: int}, f: fn@()) { log(debug, x); }
+
+fn whoknows(x: @mut {mut x: int}) { *x = {mut x: 10}; }
+
+fn main() {
+    let box = @mut {mut x: 1};
+    foo(*box, bind whoknows(box));
+}
diff --git a/src/test/compile-fail/unsafe-alt.rs b/src/test/compile-fail/unsafe-alt.rs
new file mode 100644
index 00000000000..498508d8980
--- /dev/null
+++ b/src/test/compile-fail/unsafe-alt.rs
@@ -0,0 +1,8 @@
+// error-pattern:invalidate reference i
+
+enum foo { left({mut x: int}), right(bool) }
+
+fn main() {
+    let mut x = left({mut x: 10});
+    alt x { left(i) { x = right(false); copy x; log(debug, i); } _ { } }
+}
diff --git a/src/test/compile-fail/unsafe-mutable-alias.rs b/src/test/compile-fail/unsafe-mutable-alias.rs
new file mode 100644
index 00000000000..1767eb3983c
--- /dev/null
+++ b/src/test/compile-fail/unsafe-mutable-alias.rs
@@ -0,0 +1,8 @@
+// error-pattern:mut reference to a variable that roots another reference
+
+fn f(a: {mut x: int}, &b: {mut x: int}) -> int {
+    b.x += 1;
+    ret a.x + b.x;
+}
+
+fn main() { let i = {mut x: 4}; log(debug, f(i, i)); }