diff options
| author | Bastian Köcher <git@kchr.de> | 2017-12-21 12:03:01 +0100 |
|---|---|---|
| committer | Bastian Köcher <git@kchr.de> | 2017-12-26 12:26:39 +0100 |
| commit | 99a108c03654cd9d2df21223eb55a5dfd6552cb8 (patch) | |
| tree | db3d4edc8b0fc76e92a707e587883245d77986d1 /src | |
| parent | 011c9eac357ea4a02a4e4f821d0cb1e043b0227d (diff) | |
| download | rust-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.rs | 5 | ||||
| -rw-r--r-- | src/librustc_mir/monomorphize/partitioning.rs | 7 | ||||
| -rw-r--r-- | src/libstd/termination.rs | 2 |
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. |
