Skip to content

Commit 4ea04c9

Browse files
committed
Change the ivec type syntax to [T].
This preserves the old syntax for now.
1 parent b2bfb1f commit 4ea04c9

18 files changed

+64
-52
lines changed

src/comp/syntax/parse/parser.rs

+5
Original file line numberDiff line numberDiff line change
@@ -554,6 +554,11 @@ fn parse_ty(p: &parser) -> @ast::ty {
554554
t = ast::ty_vec(parse_mt(p));
555555
hi = p.get_hi_pos();
556556
expect(p, token::RBRACKET);
557+
} else if (p.peek() == token::LBRACKET) {
558+
expect(p, token::LBRACKET);
559+
t = ast::ty_ivec(parse_mt(p));
560+
hi = p.get_hi_pos();
561+
expect(p, token::RBRACKET);
557562
} else if (eat_word(p, "fn")) {
558563
let flo = p.get_last_lo_pos();
559564
t = parse_ty_fn(ast::proto_fn, p, flo);

src/comp/syntax/print/pprust.rs

+3-14
Original file line numberDiff line numberDiff line change
@@ -287,24 +287,13 @@ fn print_type(s: &ps, ty: &ast::ty) {
287287
ast::ty_box(mt) { word(s.s, "@"); print_mt(s, mt); }
288288
ast::ty_vec(mt) { word(s.s, "vec["); print_mt(s, mt); word(s.s, "]"); }
289289
ast::ty_ivec(mt) {
290-
let parens =
291-
alt mt.ty.node {
292-
ast::ty_box(_) | ast::ty_vec(_) | ast::ty_ptr(_) |
293-
ast::ty_port(_) | ast::ty_chan(_) {
294-
true
295-
}
296-
ast::ty_path(pt, _) { ivec::len(pt.node.types) > 0u }
297-
_ { false }
298-
};
299-
if parens { popen(s); }
300-
print_type(s, *mt.ty);
301-
if parens { pclose(s); }
302290
word(s.s, "[");
303291
alt mt.mut {
304-
ast::mut. { word(s.s, "mutable"); }
305-
ast::maybe_mut. { word(s.s, "mutable?"); }
292+
ast::mut. { word_space(s, "mutable"); }
293+
ast::maybe_mut. { word_space(s, "mutable?"); }
306294
ast::imm. {}
307295
}
296+
print_type(s, *mt.ty);
308297
word(s.s, "]");
309298
}
310299
ast::ty_ptr(mt) { word(s.s, "*"); print_mt(s, mt); }

src/test/bench/task-perf-word-count.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,13 @@ mod map_reduce {
7373
type reducer = fn(str, getter) ;
7474

7575
tag ctrl_proto {
76-
find_reducer(u8[], chan[chan[reduce_proto]]);
76+
find_reducer([u8], chan[chan[reduce_proto]]);
7777
mapper_done;
7878
}
7979

8080
tag reduce_proto { emit_val(int); done; ref; release; }
8181

82-
fn start_mappers(ctrl: chan[ctrl_proto], inputs: vec[str]) -> task[] {
82+
fn start_mappers(ctrl: chan[ctrl_proto], inputs: vec[str]) -> [task] {
8383
let tasks = ~[];
8484
// log_err "starting mappers";
8585
for i: str in inputs {

src/test/compiletest/compiletest.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ fn main(args: vec[str]) {
2525
run_tests(config);
2626
}
2727

28-
fn parse_config(args: &str[]) -> config {
28+
fn parse_config(args: &[str]) -> config {
2929
let opts =
3030
~[getopts::reqopt("compile-lib-path"),
3131
getopts::reqopt("run-lib-path"), getopts::reqopt("rustc-path"),
@@ -117,7 +117,7 @@ fn test_opts(config: &config) -> test::test_opts {
117117
}
118118

119119
type tests_and_conv_fn =
120-
{tests: test::test_desc[], to_task: fn(&fn() ) -> task };
120+
{tests: [test::test_desc], to_task: fn(&fn() ) -> task };
121121

122122
fn make_tests(cx: &cx) -> tests_and_conv_fn {
123123
log #fmt("making tests from %s", cx.config.src_base);

src/test/compiletest/header.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export is_test_ignored;
1111

1212
type test_props = {
1313
// Lines that should be expected, in order, on standard out
14-
error_patterns: str[],
14+
error_patterns: [str],
1515
// Extra flags to pass to the compiler
1616
compile_flags: option::t[str],
1717
// If present, the name of a file that this test should match when

src/test/compiletest/procsrv.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ type reqchan = chan[request];
2727
type handle = {task: option::t[task], chan: reqchan};
2828

2929
tag request {
30-
exec(str, str, str[], chan[response]);
30+
exec(str, str, [str], chan[response]);
3131
stop;
3232
}
3333

@@ -189,7 +189,7 @@ fn clone_str(s: &str) -> str {
189189
new
190190
}
191191

192-
fn clone_ivecstr(v: &str[]) -> str[] {
192+
fn clone_ivecstr(v: &[str]) -> [str] {
193193
let r = ~[];
194194
for t: str in ivec::slice(v, 0u, ivec::len(v)) {
195195
r += ~[clone_str(t)];

src/test/pretty/ivec-type.pp

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// pp-exact:ivec-type.pp
2+
3+
fn f1(x: [int]) { }
4+
5+
fn g1() { f1(~[1, 2, 3]); }
6+
7+
fn f2(x: [int]) { }
8+
9+
fn g2() { f2(~[1, 2, 3]); }

src/test/pretty/ivec-type.rs

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// pp-exact:ivec-type.pp
2+
3+
fn f1(x: int[]) { }
4+
5+
fn g1() { f1(~[1, 2, 3]); }
6+
7+
fn f2(x: [int]) { }
8+
9+
fn g2() { f2(~[1, 2, 3]); }

src/test/run-pass/alloca-from-derived-tydesc.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@ tag option[T] { some(T); none; }
22

33
type r[T] = {mutable v: (option[T])[]};
44

5-
fn f[T]() -> T[] { ret ~[]; }
5+
fn f[T]() -> [T] { ret ~[]; }
66

7-
fn main() { let r: r[int] = {mutable v: ~[]}; r.v = f(); }
7+
fn main() { let r: r[int] = {mutable v: ~[]}; r.v = f(); }

src/test/run-pass/autobind.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
fn f[T](x: &T[]) -> T { ret x.(0); }
1+
fn f[T](x: &[T]) -> T { ret x.(0); }
22

3-
fn g(act: fn(&int[]) -> int ) -> int { ret act(~[1, 2, 3]); }
3+
fn g(act: fn(&[int]) -> int ) -> int { ret act(~[1, 2, 3]); }
44

55
fn main() {
66
assert (g(f) == 1);
7-
let f1: fn(&str[]) -> str = f;
7+
let f1: fn(&[str]) -> str = f;
88
assert (f1(~["x", "y", "z"]) == "x");
9-
}
9+
}
+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// issue #680
22

3-
fn f() -> int[] { ~[] }
3+
fn f() -> [int] { ~[] }
44

5-
fn main() { }
5+
fn main() { }

src/test/run-pass/interior-vec.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
import rusti::ivec_len;
44

55
native "rust-intrinsic" mod rusti {
6-
fn ivec_len[T](v: &T[]) -> uint;
6+
fn ivec_len[T](v: &[T]) -> uint;
77
}
88

99
fn main() {
10-
let v: int[] = ~[];
10+
let v: [int] = ~[];
1111
assert (ivec_len(v) == 0u); // zero-length
1212
let x = ~[1, 2];
1313
assert (ivec_len(x) == 2u); // on stack

src/test/run-pass/issue-687.rs

+9-9
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
use std;
22
import std::ivec;
33

4-
tag msg { closed; received(u8[]); }
4+
tag msg { closed; received([u8]); }
55

6-
fn producer(c: chan[u8[]]) {
6+
fn producer(c: chan[[u8]]) {
77
c <| ~[1u8, 2u8, 3u8, 4u8];
8-
let empty: u8[] = ~[];
8+
let empty: [u8] = ~[];
99
c <| empty;
1010
}
1111

12-
fn packager(cb: chan[chan[u8[]]], msg: chan[msg]) {
13-
let p: port[u8[]] = port();
12+
fn packager(cb: chan[chan[[u8]]], msg: chan[msg]) {
13+
let p: port[[u8]] = port();
1414
cb <| chan(p);
1515
while true {
1616
log "waiting for bytes";
17-
let data: u8[];
17+
let data: [u8];
1818
p |> data;
1919
log "got bytes";
2020
if ivec::len[u8](data) == 0u {
@@ -33,10 +33,10 @@ fn packager(cb: chan[chan[u8[]]], msg: chan[msg]) {
3333

3434
fn main() {
3535
let p: port[msg] = port();
36-
let recv_reader: port[chan[u8[]]] = port();
36+
let recv_reader: port[chan[[u8]]] = port();
3737
let pack = spawn packager(chan(recv_reader), chan(p));
3838

39-
let source_chan: chan[u8[]];
39+
let source_chan: chan[[u8]];
4040
recv_reader |> source_chan;
4141
let prod: task = spawn producer(source_chan);
4242

@@ -52,4 +52,4 @@ fn main() {
5252
}
5353
}
5454
}
55-
}
55+
}

src/test/run-pass/ivec-add.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
fn double[T](a: &T) -> T[] { ret ~[a] + ~[a]; }
1+
fn double[T](a: &T) -> [T] { ret ~[a] + ~[a]; }
22

3-
fn double_int(a: int) -> int[] { ret ~[a] + ~[a]; }
3+
fn double_int(a: int) -> [int] { ret ~[a] + ~[a]; }
44

55
fn main() {
66
let d = double(1);
+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
fn f(a: int[]) { }
1+
fn f(a: [int]) { }
22
fn main() { f(~[1, 2, 3, 4, 5]); }
33

src/test/run-pass/task-comm-16.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ fn test_rec() {
1616
}
1717

1818
fn test_vec() {
19-
let po: port[int[]] = port();
20-
let ch: chan[int[]] = chan(po);
21-
let v0: int[] = ~[0, 1, 2];
19+
let po: port[[int]] = port();
20+
let ch: chan[[int]] = chan(po);
21+
let v0: [int] = ~[0, 1, 2];
2222
ch <| v0;
23-
let v1: int[];
23+
let v1: [int];
2424
po |> v1;
2525
assert (v1.(0) == 0);
2626
assert (v1.(1) == 1);
@@ -72,4 +72,4 @@ fn test_chan() {
7272
assert (i == 10);
7373
}
7474

75-
fn main() { test_rec(); test_vec(); test_str(); test_tag(); test_chan(); }
75+
fn main() { test_rec(); test_vec(); test_str(); test_tag(); test_chan(); }

src/test/stdtest/ivec.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ fn add(x: &uint, y: &uint) -> uint { ret x + y; }
1919

2020
#[test]
2121
fn test_reserve_and_on_heap() {
22-
let v: int[] = ~[1, 2];
22+
let v: [int] = ~[1, 2];
2323
assert (!ivec::on_heap(v));
2424
ivec::reserve(v, 8u);
2525
assert (ivec::on_heap(v));

src/test/stdtest/sort_ivec.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
use std;
33

4-
fn check_sort(v1: &int[], v2: &int[]) {
4+
fn check_sort(v1: &[int], v2: &[int]) {
55
let len = std::ivec::len[int](v1);
66
fn lteq(a: &int, b: &int) -> bool { ret a <= b; }
77
let f = lteq;
@@ -18,11 +18,11 @@ fn test() {
1818
check_sort(v1, v2);
1919
}
2020
{ let v1 = ~[1, 1, 1]; let v2 = ~[1, 1, 1]; check_sort(v1, v2); }
21-
{ let v1: int[] = ~[]; let v2: int[] = ~[]; check_sort(v1, v2); }
21+
{ let v1: [int] = ~[]; let v2: [int] = ~[]; check_sort(v1, v2); }
2222
{ let v1 = ~[9]; let v2 = ~[9]; check_sort(v1, v2); }
2323
{
2424
let v1 = ~[9, 3, 3, 3, 9];
2525
let v2 = ~[3, 3, 3, 9, 9];
2626
check_sort(v1, v2);
2727
}
28-
}
28+
}

0 commit comments

Comments
 (0)