File tree Expand file tree Collapse file tree 5 files changed +95
-0
lines changed
src/test/ui/const-generics/unused-substs Expand file tree Collapse file tree 5 files changed +95
-0
lines changed Original file line number Diff line number Diff line change 1+ #![ feature( const_generics) ] //~ WARN the feature `const_generics` is incomplete
2+ trait Bar < const M : usize > { }
3+ impl < const N : usize > Bar < N > for A < { 6 + 1 } > { }
4+
5+ struct A < const N : usize >
6+ where
7+ A < N > : Bar < N > ;
8+
9+ fn main ( ) {
10+ let _ = A ;
11+ //~^ ERROR mismatched types
12+ }
Original file line number Diff line number Diff line change 1+ #![ feature( const_generics) ] //~ WARN the feature `const_generics` is incomplete
2+
3+ // The goal is is to get an unevaluated const `ct` with a `Ty::Infer(TyVar(_#1t)` subst.
4+ //
5+ // If we are then able to infer `ty::Infer(TyVar(_#1t) := Ty<ct>` we introduced an
6+ // artificial inference cycle.
7+ struct Foo < const N : usize > ;
8+
9+ trait Bind < T > {
10+ fn bind ( ) -> ( T , Self ) ;
11+ }
12+
13+ // `N` has to be `ConstKind::Unevaluated`.
14+ impl < T > Bind < T > for Foo < { 6 + 1 } > {
15+ fn bind ( ) -> ( T , Self ) {
16+ ( panic ! ( ) , Foo )
17+ }
18+ }
19+
20+ fn main ( ) {
21+ let ( mut t, foo) = Foo :: bind ( ) ;
22+ // `t` is `ty::Infer(TyVar(_#1t))`
23+ // `foo` contains `ty::Infer(TyVar(_#1t))` in its substs
24+ t = foo;
25+ //~^ ERROR mismatched types
26+ }
Original file line number Diff line number Diff line change 1+ warning: the feature `const_generics` is incomplete and may not be safe to use and/or cause compiler crashes
2+ --> $DIR/unused-substs-2.rs:1:12
3+ |
4+ LL | #![feature(const_generics)]
5+ | ^^^^^^^^^^^^^^
6+ |
7+ = note: `#[warn(incomplete_features)]` on by default
8+ = note: see issue #44580 <https://github.com/rust-lang/rust/issues/44580> for more information
9+
10+ error[E0308]: mismatched types
11+ --> $DIR/unused-substs-2.rs:24:9
12+ |
13+ LL | t = foo;
14+ | ^^^ cyclic type of infinite size
15+
16+ error: aborting due to previous error; 1 warning emitted
17+
18+ For more information about this error, try `rustc --explain E0308`.
Original file line number Diff line number Diff line change 1+
2+ #![ feature( const_generics) ] //~ WARN the feature `const_generics` is incomplete
3+
4+ // The goal is is to get an unevaluated const `ct` with a `Ty::Infer(TyVar(_#1t)` subst.
5+ //
6+ // If we are then able to infer `ty::Infer(TyVar(_#1t) := Ty<ct>` we introduced an
7+ // artificial inference cycle.
8+ fn bind < T > ( ) -> ( T , [ u8 ; 6 + 1 ] ) {
9+ todo ! ( )
10+ }
11+
12+ fn main ( ) {
13+ let ( mut t, foo) = bind ( ) ;
14+ // `t` is `ty::Infer(TyVar(_#1t))`
15+ // `foo` contains `ty::Infer(TyVar(_#1t))` in its substs
16+ t = foo;
17+ //~^ ERROR mismatched types
18+ }
Original file line number Diff line number Diff line change 1+ warning: the feature `const_generics` is incomplete and may not be safe to use and/or cause compiler crashes
2+ --> $DIR/unused-substs-3.rs:2:12
3+ |
4+ LL | #![feature(const_generics)]
5+ | ^^^^^^^^^^^^^^
6+ |
7+ = note: `#[warn(incomplete_features)]` on by default
8+ = note: see issue #44580 <https://github.com/rust-lang/rust/issues/44580> for more information
9+
10+ error[E0308]: mismatched types
11+ --> $DIR/unused-substs-3.rs:16:9
12+ |
13+ LL | t = foo;
14+ | ^^^
15+ | |
16+ | cyclic type of infinite size
17+ | help: try using a conversion method: `foo.to_vec()`
18+
19+ error: aborting due to previous error; 1 warning emitted
20+
21+ For more information about this error, try `rustc --explain E0308`.
You can’t perform that action at this time.
0 commit comments