about summary refs log tree commit diff
path: root/src/test/ui/recursion/issue-38591-non-regular-dropck-recursion.rs
diff options
context:
space:
mode:
authorMatthew Jasper <mjjasper1@gmail.com>2019-12-30 13:30:34 +0000
committerMatthew Jasper <mjjasper1@gmail.com>2019-12-30 13:41:07 +0000
commit4843f227885bf23a34cc8485173c11601b00d977 (patch)
tree5d56ca4ff8eca066afc1df30590583142743dcc3 /src/test/ui/recursion/issue-38591-non-regular-dropck-recursion.rs
parent580ac0b4f1c6f9cf76f6edafdaf9806437770aff (diff)
downloadrust-4843f227885bf23a34cc8485173c11601b00d977.tar.gz
rust-4843f227885bf23a34cc8485173c11601b00d977.zip
Handle recursive instantiation of drop shims
Diffstat (limited to 'src/test/ui/recursion/issue-38591-non-regular-dropck-recursion.rs')
-rw-r--r--src/test/ui/recursion/issue-38591-non-regular-dropck-recursion.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/test/ui/recursion/issue-38591-non-regular-dropck-recursion.rs b/src/test/ui/recursion/issue-38591-non-regular-dropck-recursion.rs
new file mode 100644
index 00000000000..0fcf77d8722
--- /dev/null
+++ b/src/test/ui/recursion/issue-38591-non-regular-dropck-recursion.rs
@@ -0,0 +1,17 @@
+// Dropck shouldn't hit a recursion limit from checking `S<u32>` since it has
+// no free regions or type parameters.
+// Codegen however, has to error for the infinitely many `real_drop_in_place`
+// functions it has been asked to create.
+// build-fail
+
+struct S<T> {
+    t: T,
+    s: Box<S<fn(u: T)>>,
+}
+
+fn f(x: S<u32>) {}
+
+fn main() {
+    // Force instantiation.
+    f as fn(_);
+}