diff options
| author | Noah Lev <camelidcamel@gmail.com> | 2021-08-21 14:37:24 -0700 |
|---|---|---|
| committer | Noah Lev <camelidcamel@gmail.com> | 2021-08-27 14:50:52 -0700 |
| commit | c3df8328241bc0b10a5a77fae532aec795869c20 (patch) | |
| tree | eb02b2fa69841920aac968c1e0340c090aa51913 | |
| parent | c8619647359903a707891e7d40f68264d1e6ed94 (diff) | |
| download | rust-c3df8328241bc0b10a5a77fae532aec795869c20.tar.gz rust-c3df8328241bc0b10a5a77fae532aec795869c20.zip | |
Add test for type alias mutual recursion
| -rw-r--r-- | src/test/ui/infinite/infinite-type-alias-mutual-recursion.rs | 6 | ||||
| -rw-r--r-- | src/test/ui/infinite/infinite-type-alias-mutual-recursion.stderr | 34 |
2 files changed, 40 insertions, 0 deletions
diff --git a/src/test/ui/infinite/infinite-type-alias-mutual-recursion.rs b/src/test/ui/infinite/infinite-type-alias-mutual-recursion.rs new file mode 100644 index 00000000000..5381eedcfac --- /dev/null +++ b/src/test/ui/infinite/infinite-type-alias-mutual-recursion.rs @@ -0,0 +1,6 @@ +type X1 = X2; +//~^ ERROR cycle detected when expanding type alias `X1` +type X2 = X3; +type X3 = X1; + +fn main() {} diff --git a/src/test/ui/infinite/infinite-type-alias-mutual-recursion.stderr b/src/test/ui/infinite/infinite-type-alias-mutual-recursion.stderr new file mode 100644 index 00000000000..7f82b294434 --- /dev/null +++ b/src/test/ui/infinite/infinite-type-alias-mutual-recursion.stderr @@ -0,0 +1,34 @@ +error[E0391]: cycle detected when expanding type alias `X1` + --> $DIR/infinite-type-alias-mutual-recursion.rs:1:11 + | +LL | type X1 = X2; + | ^^ + | +note: ...which requires expanding type alias `X2`... + --> $DIR/infinite-type-alias-mutual-recursion.rs:3:11 + | +LL | type X2 = X3; + | ^^ +note: ...which requires expanding type alias `X3`... + --> $DIR/infinite-type-alias-mutual-recursion.rs:4:11 + | +LL | type X3 = X1; + | ^^ + = note: ...which again requires expanding type alias `X1`, completing the cycle + = note: type aliases cannot be recursive + = help: consider using a struct, enum, or union instead to break the cycle + = help: see <https://doc.rust-lang.org/reference/types.html#recursive-types> for more information +note: cycle used when collecting item types in top-level module + --> $DIR/infinite-type-alias-mutual-recursion.rs:1:1 + | +LL | / type X1 = X2; +LL | | +LL | | type X2 = X3; +LL | | type X3 = X1; +LL | | +LL | | fn main() {} + | |____________^ + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0391`. |
