d2d42fd4c7
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.
37 lines
646 B
Rust
37 lines
646 B
Rust
// xfail-boot
|
|
// -*- rust -*-
|
|
|
|
// Tests for standalone blocks as expressions with dynamic type sizes
|
|
|
|
type compare[T] = fn(&T t1, &T t2) -> bool;
|
|
|
|
fn test_generic[T](&T expected, &compare[T] eq) {
|
|
let T actual = { 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, 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), eq);
|
|
}
|
|
|
|
fn main() {
|
|
test_bool();
|
|
test_tup();
|
|
}
|
|
|
|
|