summaryrefslogtreecommitdiffstats
path: root/src/test/ui/recursion/issue-26548-recursion-via-normalize.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/recursion/issue-26548-recursion-via-normalize.rs')
-rw-r--r--src/test/ui/recursion/issue-26548-recursion-via-normalize.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/test/ui/recursion/issue-26548-recursion-via-normalize.rs b/src/test/ui/recursion/issue-26548-recursion-via-normalize.rs
new file mode 100644
index 000000000..91958dffc
--- /dev/null
+++ b/src/test/ui/recursion/issue-26548-recursion-via-normalize.rs
@@ -0,0 +1,17 @@
+//~ ERROR cycle detected when computing layout of `core::option::Option<S>`
+//~| NOTE ...which requires computing layout of `S`...
+//~| NOTE ...which requires computing layout of `core::option::Option<<S as Mirror>::It>`...
+//~| NOTE ...which again requires computing layout of `core::option::Option<S>`, completing the cycle
+//~| NOTE cycle used when computing layout of `core::option::Option<<S as Mirror>::It>`
+
+trait Mirror {
+ type It: ?Sized;
+}
+impl<T: ?Sized> Mirror for T {
+ type It = Self;
+}
+struct S(Option<<S as Mirror>::It>);
+
+fn main() {
+ let _s = S(None);
+}