diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2012-07-24 15:29:14 -0700 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2012-07-24 15:29:51 -0700 |
| commit | 587b0edbbf6c3ac587be98679c4262049aa2a305 (patch) | |
| tree | 879bb3bdc266ecc210929950e781c4e9c2d07803 /src/libsyntax/fold.rs | |
| parent | 695ab098995d23b0fa62248b5ce3052e5e072269 (diff) | |
rustc: Don't require that structs have constructors
Diffstat (limited to 'src/libsyntax/fold.rs')
| -rw-r--r-- | src/libsyntax/fold.rs | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/src/libsyntax/fold.rs b/src/libsyntax/fold.rs index b23d2acaccb..de9ed4b2570 100644 --- a/src/libsyntax/fold.rs +++ b/src/libsyntax/fold.rs @@ -242,10 +242,24 @@ fn noop_fold_item_underscore(i: item_, fld: ast_fold) -> item_ { item_enum(vec::map(variants, |x| fld.fold_variant(x)), fold_ty_params(typms, fld)) } - item_class(typms, traits, items, ctor, m_dtor) { - let ctor_body = fld.fold_block(ctor.node.body); - let ctor_decl = fold_fn_decl(ctor.node.dec, fld); - let ctor_id = fld.new_id(ctor.node.id); + item_class(typms, traits, items, m_ctor, m_dtor) { + let resulting_optional_constructor; + alt m_ctor { + none => { + resulting_optional_constructor = none; + } + some(constructor) => { + resulting_optional_constructor = some({ + node: { + body: fld.fold_block(constructor.node.body), + dec: fold_fn_decl(constructor.node.dec, fld), + id: fld.new_id(constructor.node.id) + with constructor.node + } + with constructor + }); + } + } let dtor = do option::map(m_dtor) |dtor| { let dtor_body = fld.fold_block(dtor.node.body); let dtor_id = fld.new_id(dtor.node.id); @@ -256,10 +270,8 @@ fn noop_fold_item_underscore(i: item_, fld: ast_fold) -> item_ { /* FIXME (#2543) */ copy typms, vec::map(traits, |p| fold_trait_ref(p, fld)), vec::map(items, |x| fld.fold_class_item(x)), - {node: {body: ctor_body, - dec: ctor_decl, - id: ctor_id with ctor.node} - with ctor}, dtor) + resulting_optional_constructor, + dtor) } item_impl(tps, ifce, ty, methods) { item_impl(fold_ty_params(tps, fld), |
