attribute.
"##,
+E0522: r##"
+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).
+Erroneous code example:
+
+```compile_fail
+#![feature(lang_items)]
+
+#[lang = "cookie"]
+fn cookie() -> ! { // error: definition of an unknown language item: `cookie`
+ loop {}
+}
+```
+"##,
+
}
E0490, // a value of type `..` is borrowed for too long
E0491, // in type `..`, reference has a longer lifetime than the data it...
E0495, // cannot infer an appropriate lifetime due to conflicting requirements
- E0522, // creating new item lang is forbidden
}
if let Some(item_index) = item_index {
self.collect_item(item_index, self.ast_map.local_def_id(item.id))
} else {
- let item_def_id = self.ast_map.local_def_id(item.id);
- let span = self.ast_map.span_if_local(item_def_id).unwrap();
+ let span = self.ast_map.span(item.id);
span_err!(self.session, span, E0522,
- "creating new item lang is forbidden: `{}`.",
+ "definition of an unknown language item: `{}`.",
&value[..]);
}
}