Auto merge of #32264 - GuillaumeGomez:lang_item, r=nikomatsakis
Lang item Fixes #32033
This commit is contained in:
commit
2ae05d37da
2 changed files with 22 additions and 0 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 {}
|
||||
}
|
||||
```
|
||||
"##,
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -158,6 +158,11 @@ 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 span = self.ast_map.span(item.id);
|
||||
span_err!(self.session, span, E0522,
|
||||
"definition of an unknown language item: `{}`.",
|
||||
&value[..]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue