Got test cases to pass, after some major surgery

This commit is contained in:
John Clements 2013-04-18 14:48:59 -07:00
parent 9455eaf77b
commit dd310d6c3b
3 changed files with 21 additions and 16 deletions

View File

@ -8,13 +8,16 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
#[link (name = "issue2378a")];
#[crate_type = "lib"];
enum maybe<T> { just(T), nothing }
impl copy> for maybe<T> for methods<T {
fn ~[](idx: uint) -> T {
impl <T:Copy> Index<uint,T> for maybe<T> {
fn index(&self, idx: &uint) -> T {
match self {
just(t) { t }
nothing { fail!(); }
&just(ref t) => copy *t,
&nothing => { fail!(); }
}
}
}

View File

@ -8,15 +8,17 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
use issue2378a;
#[link (name = "issue2378b")];
#[crate_type = "lib"];
extern mod issue2378a;
use issue2378a::maybe;
use issue2378a::methods;
type two_maybes<T> = {a: maybe<T>, b: maybe<T>};
struct two_maybes<T> {a: maybe<T>, b: maybe<T>}
impl copy> for two_maybes<T> for methods<T {
fn ~[](idx: uint) -> (T, T) {
(self.a[idx], self.b[idx])
impl <T:Copy> Index<uint,(T,T)> for two_maybes<T> {
fn index(&self, idx: &uint) -> (T, T) {
(self.a[*idx], self.b[*idx])
}
}

View File

@ -8,17 +8,17 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
// xfail-test -- #2378 unfixed
// aux-build:issue2378a.rs
// aux-build:issue2378b.rs
// xfail-fast - check-fast doesn't understand aux-build
use issue2378a;
use issue2378b;
extern mod issue2378a;
extern mod issue2378b;
use issue2378a::{just, methods};
use issue2378b::{methods};
use issue2378a::{just};
use issue2378b::{two_maybes};
pub fn main() {
let x = {a: just(3), b: just(5)};
let x = two_maybes{a: just(3), b: just(5)};
assert!(x[0u] == (3, 5));
}