File tree Expand file tree Collapse file tree 1 file changed +28
-0
lines changed Expand file tree Collapse file tree 1 file changed +28
-0
lines changed Original file line number Diff line number Diff line change @@ -971,6 +971,34 @@ pub(crate) mod parsing {
971971 }
972972 }
973973 lhs = Term :: Binary ( TermBinary { left : Box :: new ( lhs) , op, right : Box :: new ( rhs) } ) ;
974+ } else if Precedence :: Range >= base && input. peek ( Token ! [ ..] ) {
975+ let limits: RangeLimits = input. parse ( ) ?;
976+ let rhs = if matches ! ( limits, RangeLimits :: HalfOpen ( _) )
977+ && ( input. is_empty ( )
978+ || input. peek ( Token ! [ , ] )
979+ || input. peek ( Token ! [ ; ] )
980+ || input. peek ( Token ! [ . ] ) && !input. peek ( Token ! [ ..] )
981+ || !allow_struct. 0 && input. peek ( token:: Brace ) )
982+ {
983+ None
984+ } else {
985+ let mut rhs = unary_term ( input, allow_struct) ?;
986+ loop {
987+ let next = peek_precedence ( input) ;
988+ if next > Precedence :: Range {
989+ rhs = parse_term ( input, rhs, allow_struct, next) ?;
990+ } else {
991+ break ;
992+ }
993+ }
994+ Some ( rhs)
995+ } ;
996+ lhs = Term :: Range ( TermRange {
997+ // attrs: Vec::new(),
998+ from : Some ( Box :: new ( lhs) ) ,
999+ limits,
1000+ to : rhs. map ( Box :: new) ,
1001+ } ) ;
9741002 } else if Precedence :: Cast >= base && input. peek ( Token ! [ as ] ) {
9751003 let as_token: Token ! [ as ] = input. parse ( ) ?;
9761004 let ty = input. call ( Type :: without_plus) ?;
You can’t perform that action at this time.
0 commit comments