syntax/rustc_front: Simplify VariantData::fields
And use VariantData instead of P<VariantData> in Item_ and Variant_
This commit is contained in:
parent
f68cd9aef1
commit
e8ddbba2ed
24 changed files with 90 additions and 124 deletions
|
|
@ -65,7 +65,6 @@ use std::fmt;
|
|||
use std::rc::Rc;
|
||||
use std::borrow::Cow;
|
||||
use std::hash::{Hash, Hasher};
|
||||
use std::{iter, option, slice};
|
||||
use serialize::{Encodable, Decodable, Encoder, Decoder};
|
||||
|
||||
/// A name is a part of an identifier, representing a string or gensym. It's
|
||||
|
|
@ -1578,7 +1577,7 @@ pub struct EnumDef {
|
|||
pub struct Variant_ {
|
||||
pub name: Ident,
|
||||
pub attrs: Vec<Attribute>,
|
||||
pub data: P<VariantData>,
|
||||
pub data: VariantData,
|
||||
/// Explicit discriminant, eg `Foo = 1`
|
||||
pub disr_expr: Option<P<Expr>>,
|
||||
}
|
||||
|
|
@ -1757,17 +1756,12 @@ pub enum VariantData {
|
|||
Unit(NodeId),
|
||||
}
|
||||
|
||||
pub type FieldIter<'a> = iter::FlatMap<option::IntoIter<&'a Vec<StructField>>,
|
||||
slice::Iter<'a, StructField>,
|
||||
fn(&Vec<StructField>) -> slice::Iter<StructField>>;
|
||||
|
||||
impl VariantData {
|
||||
pub fn fields(&self) -> FieldIter {
|
||||
fn vec_iter<T>(v: &Vec<T>) -> slice::Iter<T> { v.iter() }
|
||||
pub fn fields(&self) -> &[StructField] {
|
||||
match *self {
|
||||
VariantData::Struct(ref fields, _) | VariantData::Tuple(ref fields, _) => Some(fields),
|
||||
_ => None,
|
||||
}.into_iter().flat_map(vec_iter)
|
||||
VariantData::Struct(ref fields, _) | VariantData::Tuple(ref fields, _) => fields,
|
||||
_ => &[],
|
||||
}
|
||||
}
|
||||
pub fn id(&self) -> NodeId {
|
||||
match *self {
|
||||
|
|
@ -1826,7 +1820,7 @@ pub enum Item_ {
|
|||
/// An enum definition, e.g. `enum Foo<A, B> {C<A>, D<B>}`
|
||||
ItemEnum(EnumDef, Generics),
|
||||
/// A struct definition, e.g. `struct Foo<A> {x: A}`
|
||||
ItemStruct(P<VariantData>, Generics),
|
||||
ItemStruct(VariantData, Generics),
|
||||
/// Represents a Trait Declaration
|
||||
ItemTrait(Unsafety,
|
||||
Generics,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue