rust/src/test/run-pass/expr-if-generic.rs
Brian Anderson d2d42fd4c7 Make block results work for generic types
I think just about every type can be used as a block result now. There's quite
a proliferation of tests here, but they all test slightly different things and
some are split out to remain XFAILed. The tests of generic vectors are still
XFAILed because generic aliased boxes still don't work in general.
2011-04-07 21:58:36 -04:00

33 lines
694 B
Rust

// xfail-boot
// -*- rust -*-
// Tests for if as expressions with dynamic type sizes
type compare[T] = fn(&T t1, &T t2) -> bool;
fn test_generic[T](&T expected, &T not_expected, &compare[T] eq) {
let T actual = if (true) { expected } else { not_expected };
check (eq(expected, actual));
}
fn test_bool() {
fn compare_bool(&bool b1, &bool b2) -> bool {
ret b1 == b2;
}
auto eq = bind compare_bool(_, _);
test_generic[bool](true, false, eq);
}
fn test_tup() {
type t = tup(int, int);
fn compare_tup(&t t1, &t t2) -> bool {
ret t1 == t2;
}
auto eq = bind compare_tup(_, _);
test_generic[t](tup(1, 2), tup(2, 3), eq);
}
fn main() {
test_bool();
test_tup();
}