File tree 2 files changed +39
-0
lines changed
src/test/ui/type-alias-impl-trait
2 files changed +39
-0
lines changed Original file line number Diff line number Diff line change
1
+ #![ feature( type_alias_impl_trait) ]
2
+ #![ allow( dead_code) ]
3
+
4
+ mod m {
5
+ use std:: rc:: Rc ;
6
+
7
+ type Foo = impl std:: fmt:: Debug ;
8
+
9
+ pub fn foo ( ) -> Foo {
10
+ Rc :: new ( 22_u32 )
11
+ }
12
+ }
13
+
14
+ fn is_send < T : Send > ( _: T ) { }
15
+
16
+ fn main ( ) {
17
+ is_send ( m:: foo ( ) ) ;
18
+ //~^ ERROR: `Rc<u32>` cannot be sent between threads safely [E0277]
19
+ }
Original file line number Diff line number Diff line change
1
+ error[E0277]: `Rc<u32>` cannot be sent between threads safely
2
+ --> $DIR/auto-trait-leakage2.rs:17:5
3
+ |
4
+ LL | type Foo = impl std::fmt::Debug;
5
+ | -------------------- within this `impl Debug`
6
+ ...
7
+ LL | is_send(m::foo());
8
+ | ^^^^^^^ `Rc<u32>` cannot be sent between threads safely
9
+ |
10
+ = help: within `impl Debug`, the trait `Send` is not implemented for `Rc<u32>`
11
+ = note: required because it appears within the type `impl Debug`
12
+ note: required by a bound in `is_send`
13
+ --> $DIR/auto-trait-leakage2.rs:14:15
14
+ |
15
+ LL | fn is_send<T: Send>(_: T) {}
16
+ | ^^^^ required by this bound in `is_send`
17
+
18
+ error: aborting due to previous error
19
+
20
+ For more information about this error, try `rustc --explain E0277`.
You can’t perform that action at this time.
0 commit comments