Skip to content

Commit 940f506

Browse files
committed
dictorsetmaker: accept extra spaces and commas.
1 parent a9b15b0 commit 940f506

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

src/expressions.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -387,15 +387,15 @@ impl ExpressionParser<NewlinesAreSpaces> {
387387
// ((test | star_expr)
388388
// (comp_for | (',' (test | star_expr))* [','])) )
389389
named!(dictorsetmaker<StrSpan, Box<Expression>>,
390-
alt!(
390+
ws4!(alt!(
391391
do_parse!(
392-
ws4!(tag!("**")) >>
392+
tag!("**") >>
393393
e: map!(call!(Self::expr), |e: Box<_>| DictItem::Star(*e)) >>
394394
r: call!(Self::dictmaker, e) >>
395395
(r)
396396
)
397397
| do_parse!(
398-
ws4!(tag!("*")) >>
398+
tag!("*") >>
399399
e: map!(call!(Self::expr), |e: Box<_>| SetItem::Star(*e)) >>
400400
r: call!(Self::setmaker, e) >>
401401
(r)
@@ -404,7 +404,7 @@ named!(dictorsetmaker<StrSpan, Box<Expression>>,
404404
key: call!(Self::test) >>
405405
r: alt!(
406406
do_parse!(
407-
ws4!(char!(':')) >>
407+
char!(':') >>
408408
item: map!(call!(Self::test), |value: Box<_>| DictItem::Unique(*key.clone(), *value)) >> // FIXME: do not clone
409409
r: call!(Self::dictmaker, item) >>
410410
(r)
@@ -413,21 +413,21 @@ named!(dictorsetmaker<StrSpan, Box<Expression>>,
413413
) >>
414414
(r)
415415
)
416-
)
416+
))
417417
);
418418

419419
named_args!(dictmaker(item1: DictItem) <StrSpan, Box<Expression>>,
420420
map!(
421-
opt!(alt!(
422-
preceded!(char!(','), separated_list!(char!(','), call!(Self::dictitem))) => { |v: Vec<_>| {
421+
opt!(ws4!(alt!(
422+
delimited!(char!(','), separated_list!(char!(','), call!(Self::dictitem)), opt!(ws4!(char!(',')))) => { |v: Vec<_>| {
423423
let mut v = v;
424424
v.insert(0, item1.clone()); // FIXME: do not clone
425425
Box::new(Expression::DictLiteral(v))
426426
}}
427427
| preceded!(peek!(tuple!(tag!("for"), call!(helpers::space_sep))), call!(Self::comp_for)) => { |comp| {
428428
Box::new(Expression::DictComp(Box::new(item1.clone()), comp)) // FIXME: do not clone
429429
}}
430-
)),
430+
))),
431431
|rest| {
432432
match rest {
433433
Some(r) => r,
@@ -439,16 +439,16 @@ named_args!(dictmaker(item1: DictItem) <StrSpan, Box<Expression>>,
439439

440440
named_args!(setmaker(item1: SetItem) <StrSpan, Box<Expression>>,
441441
do_parse!(
442-
rest:opt!(alt!(
443-
preceded!(char!(','), separated_list!(char!(','), call!(Self::setitem))) => { |v: Vec<_>| {
442+
rest:opt!(ws4!(alt!(
443+
delimited!(char!(','), separated_list!(char!(','), call!(Self::setitem)), opt!(ws4!(char!(',')))) => { |v: Vec<_>| {
444444
let mut v = v;
445445
v.insert(0, item1.clone()); // FIXME: do not clone
446446
Box::new(Expression::SetLiteral(v))
447447
}}
448448
| call!(Self::comp_for) => { |comp| {
449449
Box::new(Expression::SetComp(Box::new(item1.clone()), comp)) // FIXME: do not clone
450450
}}
451-
)) >> (
451+
))) >> (
452452
match rest {
453453
Some(r) => r,
454454
None => Box::new(Expression::SetLiteral(vec![item1])),

0 commit comments

Comments
 (0)