提交 7053b601 编写于 作者: B Brian Anderson

Parse x[y] as indexes

上级 325ea41a
......@@ -1109,6 +1109,13 @@ fn parse_dot_or_call_expr_with(p: &parser, e: @ast::expr) -> @ast::expr {
e = mk_expr(p, lo, hi, ast::expr_call(e, es.node));
}
}
token::LBRACKET. {
p.bump();
let ix = parse_expr(p);
hi = ix.span.hi;
expect(p, token::RBRACKET);
e = mk_expr(p, lo, hi, ast::expr_index(e, ix));
}
token::DOT. {
p.bump();
alt p.peek() {
......
......@@ -5,16 +5,16 @@
fn main() {
let v: [int] = ~[0, 1, 2, 3, 4, 5];
let s: str = "abcdef";
assert (v.(3u) == 3);
assert (v.(3u8) == 3);
assert (v.(3i8) == 3);
assert (v.(3u32) == 3);
assert (v.(3i32) == 3);
log v.(3u8);
assert (s.(3u) == 'd' as u8);
assert (s.(3u8) == 'd' as u8);
assert (s.(3i8) == 'd' as u8);
assert (s.(3u32) == 'd' as u8);
assert (s.(3i32) == 'd' as u8);
log s.(3u8);
assert (v[3u] == 3);
assert (v[3u8] == 3);
assert (v[3i8] == 3);
assert (v[3u32] == 3);
assert (v[3i32] == 3);
log v[3u8];
assert (s[3u] == 'd' as u8);
assert (s[3u8] == 'd' as u8);
assert (s[3i8] == 'd' as u8);
assert (s[3u32] == 'd' as u8);
assert (s[3i32] == 'd' as u8);
log s[3u8];
}
......@@ -2,7 +2,7 @@
fn main() {
let s = "hello";
let c: u8 = s.(4);
let c: u8 = s[4];
log c;
assert (c == 0x6f as u8);
}
\ No newline at end of file
......@@ -4,12 +4,12 @@
// -*- rust -*-
fn main() {
let v: [int] = ~[10, 20];
assert (v.(0) == 10);
assert (v.(1) == 20);
assert (v[0]== 10);
assert (v[1] == 20);
let x: int = 0;
assert (v.(x) == 10);
assert (v.(x + 1) == 20);
assert (v[x] == 10);
assert (v[x + 1] == 20);
x = x + 1;
assert (v.(x) == 20);
assert (v.(x - 1) == 10);
assert (v[x] == 20);
assert (v[x - 1] == 10);
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册