about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorggomez <guillaume1.gomez@gmail.com>2016-03-15 15:49:08 +0100
committerggomez <guillaume1.gomez@gmail.com>2016-03-15 15:49:08 +0100
commita2e4ab2ab276bbfbcd165b106da4159f68aff6e3 (patch)
tree52d8eb01f035b1926c32836d6d43e32630db3656 /src
parent4db8b5bfdf1c0f70183f5a416581215c62412f80 (diff)
downloadrust-a2e4ab2ab276bbfbcd165b106da4159f68aff6e3.tar.gz
rust-a2e4ab2ab276bbfbcd165b106da4159f68aff6e3.zip
Forbid creation of lang item from user code
Diffstat (limited to 'src')
-rw-r--r--src/librustc/diagnostics.rs1
-rw-r--r--src/librustc/middle/lang_items.rs6
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[..]);
             }
         }
     }