@@ -345,6 +345,7 @@ pub fn suggest_constraining_type_params<'a>(
345
345
let mut constraint = constraints. iter ( ) . map ( |& ( c, _, _) | c) . collect :: < Vec < _ > > ( ) ;
346
346
constraint. sort ( ) ;
347
347
constraint. dedup ( ) ;
348
+ let all_known = constraints. iter ( ) . all ( |& ( _, def_id, _) | def_id. is_some ( ) ) ;
348
349
let all_stable = constraints. iter ( ) . all ( |& ( _, _, stable) | stable. is_empty ( ) ) ;
349
350
let all_unstable = constraints. iter ( ) . all ( |& ( _, _, stable) | !stable. is_empty ( ) ) ;
350
351
let post = if all_stable || all_unstable {
@@ -360,7 +361,8 @@ pub fn suggest_constraining_type_params<'a>(
360
361
trait_names. dedup ( ) ;
361
362
let n = trait_names. len ( ) ;
362
363
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[ ..] {
364
366
[ t] => t. to_string( ) ,
365
367
[ ts @ .., last] => format!( "{} and {last}" , ts. join( ", " ) ) ,
366
368
[ ] => return false ,
@@ -370,7 +372,7 @@ pub fn suggest_constraining_type_params<'a>(
370
372
let mut trait_names = constraints
371
373
. iter ( )
372
374
. map ( |& ( c, def_id, stable) | match def_id {
373
- None => format ! ( "{stable}trait `{c}`" ) ,
375
+ None => format ! ( "`{c}`" ) ,
374
376
Some ( def_id) => format ! ( "{stable}trait `{}`" , tcx. item_name( def_id) ) ,
375
377
} )
376
378
. collect :: < Vec < _ > > ( ) ;
0 commit comments