]> git.lizzy.rs Git - rust.git/commitdiff
stop using skip_binder
authorAriel Ben-Yehuda <arielb1@mail.tau.ac.il>
Fri, 7 Aug 2015 10:57:39 +0000 (13:57 +0300)
committerAriel Ben-Yehuda <arielb1@mail.tau.ac.il>
Fri, 7 Aug 2015 10:57:39 +0000 (13:57 +0300)
src/librustc/metadata/decoder.rs

index 38f90e682be06654e38d27397fb60baf72ce71a7..b0f7bab6c59302d0077bc0362e1aabc974c7481d 100644 (file)
@@ -30,7 +30,7 @@
 use middle::lang_items;
 use middle::subst;
 use middle::ty::{ImplContainer, TraitContainer};
-use middle::ty::{self, Ty};
+use middle::ty::{self, RegionEscape, Ty};
 use util::nodemap::FnvHashMap;
 
 use std::cell::{Cell, RefCell};
@@ -477,7 +477,13 @@ fn get_struct_variant<'tcx>(intr: &IdentInterner,
                    variant.name,
                    ctor_ty);
             let field_tys = match ctor_ty.sty {
-                ty::TyBareFn(_, ref f) => &f.sig.skip_binder().inputs,
+                ty::TyBareFn(_, &ty::BareFnTy { sig: ty::Binder(ty::FnSig {
+                    ref inputs, ..
+                }), ..}) => {
+                    // tuple-struct constructors don't have escaping regions
+                    assert!(!inputs.has_escaping_regions());
+                    inputs
+                },
                 _ => tcx.sess.bug("tuple-variant ctor is not an ADT")
             };
             for (field, &ty) in variant.fields.iter().zip(field_tys.iter()) {