Skip to content

Commit 3ebfb45

Browse files
committed
Add test for auto trait bounds
1 parent 01ccaab commit 3ebfb45

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

crates/hir-ty/src/tests/traits.rs

+55
Original file line numberDiff line numberDiff line change
@@ -3925,3 +3925,58 @@ fn g(t: &(dyn T + Send)) {
39253925
"#,
39263926
);
39273927
}
3928+
3929+
#[test]
3930+
fn auto_trait_bound() {
3931+
check_types(
3932+
r#"
3933+
//- minicore: sized
3934+
auto trait Send {}
3935+
impl<T> !Send for *const T {}
3936+
3937+
struct Yes;
3938+
trait IsSend { const IS_SEND: Yes; }
3939+
impl<T: Send> IsSend for T { const IS_SEND: Yes = Yes; }
3940+
3941+
struct Struct<T>(T);
3942+
enum Enum<T> { A, B(T) }
3943+
union Union<T> { t: T }
3944+
3945+
#[lang = "phantom_data"]
3946+
struct PhantomData<T: ?Sized>;
3947+
3948+
fn f<T: Send, U>() {
3949+
T::IS_SEND;
3950+
//^^^^^^^^^^Yes
3951+
U::IS_SEND;
3952+
//^^^^^^^^^^{unknown}
3953+
<*const T>::IS_SEND;
3954+
//^^^^^^^^^^^^^^^^^^^{unknown}
3955+
Struct::<T>::IS_SEND;
3956+
//^^^^^^^^^^^^^^^^^^^^Yes
3957+
Struct::<U>::IS_SEND;
3958+
//^^^^^^^^^^^^^^^^^^^^{unknown}
3959+
Struct::<*const T>::IS_SEND;
3960+
//^^^^^^^^^^^^^^^^^^^^^^^^^^^{unknown}
3961+
Enum::<T>::IS_SEND;
3962+
//^^^^^^^^^^^^^^^^^^Yes
3963+
Enum::<U>::IS_SEND;
3964+
//^^^^^^^^^^^^^^^^^^{unknown}
3965+
Enum::<*const T>::IS_SEND;
3966+
//^^^^^^^^^^^^^^^^^^^^^^^^^{unknown}
3967+
Union::<T>::IS_SEND;
3968+
//^^^^^^^^^^^^^^^^^^^Yes
3969+
Union::<U>::IS_SEND;
3970+
//^^^^^^^^^^^^^^^^^^^{unknown}
3971+
Union::<*const T>::IS_SEND;
3972+
//^^^^^^^^^^^^^^^^^^^^^^^^^^{unknown}
3973+
PhantomData::<T>::IS_SEND;
3974+
//^^^^^^^^^^^^^^^^^^^^^^^^^Yes
3975+
PhantomData::<U>::IS_SEND;
3976+
//^^^^^^^^^^^^^^^^^^^^^^^^^{unknown}
3977+
PhantomData::<*const T>::IS_SEND;
3978+
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^{unknown}
3979+
}
3980+
"#,
3981+
);
3982+
}

0 commit comments

Comments
 (0)