diff --git a/src/librustc/metadata/decoder.rs b/src/librustc/metadata/decoder.rs index 8634cc73818..596a5f8c73c 100644 --- a/src/librustc/metadata/decoder.rs +++ b/src/librustc/metadata/decoder.rs @@ -930,14 +930,18 @@ fn get_struct_fields(intr: @ident_interner, cdata: cmd, id: ast::node_id) let item = lookup_item(id, data); let mut result = ~[]; for reader::tagged_docs(item, tag_item_field) |an_item| { - let f = item_family(an_item); - if f == PublicField || f == PrivateField || f == InheritedField { - let name = item_name(intr, an_item); - let did = item_def_id(an_item, cdata); - let mt = field_mutability(an_item); - result.push({ident: name, id: did, vis: - family_to_visibility(f), mutability: mt}); - } + let f = item_family(an_item); + if f == PublicField || f == PrivateField || f == InheritedField { + let name = item_name(intr, an_item); + let did = item_def_id(an_item, cdata); + let mt = field_mutability(an_item); + result.push(ty::field_ty { + ident: name, + id: did, vis: + family_to_visibility(f), + mutability: mt, + }); + } } result } diff --git a/src/librustc/middle/astencode.rs b/src/librustc/middle/astencode.rs index aa98d19465a..94b28bf1397 100644 --- a/src/librustc/middle/astencode.rs +++ b/src/librustc/middle/astencode.rs @@ -448,16 +448,20 @@ impl ast::def: tr { impl ty::AutoAdjustment: tr { fn tr(xcx: extended_decode_ctxt) -> ty::AutoAdjustment { - {autoderefs: self.autoderefs, - autoref: self.autoref.map(|ar| ar.tr(xcx))} + ty::AutoAdjustment { + autoderefs: self.autoderefs, + autoref: self.autoref.map(|ar| ar.tr(xcx)), + } } } impl ty::AutoRef: tr { fn tr(xcx: extended_decode_ctxt) -> ty::AutoRef { - {kind: self.kind, - region: self.region.tr(xcx), - mutbl: self.mutbl} + ty::AutoRef { + kind: self.kind, + region: self.region.tr(xcx), + mutbl: self.mutbl, + } } } @@ -503,7 +507,10 @@ impl reader::Decoder: ebml_decoder_helper { impl freevar_entry: tr { fn tr(xcx: extended_decode_ctxt) -> freevar_entry { - {def: self.def.tr(xcx), span: self.span.tr(xcx)} + freevar_entry { + def: self.def.tr(xcx), + span: self.span.tr(xcx), + } } } @@ -533,21 +540,20 @@ fn encode_method_map_entry(ecx: @e::encode_ctxt, impl reader::Decoder: read_method_map_entry_helper { fn read_method_map_entry(xcx: extended_decode_ctxt) -> method_map_entry { do self.read_rec { - {self_arg: - self.read_field(~"self_arg", 0u, || { - self.read_arg(xcx) - }), - explicit_self: - self.read_field(~"explicit_self", 2u, || { + method_map_entry { + self_arg: self.read_field(~"self_arg", 0u, || { + self.read_arg(xcx) + }), + explicit_self: self.read_field(~"explicit_self", 2u, || { let self_type: ast::self_ty_ = Decodable::decode(&self); self_type - }), - origin: - self.read_field(~"origin", 1u, || { - let method_origin: method_origin = - Decodable::decode(&self); - method_origin.tr(xcx) - })} + }), + origin: self.read_field(~"origin", 1u, || { + let method_origin: method_origin = + Decodable::decode(&self); + method_origin.tr(xcx) + }), + } } } } @@ -559,7 +565,12 @@ impl method_origin: tr { typeck::method_static(did.tr(xcx)) } typeck::method_param(ref mp) => { - typeck::method_param({trait_id:(*mp).trait_id.tr(xcx),.. (*mp)}) + typeck::method_param( + typeck::method_param { + trait_id: mp.trait_id.tr(xcx), + .. *mp + } + ) } typeck::method_trait(did, m, vstore) => { typeck::method_trait(did.tr(xcx), m, vstore) diff --git a/src/librustc/middle/freevars.rs b/src/librustc/middle/freevars.rs index 3c1f261c1f8..9e9f814110e 100644 --- a/src/librustc/middle/freevars.rs +++ b/src/librustc/middle/freevars.rs @@ -34,10 +34,10 @@ export has_freevars; // (The def_upvar will already have been stripped). #[auto_encode] #[auto_decode] -type freevar_entry = { +struct freevar_entry { def: ast::def, //< The variable being accessed free. span: span //< First span where it is accessed (there can be multiple) -}; +} type freevar_info = @~[@freevar_entry]; type freevar_map = HashMap<ast::node_id, freevar_info>; @@ -79,7 +79,10 @@ fn collect_freevars(def_map: resolve::DefMap, blk: ast::blk) if i == depth { // Made it to end of loop let dnum = ast_util::def_id_of_def(def).node; if !seen.contains_key(dnum) { - refs.push(@{def:def, span:expr.span}); + refs.push(@freevar_entry { + def: def, + span: expr.span, + }); seen.insert(dnum, ()); } } diff --git a/src/librustc/middle/privacy.rs b/src/librustc/middle/privacy.rs index 1e23dbbc51a..401510328da 100644 --- a/src/librustc/middle/privacy.rs +++ b/src/librustc/middle/privacy.rs @@ -132,7 +132,11 @@ fn check_crate(tcx: ty::ctxt, method_map: &method_map, crate: @ast::crate) { // XXX: External crates. } } - method_param({trait_id: trait_id, method_num: method_num, _}) | + method_param(method_param { + trait_id: trait_id, + method_num: method_num, + _ + }) | method_trait(trait_id, method_num, _) | method_self(trait_id, method_num) => { if trait_id.crate == local_crate { diff --git a/src/librustc/middle/trans/meth.rs b/src/librustc/middle/trans/meth.rs index f904f466064..7eccf97f76c 100644 --- a/src/librustc/middle/trans/meth.rs +++ b/src/librustc/middle/trans/meth.rs @@ -209,8 +209,12 @@ fn trans_method_callee(bcx: block, callee_id: ast::node_id, }) } } - typeck::method_param({trait_id:trait_id, method_num:off, - param_num:p, bound_num:b}) => { + typeck::method_param(typeck::method_param { + trait_id: trait_id, + method_num: off, + param_num: p, + bound_num: b + }) => { match bcx.fcx.param_substs { Some(ref substs) => { let vtbl = base::find_vtable(bcx.tcx(), substs, p, b); diff --git a/src/librustc/middle/trans/reachable.rs b/src/librustc/middle/trans/reachable.rs index 5de7ebadb2b..29051837e4a 100644 --- a/src/librustc/middle/trans/reachable.rs +++ b/src/librustc/middle/trans/reachable.rs @@ -182,7 +182,10 @@ fn traverse_inline_body(cx: ctx, body: blk) { } expr_field(_, _, _) => { match cx.method_map.find(e.id) { - Some({origin: typeck::method_static(did), _}) => { + Some(typeck::method_map_entry { + origin: typeck::method_static(did), + _ + }) => { traverse_def_id(cx, did); } _ => () @@ -190,7 +193,10 @@ fn traverse_inline_body(cx: ctx, body: blk) { } expr_method_call(*) => { match cx.method_map.find(e.id) { - Some({origin: typeck::method_static(did), _}) => { + Some(typeck::method_map_entry { + origin: typeck::method_static(did), + _ + }) => { traverse_def_id(cx, did); } Some(_) => {} diff --git a/src/librustc/middle/trans/type_use.rs b/src/librustc/middle/trans/type_use.rs index 3215b52794a..8c34069df42 100644 --- a/src/librustc/middle/trans/type_use.rs +++ b/src/librustc/middle/trans/type_use.rs @@ -233,7 +233,10 @@ fn mark_for_method_call(cx: ctx, e_id: node_id, callee_id: node_id) { } } } - typeck::method_param({param_num: param, _}) => { + typeck::method_param(typeck::method_param { + param_num: param, + _ + }) => { cx.uses[param] |= use_tydesc; } typeck::method_trait(*) | typeck::method_self(*) => (), diff --git a/src/librustc/middle/ty.rs b/src/librustc/middle/ty.rs index fee2224d3f9..b5870059c67 100644 --- a/src/librustc/middle/ty.rs +++ b/src/librustc/middle/ty.rs @@ -272,12 +272,12 @@ enum vstore { vstore_slice(Region) } -type field_ty = { +struct field_ty { ident: ident, id: def_id, vis: ast::visibility, - mutability: ast::struct_mutability -}; + mutability: ast::struct_mutability, +} /// How an lvalue is to be used. #[auto_encode] @@ -356,18 +356,18 @@ impl region_variance : cmp::Eq { #[auto_encode] #[auto_decode] -pub type AutoAdjustment = { +pub struct AutoAdjustment { autoderefs: uint, autoref: Option<AutoRef> -}; +} #[auto_encode] #[auto_decode] -pub type AutoRef = { +pub struct AutoRef { kind: AutoRefKind, region: Region, mutbl: ast::mutability -}; +} #[auto_encode] #[auto_decode] @@ -3086,8 +3086,9 @@ fn method_call_bounds(tcx: ctxt, method_map: typeck::method_map, // and then the method bounds themselves... ty::lookup_item_type(tcx, did).bounds } - typeck::method_param({trait_id:trt_id, - method_num:n_mth, _}) | + typeck::method_param(typeck::method_param { + trait_id: trt_id, + method_num: n_mth, _}) | typeck::method_trait(trt_id, n_mth, _) | typeck::method_self(trt_id, n_mth) => { // ...trait methods bounds, in contrast, include only the @@ -4075,25 +4076,27 @@ pure fn is_public(f: field_ty) -> bool { } fn struct_field_tys(fields: ~[@struct_field]) -> ~[field_ty] { - let mut rslt = ~[]; - for fields.each |field| { + do fields.map |field| { match field.node.kind { named_field(ident, mutability, visibility) => { - rslt.push({ident: ident, - id: ast_util::local_def(field.node.id), - vis: visibility, - mutability: mutability}); + field_ty { + ident: ident, + id: ast_util::local_def(field.node.id), + vis: visibility, + mutability: mutability, + } } unnamed_field => { - rslt.push({ident: - syntax::parse::token::special_idents::unnamed_field, - id: ast_util::local_def(field.node.id), - vis: ast::public, - mutability: ast::struct_immutable}); + field_ty { + ident: + syntax::parse::token::special_idents::unnamed_field, + id: ast_util::local_def(field.node.id), + vis: ast::public, + mutability: ast::struct_immutable, + } } - } + } } - rslt } // Return a list of fields corresponding to the struct's items diff --git a/src/librustc/middle/typeck/check/method.rs b/src/librustc/middle/typeck/check/method.rs index a8e834bff43..7ef6ae59880 100644 --- a/src/librustc/middle/typeck/check/method.rs +++ b/src/librustc/middle/typeck/check/method.rs @@ -455,10 +455,13 @@ impl LookupContext { explicit_self: method.self_ty, num_method_tps: method.tps.len(), self_mode: get_mode_from_self_type(method.self_ty), - origin: method_param({trait_id:init_trait_id, - method_num:pos, - param_num:param_ty.idx, - bound_num:this_bound_idx}) + origin: method_param( + method_param { + trait_id: init_trait_id, + method_num: pos, + param_num: param_ty.idx, + bound_num: this_bound_idx, + }) }; debug!("pushing inherent candidate for param: %?", cand); @@ -834,10 +837,14 @@ impl LookupContext { Some(move mme) => { self.fcx.write_adjustment( self.self_expr.id, - @{autoderefs: autoderefs, - autoref: Some({kind: kind, - region: region, - mutbl: *mutbl})}); + @ty::AutoAdjustment { + autoderefs: autoderefs, + autoref: Some(ty::AutoRef { + kind: kind, + region: region, + mutbl: *mutbl, + }), + }); return Some(mme); } } @@ -1004,10 +1011,14 @@ impl LookupContext { }; self.fcx.write_ty_substs(self.callee_id, fty, all_substs); - return {self_arg: {mode: ast::expl(candidate.self_mode), - ty: candidate.rcvr_ty}, - explicit_self: candidate.explicit_self, - origin: candidate.origin}; + method_map_entry { + self_arg: { + mode: ast::expl(candidate.self_mode), + ty: candidate.rcvr_ty, + }, + explicit_self: candidate.explicit_self, + origin: candidate.origin, + } } fn enforce_trait_instance_limitations(&self, @@ -1050,7 +1061,7 @@ impl LookupContext { method_static(method_id) | method_self(method_id, _) => { bad = self.tcx().destructors.contains_key(method_id); } - method_param({trait_id: trait_id, _}) | + method_param(method_param { trait_id: trait_id, _ }) | method_trait(trait_id, _, _) => { bad = self.tcx().destructor_for_type.contains_key(trait_id); } diff --git a/src/librustc/middle/typeck/check/mod.rs b/src/librustc/middle/typeck/check/mod.rs index d151b0aee45..97d59fdf333 100644 --- a/src/librustc/middle/typeck/check/mod.rs +++ b/src/librustc/middle/typeck/check/mod.rs @@ -730,7 +730,10 @@ impl @fn_ctxt { fn write_autoderef_adjustment(node_id: ast::node_id, derefs: uint) { if derefs == 0 { return; } - self.write_adjustment(node_id, @{autoderefs: derefs, autoref: None}); + self.write_adjustment( + node_id, + @ty::AutoAdjustment { autoderefs: derefs, autoref: None } + ); } fn write_adjustment(node_id: ast::node_id, adj: @ty::AutoAdjustment) { diff --git a/src/librustc/middle/typeck/check/regionck.rs b/src/librustc/middle/typeck/check/regionck.rs index 3901752ac68..af3585a55b0 100644 --- a/src/librustc/middle/typeck/check/regionck.rs +++ b/src/librustc/middle/typeck/check/regionck.rs @@ -324,7 +324,9 @@ fn constrain_auto_ref( let adjustment = rcx.fcx.inh.adjustments.find(expr.id); let region = match adjustment { - Some(@{autoref: Some(ref auto_ref), _}) => auto_ref.region, + Some(@ty::AutoAdjustment { autoref: Some(ref auto_ref), _ }) => { + auto_ref.region + }, _ => { return; } }; diff --git a/src/librustc/middle/typeck/check/writeback.rs b/src/librustc/middle/typeck/check/writeback.rs index b00a3306ceb..1a665aa7566 100644 --- a/src/librustc/middle/typeck/check/writeback.rs +++ b/src/librustc/middle/typeck/check/writeback.rs @@ -20,6 +20,7 @@ use middle::typeck::check::{fn_ctxt, lookup_local, self_info}; use middle::typeck::infer::{force_all, resolve_all, resolve_region}; use middle::typeck::infer::{resolve_type}; use middle::typeck::infer; +use middle::typeck::method_map_entry; use middle::typeck::{vtable_param, vtable_trait, write_substs_to_tcx}; use middle::typeck::{write_ty_to_tcx}; use util::ppaux; @@ -63,8 +64,11 @@ fn resolve_method_map_entry(fcx: @fn_ctxt, sp: span, id: ast::node_id) for resolve_type_vars_in_type(fcx, sp, mme.self_arg.ty).each |t| { fcx.ccx.method_map.insert( id, - {self_arg: {mode: mme.self_arg.mode, ty: *t}, - ..*mme}); + method_map_entry { + self_arg: {mode: mme.self_arg.mode, ty: *t}, + .. *mme + } + ); } } } @@ -91,14 +95,16 @@ fn resolve_type_vars_for_node(wbcx: wb_ctxt, sp: span, id: ast::node_id) Some(*autoref) } Ok(r) => { - Some({region: r, ..*autoref}) + Some(ty::AutoRef {region: r, ..*autoref}) } } } None => None }; - let resolved_adj = @{autoref: resolved_autoref, ..*adj}; + let resolved_adj = @ty::AutoAdjustment { + autoref: resolved_autoref, + ..*adj}; debug!("Adjustments for node %d: %?", id, resolved_adj); fcx.tcx().adjustments.insert(id, resolved_adj); } diff --git a/src/librustc/middle/typeck/infer/assignment.rs b/src/librustc/middle/typeck/infer/assignment.rs index d25fed274b3..fef63cf9a42 100644 --- a/src/librustc/middle/typeck/infer/assignment.rs +++ b/src/librustc/middle/typeck/infer/assignment.rs @@ -275,9 +275,9 @@ priv impl Assign { do sub.tys(a, nr_b).chain |_t| { let r_a = self.infcx.next_region_var_nb(self.span); do sub.contraregions(r_a, r_b).chain |_r| { - Ok(Some(@{ + Ok(Some(@ty::AutoAdjustment { autoderefs: autoderefs, - autoref: Some({ + autoref: Some(ty::AutoRef { kind: kind, region: r_a, mutbl: m diff --git a/src/librustc/middle/typeck/mod.rs b/src/librustc/middle/typeck/mod.rs index 509fe96508b..341ce666e61 100644 --- a/src/librustc/middle/typeck/mod.rs +++ b/src/librustc/middle/typeck/mod.rs @@ -142,7 +142,7 @@ pub enum method_origin { // with a bounded trait. #[auto_encode] #[auto_decode] -type method_param = { +struct method_param { // the trait containing the method to be invoked trait_id: ast::def_id, @@ -154,10 +154,10 @@ type method_param = { param_num: uint, // index of the bound for this type parameter which specifies the trait - bound_num: uint -}; + bound_num: uint, +} -pub type method_map_entry = { +pub struct method_map_entry { // the type and mode of the self parameter, which is not reflected // in the fn type (FIXME #3446) self_arg: ty::arg, @@ -166,8 +166,8 @@ pub type method_map_entry = { explicit_self: ast::self_ty_, // method details being invoked - origin: method_origin -}; + origin: method_origin, +} // maps from an expression id that corresponds to a method call to the details // of the method to be invoked