about summary refs log tree commit diff
diff options
context:
space:
mode:
author许杰友 Jieyou Xu (Joe) <39484203+jieyouxu@users.noreply.github.com>2024-11-30 12:56:51 +0800
committerGitHub <noreply@github.com>2024-11-30 12:56:51 +0800
commitf1d9ba8741b5ea86e5300452b2cd718655be3141 (patch)
tree2c3178024832170fb02a00d8b4af5a38521a6d2b
parent51928108680c2316bc2156dcd4e25a7461bcba87 (diff)
parent7fc4b963470de530a212f2b7eb87a0aeddba9a04 (diff)
downloadrust-f1d9ba8741b5ea86e5300452b2cd718655be3141.tar.gz
rust-f1d9ba8741b5ea86e5300452b2cd718655be3141.zip
Rollup merge of #133488 - Enselic:recurse-2, r=BoxyUwU
tests: Add regression test for self referential structs with cow as last field

Making compilation pass for this code was retroactively stabilized via FCP in 1.79. The code does not compile in 1.78.

See https://github.com/rust-lang/rust/issues/129541 for details.

Closes #107481
-rw-r--r--tests/ui/traits/solver-cycles/107481-self-referential-struct-cow-as-last-field.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/tests/ui/traits/solver-cycles/107481-self-referential-struct-cow-as-last-field.rs b/tests/ui/traits/solver-cycles/107481-self-referential-struct-cow-as-last-field.rs
new file mode 100644
index 00000000000..f953eb1c0f7
--- /dev/null
+++ b/tests/ui/traits/solver-cycles/107481-self-referential-struct-cow-as-last-field.rs
@@ -0,0 +1,19 @@
+// Regression test for #107481
+
+//@ check-pass
+
+use std::{borrow::Cow, collections::HashMap};
+
+#[derive(Clone)]
+struct Foo<'a>(Cow<'a, [Self]>);
+
+#[derive(Clone)]
+struct Bar<'a>(Cow<'a, HashMap<String, Self>>);
+
+#[derive(Clone)]
+struct Baz<'a>(Cow<'a, Vec<Self>>);
+
+#[derive(Clone)]
+struct Qux<'a>(Cow<'a, Box<Self>>);
+
+fn main() {}