Skip to content

Commit eaaa78d

Browse files
committed
Add test for auto trait bounds
1 parent 9a3c91e commit eaaa78d

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
@@ -3833,3 +3833,58 @@ fn test() {
38333833
"#,
38343834
)
38353835
}
3836+
3837+
#[test]
3838+
fn auto_trait_bound() {
3839+
check_types(
3840+
r#"
3841+
//- minicore: sized
3842+
auto trait Send {}
3843+
impl<T> !Send for *const T {}
3844+
3845+
struct Yes;
3846+
trait IsSend { const IS_SEND: Yes; }
3847+
impl<T: Send> IsSend for T { const IS_SEND: Yes = Yes; }
3848+
3849+
struct Struct<T>(T);
3850+
enum Enum<T> { A, B(T) }
3851+
union Union<T> { t: T }
3852+
3853+
#[lang = "phantom_data"]
3854+
struct PhantomData<T: ?Sized>;
3855+
3856+
fn f<T: Send, U>() {
3857+
T::IS_SEND;
3858+
//^^^^^^^^^^Yes
3859+
U::IS_SEND;
3860+
//^^^^^^^^^^{unknown}
3861+
<*const T>::IS_SEND;
3862+
//^^^^^^^^^^^^^^^^^^^{unknown}
3863+
Struct::<T>::IS_SEND;
3864+
//^^^^^^^^^^^^^^^^^^^^Yes
3865+
Struct::<U>::IS_SEND;
3866+
//^^^^^^^^^^^^^^^^^^^^{unknown}
3867+
Struct::<*const T>::IS_SEND;
3868+
//^^^^^^^^^^^^^^^^^^^^^^^^^^^{unknown}
3869+
Enum::<T>::IS_SEND;
3870+
//^^^^^^^^^^^^^^^^^^Yes
3871+
Enum::<U>::IS_SEND;
3872+
//^^^^^^^^^^^^^^^^^^{unknown}
3873+
Enum::<*const T>::IS_SEND;
3874+
//^^^^^^^^^^^^^^^^^^^^^^^^^{unknown}
3875+
Union::<T>::IS_SEND;
3876+
//^^^^^^^^^^^^^^^^^^^Yes
3877+
Union::<U>::IS_SEND;
3878+
//^^^^^^^^^^^^^^^^^^^{unknown}
3879+
Union::<*const T>::IS_SEND;
3880+
//^^^^^^^^^^^^^^^^^^^^^^^^^^{unknown}
3881+
PhantomData::<T>::IS_SEND;
3882+
//^^^^^^^^^^^^^^^^^^^^^^^^^Yes
3883+
PhantomData::<U>::IS_SEND;
3884+
//^^^^^^^^^^^^^^^^^^^^^^^^^{unknown}
3885+
PhantomData::<*const T>::IS_SEND;
3886+
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^{unknown}
3887+
}
3888+
"#,
3889+
);
3890+
}

0 commit comments

Comments
 (0)