about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMazdak Farrokhzad <twingoow@gmail.com>2019-06-09 00:20:36 +0200
committerGitHub <noreply@github.com>2019-06-09 00:20:36 +0200
commit18ca48d746c345f780914cc85d6049ff9a179635 (patch)
tree02a026c51ca8abf4cccf85fc77c0a7eaaa87f302
parent21b5c1d51e9fcf26eca5a1ccc8dfaee5240f7522 (diff)
parentd69d0d7aa76af6496c6d623990ae6e20ecc4f947 (diff)
downloadrust-18ca48d746c345f780914cc85d6049ff9a179635.tar.gz
rust-18ca48d746c345f780914cc85d6049ff9a179635.zip
Rollup merge of #61666 - JohnTitor:add-test-for-ice, r=Centril
Add test for trait ICE

Closes #55266
-rw-r--r--src/test/ui/traits/trait-with-dst.rs22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/test/ui/traits/trait-with-dst.rs b/src/test/ui/traits/trait-with-dst.rs
new file mode 100644
index 00000000000..86d6585bc61
--- /dev/null
+++ b/src/test/ui/traits/trait-with-dst.rs
@@ -0,0 +1,22 @@
+// compile-pass
+// #55266
+
+struct VTable<DST: ?Sized> {
+    _to_dst_ptr: fn(*mut ()) -> *mut DST,
+}
+
+trait HasVTableFor<DST: ?Sized + 'static> {
+    const VTABLE: &'static VTable<DST>;
+}
+
+impl<T, DST: ?Sized + 'static> HasVTableFor<DST> for T {
+    const VTABLE: &'static VTable<DST> = &VTable {
+        _to_dst_ptr: |_: *mut ()| unsafe { std::mem::zeroed() },
+    };
+}
+
+pub fn push<DST: ?Sized + 'static, T>() {
+    <T as HasVTableFor<DST>>::VTABLE;
+}
+
+fn main() {}