From 81caf926b4ecf9a6c48f2f7ade2102e8876e6677 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 13 May 2012 22:12:58 -0700 Subject: [PATCH] test for #2378 --- src/test/auxiliary/issue2378a.rs | 10 ++++++++++ src/test/auxiliary/issue2378b.rs | 12 ++++++++++++ src/test/run-pass/issue2378c.rs | 14 ++++++++++++++ 3 files changed, 36 insertions(+) create mode 100644 src/test/auxiliary/issue2378a.rs create mode 100644 src/test/auxiliary/issue2378b.rs create mode 100644 src/test/run-pass/issue2378c.rs diff --git a/src/test/auxiliary/issue2378a.rs b/src/test/auxiliary/issue2378a.rs new file mode 100644 index 000000000000..35269a2d653c --- /dev/null +++ b/src/test/auxiliary/issue2378a.rs @@ -0,0 +1,10 @@ +enum maybe { just(T), nothing } + +impl methods for maybe { + fn [](idx: uint) -> T { + alt self { + just(t) { t } + nothing { fail; } + } + } +} \ No newline at end of file diff --git a/src/test/auxiliary/issue2378b.rs b/src/test/auxiliary/issue2378b.rs new file mode 100644 index 000000000000..9cfe4d3a3686 --- /dev/null +++ b/src/test/auxiliary/issue2378b.rs @@ -0,0 +1,12 @@ +use issue2378a; + +import issue2378a::maybe; +import issue2378a::methods; + +type two_maybes = {a: maybe, b: maybe}; + +impl methods for two_maybes { + fn [](idx: uint) -> (T, T) { + (self.a[idx], self.b[idx]) + } +} \ No newline at end of file diff --git a/src/test/run-pass/issue2378c.rs b/src/test/run-pass/issue2378c.rs new file mode 100644 index 000000000000..c72be0e0d42e --- /dev/null +++ b/src/test/run-pass/issue2378c.rs @@ -0,0 +1,14 @@ +// xfail-test -- #2378 unfixed +// aux-build:issue2378a.rs +// aux-build:issue2378b.rs + +use issue2378a; +use issue2378b; + +import issue2378a::{just, methods}; +import issue2378b::{methods}; + +fn main() { + let x = {a: just(3), b: just(5)}; + assert x[0u] == (3, 5); +}