about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/libsyntax_ext/deriving/generic/mod.rs2
-rw-r--r--src/test/run-pass/enum-discrim-autosizing.rs10
2 files changed, 11 insertions, 1 deletions
diff --git a/src/libsyntax_ext/deriving/generic/mod.rs b/src/libsyntax_ext/deriving/generic/mod.rs
index ef7f455632c..5d4842803a0 100644
--- a/src/libsyntax_ext/deriving/generic/mod.rs
+++ b/src/libsyntax_ext/deriving/generic/mod.rs
@@ -758,7 +758,7 @@ impl<'a> TraitDef<'a> {
 
 fn find_repr_type_name(diagnostic: &Handler,
                        type_attrs: &[ast::Attribute]) -> &'static str {
-    let mut repr_type_name = "i32";
+    let mut repr_type_name = "isize";
     for a in type_attrs {
         for r in &attr::find_repr_attrs(diagnostic, a) {
             repr_type_name = match *r {
diff --git a/src/test/run-pass/enum-discrim-autosizing.rs b/src/test/run-pass/enum-discrim-autosizing.rs
index 53c44f2bb24..14301db6ce7 100644
--- a/src/test/run-pass/enum-discrim-autosizing.rs
+++ b/src/test/run-pass/enum-discrim-autosizing.rs
@@ -47,6 +47,12 @@ enum Ei64 {
     Bi64 = 0x8000_0000
 }
 
+#[derive(PartialEq)]
+enum Eu64 {
+    Au64 = 0,
+    Bu64 = 0x8000_0000_0000_0000
+}
+
 pub fn main() {
     assert_eq!(size_of::<Ei8>(), 1);
     assert_eq!(size_of::<Eu8>(), 1);
@@ -58,4 +64,8 @@ pub fn main() {
     assert_eq!(size_of::<Ei64>(), 8);
     #[cfg(target_pointer_width = "32")]
     assert_eq!(size_of::<Ei64>(), 4);
+    assert_eq!(size_of::<Eu64>(), 8);
+
+    // ensure no i32 collisions
+    assert!(Eu64::Au64 != Eu64::Bu64);
 }