Skip to content

Commit ab4f686

Browse files
committed
fix missing tag for flow seqs
1 parent a84cdf5 commit ab4f686

File tree

3 files changed

+109
-0
lines changed

3 files changed

+109
-0
lines changed

changelog/current.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
2+
## Fixes
3+
4+
- [PR#501](https://github.com/biojppm/rapidyaml/pull/501): fix missing tag in `- !!seq []`

src/c4/yml/parse_engine.def.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5801,6 +5801,7 @@ void ParseEngine<EventHandler>::_handle_seq_block()
58015801
{
58025802
_c4dbgp("seqblck[RVAL]: start child seqflow");
58035803
addrem_flags(RNXT, RVAL);
5804+
_handle_annotations_before_blck_val_scalar();
58045805
m_evt_handler->begin_seq_val_flow();
58055806
addrem_flags(FLOW|RVAL, BLCK|RNXT);
58065807
_line_progressed(1);

test/test_parse_engine_5_tag.cpp

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -517,6 +517,110 @@ ENGINE_TEST_ERR(DirectiveMultipleYAML_3,
517517
"---\n"
518518
"bar")
519519

520+
521+
//-----------------------------------------------------------------------------
522+
523+
ENGINE_TEST(TagEmptySeq0,
524+
("!!seq []\n", "!!seq []"),
525+
"+STR\n+DOC\n+SEQ [] <tag:yaml.org,2002:seq>\n-SEQ\n-DOC\n-STR\n")
526+
{
527+
___(ps.begin_stream());
528+
___(ps.begin_doc());
529+
___(ps.set_val_tag("!!seq"));
530+
___(ps.begin_seq_val_flow());
531+
___(ps.end_seq());
532+
___(ps.end_doc());
533+
___(ps.end_stream());
534+
}
535+
536+
ENGINE_TEST(TagEmptySeq1,
537+
(""
538+
"- !!seq []\n"
539+
""),
540+
"+STR\n+DOC\n+SEQ\n+SEQ [] <tag:yaml.org,2002:seq>\n-SEQ\n-SEQ\n-DOC\n-STR\n")
541+
{
542+
___(ps.begin_stream());
543+
___(ps.begin_doc());
544+
___(ps.begin_seq_val_block());
545+
___(ps.set_val_tag("!!seq"));
546+
___(ps.begin_seq_val_flow());
547+
___(ps.end_seq());
548+
___(ps.end_seq());
549+
___(ps.end_doc());
550+
___(ps.end_stream());
551+
}
552+
553+
ENGINE_TEST(TagEmptySeq2,
554+
(""
555+
"!!seq\n"
556+
"- !!seq []\n"
557+
""),
558+
"+STR\n+DOC\n+SEQ <tag:yaml.org,2002:seq>\n+SEQ [] <tag:yaml.org,2002:seq>\n-SEQ\n-SEQ\n-DOC\n-STR\n")
559+
{
560+
___(ps.begin_stream());
561+
___(ps.begin_doc());
562+
___(ps.set_val_tag("!!seq"));
563+
___(ps.begin_seq_val_block());
564+
___(ps.set_val_tag("!!seq"));
565+
___(ps.begin_seq_val_flow());
566+
___(ps.end_seq());
567+
___(ps.end_seq());
568+
___(ps.end_doc());
569+
___(ps.end_stream());
570+
}
571+
572+
573+
//-----------------------------------------------------------------------------
574+
575+
ENGINE_TEST(TagEmptyMap0,
576+
("!!map {}\n", "!!map {}"),
577+
"+STR\n+DOC\n+MAP {} <tag:yaml.org,2002:map>\n-MAP\n-DOC\n-STR\n")
578+
{
579+
___(ps.begin_stream());
580+
___(ps.begin_doc());
581+
___(ps.set_val_tag("!!map"));
582+
___(ps.begin_map_val_flow());
583+
___(ps.end_map());
584+
___(ps.end_doc());
585+
___(ps.end_stream());
586+
}
587+
588+
ENGINE_TEST(TagEmptyMap1,
589+
(""
590+
"- !!map {}\n"
591+
""),
592+
"+STR\n+DOC\n+SEQ\n+MAP {} <tag:yaml.org,2002:map>\n-MAP\n-SEQ\n-DOC\n-STR\n")
593+
{
594+
___(ps.begin_stream());
595+
___(ps.begin_doc());
596+
___(ps.begin_seq_val_block());
597+
___(ps.set_val_tag("!!map"));
598+
___(ps.begin_map_val_flow());
599+
___(ps.end_map());
600+
___(ps.end_seq());
601+
___(ps.end_doc());
602+
___(ps.end_stream());
603+
}
604+
605+
ENGINE_TEST(TagEmptyMap2,
606+
(""
607+
"!!seq\n"
608+
"- !!map {}\n"
609+
""),
610+
"+STR\n+DOC\n+SEQ <tag:yaml.org,2002:seq>\n+MAP {} <tag:yaml.org,2002:map>\n-MAP\n-SEQ\n-DOC\n-STR\n")
611+
{
612+
___(ps.begin_stream());
613+
___(ps.begin_doc());
614+
___(ps.set_val_tag("!!seq"));
615+
___(ps.begin_seq_val_block());
616+
___(ps.set_val_tag("!!map"));
617+
___(ps.begin_map_val_flow());
618+
___(ps.end_map());
619+
___(ps.end_seq());
620+
___(ps.end_doc());
621+
___(ps.end_stream());
622+
}
623+
520624
} // namespace yml
521625
} // namespace c4
522626

0 commit comments

Comments
 (0)