diff options
| author | Nick Cameron <ncameron@mozilla.com> | 2014-02-24 20:17:02 +1300 |
|---|---|---|
| committer | Nick Cameron <ncameron@mozilla.com> | 2014-04-20 13:41:18 +1200 |
| commit | ff04aa8e385f343f66c5bed6a34d1ebf6c971e4d (patch) | |
| tree | 9c0845b6a369ab071138f6c542e7aef46ff5a2a0 /src/libsyntax/fold.rs | |
| parent | 3757f01c9bed7b2fe0d726ac45c754312e2917ea (diff) | |
| download | rust-ff04aa8e385f343f66c5bed6a34d1ebf6c971e4d.tar.gz rust-ff04aa8e385f343f66c5bed6a34d1ebf6c971e4d.zip | |
Allow inheritance between structs.
No subtyping, no interaction with traits. Partially addresses #9912.
Diffstat (limited to 'src/libsyntax/fold.rs')
| -rw-r--r-- | src/libsyntax/fold.rs | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/libsyntax/fold.rs b/src/libsyntax/fold.rs index fc4f427d8d7..73ad2664be4 100644 --- a/src/libsyntax/fold.rs +++ b/src/libsyntax/fold.rs @@ -235,7 +235,12 @@ pub trait Folder { kind = StructVariantKind(@ast::StructDef { fields: struct_def.fields.iter() .map(|f| self.fold_struct_field(f)).collect(), - ctor_id: struct_def.ctor_id.map(|c| self.new_id(c)) + ctor_id: struct_def.ctor_id.map(|c| self.new_id(c)), + super_struct: match struct_def.super_struct { + Some(t) => Some(self.fold_ty(t)), + None => None + }, + is_virtual: struct_def.is_virtual, }) } } @@ -480,6 +485,11 @@ fn fold_struct_def<T: Folder>(struct_def: @StructDef, fld: &mut T) -> @StructDef @ast::StructDef { fields: struct_def.fields.iter().map(|f| fold_struct_field(f, fld)).collect(), ctor_id: struct_def.ctor_id.map(|cid| fld.new_id(cid)), + super_struct: match struct_def.super_struct { + Some(t) => Some(fld.fold_ty(t)), + None => None + }, + is_virtual: struct_def.is_virtual, } } |
