|
8 | 8 | // option. This file may not be copied, modified, or distributed
|
9 | 9 | // except according to those terms.
|
10 | 10 |
|
11 |
| -// xfail-test |
12 |
| - |
13 |
| -tag a_tag<A,B> { |
14 |
| - varA(A); |
15 |
| - varB(B); |
| 11 | +enum a_tag<A,B> { |
| 12 | + varA(A), |
| 13 | + varB(B) |
16 | 14 | }
|
17 | 15 |
|
18 |
| -type t_rec<A,B> = { |
| 16 | +struct t_rec<A,B> { |
19 | 17 | chA: u8,
|
20 | 18 | tA: a_tag<A,B>,
|
21 | 19 | chB: u8,
|
22 | 20 | tB: a_tag<A,B>
|
23 |
| -}; |
| 21 | +} |
24 | 22 |
|
25 |
| -fn mk_rec<A:copy,B:copy>(a: A, b: B) -> t_rec<A,B> { |
26 |
| - return { chA:0u8, tA:varA(a), chB:1u8, tB:varB(b) }; |
| 23 | +fn mk_rec<A:Copy,B:Copy>(a: A, b: B) -> t_rec<A,B> { |
| 24 | + return t_rec{ chA:0u8, tA:varA(a), chB:1u8, tB:varB(b) }; |
27 | 25 | }
|
28 | 26 |
|
29 |
| -fn is_aligned<A>(amnt: uint, &&u: A) -> bool { |
| 27 | +fn is_aligned<A>(amnt: uint, u: &A) -> bool { |
30 | 28 | let p = ptr::to_unsafe_ptr(u) as uint;
|
31 | 29 | return (p & (amnt-1u)) == 0u;
|
32 | 30 | }
|
33 | 31 |
|
34 |
| -fn variant_data_is_aligned<A,B>(amnt: uint, &&u: a_tag<A,B>) -> bool { |
| 32 | +fn variant_data_is_aligned<A,B>(amnt: uint, u: &a_tag<A,B>) -> bool { |
35 | 33 | match u {
|
36 |
| - varA(a) { is_aligned(amnt, a) } |
37 |
| - varB(b) { is_aligned(amnt, b) } |
| 34 | + &varA(ref a) => is_aligned(amnt, a), |
| 35 | + &varB(ref b) => is_aligned(amnt, b) |
38 | 36 | }
|
39 | 37 | }
|
40 | 38 |
|
41 | 39 | pub fn main() {
|
42 | 40 | let x = mk_rec(22u64, 23u64);
|
43 |
| - assert!(is_aligned(8u, x.tA)); |
44 |
| - assert!(variant_data_is_aligned(8u, x.tA)); |
45 |
| - assert!(is_aligned(8u, x.tB)); |
46 |
| - assert!(variant_data_is_aligned(8u, x.tB)); |
| 41 | + assert!(is_aligned(8u, &x.tA)); |
| 42 | + assert!(variant_data_is_aligned(8u, &x.tA)); |
| 43 | + assert!(is_aligned(8u, &x.tB)); |
| 44 | + assert!(variant_data_is_aligned(8u, &x.tB)); |
47 | 45 |
|
48 | 46 | let x = mk_rec(22u64, 23u32);
|
49 |
| - assert!(is_aligned(8u, x.tA)); |
50 |
| - assert!(variant_data_is_aligned(8u, x.tA)); |
51 |
| - assert!(is_aligned(8u, x.tB)); |
52 |
| - assert!(variant_data_is_aligned(4u, x.tB)); |
| 47 | + assert!(is_aligned(8u, &x.tA)); |
| 48 | + assert!(variant_data_is_aligned(8u, &x.tA)); |
| 49 | + assert!(is_aligned(8u, &x.tB)); |
| 50 | + assert!(variant_data_is_aligned(4u, &x.tB)); |
53 | 51 |
|
54 | 52 | let x = mk_rec(22u32, 23u64);
|
55 |
| - assert!(is_aligned(8u, x.tA)); |
56 |
| - assert!(variant_data_is_aligned(4u, x.tA)); |
57 |
| - assert!(is_aligned(8u, x.tB)); |
58 |
| - assert!(variant_data_is_aligned(8u, x.tB)); |
| 53 | + assert!(is_aligned(8u, &x.tA)); |
| 54 | + assert!(variant_data_is_aligned(4u, &x.tA)); |
| 55 | + assert!(is_aligned(8u, &x.tB)); |
| 56 | + assert!(variant_data_is_aligned(8u, &x.tB)); |
59 | 57 |
|
60 | 58 | let x = mk_rec(22u32, 23u32);
|
61 |
| - assert!(is_aligned(4u, x.tA)); |
62 |
| - assert!(variant_data_is_aligned(4u, x.tA)); |
63 |
| - assert!(is_aligned(4u, x.tB)); |
64 |
| - assert!(variant_data_is_aligned(4u, x.tB)); |
| 59 | + assert!(is_aligned(4u, &x.tA)); |
| 60 | + assert!(variant_data_is_aligned(4u, &x.tA)); |
| 61 | + assert!(is_aligned(4u, &x.tB)); |
| 62 | + assert!(variant_data_is_aligned(4u, &x.tB)); |
65 | 63 |
|
66 | 64 | let x = mk_rec(22f64, 23f64);
|
67 |
| - assert!(is_aligned(8u, x.tA)); |
68 |
| - assert!(variant_data_is_aligned(8u, x.tA)); |
69 |
| - assert!(is_aligned(8u, x.tB)); |
70 |
| - assert!(variant_data_is_aligned(8u, x.tB)); |
| 65 | + assert!(is_aligned(8u, &x.tA)); |
| 66 | + assert!(variant_data_is_aligned(8u, &x.tA)); |
| 67 | + assert!(is_aligned(8u, &x.tB)); |
| 68 | + assert!(variant_data_is_aligned(8u, &x.tB)); |
71 | 69 | }
|
0 commit comments