@@ -154,6 +154,8 @@ impl parser for parser {
154
154
fn parse ( ) -> result:: t < json , error > {
155
155
alt self . parse_value ( ) {
156
156
ok ( value) {
157
+ // Skip trailing whitespaces.
158
+ self . parse_whitespace ( ) ;
157
159
// Make sure there is no trailing characters.
158
160
if self . eof ( ) {
159
161
ok ( value)
@@ -392,7 +394,6 @@ impl parser for parser {
392
394
393
395
if self . ch == ']' {
394
396
self . bump ( ) ;
395
- self . parse_whitespace ( ) ;
396
397
ret ok( list ( values) ) ;
397
398
}
398
399
@@ -407,11 +408,7 @@ impl parser for parser {
407
408
408
409
alt self. ch {
409
410
',' { self . bump ( ) ; }
410
- ']' {
411
- self . bump ( ) ;
412
- self . parse_whitespace ( ) ;
413
- ret ok( list ( values) ) ;
414
- }
411
+ ']' { self . bump ( ) ; ret ok( list ( values) ) ; }
415
412
_ { ret self. error ( "expecting ',' or ']'" ) ; }
416
413
}
417
414
}
@@ -427,7 +424,6 @@ impl parser for parser {
427
424
428
425
if self . ch == '}' {
429
426
self . bump ( ) ;
430
- self . parse_whitespace ( ) ;
431
427
ret ok( dict ( values) ) ;
432
428
}
433
429
@@ -459,11 +455,7 @@ impl parser for parser {
459
455
460
456
alt self. ch {
461
457
',' { self . bump ( ) ; }
462
- '}' {
463
- self . bump ( ) ;
464
- self . parse_whitespace ( ) ;
465
- ret ok( dict ( values) ) ;
466
- }
458
+ '}' { self . bump ( ) ; ret ok( dict ( values) ) ; }
467
459
_ {
468
460
if self. eof ( ) { break ; }
469
461
ret self . error ( "expecting ',' or '}'" ) ;
@@ -637,6 +629,9 @@ mod tests {
637
629
assert from_str ( "null" ) == ok ( null) ;
638
630
assert from_str ( "true" ) == ok ( boolean ( true ) ) ;
639
631
assert from_str ( "false" ) == ok ( boolean ( false ) ) ;
632
+ assert from_str ( " null " ) == ok ( null) ;
633
+ assert from_str ( " true " ) == ok ( boolean ( true ) ) ;
634
+ assert from_str ( " false " ) == ok ( boolean ( false ) ) ;
640
635
}
641
636
642
637
#[ test]
@@ -664,6 +659,7 @@ mod tests {
664
659
assert from_str ( "0.4e5" ) == ok ( num ( 0.4e5 f) ) ;
665
660
assert from_str ( "0.4e+15" ) == ok ( num ( 0.4e15 f) ) ;
666
661
assert from_str ( "0.4e-01" ) == ok ( num ( 0.4e-01 f) ) ;
662
+ assert from_str ( " 3 " ) == ok ( num ( 3 f) ) ;
667
663
}
668
664
669
665
#[ test]
@@ -680,6 +676,7 @@ mod tests {
680
676
assert from_str ( "\" \\ n\" " ) == ok ( string ( "\n " ) ) ;
681
677
assert from_str ( "\" \\ r\" " ) == ok ( string ( "\r " ) ) ;
682
678
assert from_str ( "\" \\ t\" " ) == ok ( string ( "\t " ) ) ;
679
+ assert from_str ( " \" foo\" " ) == ok ( string ( "foo" ) ) ;
683
680
}
684
681
685
682
#[ test]
0 commit comments