@@ -36,20 +36,18 @@ pub(super) struct ItemLowerer<'a, 'hir> {
3636/// clause if it exists.
3737fn add_ty_alias_where_clause (
3838 generics : & mut ast:: Generics ,
39- mut where_clauses : TyAliasWhereClauses ,
39+ after_where_clause : & ast :: WhereClause ,
4040 prefer_first : bool ,
4141) {
42+ generics. where_clause . predicates . extend_from_slice ( & after_where_clause. predicates ) ;
43+
44+ let mut before = ( generics. where_clause . has_where_token , generics. where_clause . span ) ;
45+ let mut after = ( after_where_clause. has_where_token , after_where_clause. span ) ;
4246 if !prefer_first {
43- ( where_clauses . before , where_clauses . after ) = ( where_clauses . after , where_clauses . before ) ;
47+ ( before, after) = ( after, before) ;
4448 }
45- let where_clause =
46- if where_clauses. before . has_where_token || !where_clauses. after . has_where_token {
47- where_clauses. before
48- } else {
49- where_clauses. after
50- } ;
51- generics. where_clause . has_where_token = where_clause. has_where_token ;
52- generics. where_clause . span = where_clause. span ;
49+ ( generics. where_clause . has_where_token , generics. where_clause . span ) =
50+ if before. 0 || !after. 0 { before } else { after } ;
5351}
5452
5553impl < ' a , ' hir > ItemLowerer < ' a , ' hir > {
@@ -271,7 +269,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
271269 self . lower_body ( |this| ( & [ ] , this. expr ( span, hir:: ExprKind :: InlineAsm ( asm) ) ) ) ;
272270 hir:: ItemKind :: GlobalAsm { asm, fake_body }
273271 }
274- ItemKind :: TyAlias ( box TyAlias { ident, generics, where_clauses , ty, .. } ) => {
272+ ItemKind :: TyAlias ( box TyAlias { ident, generics, after_where_clause , ty, .. } ) => {
275273 // We lower
276274 //
277275 // type Foo = impl Trait
@@ -282,7 +280,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
282280 // opaque type Foo1: Trait
283281 let ident = self . lower_ident ( * ident) ;
284282 let mut generics = generics. clone ( ) ;
285- add_ty_alias_where_clause ( & mut generics, * where_clauses , true ) ;
283+ add_ty_alias_where_clause ( & mut generics, after_where_clause , true ) ;
286284 let ( generics, ty) = self . lower_generics (
287285 & generics,
288286 id,
@@ -901,10 +899,15 @@ impl<'hir> LoweringContext<'_, 'hir> {
901899 )
902900 }
903901 AssocItemKind :: Type ( box TyAlias {
904- ident, generics, where_clauses, bounds, ty, ..
902+ ident,
903+ generics,
904+ after_where_clause,
905+ bounds,
906+ ty,
907+ ..
905908 } ) => {
906909 let mut generics = generics. clone ( ) ;
907- add_ty_alias_where_clause ( & mut generics, * where_clauses , false ) ;
910+ add_ty_alias_where_clause ( & mut generics, after_where_clause , false ) ;
908911 let ( generics, kind) = self . lower_generics (
909912 & generics,
910913 i. id ,
@@ -1070,9 +1073,11 @@ impl<'hir> LoweringContext<'_, 'hir> {
10701073
10711074 ( * ident, ( generics, hir:: ImplItemKind :: Fn ( sig, body_id) ) )
10721075 }
1073- AssocItemKind :: Type ( box TyAlias { ident, generics, where_clauses, ty, .. } ) => {
1076+ AssocItemKind :: Type ( box TyAlias {
1077+ ident, generics, after_where_clause, ty, ..
1078+ } ) => {
10741079 let mut generics = generics. clone ( ) ;
1075- add_ty_alias_where_clause ( & mut generics, * where_clauses , false ) ;
1080+ add_ty_alias_where_clause ( & mut generics, after_where_clause , false ) ;
10761081 (
10771082 * ident,
10781083 self . lower_generics (
0 commit comments