about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorBastian Köcher <git@kchr.de>2017-12-21 12:03:01 +0100
committerBastian Köcher <git@kchr.de>2017-12-26 12:26:39 +0100
commit99a108c03654cd9d2df21223eb55a5dfd6552cb8 (patch)
treedb3d4edc8b0fc76e92a707e587883245d77986d1 /src
parent011c9eac357ea4a02a4e4f821d0cb1e043b0227d (diff)
downloadrust-99a108c03654cd9d2df21223eb55a5dfd6552cb8.tar.gz
rust-99a108c03654cd9d2df21223eb55a5dfd6552cb8.zip
Fixes compilation errors and adds proposed improvements
Diffstat (limited to 'src')
-rw-r--r--src/librustc_mir/monomorphize/collector.rs5
-rw-r--r--src/librustc_mir/monomorphize/partitioning.rs7
-rw-r--r--src/libstd/termination.rs2
3 files changed, 6 insertions, 8 deletions
diff --git a/src/librustc_mir/monomorphize/collector.rs b/src/librustc_mir/monomorphize/collector.rs
index afd895eb7ca..ccb648cd929 100644
--- a/src/librustc_mir/monomorphize/collector.rs
+++ b/src/librustc_mir/monomorphize/collector.rs
@@ -195,7 +195,6 @@ use rustc::hir::map as hir_map;
 use rustc::hir::def_id::DefId;
 use rustc::middle::const_val::ConstVal;
 use rustc::middle::lang_items::{ExchangeMallocFnLangItem,StartFnLangItem};
-use rustc::middle::trans::TransItem;
 use rustc::traits;
 use rustc::ty::subst::{Substs, Kind};
 use rustc::ty::{self, TypeFoldable, Ty, TyCtxt};
@@ -1001,7 +1000,7 @@ impl<'b, 'a, 'v> RootCollector<'b, 'a, 'v> {
             debug!("RootCollector::push_if_root: found root def_id={:?}", def_id);
 
             let instance = Instance::mono(self.tcx, def_id);
-            self.output.push(create_fn_trans_item(instance));
+            self.output.push(create_fn_mono_item(instance));
 
             self.push_extra_entry_roots(def_id);
         }
@@ -1041,7 +1040,7 @@ impl<'b, 'a, 'v> RootCollector<'b, 'a, 'v> {
             self.tcx.mk_substs(iter::once(Kind::from(main_ret_ty)))
         ).unwrap();
 
-        self.output.push(create_fn_trans_item(start_instance));
+        self.output.push(create_fn_mono_item(start_instance));
     }
 }
 
diff --git a/src/librustc_mir/monomorphize/partitioning.rs b/src/librustc_mir/monomorphize/partitioning.rs
index e34698da4da..1a4849ac199 100644
--- a/src/librustc_mir/monomorphize/partitioning.rs
+++ b/src/librustc_mir/monomorphize/partitioning.rs
@@ -106,8 +106,7 @@ use monomorphize::collector::InliningMap;
 use rustc::dep_graph::WorkProductId;
 use rustc::hir::def_id::DefId;
 use rustc::hir::map::DefPathData;
-use rustc::middle::lang_items::StartFnLangItem;
-use rustc::middle::trans::{Linkage, Visibility};
+use rustc::mir::mono::{Linkage, Visibility};
 use rustc::ty::{self, TyCtxt, InstanceDef};
 use rustc::ty::item_path::characteristic_def_id_of_type;
 use rustc::util::nodemap::{FxHashMap, FxHashSet};
@@ -313,11 +312,9 @@ fn place_root_translation_items<'a, 'tcx, I>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
                     MonoItem::Fn(ref instance) => {
                         let visibility = match instance.def {
                             InstanceDef::Item(def_id) => {
-                                let start_def_id = tcx.lang_items().require(StartFnLangItem);
-
                                 // If we encounter the lang start item, we set the visibility to
                                 // default.
-                                if start_def_id == Ok(def_id) {
+                                if tcx.lang_items().start_fn() == Some(def_id) {
                                     Visibility::Default
                                 } else if def_id.is_local() {
                                     if tcx.is_exported_symbol(def_id) {
diff --git a/src/libstd/termination.rs b/src/libstd/termination.rs
index a08d3dd2d52..5eeaa542b41 100644
--- a/src/libstd/termination.rs
+++ b/src/libstd/termination.rs
@@ -21,6 +21,8 @@ use libc;
 /// a successful execution. In case of a failure, `libc::EXIT_FAILURE` is returned.
 #[cfg_attr(not(stage0), lang = "termination")]
 #[unstable(feature = "termination_trait", issue = "0")]
+#[rustc_on_unimplemented =
+  "`main` can only return types that implement {Termination}, not `{Self}`"]
 pub trait Termination {
     /// Is called to get the representation of the value as status code.
     /// This status code is returned to the operating system.