]> git.lizzy.rs Git - rust.git/commitdiff
rustc: don't call Kind::from directly, use .into() instead.
authorEduard-Mihai Burtescu <edy.burt@gmail.com>
Wed, 16 May 2018 07:38:55 +0000 (10:38 +0300)
committerEduard-Mihai Burtescu <edy.burt@gmail.com>
Mon, 21 May 2018 09:13:19 +0000 (12:13 +0300)
src/librustc/infer/canonical.rs
src/librustc/traits/select.rs
src/librustc/ty/subst.rs
src/librustc_codegen_llvm/base.rs
src/librustc_mir/monomorphize/collector.rs
src/librustc_mir/shim.rs
src/librustc_typeck/astconv.rs
src/librustc_typeck/check/mod.rs

index 4bb191a878fdbeb6d1137a08e0f61509b2ef192a..1164c332330bc30d6bd0ad71532099517c1da44d 100644 (file)
@@ -256,11 +256,11 @@ pub fn fresh_inference_var_for_canonical_var(
 
                     CanonicalTyVarKind::Float => self.tcx.mk_float_var(self.next_float_var_id()),
                 };
-                Kind::from(ty)
+                ty.into()
             }
 
             CanonicalVarKind::Region => {
-                Kind::from(self.next_region_var(RegionVariableOrigin::MiscVariable(span)))
+                self.next_region_var(RegionVariableOrigin::MiscVariable(span)).into()
             }
         }
     }
@@ -555,7 +555,7 @@ fn fold_region(&mut self, r: ty::Region<'tcx>) -> ty::Region<'tcx> {
                      opportunistically resolved to {:?}",
                     vid, r
                 );
-                let cvar = self.canonical_var(info, Kind::from(r));
+                let cvar = self.canonical_var(info, r.into());
                 self.tcx().mk_region(ty::ReCanonical(cvar))
             }
 
@@ -570,7 +570,7 @@ fn fold_region(&mut self, r: ty::Region<'tcx>) -> ty::Region<'tcx> {
                     let info = CanonicalVarInfo {
                         kind: CanonicalVarKind::Region,
                     };
-                    let cvar = self.canonical_var(info, Kind::from(r));
+                    let cvar = self.canonical_var(info, r.into());
                     self.tcx().mk_region(ty::ReCanonical(cvar))
                 } else {
                     r
@@ -750,7 +750,7 @@ fn canonicalize_ty_var(&mut self, ty_kind: CanonicalTyVarKind, ty_var: Ty<'tcx>)
             let info = CanonicalVarInfo {
                 kind: CanonicalVarKind::Ty(ty_kind),
             };
-            let cvar = self.canonical_var(info, Kind::from(ty_var));
+            let cvar = self.canonical_var(info, ty_var.into());
             self.tcx().mk_infer(ty::InferTy::CanonicalTy(cvar))
         }
     }
index 3ab51a0eb2f64b34c7ee4d316c90f874d2209f7a..c3b5b8e6fb35ffc2a6656a4ea05e6d9eb238a2ce 100644 (file)
@@ -37,7 +37,7 @@
 use hir::def_id::DefId;
 use infer;
 use infer::{InferCtxt, InferOk, TypeFreshener};
-use ty::subst::{Kind, Subst, Substs};
+use ty::subst::{Subst, Substs};
 use ty::{self, ToPredicate, ToPolyTraitRef, Ty, TyCtxt, TypeFoldable};
 use ty::fast_reject;
 use ty::relate::TypeRelation;
@@ -3019,7 +3019,7 @@ fn confirm_builtin_unsize_candidate(&mut self,
                 // with a potentially unsized trailing field.
                 let params = substs_a.iter().enumerate().map(|(i, &k)| {
                     if ty_params.contains(i) {
-                        Kind::from(tcx.types.err)
+                        tcx.types.err.into()
                     } else {
                         k
                     }
index 67dde685f8d0b8446a2a408ff51e7518d96bc7bf..c9c31372d560097634c1cc7dc9bad946a7c693f2 100644 (file)
@@ -11,7 +11,7 @@
 // Type substitutions.
 
 use hir::def_id::DefId;
-use ty::{self, Lift, Slice, Region, Ty, TyCtxt};
+use ty::{self, Lift, Slice, Ty, TyCtxt};
 use ty::fold::{TypeFoldable, TypeFolder, TypeVisitor};
 
 use serialize::{self, Encodable, Encoder, Decodable, Decoder};
@@ -39,7 +39,7 @@ pub struct Kind<'tcx> {
 const TYPE_TAG: usize = 0b00;
 const REGION_TAG: usize = 0b01;
 
-#[derive(Debug)]
+#[derive(Debug, RustcEncodable, RustcDecodable)]
 pub enum UnpackedKind<'tcx> {
     Lifetime(ty::Region<'tcx>),
     Type(Ty<'tcx>),
@@ -142,34 +142,13 @@ fn super_visit_with<V: TypeVisitor<'tcx>>(&self, visitor: &mut V) -> bool {
 
 impl<'tcx> Encodable for Kind<'tcx> {
     fn encode<E: Encoder>(&self, e: &mut E) -> Result<(), E::Error> {
-        e.emit_enum("Kind", |e| {
-            match self.unpack() {
-                UnpackedKind::Lifetime(lt) => {
-                    e.emit_enum_variant("Region", REGION_TAG, 1, |e| {
-                        e.emit_enum_variant_arg(0, |e| lt.encode(e))
-                    })
-                }
-                UnpackedKind::Type(ty) => {
-                    e.emit_enum_variant("Ty", TYPE_TAG, 1, |e| {
-                        e.emit_enum_variant_arg(0, |e| ty.encode(e))
-                    })
-                }
-            }
-        })
+        self.unpack().encode(e)
     }
 }
 
 impl<'tcx> Decodable for Kind<'tcx> {
     fn decode<D: Decoder>(d: &mut D) -> Result<Kind<'tcx>, D::Error> {
-        d.read_enum("Kind", |d| {
-            d.read_enum_variant(&["Ty", "Region"], |d, tag| {
-                match tag {
-                    TYPE_TAG => Ty::decode(d).map(Kind::from),
-                    REGION_TAG => Region::decode(d).map(Kind::from),
-                    _ => Err(d.error("invalid Kind tag"))
-                }
-            })
-        })
+        Ok(UnpackedKind::decode(d)?.pack())
     }
 }
 
index d04cb72d52d6ae4a38ab0b6530d7061e95e6ad2c..59d227557aeef9d5a766e2aa63ce6fcbabfdeb56 100644 (file)
@@ -43,7 +43,6 @@
 use rustc::ty::layout::{self, Align, TyLayout, LayoutOf};
 use rustc::ty::maps::Providers;
 use rustc::dep_graph::{DepNode, DepConstructor};
-use rustc::ty::subst::Kind;
 use rustc::middle::cstore::{self, LinkMeta, LinkagePreference};
 use rustc::middle::exported_symbols;
 use rustc::util::common::{time, print_time_passes_entry};
@@ -595,7 +594,7 @@ fn create_entry_fn<'cx>(cx: &'cx CodegenCx,
             let start_fn = callee::resolve_and_get_fn(
                 cx,
                 start_def_id,
-                cx.tcx.intern_substs(&[Kind::from(main_ret_ty)]),
+                cx.tcx.intern_substs(&[main_ret_ty.into()]),
             );
             (start_fn, vec![bx.pointercast(rust_main, Type::i8p(cx).ptr_to()),
                             arg_argc, arg_argv])
index 100edd6b4ffe5c4b54d763c5d515ce74697dc5c2..45429ea7aeaee0e2f051ea64185b92fd5f744084 100644 (file)
 use rustc::middle::const_val::ConstVal;
 use rustc::mir::interpret::{AllocId, ConstValue};
 use rustc::middle::lang_items::{ExchangeMallocFnLangItem, StartFnLangItem};
-use rustc::ty::subst::{Substs, Kind};
+use rustc::ty::subst::Substs;
 use rustc::ty::{self, TypeFoldable, Ty, TyCtxt, GenericParamDefKind};
 use rustc::ty::adjustment::CustomCoerceUnsized;
 use rustc::session::config;
@@ -1067,7 +1067,7 @@ fn push_extra_entry_roots(&mut self) {
             self.tcx,
             ty::ParamEnv::reveal_all(),
             start_def_id,
-            self.tcx.intern_substs(&[Kind::from(main_ret_ty)])
+            self.tcx.intern_substs(&[main_ret_ty.into()])
         ).unwrap();
 
         self.output.push(create_fn_mono_item(start_instance));
index 2d2663bc7c3fca1336dbbe85452907193df5c5a2..63c545c36f07ff8a8f2b5125dfe7f47996af1585 100644 (file)
@@ -13,7 +13,7 @@
 use rustc::infer;
 use rustc::mir::*;
 use rustc::ty::{self, Ty, TyCtxt, GenericParamDefKind};
-use rustc::ty::subst::{Kind, Subst, Substs};
+use rustc::ty::subst::{Subst, Substs};
 use rustc::ty::maps::Providers;
 
 use rustc_data_structures::indexed_vec::{IndexVec, Idx};
@@ -170,7 +170,7 @@ fn build_drop_shim<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
     }
 
     let substs = if let Some(ty) = ty {
-        tcx.mk_substs(iter::once(Kind::from(ty)))
+        tcx.mk_substs(iter::once(ty.into()))
     } else {
         Substs::identity_for_item(tcx, def_id)
     };
index e6ccbd61bd58e88a6f973e5c59901f834c469193..2af3a7ae4c6250104b19cc47b2985f37ecbe286e 100644 (file)
@@ -18,9 +18,9 @@
 use hir::def_id::DefId;
 use middle::resolve_lifetime as rl;
 use namespace::Namespace;
-use rustc::ty::subst::{Kind, UnpackedKind, Subst, Substs};
+use rustc::ty::subst::{UnpackedKind, Subst, Substs};
 use rustc::traits;
-use rustc::ty::{self, RegionKind, Ty, TyCtxt, ToPredicate, TypeFoldable};
+use rustc::ty::{self, Ty, TyCtxt, ToPredicate, TypeFoldable};
 use rustc::ty::GenericParamDefKind;
 use rustc::ty::wf::object_region_bounds;
 use rustc_target::spec::abi;
@@ -1164,7 +1164,7 @@ pub fn impl_trait_ty_to_ty(&self, def_id: DefId, lifetimes: &[hir::Lifetime]) ->
             // Replace all lifetimes with 'static
             for subst in &mut substs {
                 if let UnpackedKind::Lifetime(_) = subst.unpack() {
-                    *subst = Kind::from(&RegionKind::ReStatic);
+                    *subst = tcx.types.re_static.into();
                 }
             }
             debug!("impl_trait_ty_to_ty: substs from parent = {:?}", substs);
@@ -1173,7 +1173,7 @@ pub fn impl_trait_ty_to_ty(&self, def_id: DefId, lifetimes: &[hir::Lifetime]) ->
 
         // Fill in our own generics with the resolved lifetimes
         assert_eq!(lifetimes.len(), generics.params.len());
-        substs.extend(lifetimes.iter().map(|lt| Kind::from(self.ast_region_to_region(lt, None))));
+        substs.extend(lifetimes.iter().map(|lt| self.ast_region_to_region(lt, None).into()));
 
         debug!("impl_trait_ty_to_ty: final substs = {:?}", substs);
 
index 21197b4d85c061cc637330a7e41de0418600fd4b..b4bd64bfacee45ee1095af41e5f8a58ebe00c4c2 100644 (file)
@@ -94,7 +94,7 @@
 use rustc::infer::type_variable::{TypeVariableOrigin};
 use rustc::middle::region;
 use rustc::mir::interpret::{GlobalId};
-use rustc::ty::subst::{Kind, UnpackedKind, Subst, Substs};
+use rustc::ty::subst::{UnpackedKind, Subst, Substs};
 use rustc::traits::{self, ObligationCause, ObligationCauseCode, TraitEngine};
 use rustc::ty::{self, Ty, TyCtxt, GenericParamDefKind, Visibility, ToPredicate};
 use rustc::ty::adjustment::{Adjust, Adjustment, AllowTwoPhase, AutoBorrow, AutoBorrowMutability};
@@ -4754,7 +4754,7 @@ pub fn instantiate_value_path(&self,
                 if let GenericParamDefKind::Type(_) = param.kind {
                     // Handle Self first, so we can adjust the index to match the AST.
                     if has_self && i == 0 {
-                        return opt_self_ty.map(|ty| Kind::from(ty)).unwrap_or_else(|| {
+                        return opt_self_ty.map(|ty| ty.into()).unwrap_or_else(|| {
                             self.var_for_def(span, param)
                         });
                     }