add test for opaque type with non-universal region substs #101852

Fixes #101852
This commit is contained in:
Matthias Krüger 2024-03-23 12:01:39 +01:00
parent 12e362989b
commit 2f9a240b91
2 changed files with 36 additions and 0 deletions

View File

@ -0,0 +1,12 @@
// issue: rust-lang/rust#101852
// ICE opaque type with non-universal region substs
pub fn ice(x: impl AsRef<str>) -> impl IntoIterator<Item = ()> {
//~^ WARN function cannot return without recursing
vec![].append(&mut ice(x.as_ref()));
//~^ ERROR expected generic type parameter, found `&str`
Vec::new()
}
fn main() {}

View File

@ -0,0 +1,24 @@
warning: function cannot return without recursing
--> $DIR/recursive-ice-101862.rs:4:1
|
LL | pub fn ice(x: impl AsRef<str>) -> impl IntoIterator<Item = ()> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot return without recursing
LL |
LL | vec![].append(&mut ice(x.as_ref()));
| --------------- recursive call site
|
= help: a `loop` may express intention better if this is on purpose
= note: `#[warn(unconditional_recursion)]` on by default
error[E0792]: expected generic type parameter, found `&str`
--> $DIR/recursive-ice-101862.rs:6:5
|
LL | pub fn ice(x: impl AsRef<str>) -> impl IntoIterator<Item = ()> {
| --------------- this generic parameter must be used with a generic type parameter
LL |
LL | vec![].append(&mut ice(x.as_ref()));
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: aborting due to 1 previous error; 1 warning emitted
For more information about this error, try `rustc --explain E0792`.