diff options
| author | ggomez <guillaume1.gomez@gmail.com> | 2016-03-15 15:49:08 +0100 |
|---|---|---|
| committer | ggomez <guillaume1.gomez@gmail.com> | 2016-03-15 15:49:08 +0100 |
| commit | a2e4ab2ab276bbfbcd165b106da4159f68aff6e3 (patch) | |
| tree | 52d8eb01f035b1926c32836d6d43e32630db3656 /src | |
| parent | 4db8b5bfdf1c0f70183f5a416581215c62412f80 (diff) | |
| download | rust-a2e4ab2ab276bbfbcd165b106da4159f68aff6e3.tar.gz rust-a2e4ab2ab276bbfbcd165b106da4159f68aff6e3.zip | |
Forbid creation of lang item from user code
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc/diagnostics.rs | 1 | ||||
| -rw-r--r-- | src/librustc/middle/lang_items.rs | 6 |
2 files changed, 7 insertions, 0 deletions
diff --git a/src/librustc/diagnostics.rs b/src/librustc/diagnostics.rs index 92db527ef98..004495bb916 100644 --- a/src/librustc/diagnostics.rs +++ b/src/librustc/diagnostics.rs @@ -2007,4 +2007,5 @@ 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 } diff --git a/src/librustc/middle/lang_items.rs b/src/librustc/middle/lang_items.rs index c432095ff06..b16ba9a2190 100644 --- a/src/librustc/middle/lang_items.rs +++ b/src/librustc/middle/lang_items.rs @@ -158,6 +158,12 @@ 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(); + span_err!(self.session, span, E0522, + "creating new item lang is forbidden: `{}`.", + &value[..]); } } } |
