Skip to content

Commit

Permalink
Add E0522 long error explanation
Browse files Browse the repository at this point in the history
  • Loading branch information
GuillaumeGomez committed Mar 14, 2016
1 parent a2e4ab2 commit b2fd882
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 4 deletions.
18 changes: 17 additions & 1 deletion src/librustc/diagnostics.rs
Expand Up @@ -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 {}
}
```
"##,

}


Expand Down Expand Up @@ -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
}
5 changes: 2 additions & 3 deletions src/librustc/middle/lang_items.rs
Expand Up @@ -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[..]);
}
}
Expand Down

0 comments on commit b2fd882

Please sign in to comment.