2011-06-16 14:30:10 -07:00
|
|
|
// xfail-stage0
|
|
|
|
|
2011-07-10 01:20:18 -07:00
|
|
|
import rusti::ivec_len;
|
2011-06-16 14:30:10 -07:00
|
|
|
|
|
|
|
native "rust-intrinsic" mod rusti {
|
2011-07-10 01:20:18 -07:00
|
|
|
fn ivec_len[T](&T[] v) -> uint;
|
2011-06-16 14:30:10 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
let int[] v = ~[];
|
2011-07-10 01:20:18 -07:00
|
|
|
assert (ivec_len(v) == 0u); // zero-length
|
2011-06-16 14:30:10 -07:00
|
|
|
auto x = ~[ 1, 2 ];
|
2011-07-10 01:20:18 -07:00
|
|
|
assert (ivec_len(x) == 2u); // on stack
|
2011-06-16 14:30:10 -07:00
|
|
|
auto y = ~[ 1, 2, 3, 4, 5 ];
|
2011-07-10 01:20:18 -07:00
|
|
|
assert (ivec_len(y) == 5u); // on heap
|
2011-06-16 14:30:10 -07:00
|
|
|
|
|
|
|
v += ~[];
|
2011-07-10 01:20:18 -07:00
|
|
|
assert (ivec_len(v) == 0u); // zero-length append
|
2011-06-16 14:30:10 -07:00
|
|
|
x += ~[ 3 ];
|
2011-07-10 01:20:18 -07:00
|
|
|
assert (ivec_len(x) == 3u); // on-stack append
|
2011-06-16 14:30:10 -07:00
|
|
|
y += ~[ 6, 7, 8, 9 ];
|
2011-07-10 01:20:18 -07:00
|
|
|
assert (ivec_len(y) == 9u); // on-heap append
|
2011-06-16 14:30:10 -07:00
|
|
|
|
|
|
|
auto vv = v + v;
|
2011-07-10 01:20:18 -07:00
|
|
|
assert (ivec_len(vv) == 0u); // zero-length add
|
2011-06-16 14:30:10 -07:00
|
|
|
auto xx = x + ~[ 4 ];
|
2011-07-10 01:20:18 -07:00
|
|
|
assert (ivec_len(xx) == 4u); // on-stack add
|
2011-06-16 14:30:10 -07:00
|
|
|
auto yy = y + ~[ 10, 11 ];
|
2011-07-10 01:20:18 -07:00
|
|
|
assert (ivec_len(yy) == 11u); // on-heap add
|
2011-06-16 14:30:10 -07:00
|
|
|
}
|
|
|
|
|