summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2012-10-29 10:37:22 -0700
committerPatrick Walton <pcwalton@mimiga.net>2012-10-29 10:37:22 -0700
commit17a875b08a0a607a97fff0e4fd13be0d2fa4dcb3 (patch)
treee27b4900297909fa29c864fae85a1ab44c99d41e /src/test
parent5e5ea0460879972dd9b78516cdee2e65be7fad93 (diff)
parentd5a27a0e0c6e64d1532443a6bd45b3416e7597fe (diff)
downloadrust-17a875b08a0a607a97fff0e4fd13be0d2fa4dcb3.tar.gz
rust-17a875b08a0a607a97fff0e4fd13be0d2fa4dcb3.zip
Merge pull request #3871 from pcwalton/master
 	rustc: Translate monomorphic intra-crate automatically-derived method… 
Diffstat (limited to 'src/test')
-rw-r--r--src/test/run-pass/deriving-simple.rs32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/test/run-pass/deriving-simple.rs b/src/test/run-pass/deriving-simple.rs
new file mode 100644
index 00000000000..04167893507
--- /dev/null
+++ b/src/test/run-pass/deriving-simple.rs
@@ -0,0 +1,32 @@
+trait MyEq {
+    pure fn eq(other: &self) -> bool;
+}
+
+struct A {
+    x: int
+}
+
+struct B {
+    x: A,
+    y: A,
+    z: A
+}
+
+impl A : MyEq {
+    pure fn eq(other: &A) -> bool {
+        unsafe { io::println(fmt!("eq %d %d", self.x, other.x)); }
+        self.x == other.x
+    }
+}
+
+impl B : MyEq;
+
+fn main() {
+    let b = B { x: A { x: 1 }, y: A { x: 2 }, z: A { x: 3 } };
+    let c = B { x: A { x: 1 }, y: A { x: 3 }, z: A { x: 4 } };
+    assert b.eq(&b);
+    assert c.eq(&c);
+    assert !b.eq(&c);
+    assert !c.eq(&b);
+}
+