diff options
| author | Brian Anderson <banderson@mozilla.com> | 2012-06-07 19:42:22 -0700 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-06-07 19:42:27 -0700 |
| commit | 7ef825bb607c4e934c92bd0b73ecbc4c24f3286b (patch) | |
| tree | c5800f031f1959f2d91c61b890547a3b37f3a0af /src/test/compile-fail | |
| parent | c058f1d9927874fd5bfe40d5e6698880a07c36bb (diff) | |
| download | rust-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')
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)); } |
