after syntax fixes, these tests appear to pass
This commit is contained in:
parent
3a5361aec9
commit
527f7716b7
@ -8,64 +8,62 @@
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// xfail-test
|
||||
|
||||
tag a_tag<A,B> {
|
||||
varA(A);
|
||||
varB(B);
|
||||
enum a_tag<A,B> {
|
||||
varA(A),
|
||||
varB(B)
|
||||
}
|
||||
|
||||
type t_rec<A,B> = {
|
||||
struct t_rec<A,B> {
|
||||
chA: u8,
|
||||
tA: a_tag<A,B>,
|
||||
chB: u8,
|
||||
tB: a_tag<A,B>
|
||||
};
|
||||
|
||||
fn mk_rec<A:copy,B:copy>(a: A, b: B) -> t_rec<A,B> {
|
||||
return { chA:0u8, tA:varA(a), chB:1u8, tB:varB(b) };
|
||||
}
|
||||
|
||||
fn is_aligned<A>(amnt: uint, &&u: A) -> bool {
|
||||
fn mk_rec<A:Copy,B:Copy>(a: A, b: B) -> t_rec<A,B> {
|
||||
return t_rec{ chA:0u8, tA:varA(a), chB:1u8, tB:varB(b) };
|
||||
}
|
||||
|
||||
fn is_aligned<A>(amnt: uint, u: &A) -> bool {
|
||||
let p = ptr::to_unsafe_ptr(u) as uint;
|
||||
return (p & (amnt-1u)) == 0u;
|
||||
}
|
||||
|
||||
fn variant_data_is_aligned<A,B>(amnt: uint, &&u: a_tag<A,B>) -> bool {
|
||||
fn variant_data_is_aligned<A,B>(amnt: uint, u: &a_tag<A,B>) -> bool {
|
||||
match u {
|
||||
varA(a) { is_aligned(amnt, a) }
|
||||
varB(b) { is_aligned(amnt, b) }
|
||||
&varA(ref a) => is_aligned(amnt, a),
|
||||
&varB(ref b) => is_aligned(amnt, b)
|
||||
}
|
||||
}
|
||||
|
||||
pub fn main() {
|
||||
let x = mk_rec(22u64, 23u64);
|
||||
assert!(is_aligned(8u, x.tA));
|
||||
assert!(variant_data_is_aligned(8u, x.tA));
|
||||
assert!(is_aligned(8u, x.tB));
|
||||
assert!(variant_data_is_aligned(8u, x.tB));
|
||||
assert!(is_aligned(8u, &x.tA));
|
||||
assert!(variant_data_is_aligned(8u, &x.tA));
|
||||
assert!(is_aligned(8u, &x.tB));
|
||||
assert!(variant_data_is_aligned(8u, &x.tB));
|
||||
|
||||
let x = mk_rec(22u64, 23u32);
|
||||
assert!(is_aligned(8u, x.tA));
|
||||
assert!(variant_data_is_aligned(8u, x.tA));
|
||||
assert!(is_aligned(8u, x.tB));
|
||||
assert!(variant_data_is_aligned(4u, x.tB));
|
||||
assert!(is_aligned(8u, &x.tA));
|
||||
assert!(variant_data_is_aligned(8u, &x.tA));
|
||||
assert!(is_aligned(8u, &x.tB));
|
||||
assert!(variant_data_is_aligned(4u, &x.tB));
|
||||
|
||||
let x = mk_rec(22u32, 23u64);
|
||||
assert!(is_aligned(8u, x.tA));
|
||||
assert!(variant_data_is_aligned(4u, x.tA));
|
||||
assert!(is_aligned(8u, x.tB));
|
||||
assert!(variant_data_is_aligned(8u, x.tB));
|
||||
assert!(is_aligned(8u, &x.tA));
|
||||
assert!(variant_data_is_aligned(4u, &x.tA));
|
||||
assert!(is_aligned(8u, &x.tB));
|
||||
assert!(variant_data_is_aligned(8u, &x.tB));
|
||||
|
||||
let x = mk_rec(22u32, 23u32);
|
||||
assert!(is_aligned(4u, x.tA));
|
||||
assert!(variant_data_is_aligned(4u, x.tA));
|
||||
assert!(is_aligned(4u, x.tB));
|
||||
assert!(variant_data_is_aligned(4u, x.tB));
|
||||
assert!(is_aligned(4u, &x.tA));
|
||||
assert!(variant_data_is_aligned(4u, &x.tA));
|
||||
assert!(is_aligned(4u, &x.tB));
|
||||
assert!(variant_data_is_aligned(4u, &x.tB));
|
||||
|
||||
let x = mk_rec(22f64, 23f64);
|
||||
assert!(is_aligned(8u, x.tA));
|
||||
assert!(variant_data_is_aligned(8u, x.tA));
|
||||
assert!(is_aligned(8u, x.tB));
|
||||
assert!(variant_data_is_aligned(8u, x.tB));
|
||||
assert!(is_aligned(8u, &x.tA));
|
||||
assert!(variant_data_is_aligned(8u, &x.tA));
|
||||
assert!(is_aligned(8u, &x.tB));
|
||||
assert!(variant_data_is_aligned(8u, &x.tB));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user