Error code E0522

The lang attribute was used in an invalid context.

Erroneous code example:

#![allow(unused)]
#![feature(lang_items)]

fn main() {
#[lang = "cookie"]
fn cookie() -> ! { // error: definition of an unknown lang item: `cookie`
    loop {}
}
}

The lang attribute is intended for marking special items that are built-in to Rust itself. This includes special traits (like Copy and Sized) that affect how the compiler behaves, as well as special functions that may be automatically invoked (such as the handler for out-of-bounds accesses when indexing a slice).