convert ast::struct_def to a struct

This commit is contained in:
Erick Tryzelaar 2013-01-13 13:45:57 -08:00
parent 530a113bfa
commit 1f5e9ff362
6 changed files with 12 additions and 10 deletions

View File

@ -3798,7 +3798,9 @@ fn ty_dtor(cx: ctxt, struct_id: def_id) -> DtorKind {
if is_local(struct_id) {
match cx.items.find(struct_id.node) {
Some(ast_map::node_item(@ast::item {
node: ast::item_struct(@{ dtor: Some(ref dtor), _ }, _),
node: ast::item_struct(@ast::struct_def { dtor: Some(ref dtor),
_ },
_),
_
}, _)) =>
LegacyDtor(local_def((*dtor).node.id)),

View File

@ -371,7 +371,7 @@ fn fold_struct(
fn strip_struct_extra_stuff(item: @ast::item) -> @ast::item {
let node = match item.node {
ast::item_struct(def, tys) => {
let def = @{
let def = @ast::struct_def {
dtor: None, // Remove the drop { } block
.. *def
};

View File

@ -1501,7 +1501,7 @@ impl struct_field_kind : cmp::Eq {
#[auto_encode]
#[auto_decode]
type struct_def = {
struct struct_def {
fields: ~[@struct_field], /* fields */
/* (not including ctor or dtor) */
/* dtor is optional */
@ -1509,7 +1509,7 @@ type struct_def = {
/* ID of the constructor. This is only used for tuple- or enum-like
* structs. */
ctor_id: Option<node_id>
};
}
/*
FIXME (#3300): Should allow items to be anonymous. Right now

View File

@ -141,7 +141,7 @@ fn expand_auto_encode(
~[filter_attrs(*item), ser_impl]
},
ast::item_struct(@{ fields, _}, tps) => {
ast::item_struct(@ast::struct_def { fields, _}, tps) => {
let ser_impl = mk_struct_ser_impl(
cx,
item.span,
@ -207,7 +207,7 @@ fn expand_auto_decode(
~[filter_attrs(*item), deser_impl]
},
ast::item_struct(@{ fields, _}, tps) => {
ast::item_struct(@ast::struct_def { fields, _}, tps) => {
let deser_impl = mk_struct_deser_impl(
cx,
item.span,

View File

@ -281,7 +281,7 @@ fn fold_struct_def(struct_def: @ast::struct_def, fld: ast_fold)
.. dtor.node},
span: dtor.span }
};
return @{
return @ast::struct_def {
fields: vec::map(struct_def.fields, |f| fold_struct_field(*f, fld)),
dtor: dtor,
ctor_id: option::map(&struct_def.ctor_id, |cid| fld.new_id(*cid))
@ -582,7 +582,7 @@ fn noop_fold_variant(v: variant_, fld: ast_fold) -> variant_ {
.. dtor.node},
.. *dtor }
};
kind = struct_variant_kind(@{
kind = struct_variant_kind(@ast::struct_def {
fields: vec::map(struct_def.fields,
|f| fld.fold_struct_field(*f)),
dtor: dtor,

View File

@ -2844,7 +2844,7 @@ impl Parser {
let _ = self.get_id(); // XXX: Workaround for crazy bug.
let new_id = self.get_id();
(class_name,
item_struct(@{
item_struct(@ast::struct_def {
fields: fields,
dtor: actual_dtor,
ctor_id: if is_tuple_like { Some(new_id) } else { None }
@ -3340,7 +3340,7 @@ impl Parser {
span: d_s }
};
return @{
return @ast::struct_def {
fields: fields,
dtor: actual_dtor,
ctor_id: None