diff --git a/src/test/ui/borrowck/issue-63026.rs b/src/test/ui/borrowck/issue-63026.rs deleted file mode 100644 index 86240a6914871..0000000000000 --- a/src/test/ui/borrowck/issue-63026.rs +++ /dev/null @@ -1,18 +0,0 @@ -use std::collections::HashMap; -use std::hash::Hash; - -fn group_by(xs: &mut I, f: F) -> HashMap> -where - I: Iterator, - F: Fn(&I::Item) -> T, - T: Eq + Hash, -{ - let mut result = HashMap::new(); - for ref x in xs { - let key = f(x); - result.entry(key).or_insert(Vec::new()).push(x); - } - result //~ ERROR cannot return value referencing local binding -} - -fn main() {} diff --git a/src/test/ui/borrowck/return-local-binding-from-desugaring.rs b/src/test/ui/borrowck/return-local-binding-from-desugaring.rs new file mode 100644 index 0000000000000..b2dcd54ec2e90 --- /dev/null +++ b/src/test/ui/borrowck/return-local-binding-from-desugaring.rs @@ -0,0 +1,33 @@ +// To avoid leaking the names of local bindings from expressions like for loops, #60984 +// explicitly ignored them, but an assertion that `LocalKind::Var` *must* have a name would +// trigger an ICE. Before this change, this file's output would be: +// ``` +// error[E0515]: cannot return value referencing local variable `__next` +// --> return-local-binding-from-desugaring.rs:LL:CC +// | +// LL | for ref x in xs { +// | ----- `__next` is borrowed here +// ... +// LL | result +// | ^^^^^^ returns a value referencing data owned by the current function +// ``` +// FIXME: ideally `LocalKind` would carry more information to more accurately explain the problem. + +use std::collections::HashMap; +use std::hash::Hash; + +fn group_by(xs: &mut I, f: F) -> HashMap> +where + I: Iterator, + F: Fn(&I::Item) -> T, + T: Eq + Hash, +{ + let mut result = HashMap::new(); + for ref x in xs { + let key = f(x); + result.entry(key).or_insert(Vec::new()).push(x); + } + result //~ ERROR cannot return value referencing local binding +} + +fn main() {} diff --git a/src/test/ui/borrowck/issue-63026.stderr b/src/test/ui/borrowck/return-local-binding-from-desugaring.stderr similarity index 86% rename from src/test/ui/borrowck/issue-63026.stderr rename to src/test/ui/borrowck/return-local-binding-from-desugaring.stderr index 2289a03e014ff..293dbe6281313 100644 --- a/src/test/ui/borrowck/issue-63026.stderr +++ b/src/test/ui/borrowck/return-local-binding-from-desugaring.stderr @@ -1,5 +1,5 @@ error[E0515]: cannot return value referencing local binding - --> $DIR/issue-63026.rs:15:5 + --> $DIR/return-local-binding-from-desugaring.rs:30:5 | LL | for ref x in xs { | -- local binding introduced here