提交 0e26bb72 编写于 作者: T Tatsuyuki Ishi

Revert "Implement Ord as necessary"

This reverts commit c6772b4d.
上级 27a046e9
...@@ -101,7 +101,7 @@ pub struct MismatchedProjectionTypes<'tcx> { ...@@ -101,7 +101,7 @@ pub struct MismatchedProjectionTypes<'tcx> {
pub err: ty::error::TypeError<'tcx> pub err: ty::error::TypeError<'tcx>
} }
#[derive(PartialEq, Eq, PartialOrd, Ord, Debug)] #[derive(PartialEq, Eq, Debug)]
enum ProjectionTyCandidate<'tcx> { enum ProjectionTyCandidate<'tcx> {
// from a where-clause in the env or object type // from a where-clause in the env or object type
ParamEnv(ty::PolyProjectionPredicate<'tcx>), ParamEnv(ty::PolyProjectionPredicate<'tcx>),
......
...@@ -39,7 +39,6 @@ ...@@ -39,7 +39,6 @@
use serialize::{self, Encodable, Encoder}; use serialize::{self, Encodable, Encoder};
use std::cell::RefCell; use std::cell::RefCell;
use std::cmp; use std::cmp;
use std::cmp::Ordering;
use std::fmt; use std::fmt;
use std::hash::{Hash, Hasher}; use std::hash::{Hash, Hasher};
use std::iter::FromIterator; use std::iter::FromIterator;
...@@ -498,20 +497,6 @@ fn hash<H: Hasher>(&self, s: &mut H) { ...@@ -498,20 +497,6 @@ fn hash<H: Hasher>(&self, s: &mut H) {
} }
} }
impl<'tcx> Ord for TyS<'tcx> {
#[inline]
fn cmp(&self, other: &TyS<'tcx>) -> Ordering {
// (self as *const _).cmp(other as *const _)
(self as *const TyS<'tcx>).cmp(&(other as *const TyS<'tcx>))
}
}
impl<'tcx> PartialOrd for TyS<'tcx> {
#[inline]
fn partial_cmp(&self, other: &TyS<'tcx>) -> Option<Ordering> {
Some(self.cmp(other))
}
}
impl<'tcx> TyS<'tcx> { impl<'tcx> TyS<'tcx> {
pub fn is_primitive_ty(&self) -> bool { pub fn is_primitive_ty(&self) -> bool {
match self.sty { match self.sty {
...@@ -581,19 +566,6 @@ fn eq(&self, other: &Slice<T>) -> bool { ...@@ -581,19 +566,6 @@ fn eq(&self, other: &Slice<T>) -> bool {
} }
impl<T> Eq for Slice<T> {} impl<T> Eq for Slice<T> {}
impl<T> Ord for Slice<T> {
#[inline]
fn cmp(&self, other: &Slice<T>) -> Ordering {
(&self.0 as *const [T]).cmp(&(&other.0 as *const [T]))
}
}
impl<T> PartialOrd for Slice<T> {
#[inline]
fn partial_cmp(&self, other: &Slice<T>) -> Option<Ordering> {
Some(self.cmp(other))
}
}
impl<T> Hash for Slice<T> { impl<T> Hash for Slice<T> {
fn hash<H: Hasher>(&self, s: &mut H) { fn hash<H: Hasher>(&self, s: &mut H) {
(self.as_ptr(), self.len()).hash(s) (self.as_ptr(), self.len()).hash(s)
...@@ -1128,7 +1100,7 @@ pub struct SubtypePredicate<'tcx> { ...@@ -1128,7 +1100,7 @@ pub struct SubtypePredicate<'tcx> {
/// equality between arbitrary types. Processing an instance of /// equality between arbitrary types. Processing an instance of
/// Form #2 eventually yields one of these `ProjectionPredicate` /// Form #2 eventually yields one of these `ProjectionPredicate`
/// instances to normalize the LHS. /// instances to normalize the LHS.
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, RustcEncodable, RustcDecodable)] #[derive(Copy, Clone, PartialEq, Eq, Hash, RustcEncodable, RustcDecodable)]
pub struct ProjectionPredicate<'tcx> { pub struct ProjectionPredicate<'tcx> {
pub projection_ty: ProjectionTy<'tcx>, pub projection_ty: ProjectionTy<'tcx>,
pub ty: Ty<'tcx>, pub ty: Ty<'tcx>,
......
...@@ -645,7 +645,7 @@ pub fn input_types<'a>(&'a self) -> impl DoubleEndedIterator<Item=Ty<'tcx>> + 'a ...@@ -645,7 +645,7 @@ pub fn input_types<'a>(&'a self) -> impl DoubleEndedIterator<Item=Ty<'tcx>> + 'a
/// erase, or otherwise "discharge" these bound regions, we change the /// erase, or otherwise "discharge" these bound regions, we change the
/// type from `Binder<T>` to just `T` (see /// type from `Binder<T>` to just `T` (see
/// e.g. `liberate_late_bound_regions`). /// e.g. `liberate_late_bound_regions`).
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug, RustcEncodable, RustcDecodable)] #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, RustcEncodable, RustcDecodable)]
pub struct Binder<T>(pub T); pub struct Binder<T>(pub T);
impl<T> Binder<T> { impl<T> Binder<T> {
...@@ -745,7 +745,7 @@ pub fn split<U,V,F>(self, f: F) -> (Binder<U>, Binder<V>) ...@@ -745,7 +745,7 @@ pub fn split<U,V,F>(self, f: F) -> (Binder<U>, Binder<V>)
/// Represents the projection of an associated type. In explicit UFCS /// Represents the projection of an associated type. In explicit UFCS
/// form this would be written `<T as Trait<..>>::N`. /// form this would be written `<T as Trait<..>>::N`.
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug, RustcEncodable, RustcDecodable)] #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, RustcEncodable, RustcDecodable)]
pub struct ProjectionTy<'tcx> { pub struct ProjectionTy<'tcx> {
/// The parameters of the associated item. /// The parameters of the associated item.
pub substs: &'tcx Substs<'tcx>, pub substs: &'tcx Substs<'tcx>,
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
/// To reduce memory usage, a `Kind` is a interned pointer, /// To reduce memory usage, a `Kind` is a interned pointer,
/// with the lowest 2 bits being reserved for a tag to /// with the lowest 2 bits being reserved for a tag to
/// indicate the type (`Ty` or `Region`) it points to. /// indicate the type (`Ty` or `Region`) it points to.
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] #[derive(Copy, Clone, PartialEq, Eq, Hash)]
pub struct Kind<'tcx> { pub struct Kind<'tcx> {
ptr: NonZero<usize>, ptr: NonZero<usize>,
marker: PhantomData<(Ty<'tcx>, ty::Region<'tcx>)> marker: PhantomData<(Ty<'tcx>, ty::Region<'tcx>)>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册