diff options
| author | kennytm <kennytm@gmail.com> | 2017-12-02 01:39:00 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-12-02 01:39:00 +0800 |
| commit | b86a47f860ff800eb9e9a46ca2b41eea20e97188 (patch) | |
| tree | f6482d872db4a2bfcad78e858469f7cf1b8d7181 | |
| parent | edaec072b9cd1c7424d6ac6b5751798a0f751eb3 (diff) | |
| parent | 780f4ed882e7e6928210d300765c4836bcb49147 (diff) | |
| download | rust-b86a47f860ff800eb9e9a46ca2b41eea20e97188.tar.gz rust-b86a47f860ff800eb9e9a46ca2b41eea20e97188.zip | |
Rollup merge of #46400 - michaelwoerister:vtable-encodable, r=eddyb
incr.comp.: Make traits::VTable encodable and decodable. Make vtables encodable so we can cache the `trans_fulfill_obligation` query at some point. r? @eddyb
| -rw-r--r-- | src/librustc/traits/mod.rs | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/src/librustc/traits/mod.rs b/src/librustc/traits/mod.rs index a3a5c26ec18..8d1bba43322 100644 --- a/src/librustc/traits/mod.rs +++ b/src/librustc/traits/mod.rs @@ -282,7 +282,7 @@ pub type SelectionResult<'tcx, T> = Result<Option<T>, SelectionError<'tcx>>; /// ### The type parameter `N` /// /// See explanation on `VtableImplData`. -#[derive(Clone)] +#[derive(Clone, RustcEncodable, RustcDecodable)] pub enum Vtable<'tcx, N> { /// Vtable identifying a particular impl. VtableImpl(VtableImplData<'tcx, N>), @@ -327,14 +327,14 @@ pub enum Vtable<'tcx, N> { /// is `Obligation`, as one might expect. During trans, however, this /// is `()`, because trans only requires a shallow resolution of an /// impl, and nested obligations are satisfied later. -#[derive(Clone, PartialEq, Eq)] +#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable)] pub struct VtableImplData<'tcx, N> { pub impl_def_id: DefId, pub substs: &'tcx Substs<'tcx>, pub nested: Vec<N> } -#[derive(Clone, PartialEq, Eq)] +#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable)] pub struct VtableGeneratorData<'tcx, N> { pub closure_def_id: DefId, pub substs: ty::ClosureSubsts<'tcx>, @@ -343,7 +343,7 @@ pub struct VtableGeneratorData<'tcx, N> { pub nested: Vec<N> } -#[derive(Clone, PartialEq, Eq)] +#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable)] pub struct VtableClosureData<'tcx, N> { pub closure_def_id: DefId, pub substs: ty::ClosureSubsts<'tcx>, @@ -352,20 +352,20 @@ pub struct VtableClosureData<'tcx, N> { pub nested: Vec<N> } -#[derive(Clone)] +#[derive(Clone, RustcEncodable, RustcDecodable)] pub struct VtableAutoImplData<N> { pub trait_def_id: DefId, pub nested: Vec<N> } -#[derive(Clone)] +#[derive(Clone, RustcEncodable, RustcDecodable)] pub struct VtableBuiltinData<N> { pub nested: Vec<N> } /// A vtable for some object-safe trait `Foo` automatically derived /// for the object type `Foo`. -#[derive(PartialEq,Eq,Clone)] +#[derive(PartialEq, Eq, Clone, RustcEncodable, RustcDecodable)] pub struct VtableObjectData<'tcx, N> { /// `Foo` upcast to the obligation trait. This will be some supertrait of `Foo`. pub upcast_trait_ref: ty::PolyTraitRef<'tcx>, @@ -378,7 +378,7 @@ pub struct VtableObjectData<'tcx, N> { pub nested: Vec<N>, } -#[derive(Clone, PartialEq, Eq)] +#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable)] pub struct VtableFnPointerData<'tcx, N> { pub fn_ty: Ty<'tcx>, pub nested: Vec<N> |
