From cca9e63d70ce23d2c042a02fe4ac212ef967784f Mon Sep 17 00:00:00 2001
From: Yuki Okushi <jtitor@2k36.org>
Date: Wed, 25 May 2022 22:14:20 +0900
Subject: [PATCH] Add regression test for #82830

---
 src/test/ui/traits/issue-82830.rs     | 16 ++++++++++++++++
 src/test/ui/traits/issue-82830.stderr | 15 +++++++++++++++
 2 files changed, 31 insertions(+)
 create mode 100644 src/test/ui/traits/issue-82830.rs
 create mode 100644 src/test/ui/traits/issue-82830.stderr

diff --git a/src/test/ui/traits/issue-82830.rs b/src/test/ui/traits/issue-82830.rs
new file mode 100644
index 00000000000..c8289b2e30b
--- /dev/null
+++ b/src/test/ui/traits/issue-82830.rs
@@ -0,0 +1,16 @@
+trait A<Y, N> {
+    type B;
+}
+
+type MaybeBox<T> = <T as A<T, Box<T>>>::B;
+struct P {
+    t: MaybeBox<P>, //~ ERROR: overflow evaluating the requirement `P: Sized`
+}
+
+impl<Y, N> A<Y, N> for P {
+    type B = N;
+}
+
+fn main() {
+    let t: MaybeBox<P>;
+}
diff --git a/src/test/ui/traits/issue-82830.stderr b/src/test/ui/traits/issue-82830.stderr
new file mode 100644
index 00000000000..f863143c738
--- /dev/null
+++ b/src/test/ui/traits/issue-82830.stderr
@@ -0,0 +1,15 @@
+error[E0275]: overflow evaluating the requirement `P: Sized`
+  --> $DIR/issue-82830.rs:7:8
+   |
+LL |     t: MaybeBox<P>,
+   |        ^^^^^^^^^^^
+   |
+note: required because of the requirements on the impl of `A<P, Box<P>>` for `P`
+  --> $DIR/issue-82830.rs:10:12
+   |
+LL | impl<Y, N> A<Y, N> for P {
+   |            ^^^^^^^     ^
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0275`.