diff options
| author | bors <bors@rust-lang.org> | 2017-09-14 09:18:28 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2017-09-14 09:18:28 +0000 |
| commit | 2b6bc588ca7197bc5d9f212e9e91a2c3811d025c (patch) | |
| tree | f6d8738e033b74f9f0583bc0a236102742914e66 | |
| parent | 84bbd14e3f392d63524482e2f0c69cd6fcd7f2c5 (diff) | |
| parent | 9218e444342d13088092edec90a4f889f98ecff2 (diff) | |
| download | rust-2b6bc588ca7197bc5d9f212e9e91a2c3811d025c.tar.gz rust-2b6bc588ca7197bc5d9f212e9e91a2c3811d025c.zip | |
Auto merge of #44526 - leodasvacas:remove-deprecated-lang-items, r=arielb1
Remove deprecated lang items They have been deprecated for years and there is no trace left of them in the compiler. Also removed `require_owned_box` which is dead code and other small refactorings.
| -rw-r--r-- | src/librustc/middle/lang_items.rs | 55 | ||||
| -rw-r--r-- | src/librustc_typeck/variance/terms.rs | 9 |
2 files changed, 15 insertions, 49 deletions
diff --git a/src/librustc/middle/lang_items.rs b/src/librustc/middle/lang_items.rs index cb59d9870fa..da9f9128cf4 100644 --- a/src/librustc/middle/lang_items.rs +++ b/src/librustc/middle/lang_items.rs @@ -46,6 +46,14 @@ enum_from_u32! { } } +impl LangItem { + fn name(self) -> &'static str { + match self { + $( $variant => $name, )* + } + } +} + pub struct LanguageItems { pub items: Vec<Option<DefId>>, pub missing: Vec<LangItem>, @@ -65,42 +73,17 @@ impl LanguageItems { &*self.items } - pub fn item_name(index: usize) -> &'static str { - let item: Option<LangItem> = LangItem::from_u32(index as u32); - match item { - $( Some($variant) => $name, )* - None => "???" - } - } - pub fn require(&self, it: LangItem) -> Result<DefId, String> { - match self.items[it as usize] { - Some(id) => Ok(id), - None => { - Err(format!("requires `{}` lang_item", - LanguageItems::item_name(it as usize))) - } - } - } - - pub fn require_owned_box(&self) -> Result<DefId, String> { - self.require(OwnedBoxLangItem) + self.items[it as usize].ok_or_else(|| format!("requires `{}` lang_item", it.name())) } pub fn fn_trait_kind(&self, id: DefId) -> Option<ty::ClosureKind> { - let def_id_kinds = [ - (self.fn_trait(), ty::ClosureKind::Fn), - (self.fn_mut_trait(), ty::ClosureKind::FnMut), - (self.fn_once_trait(), ty::ClosureKind::FnOnce), - ]; - - for &(opt_def_id, kind) in &def_id_kinds { - if Some(id) == opt_def_id { - return Some(kind); - } + match Some(id) { + x if x == self.fn_trait() => Some(ty::ClosureKind::Fn), + x if x == self.fn_mut_trait() => Some(ty::ClosureKind::FnMut), + x if x == self.fn_once_trait() => Some(ty::ClosureKind::FnOnce), + _ => None } - - None } $( @@ -162,7 +145,7 @@ impl<'a, 'tcx> LanguageItemCollector<'a, 'tcx> { // Check for duplicates. match self.items.items[item_index] { Some(original_def_id) if original_def_id != item_def_id => { - let name = LanguageItems::item_name(item_index); + let name = LangItem::from_u32(item_index as u32).unwrap().name(); let mut err = match self.tcx.hir.span_if_local(item_def_id) { Some(span) => struct_span_err!( self.tcx.sess, @@ -327,14 +310,6 @@ language_item_table! { PhantomDataItem, "phantom_data", phantom_data; - // Deprecated: - CovariantTypeItem, "covariant_type", covariant_type; - ContravariantTypeItem, "contravariant_type", contravariant_type; - InvariantTypeItem, "invariant_type", invariant_type; - CovariantLifetimeItem, "covariant_lifetime", covariant_lifetime; - ContravariantLifetimeItem, "contravariant_lifetime", contravariant_lifetime; - InvariantLifetimeItem, "invariant_lifetime", invariant_lifetime; - NonZeroItem, "non_zero", non_zero; DebugTraitLangItem, "debug_trait", debug_trait; diff --git a/src/librustc_typeck/variance/terms.rs b/src/librustc_typeck/variance/terms.rs index 6062ac96ada..ac3d575b648 100644 --- a/src/librustc_typeck/variance/terms.rs +++ b/src/librustc_typeck/variance/terms.rs @@ -98,15 +98,6 @@ fn lang_items(tcx: TyCtxt) -> Vec<(ast::NodeId, Vec<ty::Variance>)> { let all = vec![ (lang_items.phantom_data(), vec![ty::Covariant]), (lang_items.unsafe_cell_type(), vec![ty::Invariant]), - - // Deprecated: - (lang_items.covariant_type(), vec![ty::Covariant]), - (lang_items.contravariant_type(), vec![ty::Contravariant]), - (lang_items.invariant_type(), vec![ty::Invariant]), - (lang_items.covariant_lifetime(), vec![ty::Covariant]), - (lang_items.contravariant_lifetime(), vec![ty::Contravariant]), - (lang_items.invariant_lifetime(), vec![ty::Invariant]), - ]; all.into_iter() // iterating over (Option<DefId>, Variance) |
