auto merge of #5575 : apasel422/rust/simplify-impls, r=thestinger

This commit is contained in:
bors 2013-03-27 20:27:52 -07:00
commit 4954d3e501
11 changed files with 21 additions and 303 deletions

View file

@ -111,7 +111,6 @@
use middle::moves; use middle::moves;
use util::ppaux::ty_to_str; use util::ppaux::ty_to_str;
use core::cmp;
use core::hashmap::linear::LinearMap; use core::hashmap::linear::LinearMap;
use core::io::WriterUtil; use core::io::WriterUtil;
use core::io; use core::io;
@ -137,19 +136,12 @@
// if it detects an outstanding loan (that is, the addr is taken). // if it detects an outstanding loan (that is, the addr is taken).
pub type last_use_map = @mut LinearMap<node_id, @mut ~[node_id]>; pub type last_use_map = @mut LinearMap<node_id, @mut ~[node_id]>;
#[deriving(Eq)]
struct Variable(uint); struct Variable(uint);
#[deriving(Eq)]
struct LiveNode(uint); struct LiveNode(uint);
impl cmp::Eq for Variable { #[deriving(Eq)]
fn eq(&self, other: &Variable) -> bool { *(*self) == *(*other) }
fn ne(&self, other: &Variable) -> bool { *(*self) != *(*other) }
}
impl cmp::Eq for LiveNode {
fn eq(&self, other: &LiveNode) -> bool { *(*self) == *(*other) }
fn ne(&self, other: &LiveNode) -> bool { *(*self) != *(*other) }
}
enum LiveNodeKind { enum LiveNodeKind {
FreeVarNode(span), FreeVarNode(span),
ExprNode(span), ExprNode(span),
@ -157,38 +149,6 @@ enum LiveNodeKind {
ExitNode ExitNode
} }
impl cmp::Eq for LiveNodeKind {
fn eq(&self, other: &LiveNodeKind) -> bool {
match (*self) {
FreeVarNode(e0a) => {
match (*other) {
FreeVarNode(e0b) => e0a == e0b,
_ => false
}
}
ExprNode(e0a) => {
match (*other) {
ExprNode(e0b) => e0a == e0b,
_ => false
}
}
VarDefNode(e0a) => {
match (*other) {
VarDefNode(e0b) => e0a == e0b,
_ => false
}
}
ExitNode => {
match (*other) {
ExitNode => true,
_ => false
}
}
}
}
fn ne(&self, other: &LiveNodeKind) -> bool { !(*self).eq(other) }
}
fn live_node_kind_to_str(lnk: LiveNodeKind, cx: ty::ctxt) -> ~str { fn live_node_kind_to_str(lnk: LiveNodeKind, cx: ty::ctxt) -> ~str {
let cm = cx.sess.codemap; let cm = cx.sess.codemap;
match lnk { match lnk {

View file

@ -18,13 +18,13 @@
use middle::trans::common::*; use middle::trans::common::*;
use middle::trans::cabi::*; use middle::trans::cabi::*;
use core::cmp;
use core::libc::c_uint; use core::libc::c_uint;
use core::option; use core::option;
use core::option::Option; use core::option::Option;
use core::uint; use core::uint;
use core::vec; use core::vec;
#[deriving(Eq)]
enum x86_64_reg_class { enum x86_64_reg_class {
no_class, no_class,
integer_class, integer_class,
@ -40,13 +40,6 @@ enum x86_64_reg_class {
memory_class memory_class
} }
impl cmp::Eq for x86_64_reg_class {
fn eq(&self, other: &x86_64_reg_class) -> bool {
((*self) as uint) == ((*other) as uint)
}
fn ne(&self, other: &x86_64_reg_class) -> bool { !(*self).eq(other) }
}
fn is_sse(++c: x86_64_reg_class) -> bool { fn is_sse(++c: x86_64_reg_class) -> bool {
return match c { return match c {
sse_fs_class | sse_fv_class | sse_fs_class | sse_fv_class |

View file

@ -104,7 +104,6 @@
use util::common::indenter; use util::common::indenter;
use util::ppaux::ty_to_str; use util::ppaux::ty_to_str;
use core::cmp;
use core::container::Set; // XXX: this should not be necessary use core::container::Set; // XXX: this should not be necessary
use core::to_bytes; use core::to_bytes;
use core::uint; use core::uint;
@ -140,6 +139,7 @@ pub struct DatumBlock {
datum: Datum, datum: Datum,
} }
#[deriving(Eq)]
pub enum DatumMode { pub enum DatumMode {
/// `val` is a pointer to the actual value (and thus has type *T) /// `val` is a pointer to the actual value (and thus has type *T)
ByRef, ByRef,
@ -158,13 +158,6 @@ fn is_by_value(&self) -> bool {
} }
} }
impl cmp::Eq for DatumMode {
fn eq(&self, other: &DatumMode) -> bool {
(*self) as uint == (*other as uint)
}
fn ne(&self, other: &DatumMode) -> bool { !(*self).eq(other) }
}
impl to_bytes::IterBytes for DatumMode { impl to_bytes::IterBytes for DatumMode {
fn iter_bytes(&self, +lsb0: bool, f: to_bytes::Cb) { fn iter_bytes(&self, +lsb0: bool, f: to_bytes::Cb) {
(*self as uint).iter_bytes(lsb0, f) (*self as uint).iter_bytes(lsb0, f)

View file

@ -160,6 +160,7 @@
// These are passed around by the code generating functions to track the // These are passed around by the code generating functions to track the
// destination of a computation's value. // destination of a computation's value.
#[deriving(Eq)]
pub enum Dest { pub enum Dest {
SaveIn(ValueRef), SaveIn(ValueRef),
Ignore, Ignore,
@ -174,18 +175,6 @@ fn to_str(&self, ccx: @CrateContext) -> ~str {
} }
} }
impl cmp::Eq for Dest {
fn eq(&self, other: &Dest) -> bool {
match ((*self), (*other)) {
(SaveIn(e0a), SaveIn(e0b)) => e0a == e0b,
(Ignore, Ignore) => true,
(SaveIn(*), _) => false,
(Ignore, _) => false,
}
}
fn ne(&self, other: &Dest) -> bool { !(*self).eq(other) }
}
fn drop_and_cancel_clean(bcx: block, dat: Datum) -> block { fn drop_and_cancel_clean(bcx: block, dat: Datum) -> block {
let bcx = dat.drop_val(bcx); let bcx = dat.drop_val(bcx);
dat.cancel_clean(bcx); dat.cancel_clean(bcx);
@ -1682,6 +1671,7 @@ fn float_cast(bcx: block, lldsttype: TypeRef, llsrctype: TypeRef,
} else { llsrc }; } else { llsrc };
} }
#[deriving(Eq)]
pub enum cast_kind { pub enum cast_kind {
cast_pointer, cast_pointer,
cast_integral, cast_integral,
@ -1690,24 +1680,6 @@ pub enum cast_kind {
cast_other, cast_other,
} }
impl cmp::Eq for cast_kind {
fn eq(&self, other: &cast_kind) -> bool {
match ((*self), (*other)) {
(cast_pointer, cast_pointer) => true,
(cast_integral, cast_integral) => true,
(cast_float, cast_float) => true,
(cast_enum, cast_enum) => true,
(cast_other, cast_other) => true,
(cast_pointer, _) => false,
(cast_integral, _) => false,
(cast_float, _) => false,
(cast_enum, _) => false,
(cast_other, _) => false,
}
}
fn ne(&self, other: &cast_kind) -> bool { !(*self).eq(other) }
}
pub fn cast_type_kind(t: ty::t) -> cast_kind { pub fn cast_type_kind(t: ty::t) -> cast_kind {
match ty::get(t).sty { match ty::get(t).sty {
ty::ty_float(*) => cast_float, ty::ty_float(*) => cast_float,

View file

@ -76,6 +76,7 @@ pub struct method {
def_id: ast::def_id def_id: ast::def_id
} }
#[deriving(Eq)]
pub struct mt { pub struct mt {
ty: t, ty: t,
mutbl: ast::mutability, mutbl: ast::mutability,
@ -161,22 +162,9 @@ pub enum ast_ty_to_ty_cache_entry {
#[auto_encode] #[auto_encode]
#[auto_decode] #[auto_decode]
#[deriving(Eq)]
pub enum region_variance { rv_covariant, rv_invariant, rv_contravariant } pub enum region_variance { rv_covariant, rv_invariant, rv_contravariant }
impl cmp::Eq for region_variance {
fn eq(&self, other: &region_variance) -> bool {
match ((*self), (*other)) {
(rv_covariant, rv_covariant) => true,
(rv_invariant, rv_invariant) => true,
(rv_contravariant, rv_contravariant) => true,
(rv_covariant, _) => false,
(rv_invariant, _) => false,
(rv_contravariant, _) => false
}
}
fn ne(&self, other: &region_variance) -> bool { !(*self).eq(other) }
}
#[auto_encode] #[auto_encode]
#[auto_decode] #[auto_decode]
pub enum AutoAdjustment { pub enum AutoAdjustment {
@ -417,6 +405,7 @@ fn iter_bytes(&self, +lsb0: bool, f: to_bytes::Cb) {
/// Representation of regions: /// Representation of regions:
#[auto_encode] #[auto_encode]
#[auto_decode] #[auto_decode]
#[deriving(Eq)]
pub enum Region { pub enum Region {
/// Bound regions are found (primarily) in function types. They indicate /// Bound regions are found (primarily) in function types. They indicate
/// region parameters that have yet to be replaced with actual regions /// region parameters that have yet to be replaced with actual regions
@ -446,6 +435,7 @@ pub enum Region {
#[auto_encode] #[auto_encode]
#[auto_decode] #[auto_decode]
#[deriving(Eq)]
pub enum bound_region { pub enum bound_region {
/// The self region for structs, impls (&T in a type defn or &'self T) /// The self region for structs, impls (&T in a type defn or &'self T)
br_self, br_self,
@ -585,6 +575,7 @@ pub enum type_err {
terr_float_mismatch(expected_found<ast::float_ty>) terr_float_mismatch(expected_found<ast::float_ty>)
} }
#[deriving(Eq)]
pub enum param_bound { pub enum param_bound {
bound_copy, bound_copy,
bound_durable, bound_durable,
@ -4367,127 +4358,6 @@ pub fn get_impl_id(tcx: ctxt, trait_id: def_id, self_ty: t) -> def_id {
} }
} }
impl cmp::Eq for mt {
fn eq(&self, other: &mt) -> bool {
(*self).ty == (*other).ty && (*self).mutbl == (*other).mutbl
}
fn ne(&self, other: &mt) -> bool { !(*self).eq(other) }
}
impl cmp::Eq for Region {
fn eq(&self, other: &Region) -> bool {
match (*self) {
re_bound(e0a) => {
match (*other) {
re_bound(e0b) => e0a == e0b,
_ => false
}
}
re_free(e0a, e1a) => {
match (*other) {
re_free(e0b, e1b) => e0a == e0b && e1a == e1b,
_ => false
}
}
re_scope(e0a) => {
match (*other) {
re_scope(e0b) => e0a == e0b,
_ => false
}
}
re_static => {
match (*other) {
re_static => true,
_ => false
}
}
re_infer(e0a) => {
match (*other) {
re_infer(e0b) => e0a == e0b,
_ => false
}
}
}
}
fn ne(&self, other: &Region) -> bool { !(*self).eq(other) }
}
impl cmp::Eq for bound_region {
fn eq(&self, other: &bound_region) -> bool {
match (*self) {
br_self => {
match (*other) {
br_self => true,
_ => false
}
}
br_anon(e0a) => {
match (*other) {
br_anon(e0b) => e0a == e0b,
_ => false
}
}
br_named(e0a) => {
match (*other) {
br_named(e0b) => e0a == e0b,
_ => false
}
}
br_cap_avoid(e0a, e1a) => {
match (*other) {
br_cap_avoid(e0b, e1b) => e0a == e0b && e1a == e1b,
_ => false
}
}
br_fresh(e0a) => {
match (*other) {
br_fresh(e0b) => e0a == e0b,
_ => false
}
}
}
}
fn ne(&self, other: &bound_region) -> bool { !(*self).eq(other) }
}
impl cmp::Eq for param_bound {
fn eq(&self, other: &param_bound) -> bool {
match (*self) {
bound_copy => {
match (*other) {
bound_copy => true,
_ => false
}
}
bound_durable => {
match (*other) {
bound_durable => true,
_ => false
}
}
bound_owned => {
match (*other) {
bound_owned => true,
_ => false
}
}
bound_const => {
match (*other) {
bound_const => true,
_ => false
}
}
bound_trait(e0a) => {
match (*other) {
bound_trait(e0b) => e0a == e0b,
_ => false
}
}
}
}
fn ne(&self, other: &param_bound) -> bool { !self.eq(other) }
}
// Local Variables: // Local Variables:
// mode: rust // mode: rust
// fill-column: 78; // fill-column: 78;

View file

@ -548,7 +548,6 @@ fn<a,b>(&a, &b, &a) fn<x,y>(&x, &y, &y) fn<a>(&a, &a, &a) fn<a,b,c>(&a,&b,&c)
use util::ppaux::note_and_explain_region; use util::ppaux::note_and_explain_region;
use core::cell::{Cell, empty_cell}; use core::cell::{Cell, empty_cell};
use core::cmp;
use core::hashmap::linear::{LinearMap, LinearSet}; use core::hashmap::linear::{LinearMap, LinearSet};
use core::result::{Err, Ok, Result}; use core::result::{Err, Ok, Result};
use core::to_bytes; use core::to_bytes;
@ -556,32 +555,13 @@ fn<a,b>(&a, &b, &a) fn<x,y>(&x, &y, &y) fn<a>(&a, &a, &a) fn<a,b,c>(&a,&b,&c)
use core::vec; use core::vec;
use syntax::codemap::span; use syntax::codemap::span;
#[deriving(Eq)]
enum Constraint { enum Constraint {
ConstrainVarSubVar(RegionVid, RegionVid), ConstrainVarSubVar(RegionVid, RegionVid),
ConstrainRegSubVar(Region, RegionVid), ConstrainRegSubVar(Region, RegionVid),
ConstrainVarSubReg(RegionVid, Region) ConstrainVarSubReg(RegionVid, Region)
} }
impl cmp::Eq for Constraint {
fn eq(&self, other: &Constraint) -> bool {
match ((*self), (*other)) {
(ConstrainVarSubVar(v0a, v1a), ConstrainVarSubVar(v0b, v1b)) => {
v0a == v0b && v1a == v1b
}
(ConstrainRegSubVar(ra, va), ConstrainRegSubVar(rb, vb)) => {
ra == rb && va == vb
}
(ConstrainVarSubReg(va, ra), ConstrainVarSubReg(vb, rb)) => {
va == vb && ra == rb
}
(ConstrainVarSubVar(*), _) => false,
(ConstrainRegSubVar(*), _) => false,
(ConstrainVarSubReg(*), _) => false
}
}
fn ne(&self, other: &Constraint) -> bool { !(*self).eq(other) }
}
impl to_bytes::IterBytes for Constraint { impl to_bytes::IterBytes for Constraint {
fn iter_bytes(&self, +lsb0: bool, f: to_bytes::Cb) { fn iter_bytes(&self, +lsb0: bool, f: to_bytes::Cb) {
match *self { match *self {
@ -597,18 +577,12 @@ fn iter_bytes(&self, +lsb0: bool, f: to_bytes::Cb) {
} }
} }
#[deriving(Eq)]
struct TwoRegions { struct TwoRegions {
a: Region, a: Region,
b: Region, b: Region,
} }
impl cmp::Eq for TwoRegions {
fn eq(&self, other: &TwoRegions) -> bool {
(*self).a == (*other).a && (*self).b == (*other).b
}
fn ne(&self, other: &TwoRegions) -> bool { !(*self).eq(other) }
}
impl to_bytes::IterBytes for TwoRegions { impl to_bytes::IterBytes for TwoRegions {
fn iter_bytes(&self, +lsb0: bool, f: to_bytes::Cb) { fn iter_bytes(&self, +lsb0: bool, f: to_bytes::Cb) {
to_bytes::iter_bytes_2(&self.a, &self.b, lsb0, f) to_bytes::iter_bytes_2(&self.a, &self.b, lsb0, f)

View file

@ -45,18 +45,11 @@ enum Msg {
Exit Exit
} }
#[deriving(Clone)]
pub struct Srv { pub struct Srv {
ch: SharedChan<Msg> ch: SharedChan<Msg>
} }
impl Clone for Srv {
fn clone(&self) -> Srv {
Srv {
ch: self.ch.clone()
}
}
}
pub fn from_str<T>(source: ~str, owner: SrvOwner<T>) -> T { pub fn from_str<T>(source: ~str, owner: SrvOwner<T>) -> T {
run(owner, copy source, parse::from_str_sess) run(owner, copy source, parse::from_str_sess)
} }

View file

@ -11,7 +11,6 @@
use core::prelude::*; use core::prelude::*;
use core::cell::Cell; use core::cell::Cell;
use core::cmp;
use core::os; use core::os;
use core::result; use core::result;
use core::run; use core::run;
@ -21,6 +20,7 @@
use std::getopts; use std::getopts;
/// The type of document to output /// The type of document to output
#[deriving(Eq)]
pub enum OutputFormat { pub enum OutputFormat {
/// Markdown /// Markdown
pub Markdown, pub Markdown,
@ -28,14 +28,8 @@ pub enum OutputFormat {
pub PandocHtml pub PandocHtml
} }
impl cmp::Eq for OutputFormat {
fn eq(&self, other: &OutputFormat) -> bool {
((*self) as uint) == ((*other) as uint)
}
fn ne(&self, other: &OutputFormat) -> bool { !(*self).eq(other) }
}
/// How to organize the output /// How to organize the output
#[deriving(Eq)]
pub enum OutputStyle { pub enum OutputStyle {
/// All in a single document /// All in a single document
pub DocPerCrate, pub DocPerCrate,
@ -43,13 +37,6 @@ pub enum OutputStyle {
pub DocPerMod pub DocPerMod
} }
impl cmp::Eq for OutputStyle {
fn eq(&self, other: &OutputStyle) -> bool {
((*self) as uint) == ((*other) as uint)
}
fn ne(&self, other: &OutputStyle) -> bool { !(*self).eq(other) }
}
/// The configuration for a rustdoc session /// The configuration for a rustdoc session
pub struct Config { pub struct Config {
input_crate: Path, input_crate: Path,

View file

@ -19,7 +19,6 @@
use diagnostic::span_handler; use diagnostic::span_handler;
use parse::comments::{doc_comment_style, strip_doc_comment_decoration}; use parse::comments::{doc_comment_style, strip_doc_comment_decoration};
use core::cmp;
use core::either::Either; use core::either::Either;
use core::vec; use core::vec;
use core::hashmap::linear::LinearSet; use core::hashmap::linear::LinearSet;
@ -325,6 +324,7 @@ pub fn foreign_abi(attrs: &[ast::attribute])
}; };
} }
#[deriving(Eq)]
pub enum inline_attr { pub enum inline_attr {
ia_none, ia_none,
ia_hint, ia_hint,
@ -332,13 +332,6 @@ pub enum inline_attr {
ia_never, ia_never,
} }
impl cmp::Eq for inline_attr {
fn eq(&self, other: &inline_attr) -> bool {
((*self) as uint) == ((*other) as uint)
}
fn ne(&self, other: &inline_attr) -> bool { !(*self).eq(other) }
}
/// True if something like #[inline] is found in the list of attrs. /// True if something like #[inline] is found in the list of attrs.
pub fn find_inline_attr(attrs: &[ast::attribute]) -> inline_attr { pub fn find_inline_attr(attrs: &[ast::attribute]) -> inline_attr {
// FIXME (#2809)---validate the usage of #[inline] and #[inline(always)] // FIXME (#2809)---validate the usage of #[inline] and #[inline(always)]

View file

@ -35,10 +35,12 @@ pub trait Pos {
} }
/// A byte offset /// A byte offset
#[deriving(Eq)]
pub struct BytePos(uint); pub struct BytePos(uint);
/// A character offset. Because of multibyte utf8 characters, a byte offset /// A character offset. Because of multibyte utf8 characters, a byte offset
/// is not equivalent to a character offset. The CodeMap will convert BytePos /// is not equivalent to a character offset. The CodeMap will convert BytePos
/// values to CharPos values as necessary. /// values to CharPos values as necessary.
#[deriving(Eq)]
pub struct CharPos(uint); pub struct CharPos(uint);
// XXX: Lots of boilerplate in these impls, but so far my attempts to fix // XXX: Lots of boilerplate in these impls, but so far my attempts to fix
@ -49,11 +51,6 @@ fn from_uint(n: uint) -> BytePos { BytePos(n) }
fn to_uint(&self) -> uint { **self } fn to_uint(&self) -> uint { **self }
} }
impl cmp::Eq for BytePos {
fn eq(&self, other: &BytePos) -> bool { **self == **other }
fn ne(&self, other: &BytePos) -> bool { !(*self).eq(other) }
}
impl cmp::Ord for BytePos { impl cmp::Ord for BytePos {
fn lt(&self, other: &BytePos) -> bool { **self < **other } fn lt(&self, other: &BytePos) -> bool { **self < **other }
fn le(&self, other: &BytePos) -> bool { **self <= **other } fn le(&self, other: &BytePos) -> bool { **self <= **other }
@ -84,11 +81,6 @@ fn from_uint(n: uint) -> CharPos { CharPos(n) }
fn to_uint(&self) -> uint { **self } fn to_uint(&self) -> uint { **self }
} }
impl cmp::Eq for CharPos {
fn eq(&self, other: &CharPos) -> bool { **self == **other }
fn ne(&self, other: &CharPos) -> bool { !(*self).eq(other) }
}
impl cmp::Ord for CharPos { impl cmp::Ord for CharPos {
fn lt(&self, other: &CharPos) -> bool { **self < **other } fn lt(&self, other: &CharPos) -> bool { **self < **other }
fn le(&self, other: &CharPos) -> bool { **self <= **other } fn le(&self, other: &CharPos) -> bool { **self <= **other }

View file

@ -20,13 +20,13 @@
use parse::token; use parse::token;
use parse; use parse;
use core::cmp;
use core::io::ReaderUtil; use core::io::ReaderUtil;
use core::io; use core::io;
use core::str; use core::str;
use core::uint; use core::uint;
use core::vec; use core::vec;
#[deriving(Eq)]
pub enum cmnt_style { pub enum cmnt_style {
isolated, // No code on either side of each line of the comment isolated, // No code on either side of each line of the comment
trailing, // Code exists to the left of the comment trailing, // Code exists to the left of the comment
@ -34,15 +34,6 @@ pub enum cmnt_style {
blank_line, // Just a manual blank line "\n\n", for layout blank_line, // Just a manual blank line "\n\n", for layout
} }
impl cmp::Eq for cmnt_style {
fn eq(&self, other: &cmnt_style) -> bool {
((*self) as uint) == ((*other) as uint)
}
fn ne(&self, other: &cmnt_style) -> bool {
((*self) as uint) != ((*other) as uint)
}
}
pub struct cmnt { pub struct cmnt {
style: cmnt_style, style: cmnt_style,
lines: ~[~str], lines: ~[~str],