@@ -2524,16 +2524,7 @@ impl<'a> Parser<'a> {
2524
2524
let bracket_pos = self . span . lo ;
2525
2525
self . bump ( ) ;
2526
2526
2527
- let mut found_dotdot = false ;
2528
- if self . token == token:: DotDot &&
2529
- self . look_ahead ( 1 , |t| t == & token:: CloseDelim ( token:: Bracket ) ) {
2530
- // Using expr[..], which is a mistake, should be expr[]
2531
- self . bump ( ) ;
2532
- self . bump ( ) ;
2533
- found_dotdot = true ;
2534
- }
2535
-
2536
- if found_dotdot || self . eat ( & token:: CloseDelim ( token:: Bracket ) ) {
2527
+ if self . eat ( & token:: CloseDelim ( token:: Bracket ) ) {
2537
2528
// No expression, expand to a RangeFull
2538
2529
// FIXME(#20516) It would be better to use a lang item or
2539
2530
// something for RangeFull.
@@ -2557,7 +2548,11 @@ impl<'a> Parser<'a> {
2557
2548
let range = ExprStruct ( path, vec ! [ ] , None ) ;
2558
2549
let ix = self . mk_expr ( bracket_pos, hi, range) ;
2559
2550
let index = self . mk_index ( e, ix) ;
2560
- e = self . mk_expr ( lo, hi, index)
2551
+ e = self . mk_expr ( lo, hi, index) ;
2552
+ // Enable after snapshot.
2553
+ // self.span_warn(e.span, "deprecated slicing syntax: `[]`");
2554
+ // self.span_note(e.span,
2555
+ // "use `&expr[..]` to construct a slice of the whole of expr");
2561
2556
} else {
2562
2557
let ix = self . parse_expr ( ) ;
2563
2558
hi = self . span . hi ;
@@ -2566,11 +2561,6 @@ impl<'a> Parser<'a> {
2566
2561
e = self . mk_expr ( lo, hi, index)
2567
2562
}
2568
2563
2569
- if found_dotdot {
2570
- self . span_err ( e. span , "incorrect slicing expression: `[..]`" ) ;
2571
- self . span_note ( e. span ,
2572
- "use `&expr[]` to construct a slice of the whole of expr" ) ;
2573
- }
2574
2564
}
2575
2565
_ => return e
2576
2566
}
@@ -2931,9 +2921,14 @@ impl<'a> Parser<'a> {
2931
2921
// with the postfix-form 'expr..'
2932
2922
let lo = self . span . lo ;
2933
2923
self . bump ( ) ;
2934
- let rhs = self . parse_binops ( ) ;
2935
- let hi = rhs. span . hi ;
2936
- let ex = self . mk_range ( None , Some ( rhs) ) ;
2924
+ let opt_end = if self . is_at_start_of_range_notation_rhs ( ) {
2925
+ let end = self . parse_binops ( ) ;
2926
+ Some ( end)
2927
+ } else {
2928
+ None
2929
+ } ;
2930
+ let hi = self . span . hi ;
2931
+ let ex = self . mk_range ( None , opt_end) ;
2937
2932
self . mk_expr ( lo, hi, ex)
2938
2933
}
2939
2934
_ => {
0 commit comments