@@ -9,7 +9,7 @@ use lint::{LintPass, EarlyLintPass, LateLintPass};
9
9
10
10
use syntax:: ast;
11
11
use syntax:: attr;
12
- use syntax:: errors:: Applicability ;
12
+ use syntax:: errors:: { Applicability , pluralise } ;
13
13
use syntax:: feature_gate:: { AttributeType , BuiltinAttribute , BUILTIN_ATTRIBUTE_MAP } ;
14
14
use syntax:: print:: pprust;
15
15
use syntax:: symbol:: { kw, sym} ;
@@ -48,7 +48,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for UnusedResults {
48
48
}
49
49
50
50
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 ) ;
52
52
53
53
let mut fn_warned = false ;
54
54
let mut op_warned = false ;
@@ -135,21 +135,21 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for UnusedResults {
135
135
span : Span ,
136
136
descr_pre : & str ,
137
137
descr_post : & str ,
138
- plural : bool ,
138
+ plural_len : usize ,
139
139
) -> bool {
140
140
if ty. is_unit ( ) || cx. tcx . is_ty_uninhabited_from (
141
141
cx. tcx . hir ( ) . get_module_parent ( expr. hir_id ) , ty)
142
142
{
143
143
return true ;
144
144
}
145
145
146
- let plural_suffix = if plural { "s" } else { "" } ;
146
+ let plural_suffix = pluralise ! ( plural_len ) ;
147
147
148
148
match ty. sty {
149
149
ty:: Adt ( ..) if ty. is_box ( ) => {
150
150
let boxed_ty = ty. boxed_ty ( ) ;
151
151
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 )
153
153
}
154
154
ty:: Adt ( def, _) => {
155
155
check_must_use_def ( cx, def. did , span, descr_pre, descr_post)
@@ -202,7 +202,15 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for UnusedResults {
202
202
for ( i, ty) in tys. iter ( ) . map ( |k| k. expect_ty ( ) ) . enumerate ( ) {
203
203
let descr_post = & format ! ( " in tuple element {}" , i) ;
204
204
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
+ ) {
206
214
has_emitted = true ;
207
215
}
208
216
}
@@ -216,7 +224,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for UnusedResults {
216
224
descr_pre,
217
225
plural_suffix,
218
226
) ;
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 )
220
228
}
221
229
// Otherwise, we don't lint, to avoid false positives.
222
230
_ => false ,
0 commit comments