change borrowck error msg: 'declared in outer block' -> 'captured in a closure' (properly this time)
This commit is contained in:
parent
e41029d236
commit
8ffab392ab
8 changed files with 12 additions and 10 deletions
|
@ -467,7 +467,9 @@ impl to_str_methods for borrowck_ctxt {
|
||||||
cat_special(sk_method) { "method" }
|
cat_special(sk_method) { "method" }
|
||||||
cat_special(sk_static_item) { "static item" }
|
cat_special(sk_static_item) { "static item" }
|
||||||
cat_special(sk_self) { "self reference" }
|
cat_special(sk_self) { "self reference" }
|
||||||
cat_special(sk_heap_upvar) { "variable declared in an outer block" }
|
cat_special(sk_heap_upvar) {
|
||||||
|
"captured outer variable in a heap closure"
|
||||||
|
}
|
||||||
cat_rvalue { "non-lvalue" }
|
cat_rvalue { "non-lvalue" }
|
||||||
cat_local(_) { mut_str + " local variable" }
|
cat_local(_) { mut_str + " local variable" }
|
||||||
cat_binding(_) { "pattern binding" }
|
cat_binding(_) { "pattern binding" }
|
||||||
|
@ -475,7 +477,7 @@ impl to_str_methods for borrowck_ctxt {
|
||||||
cat_deref(_, _, pk) { #fmt["dereference of %s %s pointer",
|
cat_deref(_, _, pk) { #fmt["dereference of %s %s pointer",
|
||||||
mut_str, self.pk_to_sigil(pk)] }
|
mut_str, self.pk_to_sigil(pk)] }
|
||||||
cat_stack_upvar(_) {
|
cat_stack_upvar(_) {
|
||||||
mut_str + " variable declared in an outer block"
|
"captured outer " + mut_str + " variable in a stack closure"
|
||||||
}
|
}
|
||||||
cat_comp(_, comp_field(*)) { mut_str + " field" }
|
cat_comp(_, comp_field(*)) { mut_str + " field" }
|
||||||
cat_comp(_, comp_tuple) { "tuple content" }
|
cat_comp(_, comp_tuple) { "tuple content" }
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// error-pattern:moving out of immutable variable declared in an outer block
|
// error-pattern:moving out of captured outer immutable variable in a stack closure
|
||||||
fn force(f: fn()) { f(); }
|
fn force(f: fn()) { f(); }
|
||||||
fn main() {
|
fn main() {
|
||||||
let mut x = @{x: 17, y: 2};
|
let mut x = @{x: 17, y: 2};
|
||||||
|
|
|
@ -63,7 +63,7 @@ fn loop_in_block() {
|
||||||
let mut v = ~3, w = ~4;
|
let mut v = ~3, w = ~4;
|
||||||
let mut _x = &mut w;
|
let mut _x = &mut w;
|
||||||
for uint::range(0u, 10u) |_i| {
|
for uint::range(0u, 10u) |_i| {
|
||||||
borrow(v); //~ ERROR loan of mutable variable declared in an outer block as immutable conflicts with prior loan
|
borrow(v); //~ ERROR loan of captured outer mutable variable in a stack closure as immutable conflicts with prior loan
|
||||||
_x = &mut v; //~ NOTE prior loan as mutable granted here
|
_x = &mut v; //~ NOTE prior loan as mutable granted here
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -77,7 +77,7 @@ fn at_most_once_block() {
|
||||||
let mut v = ~3, w = ~4;
|
let mut v = ~3, w = ~4;
|
||||||
let mut _x = &mut w;
|
let mut _x = &mut w;
|
||||||
do at_most_once {
|
do at_most_once {
|
||||||
borrow(v); //~ ERROR loan of mutable variable declared in an outer block as immutable conflicts with prior loan
|
borrow(v); //~ ERROR loan of captured outer mutable variable in a stack closure as immutable conflicts with prior loan
|
||||||
_x = &mut v; //~ NOTE prior loan as mutable granted here
|
_x = &mut v; //~ NOTE prior loan as mutable granted here
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ fn borrow(v: &int, f: fn(x: &int)) {
|
||||||
fn box_imm() {
|
fn box_imm() {
|
||||||
let mut v = ~3;
|
let mut v = ~3;
|
||||||
do borrow(v) |w| { //~ NOTE loan of mutable local variable granted here
|
do borrow(v) |w| { //~ NOTE loan of mutable local variable granted here
|
||||||
v = ~4; //~ ERROR assigning to mutable variable declared in an outer block prohibited due to outstanding loan
|
v = ~4; //~ ERROR assigning to captured outer mutable variable in a stack closure prohibited due to outstanding loan
|
||||||
assert *v == 3;
|
assert *v == 3;
|
||||||
assert *w == 4;
|
assert *w == 4;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
fn main() {
|
fn main() {
|
||||||
let x = 5;
|
let x = 5;
|
||||||
let _y = fn~(move x) -> int {
|
let _y = fn~(move x) -> int {
|
||||||
let _z = fn~(move x) -> int { x }; //~ ERROR moving out of variable declared in an outer block
|
let _z = fn~(move x) -> int { x }; //~ ERROR moving out of captured outer variable in a heap closure
|
||||||
22
|
22
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// error-pattern:moving out of immutable variable declared in an outer block
|
// error-pattern:moving out of captured outer immutable variable in a stack closure
|
||||||
fn test(-x: uint) {}
|
fn test(-x: uint) {}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// error-pattern:assigning to immutable variable declared in an outer block
|
// error-pattern:assigning to captured outer immutable variable in a stack closure
|
||||||
// Make sure that nesting a block within a fn@ doesn't let us
|
// Make sure that nesting a block within a fn@ doesn't let us
|
||||||
// mutate upvars from a fn@.
|
// mutate upvars from a fn@.
|
||||||
fn f2(x: fn()) { x(); }
|
fn f2(x: fn()) { x(); }
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// error-pattern:assigning to variable declared in an outer block
|
// error-pattern:assigning to captured outer variable in a heap closure
|
||||||
// Make sure we can't write to upvars from fn@s
|
// Make sure we can't write to upvars from fn@s
|
||||||
fn main() {
|
fn main() {
|
||||||
let i = 0;
|
let i = 0;
|
||||||
|
|
Loading…
Reference in a new issue