diff options
| author | Tim Chevalier <chevalier@alum.wellesley.edu> | 2012-10-08 09:00:23 -0700 |
|---|---|---|
| committer | Tim Chevalier <chevalier@alum.wellesley.edu> | 2012-10-08 09:00:23 -0700 |
| commit | 7bdab1e4a45bf734e4b25a2d58f4ee21ee5c9fdc (patch) | |
| tree | b24c818211cffeb1f2b8cc7bf7bc31fe3eecfdc9 /src/libsyntax/fold.rs | |
| parent | 79603f573e504163db7b5c2afa0917c27e3f98ed (diff) | |
Revert "remove ctor from ast"
This reverts commit ed3689d57c988e1dd477930d957c4308c37d1a64.
Diffstat (limited to 'src/libsyntax/fold.rs')
| -rw-r--r-- | src/libsyntax/fold.rs | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/libsyntax/fold.rs b/src/libsyntax/fold.rs index 68d9cd80430..088df01985e 100644 --- a/src/libsyntax/fold.rs +++ b/src/libsyntax/fold.rs @@ -271,6 +271,23 @@ fn noop_fold_item_underscore(i: item_, fld: ast_fold) -> item_ { fn fold_struct_def(struct_def: @ast::struct_def, fld: ast_fold) -> @ast::struct_def { + let resulting_optional_constructor; + match struct_def.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), + .. constructor.node + }, + .. constructor + }); + } + } let dtor = do option::map(&struct_def.dtor) |dtor| { let dtor_body = fld.fold_block(dtor.node.body); let dtor_id = fld.new_id(dtor.node.id); @@ -281,6 +298,7 @@ fn fold_struct_def(struct_def: @ast::struct_def, fld: ast_fold) traits: vec::map(struct_def.traits, |p| fold_trait_ref(*p, fld)), fields: vec::map(struct_def.fields, |f| fold_struct_field(*f, fld)), methods: vec::map(struct_def.methods, |m| fld.fold_method(*m)), + ctor: resulting_optional_constructor, dtor: dtor }; } @@ -567,6 +585,7 @@ fn noop_fold_variant(v: variant_, fld: ast_fold) -> variant_ { |f| fld.fold_struct_field(*f)), methods: vec::map(struct_def.methods, |m| fld.fold_method(*m)), + ctor: None, dtor: dtor }) } |
