about summary refs log tree commit diff
path: root/src/test/ui
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2022-02-13 19:57:23 -0800
committerMichael Goulet <michael@errs.io>2022-03-03 21:55:47 -0800
commit1d834cb657d4911535a01af38e974d11d081e9f4 (patch)
tree7002fa486dabb13ba31df4afde2b7cb257cff425 /src/test/ui
parentef0ba1d2cead709f11fe7912e0d2bd8c3f5e1b28 (diff)
downloadrust-1d834cb657d4911535a01af38e974d11d081e9f4.tar.gz
rust-1d834cb657d4911535a01af38e974d11d081e9f4.zip
opaque types may also be sized
Diffstat (limited to 'src/test/ui')
-rw-r--r--src/test/ui/traits/pointee-tail-is-generic.rs23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/test/ui/traits/pointee-tail-is-generic.rs b/src/test/ui/traits/pointee-tail-is-generic.rs
index 097881256ba..e0da0fc3861 100644
--- a/src/test/ui/traits/pointee-tail-is-generic.rs
+++ b/src/test/ui/traits/pointee-tail-is-generic.rs
@@ -1,12 +1,29 @@
 // check-pass
+// edition:2018
 
 #![feature(ptr_metadata)]
+#![feature(type_alias_impl_trait)]
+
+type Opaque = impl std::future::Future;
+
+fn opaque() -> Opaque {
+    async {}
+}
 
 fn a<T>() {
-    b::<T>();
-    b::<std::cell::Cell<T>>();
+    // type parameter T is known to be sized
+    is_thin::<T>();
+    // tail of ADT (which is a type param) is known to be sized
+    is_thin::<std::cell::Cell<T>>();
+    // opaque type is known to be sized
+    is_thin::<Opaque>();
+}
+
+fn a2<T: Iterator>() {
+    // associated type is known to be sized
+    is_thin::<T::Item>();
 }
 
-fn b<T: std::ptr::Pointee<Metadata = ()>>() {}
+fn is_thin<T: std::ptr::Pointee<Metadata = ()>>() {}
 
 fn main() {}