@@ -345,6 +345,7 @@ pub fn suggest_constraining_type_params<'a>(
345345 let mut constraint = constraints. iter ( ) . map ( |& ( c, _, _) | c) . collect :: < Vec < _ > > ( ) ;
346346 constraint. sort ( ) ;
347347 constraint. dedup ( ) ;
348+ let all_known = constraints. iter ( ) . all ( |& ( _, def_id, _) | def_id. is_some ( ) ) ;
348349 let all_stable = constraints. iter ( ) . all ( |& ( _, _, stable) | stable. is_empty ( ) ) ;
349350 let all_unstable = constraints. iter ( ) . all ( |& ( _, _, stable) | !stable. is_empty ( ) ) ;
350351 let post = if all_stable || all_unstable {
@@ -360,7 +361,8 @@ pub fn suggest_constraining_type_params<'a>(
360361 trait_names. dedup ( ) ;
361362 let n = trait_names. len ( ) ;
362363 let stable = if all_stable { "" } else { "unstable " } ;
363- format ! ( "{stable}trait{} {}" , pluralize!( n) , match & trait_names[ ..] {
364+ let trait_ = if all_known { "trait" } else { "" } ;
365+ format ! ( "{stable}{trait_}{} {}" , pluralize!( n) , match & trait_names[ ..] {
364366 [ t] => t. to_string( ) ,
365367 [ ts @ .., last] => format!( "{} and {last}" , ts. join( ", " ) ) ,
366368 [ ] => return false ,
@@ -370,7 +372,7 @@ pub fn suggest_constraining_type_params<'a>(
370372 let mut trait_names = constraints
371373 . iter ( )
372374 . map ( |& ( c, def_id, stable) | match def_id {
373- None => format ! ( "{stable}trait `{c}`" ) ,
375+ None => format ! ( "`{c}`" ) ,
374376 Some ( def_id) => format ! ( "{stable}trait `{}`" , tcx. item_name( def_id) ) ,
375377 } )
376378 . collect :: < Vec < _ > > ( ) ;
0 commit comments