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 2
2
refs/heads/master: cd6f24f9d14ac90d167386a56e7a6ac1f0318195
3
3
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4
4
refs/heads/snap-stage3: cd6f24f9d14ac90d167386a56e7a6ac1f0318195
5
- refs/heads/try: 36883186ab88e7b39ea2cb0f47c2c8999840663e
5
+ refs/heads/try: 80b6850e34957d95b7606da01d229dc1e3e6e5b5
6
6
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
7
7
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
8
8
refs/heads/try2: d0c6ce338884ee21843f4b40bf6bf18d222ce5df
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