@@ -9,7 +9,7 @@ use lint::{LintPass, EarlyLintPass, LateLintPass};
99
1010use syntax:: ast;
1111use syntax:: attr;
12- use syntax:: errors:: Applicability ;
12+ use syntax:: errors:: { Applicability , pluralise } ;
1313use syntax:: feature_gate:: { AttributeType , BuiltinAttribute , BUILTIN_ATTRIBUTE_MAP } ;
1414use syntax:: print:: pprust;
1515use syntax:: symbol:: { kw, sym} ;
@@ -48,7 +48,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for UnusedResults {
4848 }
4949
5050 let ty = cx. tables . expr_ty ( & expr) ;
51- let type_permits_lack_of_use = check_must_use_ty ( cx, ty, & expr, s. span , "" , "" , false ) ;
51+ let type_permits_lack_of_use = check_must_use_ty ( cx, ty, & expr, s. span , "" , "" , 1 ) ;
5252
5353 let mut fn_warned = false ;
5454 let mut op_warned = false ;
@@ -135,21 +135,21 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for UnusedResults {
135135 span : Span ,
136136 descr_pre : & str ,
137137 descr_post : & str ,
138- plural : bool ,
138+ plural_len : usize ,
139139 ) -> bool {
140140 if ty. is_unit ( ) || cx. tcx . is_ty_uninhabited_from (
141141 cx. tcx . hir ( ) . get_module_parent ( expr. hir_id ) , ty)
142142 {
143143 return true ;
144144 }
145145
146- let plural_suffix = if plural { "s" } else { "" } ;
146+ let plural_suffix = pluralise ! ( plural_len ) ;
147147
148148 match ty. sty {
149149 ty:: Adt ( ..) if ty. is_box ( ) => {
150150 let boxed_ty = ty. boxed_ty ( ) ;
151151 let descr_pre = & format ! ( "{}boxed " , descr_pre) ;
152- check_must_use_ty ( cx, boxed_ty, expr, span, descr_pre, descr_post, plural )
152+ check_must_use_ty ( cx, boxed_ty, expr, span, descr_pre, descr_post, plural_len )
153153 }
154154 ty:: Adt ( def, _) => {
155155 check_must_use_def ( cx, def. did , span, descr_pre, descr_post)
@@ -202,7 +202,15 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for UnusedResults {
202202 for ( i, ty) in tys. iter ( ) . map ( |k| k. expect_ty ( ) ) . enumerate ( ) {
203203 let descr_post = & format ! ( " in tuple element {}" , i) ;
204204 let span = * spans. get ( i) . unwrap_or ( & span) ;
205- if check_must_use_ty ( cx, ty, expr, span, descr_pre, descr_post, plural) {
205+ if check_must_use_ty (
206+ cx,
207+ ty,
208+ expr,
209+ span,
210+ descr_pre,
211+ descr_post,
212+ plural_len
213+ ) {
206214 has_emitted = true ;
207215 }
208216 }
@@ -216,7 +224,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for UnusedResults {
216224 descr_pre,
217225 plural_suffix,
218226 ) ;
219- check_must_use_ty ( cx, ty, expr, span, descr_pre, descr_post, true )
227+ check_must_use_ty ( cx, ty, expr, span, descr_pre, descr_post, n as usize + 1 )
220228 }
221229 // Otherwise, we don't lint, to avoid false positives.
222230 _ => false ,
0 commit comments