# Error code E0788

A `#[coverage]` attribute was applied to something which does not show up in code coverage, or is too granular to be excluded from the coverage report.

For now, this attribute can only be applied to function, method, and closure definitions. In the future, it may be added to statements, blocks, and expressions, and for the time being, using this attribute in those places will just emit an `unused_attributes` lint instead of this error.

Example of erroneous code:

    #![allow(unused)]
    fn main() {
    #[coverage(off)]
    struct Foo;

    #[coverage(on)]
    const FOO: Foo = Foo;
    }

`#[coverage(off)]` tells the compiler to not generate coverage instrumentation for a piece of code when the `-C instrument-coverage` flag is passed. Things like structs and consts are not coverable code, and thus cannot do anything with this attribute.

If you wish to apply this attribute to all methods in an impl or module, manually annotate each method; it is not possible to annotate the entire impl with a `#[coverage]` attribute.