Skip to content

Commit 48496fc

Browse files
committed
add a test and correct terminology
newtype'd enums have 1 variant, and 1 field. denegerate have only 1 variant but may have more fields.
1 parent be162da commit 48496fc

File tree

2 files changed

+12
-5
lines changed

2 files changed

+12
-5
lines changed

src/libcore/repr.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -501,7 +501,7 @@ enum EnumVisitState {
501501
PreVariant, // We're before the variant we're interested in.
502502
InVariant, // We're inside the variant we're interested in.
503503
PostVariant, // We're after the variant we're interested in.
504-
Newtype // This is a newtyped enum.
504+
Degenerate // This is a degenerate enum (exactly 1 variant)
505505
}
506506

507507
impl EnumVisitState : cmp::Eq {
@@ -866,7 +866,7 @@ impl ReprPrinterWrapper : TyVisitor {
866866

867867
// Write in the location of the end of this enum.
868868
let end_ptr = transmute(self.printer.ptr as uint + sz);
869-
let state = if n_variants == 1 { Newtype } else { PreVariant };
869+
let state = if n_variants == 1 { Degenerate } else { PreVariant };
870870
let new_state = EnumState { end_ptr: end_ptr, state: state };
871871
self.printer.enum_stack.push(new_state);
872872

@@ -891,7 +891,7 @@ impl ReprPrinterWrapper : TyVisitor {
891891
stack.set_elt(stack.len() - 1, enum_state);
892892
}
893893
}
894-
Newtype => {
894+
Degenerate => {
895895
self.printer.writer.write_str(name);
896896
}
897897
InVariant | PostVariant => {}
@@ -902,7 +902,7 @@ impl ReprPrinterWrapper : TyVisitor {
902902

903903
fn visit_enum_variant_field(i: uint, inner: *TyDesc) -> bool {
904904
match self.printer.enum_stack.last().state {
905-
InVariant | Newtype => {
905+
InVariant | Degenerate => {
906906
if i == 0 {
907907
self.printer.writer.write_char('(');
908908
} else {
@@ -928,7 +928,7 @@ impl ReprPrinterWrapper : TyVisitor {
928928
enum_state.state = PostVariant;
929929
stack.set_elt(stack.len() - 1, enum_state);
930930
}
931-
Newtype => {
931+
Degenerate => {
932932
if n_fields >= 1 { self.printer.writer.write_char(')'); }
933933
}
934934
PreVariant | PostVariant => {}

src/test/run-pass/log-degen-enum.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
enum Foo = uint;
2+
3+
fn main() {
4+
let x = Foo(1);
5+
let y = fmt!("%?", x);
6+
assert y == ~"Foo(1)";
7+
}

0 commit comments

Comments
 (0)