File tree 8 files changed +131
-0
lines changed
8 files changed +131
-0
lines changed Original file line number Diff line number Diff line change
1
+ trait Bar {
2
+ const X : usize ;
3
+ fn return_n ( & self ) -> [ u8 ; Bar :: X ] ; //~ ERROR: type annotations needed
4
+ }
5
+
6
+ impl dyn Bar { } //~ ERROR: the trait `Bar` cannot be made into an object
7
+
8
+ fn main ( ) { }
Original file line number Diff line number Diff line change
1
+ error[E0038]: the trait `Bar` cannot be made into an object
2
+ --> $DIR/issue-48027.rs:6:6
3
+ |
4
+ LL | const X: usize;
5
+ | - the trait cannot contain associated consts like `X`
6
+ ...
7
+ LL | impl dyn Bar {}
8
+ | ^^^^^^^ the trait `Bar` cannot be made into an object
9
+
10
+ error[E0283]: type annotations needed: cannot resolve `_: Bar`
11
+ --> $DIR/issue-48027.rs:3:32
12
+ |
13
+ LL | const X: usize;
14
+ | --------------- required by `Bar::X`
15
+ LL | fn return_n(&self) -> [u8; Bar::X];
16
+ | ^^^^^^
17
+
18
+ error: aborting due to 2 previous errors
19
+
20
+ Some errors have detailed explanations: E0038, E0283.
21
+ For more information about an error, try `rustc --explain E0038`.
Original file line number Diff line number Diff line change
1
+ pub trait Array {
2
+ type Element ;
3
+ }
4
+
5
+ pub trait Visit {
6
+ fn visit ( ) { }
7
+ }
8
+
9
+ impl Array for ( ) {
10
+ type Element = ( ) ;
11
+ }
12
+
13
+ impl < ' a > Visit for ( ) where
14
+ ( ) : Array < Element =& ' a ( ) > ,
15
+ { }
16
+
17
+ fn main ( ) {
18
+ <( ) as Visit >:: visit ( ) ; //~ ERROR: type mismatch resolving
19
+ }
Original file line number Diff line number Diff line change
1
+ error[E0271]: type mismatch resolving `<() as Array>::Element == &()`
2
+ --> $DIR/issue-44153.rs:18:5
3
+ |
4
+ LL | fn visit() {}
5
+ | ---------- required by `Visit::visit`
6
+ ...
7
+ LL | <() as Visit>::visit();
8
+ | ^^^^^^^^^^^^^^^^^^^^ expected (), found &()
9
+ |
10
+ = note: expected type `()`
11
+ found type `&()`
12
+ = note: required because of the requirements on the impl of `Visit` for `()`
13
+
14
+ error: aborting due to previous error
15
+
16
+ For more information about this error, try `rustc --explain E0271`.
Original file line number Diff line number Diff line change
1
+ // check-pass
2
+
3
+ #![ crate_type = "lib" ]
4
+
5
+ pub struct Foo ;
6
+
7
+ pub struct Path < T : Bar > {
8
+ _inner : T :: Slice ,
9
+ }
10
+
11
+ pub trait Bar : Sized {
12
+ type Slice : ?Sized ;
13
+
14
+ fn open ( _: & Path < Self > ) ;
15
+ }
16
+
17
+ impl Bar for Foo {
18
+ type Slice = [ u8 ] ;
19
+
20
+ fn open ( _: & Path < Self > ) {
21
+ unimplemented ! ( )
22
+ }
23
+ }
Original file line number Diff line number Diff line change
1
+ fn main ( ) {
2
+ ( ) < std:: mem:: size_of :: < _ > ( ) ; //~ ERROR: mismatched types
3
+ [ 0u8 ; std:: mem:: size_of :: < _ > ( ) ] ; //~ ERROR: type annotations needed
4
+ }
Original file line number Diff line number Diff line change
1
+ error[E0308]: mismatched types
2
+ --> $DIR/issue-47486.rs:2:10
3
+ |
4
+ LL | () < std::mem::size_of::<_>();
5
+ | ^^^^^^^^^^^^^^^^^^^^^^^^ expected (), found usize
6
+ |
7
+ = note: expected type `()`
8
+ found type `usize`
9
+
10
+ error[E0282]: type annotations needed
11
+ --> $DIR/issue-47486.rs:3:11
12
+ |
13
+ LL | [0u8; std::mem::size_of::<_>()];
14
+ | ^^^^^^^^^^^^^^^^^^^^^^ cannot infer type
15
+
16
+ error: aborting due to 2 previous errors
17
+
18
+ Some errors have detailed explanations: E0282, E0308.
19
+ For more information about an error, try `rustc --explain E0282`.
Original file line number Diff line number Diff line change
1
+ // check-pass
2
+
3
+ pub trait D { }
4
+ pub struct DT ;
5
+ impl D for DT { }
6
+
7
+ pub trait A < R : D > : Sized {
8
+ type AS ;
9
+ }
10
+
11
+ pub struct As < R : D > ( R ) ;
12
+
13
+ pub struct AT ;
14
+ impl < R : D > A < R > for AT {
15
+ type AS = As < R > ;
16
+ }
17
+
18
+ #[ repr( packed) ]
19
+ struct S ( <AT as A < DT > >:: AS ) ;
20
+
21
+ fn main ( ) { }
You can’t perform that action at this time.
0 commit comments