about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRalf Jung <post@ralfj.de>2022-07-02 15:21:16 -0400
committerGitHub <noreply@github.com>2022-07-02 15:21:16 -0400
commit27983d3498eb684d76e7ec8caefe4f75777511d9 (patch)
tree461a8f5439664f5327a4ad733a43b5b0d6f5a464
parent6a1092056441652fe5fe5c5b422644951e6b99ce (diff)
parent9facb6c7ddcd63020b406746926bcee5dc288044 (diff)
downloadrust-27983d3498eb684d76e7ec8caefe4f75777511d9.tar.gz
rust-27983d3498eb684d76e7ec8caefe4f75777511d9.zip
Rollup merge of #98701 - TaKO8Ki:add-regression-test-for-50439, r=Mark-Simulacrum
Add regression test for #50439

closes #50439
-rw-r--r--src/test/ui/consts/issue-50439.rs29
-rw-r--r--src/test/ui/consts/issue-50439.stderr10
2 files changed, 39 insertions, 0 deletions
diff --git a/src/test/ui/consts/issue-50439.rs b/src/test/ui/consts/issue-50439.rs
new file mode 100644
index 00000000000..0be7c405473
--- /dev/null
+++ b/src/test/ui/consts/issue-50439.rs
@@ -0,0 +1,29 @@
+#![feature(specialization)]
+#![allow(incomplete_features)]
+
+pub trait ReflectDrop {
+    const REFLECT_DROP: bool = false;
+}
+
+impl<T> ReflectDrop for T where T: Clone {}
+
+pub trait PinDropInternal {
+    fn is_valid()
+    where
+        Self: ReflectDrop;
+}
+
+struct Bears<T>(T);
+
+default impl<T> ReflectDrop for Bears<T> {}
+
+impl<T: Sized> PinDropInternal for Bears<T> {
+    fn is_valid()
+    where
+        Self: ReflectDrop,
+    {
+        let _ = [(); 0 - !!(<Bears<T> as ReflectDrop>::REFLECT_DROP) as usize]; //~ ERROR constant expression depends on a generic parameter
+    }
+}
+
+fn main() {}
diff --git a/src/test/ui/consts/issue-50439.stderr b/src/test/ui/consts/issue-50439.stderr
new file mode 100644
index 00000000000..3fbdf33b2d8
--- /dev/null
+++ b/src/test/ui/consts/issue-50439.stderr
@@ -0,0 +1,10 @@
+error: constant expression depends on a generic parameter
+  --> $DIR/issue-50439.rs:25:22
+   |
+LL |         let _ = [(); 0 - !!(<Bears<T> as ReflectDrop>::REFLECT_DROP) as usize];
+   |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |
+   = note: this may fail depending on what value the parameter takes
+
+error: aborting due to previous error
+