@@ -101,11 +101,6 @@ impl<'tcx> LateLintPass<'tcx> for UnusedResults {
101101 return ;
102102 }
103103
104- let ty = cx. typeck_results ( ) . expr_ty ( & expr) ;
105- let type_permits_lack_of_use = check_must_use_ty ( cx, ty, & expr, s. span , "" , "" , 1 ) ;
106-
107- let mut fn_warned = false ;
108- let mut op_warned = false ;
109104 let maybe_def_id = match expr. kind {
110105 hir:: ExprKind :: Call ( ref callee, _) => {
111106 match callee. kind {
@@ -123,6 +118,21 @@ impl<'tcx> LateLintPass<'tcx> for UnusedResults {
123118 hir:: ExprKind :: MethodCall ( ..) => cx. typeck_results ( ) . type_dependent_def_id ( expr. hir_id ) ,
124119 _ => None ,
125120 } ;
121+
122+ if let Some ( def_id) = maybe_def_id {
123+ for attr in cx. tcx . get_attrs ( def_id) . iter ( ) {
124+ if cx. sess ( ) . check_name ( attr, sym:: may_ignore) {
125+ // Don't warn if the function was marked as #[may_ignore].
126+ return ;
127+ }
128+ }
129+ }
130+
131+ let ty = cx. typeck_results ( ) . expr_ty ( & expr) ;
132+ let type_permits_lack_of_use = check_must_use_ty ( cx, ty, & expr, s. span , "" , "" , 1 ) ;
133+
134+ let mut fn_warned = false ;
135+ let mut op_warned = false ;
126136 if let Some ( def_id) = maybe_def_id {
127137 fn_warned = check_must_use_def ( cx, def_id, s. span , "return value of " , "" ) ;
128138 } else if type_permits_lack_of_use {
0 commit comments