comments comments wip [ci skip]: block seqs wip

This commit is contained in:
Joao Paulo Magalhaes
2025-12-11 18:19:32 +00:00
parent db7a74ede1
commit 73a2653b9f
5 changed files with 525 additions and 38 deletions

View File

@@ -38,6 +38,7 @@ Checks:
- -google-build-namespaces # do not use unnamed namespaces in header files
- -google-build-using-namespace # do not use namespace using-directives; use using-declarations instead
- -google-explicit-constructor # single-argument constructors must be marked explicit to avoid unintentional implicit conversions
- -google-readability-avoid-underscore-in-googletest-name
- -google-readability-braces-around-statements # statement should be inside braces
- -google-readability-casting # C-style casts are discouraged; use static_cast
- -google-readability-function-size # function '_handle_map_block' exceeds recommended size/complexity thresholds

View File

@@ -1796,7 +1796,10 @@ CommentData const* Emitter<Writer>::_write_comm_trailing(id_type node, CommentTy
{
CommentData const* comm = _comm_get(node, type, indent_extra);
if(comm)
_write_comm_trailing(comm, (m_opts.comments_sep() && _comm_needs_sep(node, type)));
{
bool with_sep = (m_opts.comments_sep() && _comm_needs_sep(node, type));
_write_comm_trailing(comm, with_sep);
}
return comm;
}
@@ -1805,7 +1808,10 @@ CommentData const* Emitter<Writer>::_write_comm_leading(id_type node, CommentTyp
{
CommentData const* comm = _comm_get(node, type, indent_extra);
if(comm)
_write_comm_leading(comm, (m_opts.comments_sep() && _comm_needs_sep(node, type)));
{
bool with_sep = (m_opts.comments_sep() && _comm_needs_sep(node, type));
_write_comm_leading(comm, with_sep);
}
return comm;
}
#endif // RYML_WITH_COMMENTS

View File

@@ -10,38 +10,6 @@
#include "c4/yml/filter_processor.hpp"
#ifdef RYML_DBG
#include <c4/dump.hpp>
#include "c4/yml/detail/print.hpp"
#define _c4err(...) \
do { RYML_DEBUG_BREAK(); this->_err(RYML_LOC_HERE(), __VA_ARGS__); } while(0)
#else
#define _c4err(...) \
this->_err(RYML_LOC_HERE(), __VA_ARGS__)
#endif
#if defined(RYML_WITH_TAB_TOKENS)
#define _RYML_WITH_TAB_TOKENS(...) __VA_ARGS__
#define _RYML_WITHOUT_TAB_TOKENS(...)
#define _RYML_WITH_OR_WITHOUT_TAB_TOKENS(with, without) with
#else
#define _RYML_WITH_TAB_TOKENS(...)
#define _RYML_WITHOUT_TAB_TOKENS(...) __VA_ARGS__
#define _RYML_WITH_OR_WITHOUT_TAB_TOKENS(with, without) without
#endif
// scaffold:
#define _c4dbgnextline() \
do { \
_c4dbgq("\n-----------"); \
_c4dbgt("handling line={}, offset={}B", \
m_evt_handler->m_curr->pos.line, \
m_evt_handler->m_curr->pos.offset); \
} while(0)
#if defined(_MSC_VER)
# pragma warning(push)
# pragma warning(disable: 4296/*expression is always 'boolean_value'*/)
@@ -63,6 +31,37 @@
// NOLINTBEGIN(hicpp-signed-bitwise,cppcoreguidelines-avoid-goto,hicpp-avoid-goto,hicpp-multiway-paths-covered)
#if defined(RYML_WITH_TAB_TOKENS)
#define _RYML_WITH_TAB_TOKENS(...) __VA_ARGS__
#define _RYML_WITHOUT_TAB_TOKENS(...)
#define _RYML_WITH_OR_WITHOUT_TAB_TOKENS(with, without) with
#else
#define _RYML_WITH_TAB_TOKENS(...)
#define _RYML_WITHOUT_TAB_TOKENS(...) __VA_ARGS__
#define _RYML_WITH_OR_WITHOUT_TAB_TOKENS(with, without) without
#endif
#ifndef RYML_DBG
#define _c4err(...) \
this->_err(RYML_LOC_HERE(), __VA_ARGS__)
#define _c4dbgnextline()
#else
#include <c4/dump.hpp>
#include "c4/yml/detail/print.hpp"
#define _c4err(...) \
do { RYML_DEBUG_BREAK(); this->_err(RYML_LOC_HERE(), __VA_ARGS__); } while(0)
#define _c4dbgnextline() \
do { \
_c4dbgq("\n-----------"); \
_c4dbgt("handling line={}, offset={}B", \
m_evt_handler->m_curr->pos.line, \
m_evt_handler->m_curr->pos.offset); \
} while(0)
#endif
namespace c4 {
namespace yml {
@@ -1701,6 +1700,18 @@ void ParseEngine<EventHandler>::_end_map_blck()
template<class EventHandler>
void ParseEngine<EventHandler>::_end_seq_blck()
{
#ifdef RYML_WITH_COMMENTS
if(m_pending_comments.num_entries == 3)
{
_c4err("not implemented");
}
else if(m_pending_comments.num_entries == 2)
{
m_evt_handler->add_comment(m_pending_comments.entries[0].txt, COMM_FOOTER);
m_pending_comments.entries[0] = m_pending_comments.entries[1];
--m_pending_comments.num_entries;
}
#endif
if(has_any(RVAL))
{
_c4dbgp("seqblck: set missing val");
@@ -1708,6 +1719,7 @@ void ParseEngine<EventHandler>::_end_seq_blck()
m_evt_handler->set_val_scalar_plain_empty();
}
m_evt_handler->end_seq_block();
_RYML_WITH_COMMENTS(_maybe_apply_pending_comment(COMM_LEADING, COMM_FOOTER);)
}
template<class EventHandler>
@@ -4096,7 +4108,7 @@ inline C4_NO_INLINE csubstr detail::_parser_flags_to_str(substr buf, ParserFlag_
bool gotone = false;
#define _prflag(fl) \
if((flags & fl) == (fl)) \
if((flags & (fl)) == (fl)) \
{ \
if(gotone) \
{ \
@@ -4996,6 +5008,50 @@ void ParseEngine<EventHandler>::_maybe_handle_leading_comment_flow_val_map(Comme
}
}
template<class EventHandler>
void ParseEngine<EventHandler>::_maybe_handle_leading_comment_blck_seq_dash(CommentType_e current)
{
if(m_pending_comments.num_entries == 1)
{
auto const& entry = m_pending_comments.entries[0];
bool leading_exists = (m_evt_handler->m_curr->leading_comments & COMM_LEADING);
_RYML_ASSERT_PARSE_(m_evt_handler->m_stack.m_callbacks, entry.type != COMM_NONE, m_evt_handler->m_curr->pos);
_RYML_ASSERT_PARSE_(m_evt_handler->m_stack.m_callbacks, entry.type == COMM_LEADING || entry.type == COMM_VAL_LEADING || entry.type == COMM_FOOTER, m_evt_handler->m_curr->pos);
CommentType_e actual = leading_exists ? current : COMM_LEADING;
_c4dbgpf("pending leading comment! context={}({}) leading_exists={} actual={}({})", comment_type_str(current), current, leading_exists, comment_type_str(actual), actual);
m_evt_handler->add_comment(entry.txt, actual);
m_evt_handler->m_curr->leading_comments |= actual;
m_pending_comments.num_entries = 0;
}
else if(m_pending_comments.num_entries == 2)
{
_RYML_ASSERT_PARSE_(m_evt_handler->m_stack.m_callbacks, current != COMM_VAL_LEADING, m_evt_handler->m_curr->pos);
_c4dbgpf("pending leading comment [0]! type={}({})", comment_type_str(m_pending_comments.entries[0].type), m_pending_comments.entries[0].type);
m_evt_handler->add_comment(m_pending_comments.entries[0].txt, COMM_FOOTER);
_c4dbgpf("pending leading comment [1]! type={}({})", comment_type_str(current), current);
m_evt_handler->add_comment(m_pending_comments.entries[1].txt, current);
m_evt_handler->m_curr->leading_comments |= COMM_VAL_LEADING|current;
m_pending_comments.num_entries = 0;
}
else if(m_pending_comments.num_entries == 3)
{
_RYML_ASSERT_PARSE_(m_evt_handler->m_stack.m_callbacks, current != COMM_VAL_LEADING, m_evt_handler->m_curr->pos);
_c4dbgpf("pending leading comment [0]! type={}({}) -> {}({})", comment_type_str(m_pending_comments.entries[0].type), m_pending_comments.entries[0].type, comment_type_str(COMM_LEADING), COMM_LEADING);
m_evt_handler->add_comment(m_pending_comments.entries[0].txt, COMM_LEADING);
_c4dbgpf("pending leading comment [1]! type={}({}) -> {}({})", comment_type_str(m_pending_comments.entries[1].type), m_pending_comments.entries[1].type, comment_type_str(COMM_VAL_LEADING), COMM_VAL_LEADING);
m_evt_handler->add_comment(m_pending_comments.entries[1].txt, COMM_VAL_LEADING);
_c4dbgpf("pending leading comment [2]! type={}({})", comment_type_str(current), current);
m_evt_handler->add_comment(m_pending_comments.entries[2].txt, current);
m_evt_handler->m_curr->leading_comments |= COMM_LEADING|COMM_VAL_LEADING|current;
m_pending_comments.num_entries = 0;
}
else if(current & (COMM_VAL_LEADING2|COMM_VAL_ANCHOR_LEADING))
{
_RYML_ASSERT_PARSE_(m_evt_handler->m_stack.m_callbacks, m_pending_comments.num_entries == 0, m_evt_handler->m_curr->pos);
m_evt_handler->m_curr->leading_comments |= COMM_VAL_LEADING;
}
}
template<class EventHandler>
void ParseEngine<EventHandler>::_maybe_handle_leading_comment_flow_comma_map()
{
@@ -6901,8 +6957,22 @@ seqblck_start:
{
_c4dbgp("seqblck[RNXT]: expect next val");
addrem_flags(RVAL, RNXT);
#ifdef RYML_WITH_COMMENTS
if(m_pending_comments.num_entries == 2)
{
auto const& entry0 = m_pending_comments.entries[0];
_RYML_ASSERT_PARSE_(m_evt_handler->m_stack.m_callbacks, entry0.type == COMM_LEADING, m_evt_handler->m_curr->pos);
m_evt_handler->add_comment(entry0.txt, COMM_FOOTER);
m_pending_comments.entries[0] = m_pending_comments.entries[1];
--m_pending_comments.num_entries;
}
else if(m_pending_comments.num_entries == 3)
{
_c4err("not implemented");
}
#endif
m_evt_handler->add_sibling();
_RYML_WITH_COMMENTS(_maybe_handle_leading_comment_flow_val_map(COMM_LEADING);)
_RYML_WITH_COMMENTS(_maybe_apply_pending_comment();)
_line_progressed(1);
_maybe_skip_whitespace_tokens();
#ifdef RYML_WITH_COMMENTS
@@ -7012,8 +7082,7 @@ seqblck_start:
_scan_line();
if(_finished_file())
{
_c4dbgp("seqblck: finish!");
_RYML_WITH_COMMENTS(_maybe_handle_leading_comment_flow_val(COMM_FOOTER);)
_c4dbgp("seqblck: finish file!");
_end_seq_blck();
goto seqblck_finish;
}

View File

@@ -753,6 +753,7 @@ private:
void _maybe_handle_leading_comment_flow_key(CommentType_e current);
void _maybe_handle_leading_comment_flow_val(CommentType_e current);
void _maybe_handle_leading_comment_flow_val_map(CommentType_e current);
void _maybe_handle_leading_comment_blck_seq_dash(CommentType_e current);
void _maybe_handle_leading_comment_flow_comma_map();
#endif

View File

@@ -7,6 +7,8 @@
#error this test requires RYML_WITH_COMMENTS to be defined
#endif
// NOLINTBEGIN(google-readability-avoid-underscore-in-googletest-name)
namespace c4 {
namespace yml {
@@ -490,6 +492,412 @@ COMMENT_TEST(BlockSeqNested1WithSep,
___(ps.end_stream());
}
COMMENT_TEST(BlockSeqNested2WithSep,
"- - - - a # 1 ~" "\n"
" # 2 ~" "\n"
" # 3" "\n"
" - b # 4 ~" "\n"
" # 5 ~" "\n"
" # 6" "\n"
" - c # 7 ~" "\n"
" # 8 ~" "\n"
"# 9" "\n"
,
"+STR" "\n"
"+DOC" "\n"
"+SEQ" "\n"
"+SEQ" "\n"
"+SEQ" "\n"
"+SEQ" "\n"
"=VAL :a" "\n"
"=COMM #[TRAILING] 1" "\n"
"-SEQ" "\n"
"=COMM #[FOOTER] 2" "\n"
"=COMM #[LEADING] 3" "\n"
"=VAL :b" "\n"
"=COMM #[TRAILING] 4" "\n"
"-SEQ" "\n"
"=COMM #[FOOTER] 5" "\n"
"=COMM #[LEADING] 6" "\n"
"=VAL :c" "\n"
"=COMM #[TRAILING] 7" "\n"
"-SEQ" "\n"
"=COMM #[FOOTER] 8" "\n"
"-SEQ" "\n"
"=COMM #[FOOTER] 9" "\n"
"-DOC" "\n"
"-STR" "\n"
)
{
___(ps.begin_stream());
___(ps.begin_doc());
___(ps.begin_seq_val_block());
___(ps.begin_seq_val_block());
___(ps.begin_seq_val_block());
___(ps.begin_seq_val_block());
___(ps.set_val_scalar_plain("a"));
___(ps.add_comment(" 1", COMM_TRAILING));
___(ps.end_seq_block());
___(ps.add_comment(" 2", COMM_FOOTER));
___(ps.add_sibling());
___(ps.add_comment(" 3", COMM_LEADING));
___(ps.set_val_scalar_plain("b"));
___(ps.add_comment(" 4", COMM_TRAILING));
___(ps.end_seq_block());
___(ps.add_comment(" 5", COMM_FOOTER));
___(ps.add_sibling());
___(ps.add_comment(" 6", COMM_LEADING));
___(ps.set_val_scalar_plain("c"));
___(ps.add_comment(" 7", COMM_TRAILING));
___(ps.end_seq_block());
___(ps.add_comment(" 8", COMM_FOOTER));
___(ps.end_seq_block());
___(ps.add_comment(" 9", COMM_FOOTER));
___(ps.end_doc());
___(ps.end_stream());
}
COMMENT_TEST(BlockSeqNested3WithSep,
"- - - - a # 1 ~" "\n"
" # 1.1 ~" "\n"
" # 3" "\n"
" - b # 4 ~" "\n"
" # 4.1 ~" "\n"
" # 6" "\n"
" - c # 7 ~" "\n"
" # 7.1 ~" "\n"
"# 9" "\n"
,
"+STR" "\n"
"+DOC" "\n"
"+SEQ" "\n"
"+SEQ" "\n"
"+SEQ" "\n"
"+SEQ" "\n"
"=VAL :a" "\n"
"=COMM #[TRAILING] 1" "\n"
"=COMM #[FOOTER] 1.1" "\n"
"-SEQ" "\n"
"=COMM #[LEADING] 3" "\n"
"=VAL :b" "\n"
"=COMM #[TRAILING] 4" "\n"
"=COMM #[FOOTER] 4.1" "\n"
"-SEQ" "\n"
"=COMM #[LEADING] 6" "\n"
"=VAL :c" "\n"
"=COMM #[TRAILING] 7" "\n"
"=COMM #[FOOTER] 7.1" "\n"
"-SEQ" "\n"
"-SEQ" "\n"
"=COMM #[FOOTER] 9" "\n"
"-DOC" "\n"
"-STR" "\n"
)
{
___(ps.begin_stream());
___(ps.begin_doc());
___(ps.begin_seq_val_block());
___(ps.begin_seq_val_block());
___(ps.begin_seq_val_block());
___(ps.begin_seq_val_block());
___(ps.set_val_scalar_plain("a"));
___(ps.add_comment(" 1", COMM_TRAILING));
___(ps.add_comment(" 1.1", COMM_FOOTER));
___(ps.end_seq_block());
___(ps.add_sibling());
___(ps.add_comment(" 3", COMM_LEADING));
___(ps.set_val_scalar_plain("b"));
___(ps.add_comment(" 4", COMM_TRAILING));
___(ps.add_comment(" 4.1", COMM_FOOTER));
___(ps.end_seq_block());
___(ps.add_sibling());
___(ps.add_comment(" 6", COMM_LEADING));
___(ps.set_val_scalar_plain("c"));
___(ps.add_comment(" 7", COMM_TRAILING));
___(ps.add_comment(" 7.1", COMM_FOOTER));
___(ps.end_seq_block());
___(ps.end_seq_block());
___(ps.add_comment(" 9", COMM_FOOTER));
___(ps.end_doc());
___(ps.end_stream());
}
COMMENT_TEST(BlockSeqNested4WithSep,
"- - - - a # 1 ~" "\n"
" # 3" "\n"
" - b # 4 ~" "\n"
" # 6" "\n"
" - c # 7 ~" "\n"
"# 9" "\n"
,
"+STR" "\n"
"+DOC" "\n"
"+SEQ" "\n"
"+SEQ" "\n"
"+SEQ" "\n"
"+SEQ" "\n"
"=VAL :a" "\n"
"=COMM #[TRAILING] 1" "\n"
"-SEQ" "\n"
"=COMM #[LEADING] 3" "\n"
"=VAL :b" "\n"
"=COMM #[TRAILING] 4" "\n"
"-SEQ" "\n"
"=COMM #[LEADING] 6" "\n"
"=VAL :c" "\n"
"=COMM #[TRAILING] 7" "\n"
"-SEQ" "\n"
"-SEQ" "\n"
"=COMM #[FOOTER] 9" "\n"
"-DOC" "\n"
"-STR" "\n"
)
{
___(ps.begin_stream());
___(ps.begin_doc());
___(ps.begin_seq_val_block());
___(ps.begin_seq_val_block());
___(ps.begin_seq_val_block());
___(ps.begin_seq_val_block());
___(ps.set_val_scalar_plain("a"));
___(ps.add_comment(" 1", COMM_TRAILING));
___(ps.end_seq_block());
___(ps.add_sibling());
___(ps.add_comment(" 3", COMM_LEADING));
___(ps.set_val_scalar_plain("b"));
___(ps.add_comment(" 4", COMM_TRAILING));
___(ps.end_seq_block());
___(ps.add_sibling());
___(ps.add_comment(" 6", COMM_LEADING));
___(ps.set_val_scalar_plain("c"));
___(ps.add_comment(" 7", COMM_TRAILING));
___(ps.end_seq_block());
___(ps.end_seq_block());
___(ps.add_comment(" 9", COMM_FOOTER));
___(ps.end_doc());
___(ps.end_stream());
}
COMMENT_TEST(BlockSeqNested5WithSep,
"- - - - a # 1 ~" "\n"
" # 2 ~" "\n"
" # 3 ~" "\n"
" # 4 ~" "\n"
" # 6 ~" "\n"
"# 9" "\n"
,
"+STR" "\n"
"+DOC" "\n"
"+SEQ" "\n"
"+SEQ" "\n"
"+SEQ" "\n"
"+SEQ" "\n"
"=VAL :a" "\n"
"=COMM #[TRAILING] 1" "\n"
"=COMM #[FOOTER] 2" "\n"
"-SEQ" "\n"
"=COMM #[FOOTER] 3" "\n"
"-SEQ" "\n"
"=COMM #[FOOTER] 4" "\n"
"-SEQ" "\n"
"=COMM #[FOOTER] 6" "\n"
"-SEQ" "\n"
"=COMM #[FOOTER] 9" "\n"
"-DOC" "\n"
"-STR" "\n"
)
{
___(ps.begin_stream());
___(ps.begin_doc());
___(ps.begin_seq_val_block());
___(ps.begin_seq_val_block());
___(ps.begin_seq_val_block());
___(ps.begin_seq_val_block());
___(ps.set_val_scalar_plain("a"));
___(ps.add_comment(" 1", COMM_TRAILING));
___(ps.add_comment(" 2", COMM_FOOTER));
___(ps.end_seq_block());
___(ps.add_comment(" 3", COMM_FOOTER));
___(ps.end_seq_block());
___(ps.add_comment(" 4", COMM_FOOTER));
___(ps.end_seq_block());
___(ps.add_comment(" 6", COMM_FOOTER));
___(ps.end_seq_block());
___(ps.add_comment(" 9", COMM_FOOTER));
___(ps.end_doc());
___(ps.end_stream());
}
COMMENT_TEST(BlockSeqNested6WithSep,
"- - - - a # 1 ~" "\n"
" # 3 ~" "\n"
" # 4 ~" "\n"
" # 6 ~" "\n"
"# 9" "\n"
,
"+STR" "\n"
"+DOC" "\n"
"+SEQ" "\n"
"+SEQ" "\n"
"+SEQ" "\n"
"+SEQ" "\n"
"=VAL :a" "\n"
"=COMM #[TRAILING] 1" "\n"
"-SEQ" "\n"
"=COMM #[FOOTER] 3" "\n"
"-SEQ" "\n"
"=COMM #[FOOTER] 4" "\n"
"-SEQ" "\n"
"=COMM #[FOOTER] 6" "\n"
"-SEQ" "\n"
"=COMM #[FOOTER] 9" "\n"
"-DOC" "\n"
"-STR" "\n"
)
{
___(ps.begin_stream());
___(ps.begin_doc());
___(ps.begin_seq_val_block());
___(ps.begin_seq_val_block());
___(ps.begin_seq_val_block());
___(ps.begin_seq_val_block());
___(ps.set_val_scalar_plain("a"));
___(ps.add_comment(" 1", COMM_TRAILING));
___(ps.end_seq_block());
___(ps.add_comment(" 3", COMM_FOOTER));
___(ps.end_seq_block());
___(ps.add_comment(" 4", COMM_FOOTER));
___(ps.end_seq_block());
___(ps.add_comment(" 6", COMM_FOOTER));
___(ps.end_seq_block());
___(ps.add_comment(" 9", COMM_FOOTER));
___(ps.end_doc());
___(ps.end_stream());
}
COMMENT_TEST(BlockSeqNested7WithSep,
"- - - - a # 1 ~" "\n"
" # 4 ~" "\n"
" # 6 ~" "\n"
"# 9" "\n"
,
"+STR" "\n"
"+DOC" "\n"
"+SEQ" "\n"
"+SEQ" "\n"
"+SEQ" "\n"
"+SEQ" "\n"
"=VAL :a" "\n"
"=COMM #[TRAILING] 1" "\n"
"-SEQ" "\n"
"-SEQ" "\n"
"=COMM #[FOOTER] 4" "\n"
"-SEQ" "\n"
"=COMM #[FOOTER] 6" "\n"
"-SEQ" "\n"
"=COMM #[FOOTER] 9" "\n"
"-DOC" "\n"
"-STR" "\n"
)
{
___(ps.begin_stream());
___(ps.begin_doc());
___(ps.begin_seq_val_block());
___(ps.begin_seq_val_block());
___(ps.begin_seq_val_block());
___(ps.begin_seq_val_block());
___(ps.set_val_scalar_plain("a"));
___(ps.add_comment(" 1", COMM_TRAILING));
___(ps.end_seq_block());
___(ps.end_seq_block());
___(ps.add_comment(" 4", COMM_FOOTER));
___(ps.end_seq_block());
___(ps.add_comment(" 6", COMM_FOOTER));
___(ps.end_seq_block());
___(ps.add_comment(" 9", COMM_FOOTER));
___(ps.end_doc());
___(ps.end_stream());
}
COMMENT_TEST(BlockSeqNested8WithSep,
"- - - - a # 1 ~" "\n"
" # 6 ~" "\n"
"# 9" "\n"
,
"+STR" "\n"
"+DOC" "\n"
"+SEQ" "\n"
"+SEQ" "\n"
"+SEQ" "\n"
"+SEQ" "\n"
"=VAL :a" "\n"
"=COMM #[TRAILING] 1" "\n"
"-SEQ" "\n"
"-SEQ" "\n"
"-SEQ" "\n"
"=COMM #[FOOTER] 6" "\n"
"-SEQ" "\n"
"=COMM #[FOOTER] 9" "\n"
"-DOC" "\n"
"-STR" "\n"
)
{
___(ps.begin_stream());
___(ps.begin_doc());
___(ps.begin_seq_val_block());
___(ps.begin_seq_val_block());
___(ps.begin_seq_val_block());
___(ps.begin_seq_val_block());
___(ps.set_val_scalar_plain("a"));
___(ps.add_comment(" 1", COMM_TRAILING));
___(ps.end_seq_block());
___(ps.end_seq_block());
___(ps.end_seq_block());
___(ps.add_comment(" 6", COMM_FOOTER));
___(ps.end_seq_block());
___(ps.add_comment(" 9", COMM_FOOTER));
___(ps.end_doc());
___(ps.end_stream());
}
COMMENT_TEST(BlockSeqNested9WithSep,
"- - - - a # 1 ~" "\n"
"# 9" "\n"
,
"+STR" "\n"
"+DOC" "\n"
"+SEQ" "\n"
"+SEQ" "\n"
"+SEQ" "\n"
"+SEQ" "\n"
"=VAL :a" "\n"
"=COMM #[TRAILING] 1" "\n"
"-SEQ" "\n"
"-SEQ" "\n"
"-SEQ" "\n"
"-SEQ" "\n"
"=COMM #[FOOTER] 9" "\n"
"-DOC" "\n"
"-STR" "\n"
)
{
___(ps.begin_stream());
___(ps.begin_doc());
___(ps.begin_seq_val_block());
___(ps.begin_seq_val_block());
___(ps.begin_seq_val_block());
___(ps.begin_seq_val_block());
___(ps.set_val_scalar_plain("a"));
___(ps.add_comment(" 1", COMM_TRAILING));
___(ps.end_seq_block());
___(ps.end_seq_block());
___(ps.end_seq_block());
___(ps.end_seq_block());
___(ps.add_comment(" 9", COMM_FOOTER));
___(ps.end_doc());
___(ps.end_stream());
}
COMMENT_TEST(BlockSeqBasicWithTagAndAnchor1,
"# 1" "\n"
"- # 2" "\n"
@@ -764,5 +1172,7 @@ Case const* get_case(csubstr)
return nullptr;
}
// NOLINTEND(google-readability-avoid-underscore-in-googletest-name)
} // namespace yml
} // namespace c4