Add E0522 long error explanation
This commit is contained in:
parent
a2e4ab2ab2
commit
b2fd882972
2 changed files with 19 additions and 4 deletions
|
|
@ -1962,6 +1962,23 @@ each method; it is not possible to annotate the entire impl with an `#[inline]`
|
|||
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 {}
|
||||
}
|
||||
```
|
||||
"##,
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -2007,5 +2024,4 @@ register_diagnostics! {
|
|||
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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -159,10 +159,9 @@ impl<'a, 'v, 'tcx> Visitor<'v> for LanguageItemCollector<'a, 'tcx> {
|
|||
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[..]);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue