File tree Expand file tree Collapse file tree 3 files changed +37
-3
lines changed
Expand file tree Collapse file tree 3 files changed +37
-3
lines changed Original file line number Diff line number Diff line change @@ -1223,10 +1223,15 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
12231223
12241224 /// Transform a `PolyTraitRef` into a `PolyExistentialTraitRef` by
12251225 /// removing the dummy `Self` type (`trait_object_dummy_self`).
1226- fn trait_ref_to_existential ( & self , trait_ref : ty:: TraitRef < ' tcx > )
1227- -> ty:: ExistentialTraitRef < ' tcx > {
1226+ fn trait_ref_to_existential (
1227+ & self ,
1228+ trait_ref : ty:: TraitRef < ' tcx > ,
1229+ ) -> ty:: ExistentialTraitRef < ' tcx > {
12281230 if trait_ref. self_ty ( ) != self . tcx ( ) . types . trait_object_dummy_self {
1229- bug ! ( "trait_ref_to_existential called on {:?} with non-dummy Self" , trait_ref) ;
1231+ self . tcx ( ) . sess . delay_span_bug ( DUMMY_SP , & format ! (
1232+ "trait_ref_to_existential called on {:?} with non-dummy Self" ,
1233+ trait_ref,
1234+ ) ) ;
12301235 }
12311236 ty:: ExistentialTraitRef :: erase_self_ty ( self . tcx ( ) , trait_ref)
12321237 }
Original file line number Diff line number Diff line change 1+ #![ feature( trait_alias) ]
2+ trait Trait { }
3+ trait WithType {
4+ type Ctx ;
5+ }
6+ trait Alias < T > = where T : Trait ;
7+
8+ impl < T > WithType for T {
9+ type Ctx = dyn Alias < T > ;
10+ //~^ ERROR the size for values of type `(dyn Trait + 'static)` cannot be known at compilation time
11+ }
12+ fn main ( ) { }
Original file line number Diff line number Diff line change 1+ error[E0277]: the size for values of type `(dyn Trait + 'static)` cannot be known at compilation time
2+ --> $DIR/issue-65673.rs:9:5
3+ |
4+ LL | type Ctx;
5+ | --- associated type defined here
6+ ...
7+ LL | impl<T> WithType for T {
8+ | ---------------------- in this `impl` item
9+ LL | type Ctx = dyn Alias<T>;
10+ | ^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
11+ |
12+ = help: the trait `std::marker::Sized` is not implemented for `(dyn Trait + 'static)`
13+ = note: to learn more, visit <https://doc.rust-lang.org/book/ch19-04-advanced-types.html#dynamically-sized-types-and-the-sized-trait>
14+
15+ error: aborting due to previous error
16+
17+ For more information about this error, try `rustc --explain E0277`.
You can’t perform that action at this time.
0 commit comments