git.delta.rocks / jrsonnet / refs/commits / 0b9856e750cd

difftreelog

fix(parser) slice case with present end and missing step

Лач2020-06-14parent: #f42e5e7.patch.diff
in: master

1 file changed

modifiedcrates/jsonnet-parser/src/lib.rsdiffbeforeafterboth
195 rule slice_part(s: &ParserSettings) -> Option<LocExpr>195 rule slice_part(s: &ParserSettings) -> Option<LocExpr>
196 = e:(_ e:expr(s) _{e})? {e}196 = e:(_ e:expr(s) _{e})? {e}
197 pub rule slice_desc(s: &ParserSettings) -> SliceDesc197 pub rule slice_desc(s: &ParserSettings) -> SliceDesc
198 = start:slice_part(s) ":" pair:(end:slice_part(s) ":" step:slice_part(s) {(end, step)})? {198 = start:slice_part(s) ":" pair:(end:slice_part(s) step:(":" e:slice_part(s){e})? {(end, step.flatten())})? {
199 let (end, step) = if let Some((end, step)) = pair {199 let (end, step) = if let Some((end, step)) = pair {
200 (end, step)200 (end, step)
201 }else{201 }else{
357357
358 #[test]358 #[test]
359 fn slice() {359 fn slice() {
360 println!("{:?}", parse!("a[1:]"));360 parse!("a[1:]");
361 println!("{:?}", parse!("a[1::]"));361 parse!("a[1::]");
362 println!("{:?}", parse!("a[:1:]"));362 parse!("a[:1:]");
363 println!("{:?}", parse!("a[::1]"));363 parse!("a[::1]");
364 parse!("str[:len - 1]");
364 }365 }
365366
366 #[test]367 #[test]