about summary refs log tree commit diff
diff options
context:
space:
mode:
authormarmeladema <xademax@gmail.com>2021-04-23 23:12:21 +0100
committermarmeladema <xademax@gmail.com>2021-04-23 23:12:21 +0100
commit9b430df4dc37c2d96110f808a9313f5127e27def (patch)
tree16deb50fd89045e8720399a7a733e13763089ef7
parenta657e17a7f4348bf95cbda8475cd2cc2507aea8e (diff)
downloadrust-9b430df4dc37c2d96110f808a9313f5127e27def.tar.gz
rust-9b430df4dc37c2d96110f808a9313f5127e27def.zip
Add test for issue #51892
-rw-r--r--src/test/ui/specialization/issue-51892.rs19
-rw-r--r--src/test/ui/specialization/issue-51892.stderr10
2 files changed, 29 insertions, 0 deletions
diff --git a/src/test/ui/specialization/issue-51892.rs b/src/test/ui/specialization/issue-51892.rs
new file mode 100644
index 00000000000..3cd0711ae42
--- /dev/null
+++ b/src/test/ui/specialization/issue-51892.rs
@@ -0,0 +1,19 @@
+#![allow(incomplete_features)]
+#![feature(const_generics)]
+#![feature(const_evaluatable_checked)]
+#![feature(specialization)]
+
+pub trait Trait {
+    type Type;
+}
+
+impl<T: ?Sized> Trait for T {
+    default type Type = [u8; 1];
+}
+
+impl<T: Trait> Trait for *const T {
+    type Type = [u8; std::mem::size_of::<<T as Trait>::Type>()];
+    //~^ ERROR: unconstrained generic constant
+}
+
+fn main() {}
diff --git a/src/test/ui/specialization/issue-51892.stderr b/src/test/ui/specialization/issue-51892.stderr
new file mode 100644
index 00000000000..2d30164380a
--- /dev/null
+++ b/src/test/ui/specialization/issue-51892.stderr
@@ -0,0 +1,10 @@
+error: unconstrained generic constant
+  --> $DIR/issue-51892.rs:15:5
+   |
+LL |     type Type = [u8; std::mem::size_of::<<T as Trait>::Type>()];
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |
+   = help: try adding a `where` bound using this expression: `where [(); std::mem::size_of::<<T as Trait>::Type>()]:`
+
+error: aborting due to previous error
+