diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2018-06-27 00:57:27 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2018-07-14 14:57:14 +0300 |
| commit | 5987fe8f75c443d4f73603fa5a3af8ab41ee1b01 (patch) | |
| tree | c22459a556bfe3f4cccbf417bd5c062c2ce1833c /src/libsyntax | |
| parent | 4d1a30c92b50c5965ed26449758fca81bee15747 (diff) | |
| download | rust-5987fe8f75c443d4f73603fa5a3af8ab41ee1b01.tar.gz rust-5987fe8f75c443d4f73603fa5a3af8ab41ee1b01.zip | |
Remove most of `Hash` impls from AST and HIR structures
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/ast.rs | 198 | ||||
| -rw-r--r-- | src/libsyntax/ext/tt/quoted.rs | 6 | ||||
| -rw-r--r-- | src/libsyntax/parse/token.rs | 4 | ||||
| -rw-r--r-- | src/libsyntax/tokenstream.rs | 20 |
4 files changed, 106 insertions, 122 deletions
diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs index f689e27a3ab..a7ce4404fb8 100644 --- a/src/libsyntax/ast.rs +++ b/src/libsyntax/ast.rs @@ -34,7 +34,7 @@ use std::u32; pub use rustc_target::abi::FloatTy; -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Copy)] +#[derive(Clone, RustcEncodable, RustcDecodable, Copy)] pub struct Label { pub ident: Ident, } @@ -45,7 +45,7 @@ impl fmt::Debug for Label { } } -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Copy)] +#[derive(Clone, RustcEncodable, RustcDecodable, Copy)] pub struct Lifetime { pub id: NodeId, pub ident: Ident, @@ -63,7 +63,7 @@ impl fmt::Debug for Lifetime { /// along with a bunch of supporting information. /// /// E.g. `std::cmp::PartialEq` -#[derive(Clone, RustcEncodable, RustcDecodable, Hash)] +#[derive(Clone, RustcEncodable, RustcDecodable)] pub struct Path { pub span: Span, /// The segments in the path: the things separated by `::`. @@ -115,7 +115,7 @@ impl Path { /// A segment of a path: an identifier, an optional lifetime, and a set of types. /// /// E.g. `std`, `String` or `Box<T>` -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct PathSegment { /// The identifier portion of this path segment. pub ident: Ident, @@ -141,7 +141,7 @@ impl PathSegment { /// Arguments of a path segment. /// /// E.g. `<A, B>` as in `Foo<A, B>` or `(A, B)` as in `Foo(A, B)` -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub enum GenericArgs { /// The `<'a, A,B,C>` in `foo::bar::baz::<'a, A,B,C>` AngleBracketed(AngleBracketedArgs), @@ -158,14 +158,14 @@ impl GenericArgs { } } -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub enum GenericArg { Lifetime(Lifetime), Type(P<Ty>), } /// A path like `Foo<'a, T>` -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug, Default)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug, Default)] pub struct AngleBracketedArgs { /// Overall span pub span: Span, @@ -190,7 +190,7 @@ impl Into<Option<P<GenericArgs>>> for ParenthesisedArgs { } /// A path like `Foo(A,B) -> C` -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct ParenthesisedArgs { /// Overall span pub span: Span, @@ -270,7 +270,7 @@ pub const DUMMY_NODE_ID: NodeId = NodeId(!0); /// A modifier on a bound, currently this is only used for `?Sized`, where the /// modifier is `Maybe`. Negative bounds should also be handled here. -#[derive(Copy, Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Copy, Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Debug)] pub enum TraitBoundModifier { None, Maybe, @@ -280,7 +280,7 @@ pub enum TraitBoundModifier { /// typeck::collect::compute_bounds matches these against /// the "special" built-in traits (see middle::lang_items) and /// detects Copy, Send and Sync. -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub enum GenericBound { Trait(PolyTraitRef, TraitBoundModifier), Outlives(Lifetime) @@ -297,7 +297,7 @@ impl GenericBound { pub type GenericBounds = Vec<GenericBound>; -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub enum GenericParamKind { /// A lifetime definition, e.g. `'a: 'b+'c+'d`. Lifetime, @@ -306,7 +306,7 @@ pub enum GenericParamKind { } } -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct GenericParam { pub id: NodeId, pub ident: Ident, @@ -318,7 +318,7 @@ pub struct GenericParam { /// Represents lifetime, type and const parameters attached to a declaration of /// a function, enum, trait, etc. -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct Generics { pub params: Vec<GenericParam>, pub where_clause: WhereClause, @@ -341,7 +341,7 @@ impl Default for Generics { } /// A `where` clause in a definition -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct WhereClause { pub id: NodeId, pub predicates: Vec<WherePredicate>, @@ -349,7 +349,7 @@ pub struct WhereClause { } /// A single predicate in a `where` clause -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub enum WherePredicate { /// A type binding, e.g. `for<'c> Foo: Send+Clone+'c` BoundPredicate(WhereBoundPredicate), @@ -372,7 +372,7 @@ impl WherePredicate { /// A type bound. /// /// E.g. `for<'c> Foo: Send+Clone+'c` -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct WhereBoundPredicate { pub span: Span, /// Any generics from a `for` binding @@ -386,7 +386,7 @@ pub struct WhereBoundPredicate { /// A lifetime predicate. /// /// E.g. `'a: 'b+'c` -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct WhereRegionPredicate { pub span: Span, pub lifetime: Lifetime, @@ -396,7 +396,7 @@ pub struct WhereRegionPredicate { /// An equality predicate (unsupported). /// /// E.g. `T=int` -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct WhereEqPredicate { pub id: NodeId, pub span: Span, @@ -408,7 +408,7 @@ pub struct WhereEqPredicate { /// used to drive conditional compilation pub type CrateConfig = HashSet<(Name, Option<Symbol>)>; -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct Crate { pub module: Mod, pub attrs: Vec<Attribute>, @@ -421,7 +421,7 @@ pub type NestedMetaItem = Spanned<NestedMetaItemKind>; /// Possible values inside of compile-time attribute lists. /// /// E.g. the '..' in `#[name(..)]`. -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub enum NestedMetaItemKind { /// A full MetaItem, for recursive meta items. MetaItem(MetaItem), @@ -434,7 +434,7 @@ pub enum NestedMetaItemKind { /// A spanned compile-time attribute item. /// /// E.g. `#[test]`, `#[derive(..)]`, `#[rustfmt::skip]` or `#[feature = "foo"]` -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct MetaItem { pub ident: Path, pub node: MetaItemKind, @@ -444,7 +444,7 @@ pub struct MetaItem { /// A compile-time attribute item. /// /// E.g. `#[test]`, `#[derive(..)]` or `#[feature = "foo"]` -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub enum MetaItemKind { /// Word meta item. /// @@ -463,7 +463,7 @@ pub enum MetaItemKind { /// A Block (`{ .. }`). /// /// E.g. `{ .. }` as in `fn foo() { .. }` -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct Block { /// Statements in a block pub stmts: Vec<Stmt>, @@ -474,7 +474,7 @@ pub struct Block { pub recovered: bool, } -#[derive(Clone, RustcEncodable, RustcDecodable, Hash)] +#[derive(Clone, RustcEncodable, RustcDecodable)] pub struct Pat { pub id: NodeId, pub node: PatKind, @@ -552,7 +552,7 @@ impl Pat { /// Patterns like the fields of Foo `{ x, ref y, ref mut z }` /// are treated the same as` x: x, y: ref y, z: ref mut z`, /// except is_shorthand is true -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct FieldPat { /// The identifier for the field pub ident: Ident, @@ -562,25 +562,25 @@ pub struct FieldPat { pub attrs: ThinVec<Attribute>, } -#[derive(Clone, PartialEq, RustcEncodable, RustcDecodable, Hash, Debug, Copy)] +#[derive(Clone, PartialEq, RustcEncodable, RustcDecodable, Debug, Copy)] pub enum BindingMode { ByRef(Mutability), ByValue(Mutability), } -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub enum RangeEnd { Included(RangeSyntax), Excluded, } -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub enum RangeSyntax { DotDotDot, DotDotEq, } -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub enum PatKind { /// Represents a wildcard pattern (`_`) Wild, @@ -627,13 +627,13 @@ pub enum PatKind { Mac(Mac), } -#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, RustcEncodable, RustcDecodable, Hash, Debug, Copy)] +#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Hash, RustcEncodable, RustcDecodable, Debug, Copy)] pub enum Mutability { Mutable, Immutable, } -#[derive(Clone, PartialEq, RustcEncodable, RustcDecodable, Hash, Debug, Copy)] +#[derive(Clone, PartialEq, RustcEncodable, RustcDecodable, Debug, Copy)] pub enum BinOpKind { /// The `+` operator (addition) Add, @@ -730,7 +730,7 @@ impl BinOpKind { pub type BinOp = Spanned<BinOpKind>; -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug, Copy)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug, Copy)] pub enum UnOp { /// The `*` operator for dereferencing Deref, @@ -759,7 +759,7 @@ impl UnOp { } /// A statement -#[derive(Clone, RustcEncodable, RustcDecodable, Hash)] +#[derive(Clone, RustcEncodable, RustcDecodable)] pub struct Stmt { pub id: NodeId, pub node: StmtKind, @@ -800,7 +800,7 @@ impl fmt::Debug for Stmt { } -#[derive(Clone, RustcEncodable, RustcDecodable, Hash)] +#[derive(Clone, RustcEncodable, RustcDecodable)] pub enum StmtKind { /// A local (let) binding. Local(P<Local>), @@ -816,7 +816,7 @@ pub enum StmtKind { Mac(P<(Mac, MacStmtStyle, ThinVec<Attribute>)>), } -#[derive(Clone, Copy, PartialEq, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, Copy, PartialEq, RustcEncodable, RustcDecodable, Debug)] pub enum MacStmtStyle { /// The macro statement had a trailing semicolon, e.g. `foo! { ... };` /// `foo!(...);`, `foo![...];` @@ -830,7 +830,7 @@ pub enum MacStmtStyle { } /// Local represents a `let` statement, e.g., `let <pat>:<ty> = <expr>;` -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct Local { pub pat: P<Pat>, pub ty: Option<P<Ty>>, @@ -851,7 +851,7 @@ pub struct Local { /// _ => { println!("no match!") }, /// } /// ``` -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct Arm { pub attrs: Vec<Attribute>, pub pats: Vec<P<Pat>>, @@ -859,7 +859,7 @@ pub struct Arm { pub body: P<Expr>, } -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct Field { pub ident: Ident, pub expr: P<Expr>, @@ -870,13 +870,13 @@ pub struct Field { pub type SpannedIdent = Spanned<Ident>; -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug, Copy)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug, Copy)] pub enum BlockCheckMode { Default, Unsafe(UnsafeSource), } -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug, Copy)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug, Copy)] pub enum UnsafeSource { CompilerGenerated, UserProvided, @@ -887,7 +887,7 @@ pub enum UnsafeSource { /// These are usually found nested inside types (e.g. array lengths) /// or expressions (e.g. repeat counts), and also used to define /// explicit discriminant values for enum variants. -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct AnonConst { pub id: NodeId, pub value: P<Expr>, @@ -895,7 +895,7 @@ pub struct AnonConst { /// An expression -#[derive(Clone, RustcEncodable, RustcDecodable, Hash,)] +#[derive(Clone, RustcEncodable, RustcDecodable)] pub struct Expr { pub id: NodeId, pub node: ExprKind, @@ -1018,7 +1018,7 @@ impl fmt::Debug for Expr { } /// Limit types of a range (inclusive or exclusive) -#[derive(Copy, Clone, PartialEq, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Copy, Clone, PartialEq, RustcEncodable, RustcDecodable, Debug)] pub enum RangeLimits { /// Inclusive at the beginning, exclusive at the end HalfOpen, @@ -1026,7 +1026,7 @@ pub enum RangeLimits { Closed, } -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub enum ExprKind { /// A `box x` expression. Box(P<Expr>), @@ -1183,7 +1183,7 @@ pub enum ExprKind { /// ^~~~~ ^ /// ty position = 0 /// ``` -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct QSelf { pub ty: P<Ty>, @@ -1195,14 +1195,14 @@ pub struct QSelf { } /// A capture clause -#[derive(Clone, Copy, PartialEq, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, Copy, PartialEq, RustcEncodable, RustcDecodable, Debug)] pub enum CaptureBy { Value, Ref, } /// The movability of a generator / closure literal -#[derive(Clone, PartialEq, RustcEncodable, RustcDecodable, Hash, Debug, Copy)] +#[derive(Clone, PartialEq, RustcEncodable, RustcDecodable, Debug, Copy)] pub enum Movability { Static, Movable, @@ -1216,14 +1216,14 @@ pub type Mac = Spanned<Mac_>; /// /// NB: the additional ident for a macro_rules-style macro is actually /// stored in the enclosing item. Oog. -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct Mac_ { pub path: Path, pub delim: MacDelimiter, pub tts: ThinTokenStream, } -#[derive(Copy, Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Copy, Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Debug)] pub enum MacDelimiter { Parenthesis, Bracket, @@ -1236,7 +1236,7 @@ impl Mac_ { } } -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct MacroDef { pub tokens: ThinTokenStream, pub legacy: bool, @@ -1248,7 +1248,7 @@ impl MacroDef { } } -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug, Copy)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug, Copy)] pub enum StrStyle { /// A regular string, like `"foo"` Cooked, @@ -1261,7 +1261,7 @@ pub enum StrStyle { /// A literal pub type Lit = Spanned<LitKind>; -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug, Copy)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug, Copy)] pub enum LitIntType { Signed(IntTy), Unsigned(UintTy), @@ -1271,7 +1271,7 @@ pub enum LitIntType { /// Literal kind. /// /// E.g. `"foo"`, `42`, `12.34` or `bool` -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub enum LitKind { /// A string literal (`"foo"`) Str(Symbol, StrStyle), @@ -1337,7 +1337,7 @@ impl LitKind { // NB: If you change this, you'll probably want to change the corresponding // type structure in middle/ty.rs as well. -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct MutTy { pub ty: P<Ty>, pub mutbl: Mutability, @@ -1345,7 +1345,7 @@ pub struct MutTy { /// Represents a method's signature in a trait declaration, /// or in an implementation. -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct MethodSig { pub header: FnHeader, pub decl: P<FnDecl>, @@ -1355,7 +1355,7 @@ pub struct MethodSig { /// possibly including a default implementation. A trait item is /// either required (meaning it doesn't have an implementation, just a /// signature) or provided (meaning it has a default implementation). -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct TraitItem { pub id: NodeId, pub ident: Ident, @@ -1367,7 +1367,7 @@ pub struct TraitItem { pub tokens: Option<TokenStream>, } -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub enum TraitItemKind { Const(P<Ty>, Option<P<Expr>>), Method(MethodSig, Option<P<Block>>), @@ -1375,7 +1375,7 @@ pub enum TraitItemKind { Macro(Mac), } -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct ImplItem { pub id: NodeId, pub ident: Ident, @@ -1389,7 +1389,7 @@ pub struct ImplItem { pub tokens: Option<TokenStream>, } -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub enum ImplItemKind { Const(P<Ty>, P<Expr>), Method(MethodSig, P<Block>), @@ -1397,7 +1397,7 @@ pub enum ImplItemKind { Macro(Mac), } -#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, RustcEncodable, RustcDecodable, Hash, Copy)] +#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Hash, RustcEncodable, RustcDecodable, Copy)] pub enum IntTy { Isize, I8, @@ -1450,7 +1450,7 @@ impl IntTy { } } -#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, RustcEncodable, RustcDecodable, Hash, Copy)] +#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Hash, RustcEncodable, RustcDecodable, Copy)] pub enum UintTy { Usize, U8, @@ -1501,7 +1501,7 @@ impl fmt::Display for UintTy { } // Bind a type to an associated type: `A=Foo`. -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct TypeBinding { pub id: NodeId, pub ident: Ident, @@ -1509,7 +1509,7 @@ pub struct TypeBinding { pub span: Span, } -#[derive(Clone, RustcEncodable, RustcDecodable, Hash)] +#[derive(Clone, RustcEncodable, RustcDecodable)] pub struct Ty { pub id: NodeId, pub node: TyKind, @@ -1522,7 +1522,7 @@ impl fmt::Debug for Ty { } } -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct BareFnTy { pub unsafety: Unsafety, pub abi: Abi, @@ -1531,7 +1531,7 @@ pub struct BareFnTy { } /// The different kinds of types recognized by the compiler -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub enum TyKind { /// A variable-length slice (`[T]`) Slice(P<Ty>), @@ -1587,7 +1587,7 @@ impl TyKind { } /// Syntax used to declare a trait object. -#[derive(Clone, Copy, PartialEq, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, Copy, PartialEq, RustcEncodable, RustcDecodable, Debug)] pub enum TraitObjectSyntax { Dyn, None, @@ -1596,7 +1596,7 @@ pub enum TraitObjectSyntax { /// Inline assembly dialect. /// /// E.g. `"intel"` as in `asm!("mov eax, 2" : "={eax}"(result) : : : "intel")` -#[derive(Clone, PartialEq, RustcEncodable, RustcDecodable, Hash, Debug, Copy)] +#[derive(Clone, PartialEq, RustcEncodable, RustcDecodable, Debug, Copy)] pub enum AsmDialect { Att, Intel, @@ -1605,7 +1605,7 @@ pub enum AsmDialect { /// Inline assembly. /// /// E.g. `"={eax}"(result)` as in `asm!("mov eax, 2" : "={eax}"(result) : : : "intel")` -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct InlineAsmOutput { pub constraint: Symbol, pub expr: P<Expr>, @@ -1616,7 +1616,7 @@ pub struct InlineAsmOutput { /// Inline assembly. /// /// E.g. `asm!("NOP");` -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct InlineAsm { pub asm: Symbol, pub asm_str_style: StrStyle, @@ -1632,7 +1632,7 @@ pub struct InlineAsm { /// An argument in a function header. /// /// E.g. `bar: usize` as in `fn foo(bar: usize)` -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct Arg { pub ty: P<Ty>, pub pat: P<Pat>, @@ -1642,7 +1642,7 @@ pub struct Arg { /// Alternative representation for `Arg`s describing `self` parameter of methods. /// /// E.g. `&mut self` as in `fn foo(&mut self)` -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub enum SelfKind { /// `self`, `mut self` Value(Mutability), @@ -1710,7 +1710,7 @@ impl Arg { /// Header (not the body) of a function declaration. /// /// E.g. `fn foo(bar: baz)` -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct FnDecl { pub inputs: Vec<Arg>, pub output: FunctionRetTy, @@ -1727,19 +1727,19 @@ impl FnDecl { } /// Is the trait definition an auto trait? -#[derive(Copy, Clone, PartialEq, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Copy, Clone, PartialEq, RustcEncodable, RustcDecodable, Debug)] pub enum IsAuto { Yes, No } -#[derive(Copy, Clone, PartialEq, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Copy, Clone, PartialEq, RustcEncodable, RustcDecodable, Debug)] pub enum Unsafety { Unsafe, Normal, } -#[derive(Copy, Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Copy, Clone, RustcEncodable, RustcDecodable, Debug)] pub enum IsAsync { Async { closure_id: NodeId, @@ -1765,13 +1765,13 @@ impl IsAsync { } } -#[derive(Copy, Clone, PartialEq, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Copy, Clone, PartialEq, RustcEncodable, RustcDecodable, Debug)] pub enum Constness { Const, NotConst, } -#[derive(Copy, Clone, PartialEq, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Copy, Clone, PartialEq, RustcEncodable, RustcDecodable, Debug)] pub enum Defaultness { Default, Final, @@ -1786,7 +1786,7 @@ impl fmt::Display for Unsafety { } } -#[derive(Copy, Clone, PartialEq, RustcEncodable, RustcDecodable, Hash)] +#[derive(Copy, Clone, PartialEq, RustcEncodable, RustcDecodable)] pub enum ImplPolarity { /// `impl Trait for Type` Positive, @@ -1804,7 +1804,7 @@ impl fmt::Debug for ImplPolarity { } -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub enum FunctionRetTy { /// Return type is not specified. /// @@ -1828,7 +1828,7 @@ impl FunctionRetTy { /// Module declaration. /// /// E.g. `mod foo;` or `mod foo { .. }` -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct Mod { /// A span from the first token past `{` to the last token until `}`. /// For `mod foo;`, the inner span ranges from the first token @@ -1840,7 +1840,7 @@ pub struct Mod { /// Foreign module declaration. /// /// E.g. `extern { .. }` or `extern C { .. }` -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct ForeignMod { pub abi: Abi, pub items: Vec<ForeignItem>, @@ -1849,18 +1849,18 @@ pub struct ForeignMod { /// Global inline assembly /// /// aka module-level assembly or file-scoped assembly -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug, Copy)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug, Copy)] pub struct GlobalAsm { pub asm: Symbol, pub ctxt: SyntaxContext, } -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct EnumDef { pub variants: Vec<Variant>, } -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct Variant_ { pub ident: Ident, pub attrs: Vec<Attribute>, @@ -1872,7 +1872,7 @@ pub struct Variant_ { pub type Variant = Spanned<Variant_>; /// Part of `use` item to the right of its prefix. -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub enum UseTreeKind { /// `use prefix` or `use prefix as rename` /// @@ -1887,7 +1887,7 @@ pub enum UseTreeKind { /// A tree of paths sharing common prefixes. /// Used in `use` items both at top-level and inside of braces in import groups. -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct UseTree { pub prefix: Path, pub kind: UseTreeKind, @@ -1908,7 +1908,7 @@ impl UseTree { /// Distinguishes between Attributes that decorate items and Attributes that /// are contained as statements within items. These two cases need to be /// distinguished for pretty-printing. -#[derive(Clone, PartialEq, RustcEncodable, RustcDecodable, Hash, Debug, Copy)] +#[derive(Clone, PartialEq, RustcEncodable, RustcDecodable, Debug, Copy)] pub enum AttrStyle { Outer, Inner, @@ -1919,7 +1919,7 @@ pub struct AttrId(pub usize); /// Meta-data associated with an item /// Doc-comments are promoted to attributes that have is_sugared_doc = true -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct Attribute { pub id: AttrId, pub style: AttrStyle, @@ -1935,13 +1935,13 @@ pub struct Attribute { /// that the ref_id is for. The impl_id maps to the "self type" of this impl. /// If this impl is an ItemKind::Impl, the impl_id is redundant (it could be the /// same as the impl's node id). -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct TraitRef { pub path: Path, pub ref_id: NodeId, } -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct PolyTraitRef { /// The `'a` in `<'a> Foo<&'a T>` pub bound_generic_params: Vec<GenericParam>, @@ -1962,7 +1962,7 @@ impl PolyTraitRef { } } -#[derive(Copy, Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Copy, Clone, RustcEncodable, RustcDecodable, Debug)] pub enum CrateSugar { /// Source is `pub(crate)` PubCrate, @@ -1973,7 +1973,7 @@ pub enum CrateSugar { pub type Visibility = Spanned<VisibilityKind>; -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub enum VisibilityKind { Public, Crate(CrateSugar), @@ -1990,7 +1990,7 @@ impl VisibilityKind { /// Field of a struct. /// /// E.g. `bar: usize` as in `struct Foo { bar: usize }` -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct StructField { pub span: Span, pub ident: Option<Ident>, @@ -2011,7 +2011,7 @@ pub struct StructField { /// used for `Struct`-structs (but still presents). Structures don't have an analogue of "Id of /// the variant itself" from enum variants. /// Id of the whole struct lives in `Item`. -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub enum VariantData { /// Struct variant. /// @@ -2053,7 +2053,7 @@ impl VariantData { /// An item /// /// The name might be a dummy name in case of anonymous items -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct Item { pub ident: Ident, pub attrs: Vec<Attribute>, @@ -2076,7 +2076,7 @@ pub struct Item { /// /// All the information between the visibility & the name of the function is /// included in this struct (e.g. `async unsafe fn` or `const extern "C" fn`) -#[derive(Clone, Copy, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, Copy, RustcEncodable, RustcDecodable, Debug)] pub struct FnHeader { pub unsafety: Unsafety, pub asyncness: IsAsync, @@ -2095,7 +2095,7 @@ impl Default for FnHeader { } } -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub enum ItemKind { /// An `extern crate` item, with optional *original* crate name if the crate was renamed. /// @@ -2194,7 +2194,7 @@ impl ItemKind { } } -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub struct ForeignItem { pub ident: Ident, pub attrs: Vec<Attribute>, @@ -2205,7 +2205,7 @@ pub struct ForeignItem { } /// An item within an `extern` block -#[derive(Clone, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, Debug)] pub enum ForeignItemKind { /// A foreign function Fn(P<FnDecl>, Generics), diff --git a/src/libsyntax/ext/tt/quoted.rs b/src/libsyntax/ext/tt/quoted.rs index 2f6bf5b821a..d21ffabb62e 100644 --- a/src/libsyntax/ext/tt/quoted.rs +++ b/src/libsyntax/ext/tt/quoted.rs @@ -22,7 +22,7 @@ use rustc_data_structures::sync::Lrc; /// Contains the sub-token-trees of a "delimited" token tree, such as the contents of `(`. Note /// that the delimiter itself might be `NoDelim`. -#[derive(Clone, PartialEq, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, PartialEq, RustcEncodable, RustcDecodable, Debug)] pub struct Delimited { pub delim: token::DelimToken, pub tts: Vec<TokenTree>, @@ -60,7 +60,7 @@ impl Delimited { } } -#[derive(Clone, PartialEq, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, PartialEq, RustcEncodable, RustcDecodable, Debug)] pub struct SequenceRepetition { /// The sequence of token trees pub tts: Vec<TokenTree>, @@ -85,7 +85,7 @@ pub enum KleeneOp { /// Similar to `tokenstream::TokenTree`, except that `$i`, `$i:ident`, and `$(...)` /// are "first-class" token trees. Useful for parsing macros. -#[derive(Debug, Clone, PartialEq, RustcEncodable, RustcDecodable, Hash)] +#[derive(Debug, Clone, PartialEq, RustcEncodable, RustcDecodable)] pub enum TokenTree { Token(Span, token::Token), Delimited(Span, Lrc<Delimited>), diff --git a/src/libsyntax/parse/token.rs b/src/libsyntax/parse/token.rs index 8e9c192c737..aef3beeccdf 100644 --- a/src/libsyntax/parse/token.rs +++ b/src/libsyntax/parse/token.rs @@ -139,7 +139,7 @@ fn ident_can_begin_type(ident: ast::Ident, is_raw: bool) -> bool { ].contains(&ident.name) } -#[derive(Clone, RustcEncodable, RustcDecodable, PartialEq, Hash, Debug)] +#[derive(Clone, RustcEncodable, RustcDecodable, PartialEq, Debug)] pub enum Token { /* Expression-operator symbols. */ Eq, @@ -638,7 +638,7 @@ impl Token { } } -#[derive(Clone, RustcEncodable, RustcDecodable, Hash)] +#[derive(Clone, RustcEncodable, RustcDecodable)] /// For interpolation during macro expansion. pub enum Nonterminal { NtItem(P<ast::Item>), diff --git a/src/libsyntax/tokenstream.rs b/src/libsyntax/tokenstream.rs index 650d6333b55..048a041f698 100644 --- a/src/libsyntax/tokenstream.rs +++ b/src/libsyntax/tokenstream.rs @@ -33,10 +33,9 @@ use util::RcSlice; use std::borrow::Cow; use std::{fmt, iter, mem}; -use std::hash::{self, Hash}; /// A delimited sequence of token trees -#[derive(Clone, PartialEq, RustcEncodable, RustcDecodable, Hash, Debug)] +#[derive(Clone, PartialEq, RustcEncodable, RustcDecodable, Debug)] pub struct Delimited { /// The type of delimiter pub delim: token::DelimToken, @@ -93,7 +92,7 @@ impl Delimited { /// /// The RHS of an MBE macro is the only place `SubstNt`s are substituted. /// Nothing special happens to misnamed or misplaced `SubstNt`s. -#[derive(Debug, Clone, PartialEq, RustcEncodable, RustcDecodable, Hash)] +#[derive(Debug, Clone, PartialEq, RustcEncodable, RustcDecodable)] pub enum TokenTree { /// A single token Token(Span, token::Token), @@ -605,14 +604,6 @@ impl Decodable for TokenStream { } } -impl Hash for TokenStream { - fn hash<H: hash::Hasher>(&self, state: &mut H) { - for tree in self.trees() { - tree.hash(state); - } - } -} - impl Encodable for ThinTokenStream { fn encode<E: Encoder>(&self, encoder: &mut E) -> Result<(), E::Error> { TokenStream::from(self.clone()).encode(encoder) @@ -625,13 +616,6 @@ impl Decodable for ThinTokenStream { } } -impl Hash for ThinTokenStream { - fn hash<H: hash::Hasher>(&self, state: &mut H) { - TokenStream::from(self.clone()).hash(state); - } -} - - #[cfg(test)] mod tests { use super::*; |
