@@ -122,7 +122,7 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
122122self . check_diagnostic_on_unimplemented ( attr. span , hir_id, target)
123123}
124124[ sym:: inline] => self . check_inline ( hir_id, attr, span, target) ,
125- [ sym:: coverage] => self . check_coverage ( hir_id , attr, span, target) ,
125+ [ sym:: coverage] => self . check_coverage ( attr, span, target) ,
126126[ sym:: non_exhaustive] => self . check_non_exhaustive ( hir_id, attr, span, target) ,
127127[ sym:: marker] => self . check_marker ( hir_id, attr, span, target) ,
128128[ sym:: target_feature] => {
@@ -369,47 +369,15 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
369369}
370370}
371371
372- /// Checks if a `#[coverage]` is applied directly to a function
373- fn check_coverage ( & self , hir_id : HirId , attr : & Attribute , span : Span , target : Target ) -> bool {
372+ /// Checks that `#[coverage(..) ]` is applied to a function or closure.
373+ fn check_coverage ( & self , attr : & Attribute , span : Span , target : Target ) -> bool {
374374match target {
375- // #[coverage] on function is fine
375+ // #[coverage(..) ] on function is fine
376376Target :: Fn
377377 | Target :: Closure
378378 | Target :: Method ( MethodKind :: Trait { body : true } | MethodKind :: Inherent ) => true ,
379-
380- // function prototypes can't be covered
381- Target :: Method ( MethodKind :: Trait { body : false } ) | Target :: ForeignFn => {
382- self . tcx . emit_node_span_lint (
383- UNUSED_ATTRIBUTES ,
384- hir_id,
385- attr. span ,
386- errors:: IgnoredCoverageFnProto ,
387- ) ;
388- true
389- }
390-
391- Target :: Mod | Target :: ForeignMod | Target :: Impl | Target :: Trait => {
392- self . tcx . emit_node_span_lint (
393- UNUSED_ATTRIBUTES ,
394- hir_id,
395- attr. span ,
396- errors:: IgnoredCoveragePropagate ,
397- ) ;
398- true
399- }
400-
401- Target :: Expression | Target :: Statement | Target :: Arm => {
402- self . tcx . emit_node_span_lint (
403- UNUSED_ATTRIBUTES ,
404- hir_id,
405- attr. span ,
406- errors:: IgnoredCoverageFnDefn ,
407- ) ;
408- true
409- }
410-
411379 _ => {
412- self . dcx ( ) . emit_err ( errors:: IgnoredCoverageNotCoverable {
380+ self . dcx ( ) . emit_err ( errors:: CoverageNotFnOrClosure {
413381attr_span : attr. span ,
414382defn_span : span,
415383} ) ;
0 commit comments