Adds a regression test for 137823
This commit is contained in:
parent
0850949213
commit
36f86f9e6a
2 changed files with 53 additions and 0 deletions
|
|
@ -0,0 +1,39 @@
|
|||
//@ build-fail
|
||||
|
||||
// Regression test for issue #137823
|
||||
// Tests that recursive monomorphization with associated types produces
|
||||
// a proper "recursion limit" error instead of an ICE.
|
||||
|
||||
fn convert<S: Converter>() -> S::Out {
|
||||
convert2::<ConvertWrap<S>>()
|
||||
//~^ ERROR: reached the recursion limit while instantiating
|
||||
}
|
||||
|
||||
fn convert2<S: Converter>() -> S::Out {
|
||||
convert::<S>()
|
||||
}
|
||||
|
||||
fn main() {
|
||||
convert::<Ser>();
|
||||
}
|
||||
|
||||
trait Converter {
|
||||
type Out;
|
||||
}
|
||||
|
||||
struct Ser;
|
||||
|
||||
impl Converter for Ser {
|
||||
type Out = ();
|
||||
}
|
||||
|
||||
struct ConvertWrap<S> {
|
||||
_d: S,
|
||||
}
|
||||
|
||||
impl<S> Converter for ConvertWrap<S>
|
||||
where
|
||||
S: Converter,
|
||||
{
|
||||
type Out = S::Out;
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
error: reached the recursion limit while instantiating `convert2::<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<ConvertWrap<Ser>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
|
||||
--> $DIR/recursion-issue-137823.rs:8:5
|
||||
|
|
||||
LL | convert2::<ConvertWrap<S>>()
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
note: `convert2` defined here
|
||||
--> $DIR/recursion-issue-137823.rs:12:1
|
||||
|
|
||||
LL | fn convert2<S: Converter>() -> S::Out {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue