# Error code E0788

A `#[coverage(off|on)]` attribute was found in a position where it is not allowed.

Coverage attributes can be applied to:

- Function and method declarations that have a body, including trait methods that have a default implementation.
- Closure expressions, in situations where attributes can be applied to expressions.
- `impl` blocks (inherent or trait), and modules.

Example of erroneous code:

    #![allow(unused)]
    fn main() {
    unsafe extern "C" {
        #[coverage(off)]
        fn foreign_fn();
    }
    }

When using the `-C instrument-coverage` flag, coverage attributes act as a hint to the compiler that it should instrument or not instrument the corresponding function or enclosed functions. The precise effect of applying a coverage attribute is not guaranteed and may change in future compiler versions.