about summary refs log tree commit diff
path: root/src/test/run-pass
diff options
context:
space:
mode:
authorFelix S. Klock II <pnkfelix@pnkfx.org>2015-04-10 19:02:01 +0200
committerFelix S. Klock II <pnkfelix@pnkfx.org>2015-04-10 19:11:03 +0200
commit47016f9ce514fd5975a4412259ce3022b877ad3d (patch)
tree52775f0dc7b8493cab001cd9c439b6ea3e4544e5 /src/test/run-pass
parent781fc902a40001f23d24d76eb799551c308a5900 (diff)
downloadrust-47016f9ce514fd5975a4412259ce3022b877ad3d.tar.gz
rust-47016f9ce514fd5975a4412259ce3022b877ad3d.zip
Test case for 64-bit corner cases where truncation occurred before prior commit.
Diffstat (limited to 'src/test/run-pass')
-rw-r--r--src/test/run-pass/issue-15523-big.rs48
-rw-r--r--src/test/run-pass/issue-15523.rs2
2 files changed, 50 insertions, 0 deletions
diff --git a/src/test/run-pass/issue-15523-big.rs b/src/test/run-pass/issue-15523-big.rs
new file mode 100644
index 00000000000..33c81cab381
--- /dev/null
+++ b/src/test/run-pass/issue-15523-big.rs
@@ -0,0 +1,48 @@
+// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// Issue 15523: derive(PartialOrd) should use the provided
+// discriminant values for the derived ordering.
+//
+// This test is checking corner cases that arise when you have
+// 64-bit values in the variants.
+
+#[derive(PartialEq, PartialOrd)]
+#[repr(u64)]
+enum Eu64 {
+    Pos2 = 2,
+    PosMax = !0,
+    Pos1 = 1,
+}
+
+#[derive(PartialEq, PartialOrd)]
+#[repr(i64)]
+enum Ei64 {
+    Pos2 = 2,
+    Neg1 = -1,
+    NegMin = 1 << 63,
+    PosMax = !(1 << 63),
+    Pos1 = 1,
+}
+
+fn main() {
+    assert!(Eu64::Pos2 > Eu64::Pos1);
+    assert!(Eu64::Pos2 < Eu64::PosMax);
+    assert!(Eu64::Pos1 < Eu64::PosMax);
+
+
+    assert!(Ei64::Pos2 > Ei64::Pos1);
+    assert!(Ei64::Pos2 > Ei64::Neg1);
+    assert!(Ei64::Pos1 > Ei64::Neg1);
+    assert!(Ei64::Pos2 > Ei64::NegMin);
+    assert!(Ei64::Pos1 > Ei64::NegMin);
+    assert!(Ei64::Pos2 < Ei64::PosMax);
+    assert!(Ei64::Pos1 < Ei64::PosMax);
+}
diff --git a/src/test/run-pass/issue-15523.rs b/src/test/run-pass/issue-15523.rs
index 8edf360c985..bb8fa6791a5 100644
--- a/src/test/run-pass/issue-15523.rs
+++ b/src/test/run-pass/issue-15523.rs
@@ -10,6 +10,8 @@
 
 // Issue 15523: derive(PartialOrd) should use the provided
 // discriminant values for the derived ordering.
+//
+// This is checking the basic functionality.
 
 #[derive(PartialEq, PartialOrd)]
 enum E1 {