@@ -5388,7 +5388,7 @@ void ParseEngine<EventHandler>::_handle_seq_flow()
53885388 {
53895389 csubstr ref = _scan_ref_seq ();
53905390 _c4dbgpf (" seqflow[RVAL]: ref! {}" , _prs (ref));
5391- m_evt_handler-> set_val_ref (ref);
5391+ _handle_valref (ref);
53925392 addrem_flags (RNXT, RVAL);
53935393 }
53945394 else if (first == ' &' )
@@ -5712,6 +5712,7 @@ void ParseEngine<EventHandler>::_handle_map_flow()
57125712 _c4dbgp (" mapflow[RVAL]: scanning single-quoted scalar" );
57135713 sc = _scan_scalar_squot ();
57145714 csubstr maybe_filtered = _maybe_filter_val_scalar_squot (sc);
5715+ _handle_annotations_before_blck_val_scalar ();
57155716 m_evt_handler->set_val_scalar_squoted (maybe_filtered);
57165717 addrem_flags (RNXT, RVAL);
57175718 }
@@ -5720,6 +5721,7 @@ void ParseEngine<EventHandler>::_handle_map_flow()
57205721 _c4dbgp (" mapflow[RVAL]: scanning double-quoted scalar" );
57215722 sc = _scan_scalar_dquot ();
57225723 csubstr maybe_filtered = _maybe_filter_val_scalar_dquot (sc);
5724+ _handle_annotations_before_blck_val_scalar ();
57235725 m_evt_handler->set_val_scalar_dquoted (maybe_filtered);
57245726 addrem_flags (RNXT, RVAL);
57255727 }
@@ -5728,13 +5730,15 @@ void ParseEngine<EventHandler>::_handle_map_flow()
57285730 {
57295731 _c4dbgp (" mapflow[RVAL]: plain scalar." );
57305732 csubstr maybe_filtered = _maybe_filter_val_scalar_plain (sc, m_evt_handler->m_curr ->indref );
5733+ _handle_annotations_before_blck_val_scalar ();
57315734 m_evt_handler->set_val_scalar_plain (maybe_filtered);
57325735 addrem_flags (RNXT, RVAL);
57335736 }
57345737 else if (first == ' [' )
57355738 {
57365739 _c4dbgp (" mapflow[RVAL]: start val seqflow" );
57375740 addrem_flags (RNXT, RVAL);
5741+ _handle_annotations_before_blck_val_scalar ();
57385742 m_evt_handler->begin_seq_val_flow ();
57395743 _set_indentation (m_evt_handler->m_parent ->indref );
57405744 addrem_flags (RSEQ|RVAL, RMAP|RNXT);
@@ -5745,6 +5749,7 @@ void ParseEngine<EventHandler>::_handle_map_flow()
57455749 {
57465750 _c4dbgp (" mapflow[RVAL]: start val mapflow" );
57475751 addrem_flags (RNXT, RVAL);
5752+ _handle_annotations_before_blck_val_scalar ();
57485753 m_evt_handler->begin_map_val_flow ();
57495754 _set_indentation (m_evt_handler->m_parent ->indref );
57505755 addrem_flags (RKEY, RNXT);
@@ -5754,6 +5759,7 @@ void ParseEngine<EventHandler>::_handle_map_flow()
57545759 else if (first == ' }' )
57555760 {
57565761 _c4dbgp (" mapflow[RVAL]: end!" );
5762+ _handle_annotations_before_blck_val_scalar ();
57575763 m_evt_handler->set_val_scalar_plain_empty ();
57585764 _line_progressed (1 );
57595765 _end_map_flow ();
@@ -5762,6 +5768,7 @@ void ParseEngine<EventHandler>::_handle_map_flow()
57625768 else if (first == ' ,' )
57635769 {
57645770 _c4dbgp (" mapflow[RVAL]: empty val!" );
5771+ _handle_annotations_before_blck_val_scalar ();
57655772 m_evt_handler->set_val_scalar_plain_empty ();
57665773 addrem_flags (RNXT, RVAL);
57675774 // keep going in this function
@@ -5777,13 +5784,13 @@ void ParseEngine<EventHandler>::_handle_map_flow()
57775784 {
57785785 csubstr anchor = _scan_anchor ();
57795786 _c4dbgpf (" mapflow[RVAL]: key anchor! {}" , _prs (anchor));
5780- m_evt_handler-> set_val_anchor ( anchor);
5787+ _add_annotation (&m_pending_anchors, anchor);
57815788 }
57825789 else if (first == ' !' )
57835790 {
57845791 csubstr tag = _scan_tag ();
57855792 _c4dbgpf (" mapflow[RVAL]: tag! {}" , _prs (tag));
5786- m_evt_handler-> set_val_tag ( tag);
5793+ _add_annotation (&m_pending_tags, tag);
57875794 }
57885795 else
57895796 {
@@ -5834,6 +5841,7 @@ void ParseEngine<EventHandler>::_handle_map_flow()
58345841 _c4dbgp (" mapflow[QMRK]: scanning single-quoted scalar" );
58355842 sc = _scan_scalar_squot ();
58365843 csubstr maybe_filtered = _maybe_filter_key_scalar_squot (sc);
5844+ _handle_annotations_before_blck_key_scalar ();
58375845 m_evt_handler->set_key_scalar_squoted (maybe_filtered);
58385846 addrem_flags (RKCL, QMRK);
58395847 }
@@ -5842,6 +5850,7 @@ void ParseEngine<EventHandler>::_handle_map_flow()
58425850 _c4dbgp (" mapflow[QMRK]: scanning double-quoted scalar" );
58435851 sc = _scan_scalar_dquot ();
58445852 csubstr maybe_filtered = _maybe_filter_key_scalar_dquot (sc);
5853+ _handle_annotations_before_blck_key_scalar ();
58455854 m_evt_handler->set_key_scalar_dquoted (maybe_filtered);
58465855 addrem_flags (RKCL, QMRK);
58475856 }
@@ -5850,12 +5859,14 @@ void ParseEngine<EventHandler>::_handle_map_flow()
58505859 {
58515860 _c4dbgp (" mapflow[QMRK]: plain scalar" );
58525861 csubstr maybe_filtered = _maybe_filter_key_scalar_plain (sc, m_evt_handler->m_curr ->indref );
5862+ _handle_annotations_before_blck_key_scalar ();
58535863 m_evt_handler->set_key_scalar_plain (maybe_filtered);
58545864 addrem_flags (RKCL, QMRK);
58555865 }
58565866 else if (first == ' :' )
58575867 {
58585868 _c4dbgp (" mapflow[QMRK]: setting empty key" );
5869+ _handle_annotations_before_blck_key_scalar ();
58595870 m_evt_handler->set_key_scalar_plain_empty ();
58605871 addrem_flags (RVAL, QMRK);
58615872 _line_progressed (1 );
@@ -5864,6 +5875,7 @@ void ParseEngine<EventHandler>::_handle_map_flow()
58645875 else if (first == ' }' ) // this happens on a trailing comma like ", }"
58655876 {
58665877 _c4dbgp (" mapflow[QMRK]: end!" );
5878+ _handle_annotations_before_blck_key_scalar ();
58675879 m_evt_handler->set_key_scalar_plain_empty ();
58685880 m_evt_handler->set_val_scalar_plain_empty ();
58695881 _end_map_flow ();
@@ -5873,6 +5885,7 @@ void ParseEngine<EventHandler>::_handle_map_flow()
58735885 else if (first == ' ,' )
58745886 {
58755887 _c4dbgp (" mapflow[QMRK]: empty key+val!" );
5888+ _handle_annotations_before_blck_key_scalar ();
58765889 m_evt_handler->set_key_scalar_plain_empty ();
58775890 m_evt_handler->set_val_scalar_plain_empty ();
58785891 addrem_flags (RNXT, QMRK);
@@ -5881,7 +5894,7 @@ void ParseEngine<EventHandler>::_handle_map_flow()
58815894 {
58825895 csubstr anchor = _scan_anchor ();
58835896 _c4dbgpf (" mapflow[QMRK]: key anchor! {}" , _prs (anchor));
5884- m_evt_handler-> set_key_anchor ( anchor);
5897+ _add_annotation (&m_pending_anchors, anchor);
58855898 }
58865899 else if (first == ' *' )
58875900 {
@@ -5897,6 +5910,7 @@ void ParseEngine<EventHandler>::_handle_map_flow()
58975910 // able to handle it.
58985911 _c4dbgp (" mapflow[QMRK]: start child seqflow (!)" );
58995912 addrem_flags (RKCL, QMRK);
5913+ _handle_annotations_before_blck_key_scalar ();
59005914 m_evt_handler->begin_seq_key_flow ();
59015915 addrem_flags (RSEQ|RVAL, RMAP|RKCL);
59025916 _set_indentation (m_evt_handler->m_parent ->indref );
@@ -5910,6 +5924,7 @@ void ParseEngine<EventHandler>::_handle_map_flow()
59105924 // able to handle it.
59115925 _c4dbgp (" mapflow[QMRK]: start child mapflow (!)" );
59125926 addrem_flags (RKCL, QMRK);
5927+ _handle_annotations_before_blck_key_scalar ();
59135928 m_evt_handler->begin_map_key_flow ();
59145929 _set_indentation (m_evt_handler->m_parent ->indref );
59155930 addrem_flags (RKEY, RKCL);
@@ -5920,7 +5935,7 @@ void ParseEngine<EventHandler>::_handle_map_flow()
59205935 {
59215936 csubstr tag = _scan_tag ();
59225937 _c4dbgpf (" mapflow[QMRK]: tag! {}" , _prs (tag));
5923- m_evt_handler-> set_key_tag ( tag);
5938+ _add_annotation (&m_pending_tags, tag);
59245939 }
59255940 else
59265941 {
@@ -6988,6 +7003,7 @@ void ParseEngine<EventHandler>::_handle_map_block()
69887003 {
69897004 _c4dbgp (" mapblck[RVAL]: start child map, block" );
69907005 addrem_flags (RNXT, RVAL);
7006+ _handle_annotations_before_blck_val_scalar ();
69917007 m_evt_handler->begin_map_val_block ();
69927008 _handle_keyref (ref);
69937009 _set_indentation (startindent);
@@ -7439,7 +7455,9 @@ bool ParseEngine<EventHandler>::_handle_map_block_qmrk()
74397455 else
74407456 {
74417457 _c4dbgp (" mapblck[QMRK]: start new block map as key (!), set ref as key" );
7458+ _handle_annotations_before_start_mapblck_as_key ();
74427459 m_evt_handler->begin_map_key_block ();
7460+ _handle_annotations_and_indentation_after_start_mapblck (startindent, startline);
74437461 _handle_keyref (ref);
74447462 _set_indentation (startindent);
74457463 // keep the child state on RVAL
@@ -7486,6 +7504,7 @@ bool ParseEngine<EventHandler>::_handle_map_block_qmrk()
74867504 {
74877505 _c4dbgp (" mapblck[QMRK]: start child seqflow (!)" );
74887506 addrem_flags (RKCL, QMRK);
7507+ _handle_annotations_before_blck_key_scalar ();
74897508 m_evt_handler->begin_seq_key_flow ();
74907509 addrem_flags (RVAL|RSEQ|RFLOW, RMAP|RKCL|RBLCK);
74917510 _set_indentation (m_evt_handler->m_parent ->indref + 1 );
@@ -7496,6 +7515,7 @@ bool ParseEngine<EventHandler>::_handle_map_block_qmrk()
74967515 {
74977516 _c4dbgp (" mapblck[QMRK]: start child mapflow (!)" );
74987517 addrem_flags (RKCL, QMRK);
7518+ _handle_annotations_before_blck_key_scalar ();
74997519 m_evt_handler->begin_map_key_flow ();
75007520 addrem_flags (RKEY|RFLOW, RVAL|RKCL|RBLCK);
75017521 _set_indentation (m_evt_handler->m_parent ->indref + 1 );
@@ -7508,6 +7528,7 @@ bool ParseEngine<EventHandler>::_handle_map_block_qmrk()
75087528 if (m_evt_handler->m_curr ->indentation_eq ())
75097529 {
75107530 _c4dbgp (" mapblck[QMRK]: ? indent eq - prev ? was for an empty keyval" );
7531+ _handle_annotations_before_blck_key_scalar ();
75117532 m_evt_handler->set_key_scalar_plain_empty ();
75127533 m_evt_handler->set_val_scalar_plain_empty ();
75137534 m_evt_handler->add_sibling ();
@@ -7517,7 +7538,7 @@ bool ParseEngine<EventHandler>::_handle_map_block_qmrk()
75177538 _RYML_ASSERT_PARSE_ (callbacks (), m_evt_handler->m_curr ->indentation_gt (), m_evt_handler->m_curr ->pos );
75187539 _c4dbgp (" mapblck[QMRK]: ? indent gt - start child mapblck (!)" );
75197540 addrem_flags (RKCL, RKEY|QMRK);
7520- rem_flags (RKEY );
7541+ _handle_annotations_before_blck_key_scalar ( );
75217542 m_evt_handler->begin_map_key_block ();
75227543 addrem_flags (RBLCK|QMRK, RVAL|RKCL);
75237544 _set_indentation (startindent);
@@ -7962,7 +7983,6 @@ void ParseEngine<EventHandler>::_handle_unk()
79627983 const size_t line = m_evt_handler->m_curr ->pos .line ;
79637984 _add_annotation (&m_pending_anchors, anchor, remindent, line);
79647985 _set_indentation (0 );
7965- m_doc_empty = false ;
79667986 }
79677987 else if (first == ' *' )
79687988 {
0 commit comments