@@ -567,6 +567,9 @@ func (p *textParser) readStruct(sv reflect.Value, terminator string) error {
567
567
if err := p .readAny (key , props .mkeyprop ); err != nil {
568
568
return err
569
569
}
570
+ if err := p .consumeOptionalSeparator (); err != nil {
571
+ return err
572
+ }
570
573
if err := p .consumeToken ("value" ); err != nil {
571
574
return err
572
575
}
@@ -576,6 +579,9 @@ func (p *textParser) readStruct(sv reflect.Value, terminator string) error {
576
579
if err := p .readAny (val , props .mvalprop ); err != nil {
577
580
return err
578
581
}
582
+ if err := p .consumeOptionalSeparator (); err != nil {
583
+ return err
584
+ }
579
585
if err := p .consumeToken (terminator ); err != nil {
580
586
return err
581
587
}
@@ -605,14 +611,10 @@ func (p *textParser) readStruct(sv reflect.Value, terminator string) error {
605
611
}
606
612
}
607
613
608
- // For backward compatibility, permit a semicolon or comma after a field.
609
- tok = p .next ()
610
- if tok .err != nil {
611
- return tok .err
612
- }
613
- if tok .value != ";" && tok .value != "," {
614
- p .back ()
614
+ if err := p .consumeOptionalSeparator (); err != nil {
615
+ return err
615
616
}
617
+
616
618
}
617
619
618
620
if reqCount > 0 {
@@ -621,6 +623,19 @@ func (p *textParser) readStruct(sv reflect.Value, terminator string) error {
621
623
return reqFieldErr
622
624
}
623
625
626
+ // consumeOptionalSeparator consumes an optional semicolon or comma.
627
+ // It is used in readStruct to provide backward compatibility.
628
+ func (p * textParser ) consumeOptionalSeparator () error {
629
+ tok := p .next ()
630
+ if tok .err != nil {
631
+ return tok .err
632
+ }
633
+ if tok .value != ";" && tok .value != "," {
634
+ p .back ()
635
+ }
636
+ return nil
637
+ }
638
+
624
639
func (p * textParser ) readAny (v reflect.Value , props * Properties ) error {
625
640
tok := p .next ()
626
641
if tok .err != nil {
0 commit comments