Skip to content

Commit 99a108c

Browse files
committed
Fixes compilation errors and adds proposed improvements
1 parent 011c9ea commit 99a108c

File tree

3 files changed

+6
-8
lines changed

3 files changed

+6
-8
lines changed

src/librustc_mir/monomorphize/collector.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,6 @@ use rustc::hir::map as hir_map;
195195
use rustc::hir::def_id::DefId;
196196
use rustc::middle::const_val::ConstVal;
197197
use rustc::middle::lang_items::{ExchangeMallocFnLangItem,StartFnLangItem};
198-
use rustc::middle::trans::TransItem;
199198
use rustc::traits;
200199
use rustc::ty::subst::{Substs, Kind};
201200
use rustc::ty::{self, TypeFoldable, Ty, TyCtxt};
@@ -1001,7 +1000,7 @@ impl<'b, 'a, 'v> RootCollector<'b, 'a, 'v> {
10011000
debug!("RootCollector::push_if_root: found root def_id={:?}", def_id);
10021001

10031002
let instance = Instance::mono(self.tcx, def_id);
1004-
self.output.push(create_fn_trans_item(instance));
1003+
self.output.push(create_fn_mono_item(instance));
10051004

10061005
self.push_extra_entry_roots(def_id);
10071006
}
@@ -1041,7 +1040,7 @@ impl<'b, 'a, 'v> RootCollector<'b, 'a, 'v> {
10411040
self.tcx.mk_substs(iter::once(Kind::from(main_ret_ty)))
10421041
).unwrap();
10431042

1044-
self.output.push(create_fn_trans_item(start_instance));
1043+
self.output.push(create_fn_mono_item(start_instance));
10451044
}
10461045
}
10471046

src/librustc_mir/monomorphize/partitioning.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,7 @@ use monomorphize::collector::InliningMap;
106106
use rustc::dep_graph::WorkProductId;
107107
use rustc::hir::def_id::DefId;
108108
use rustc::hir::map::DefPathData;
109-
use rustc::middle::lang_items::StartFnLangItem;
110-
use rustc::middle::trans::{Linkage, Visibility};
109+
use rustc::mir::mono::{Linkage, Visibility};
111110
use rustc::ty::{self, TyCtxt, InstanceDef};
112111
use rustc::ty::item_path::characteristic_def_id_of_type;
113112
use rustc::util::nodemap::{FxHashMap, FxHashSet};
@@ -313,11 +312,9 @@ fn place_root_translation_items<'a, 'tcx, I>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
313312
MonoItem::Fn(ref instance) => {
314313
let visibility = match instance.def {
315314
InstanceDef::Item(def_id) => {
316-
let start_def_id = tcx.lang_items().require(StartFnLangItem);
317-
318315
// If we encounter the lang start item, we set the visibility to
319316
// default.
320-
if start_def_id == Ok(def_id) {
317+
if tcx.lang_items().start_fn() == Some(def_id) {
321318
Visibility::Default
322319
} else if def_id.is_local() {
323320
if tcx.is_exported_symbol(def_id) {

src/libstd/termination.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ use libc;
2121
/// a successful execution. In case of a failure, `libc::EXIT_FAILURE` is returned.
2222
#[cfg_attr(not(stage0), lang = "termination")]
2323
#[unstable(feature = "termination_trait", issue = "0")]
24+
#[rustc_on_unimplemented =
25+
"`main` can only return types that implement {Termination}, not `{Self}`"]
2426
pub trait Termination {
2527
/// Is called to get the representation of the value as status code.
2628
/// This status code is returned to the operating system.

0 commit comments

Comments
 (0)