File tree Expand file tree Collapse file tree 3 files changed +35
-2
lines changed Expand file tree Collapse file tree 3 files changed +35
-2
lines changed Original file line number Diff line number Diff line change @@ -6,7 +6,7 @@ refs/heads/try: d324a424d8f84b1eb049b12cf34182bda91b0024
6
6
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
7
7
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
8
8
refs/heads/try2: d0c6ce338884ee21843f4b40bf6bf18d222ce5df
9
- refs/heads/incoming: 36883186ab88e7b39ea2cb0f47c2c8999840663e
9
+ refs/heads/incoming: 80b6850e34957d95b7606da01d229dc1e3e6e5b5
10
10
refs/heads/dist-snap: 2f32a1581f522e524009138b33b1c7049ced668d
11
11
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
12
12
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503
Original file line number Diff line number Diff line change @@ -472,7 +472,19 @@ class parser {
472
472
ty_rec ( elems)
473
473
} else if self . token == token:: LBRACKET {
474
474
self . expect ( token:: LBRACKET ) ;
475
- let t = ty_vec ( self . parse_mt ( ) ) ;
475
+ let mut t = ty_vec ( self . parse_mt ( ) ) ;
476
+
477
+ // Parse the `* 3` in `[ int * 3 ]`
478
+ match self . maybe_parse_fixed_vstore_with_star ( ) {
479
+ none => { }
480
+ some( suffix) => {
481
+ t = ty_fixed_length ( @{
482
+ id: self . get_id ( ) ,
483
+ node: t,
484
+ span: mk_sp ( lo, self . last_span . hi )
485
+ } , suffix)
486
+ }
487
+ }
476
488
self . expect ( token:: RBRACKET ) ;
477
489
t
478
490
} else if self . token == token:: BINOP ( token:: AND ) {
@@ -609,6 +621,22 @@ class parser {
609
621
}
610
622
}
611
623
624
+ fn maybe_parse_fixed_vstore_with_star ( ) -> option < option < uint > > {
625
+ if self . eat ( token:: BINOP ( token:: STAR ) ) {
626
+ match copy self . token {
627
+ token:: UNDERSCORE => {
628
+ self . bump ( ) ; some ( none)
629
+ }
630
+ token:: LIT_INT_UNSUFFIXED ( i) if i >= 0i64 => {
631
+ self . bump ( ) ; some ( some ( i as uint ) )
632
+ }
633
+ _ => none
634
+ }
635
+ } else {
636
+ none
637
+ }
638
+ }
639
+
612
640
fn lit_from_token ( tok : token:: token ) -> lit_ {
613
641
match tok {
614
642
token:: LIT_INT ( i, it) => lit_int ( i, it) ,
Original file line number Diff line number Diff line change
1
+ fn main ( ) {
2
+ let x: [ int * 4 ] = [ 1 , 2 , 3 , 4 ] ;
3
+ io:: println ( fmt ! ( "%d" , x[ 0 ] ) ) ;
4
+ }
5
+
You can’t perform that action at this time.
0 commit comments