Fix ICE on type alias in recursion
This commit is contained in:
parent
f4f5fc3e5c
commit
21bcd2ee9c
4 changed files with 28 additions and 2 deletions
2
tests/ui/infinite/auxiliary/alias.rs
Normal file
2
tests/ui/infinite/auxiliary/alias.rs
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
pub struct W<T>(T);
|
||||
pub type Wrapper<T> = W<T>;
|
||||
9
tests/ui/infinite/infinite-alias.rs
Normal file
9
tests/ui/infinite/infinite-alias.rs
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
// aux-build: alias.rs
|
||||
// regression test for 108160
|
||||
|
||||
extern crate alias;
|
||||
|
||||
use alias::Wrapper;
|
||||
struct Rec(Wrapper<Rec>); //~ ERROR recursive type `Rec` has infinite
|
||||
|
||||
fn main() {}
|
||||
14
tests/ui/infinite/infinite-alias.stderr
Normal file
14
tests/ui/infinite/infinite-alias.stderr
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
error[E0072]: recursive type `Rec` has infinite size
|
||||
--> $DIR/infinite-alias.rs:7:1
|
||||
|
|
||||
LL | struct Rec(Wrapper<Rec>);
|
||||
| ^^^^^^^^^^ ------------ recursive without indirection
|
||||
|
|
||||
help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle
|
||||
|
|
||||
LL | struct Rec(Box<Wrapper<Rec>>);
|
||||
| ++++ +
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0072`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue