@@ -138,38 +138,42 @@ impl<'a> AstValidator<'a> {
138138        & mut  self , 
139139        ty_alias :  & TyAlias , 
140140    )  -> Result < ( ) ,  errors:: WhereClauseBeforeTypeAlias >  { 
141-         let  before_predicates =
142-             ty_alias. generics . where_clause . predicates . split_at ( ty_alias. where_clauses . split ) . 0 ; 
143- 
144-         if  ty_alias. ty . is_none ( )  || before_predicates. is_empty ( )  { 
141+         if  ty_alias. ty . is_none ( )  || !ty_alias. where_clauses . before . has_where_token  { 
145142            return  Ok ( ( ) ) ; 
146143        } 
147144
148-         let  mut  state =  State :: new ( ) ; 
149-         if  ! ty_alias. where_clauses . after . has_where_token   { 
150-             state . space ( ) ; 
151-             state . word_space ( "where" ) ; 
152-         }   else   { 
153-             state . word_space ( "," ) ; 
154-         } 
155-          let   mut  first =  true ; 
156-         for  p  in  before_predicates  { 
157-             if  !first  { 
158-                 state. word_space ( ", " ) ; 
145+         let  ( before_predicates ,  after_predicates )  = 
146+              ty_alias. generics . where_clause . predicates . split_at ( ty_alias . where_clauses . split ) ; 
147+         let  span = ty_alias . where_clauses . before . span ; 
148+ 
149+         let  sugg =  if  !before_predicates . is_empty ( )  || !ty_alias . where_clauses . after . has_where_token 
150+         { 
151+              let   mut  state =  State :: new ( ) ; 
152+ 
153+              if  !ty_alias . where_clauses . after . has_where_token  { 
154+                 state . space ( ) ; 
155+                 state. word_space ( "where " ) ; 
159156            } 
160-             first = false ; 
161-             state. print_where_predicate ( p) ; 
162-         } 
163157
164-         let  span = ty_alias. where_clauses . before . span ; 
165-         Err ( errors:: WhereClauseBeforeTypeAlias  { 
166-             span, 
167-             sugg :  errors:: WhereClauseBeforeTypeAliasSugg  { 
158+             let  mut  first = after_predicates. is_empty ( ) ; 
159+             for  p in  before_predicates { 
160+                 if  !first { 
161+                     state. word_space ( "," ) ; 
162+                 } 
163+                 first = false ; 
164+                 state. print_where_predicate ( p) ; 
165+             } 
166+ 
167+             errors:: WhereClauseBeforeTypeAliasSugg :: Move  { 
168168                left :  span, 
169169                snippet :  state. s . eof ( ) , 
170170                right :  ty_alias. where_clauses . after . span . shrink_to_hi ( ) , 
171-             } , 
172-         } ) 
171+             } 
172+         }  else  { 
173+             errors:: WhereClauseBeforeTypeAliasSugg :: Remove  {  span } 
174+         } ; 
175+ 
176+         Err ( errors:: WhereClauseBeforeTypeAlias  {  span,  sugg } ) 
173177    } 
174178
175179    fn  with_impl_trait ( & mut  self ,  outer :  Option < Span > ,  f :  impl  FnOnce ( & mut  Self ) )  { 
@@ -1475,15 +1479,18 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
14751479        if  let  AssocItemKind :: Type ( ty_alias)  = & item. kind 
14761480            && let  Err ( err)  = self . check_type_alias_where_clause_location ( ty_alias) 
14771481        { 
1482+             let  sugg = match  err. sugg  { 
1483+                 errors:: WhereClauseBeforeTypeAliasSugg :: Remove  {  .. }  => None , 
1484+                 errors:: WhereClauseBeforeTypeAliasSugg :: Move  {  snippet,  right,  .. }  => { 
1485+                     Some ( ( right,  snippet) ) 
1486+                 } 
1487+             } ; 
14781488            self . lint_buffer . buffer_lint_with_diagnostic ( 
14791489                DEPRECATED_WHERE_CLAUSE_LOCATION , 
14801490                item. id , 
14811491                err. span , 
14821492                fluent:: ast_passes_deprecated_where_clause_location, 
1483-                 BuiltinLintDiagnostics :: DeprecatedWhereclauseLocation ( 
1484-                     err. sugg . right , 
1485-                     err. sugg . snippet , 
1486-                 ) , 
1493+                 BuiltinLintDiagnostics :: DeprecatedWhereclauseLocation ( sugg) , 
14871494            ) ; 
14881495        } 
14891496
0 commit comments