@@ -6810,14 +6810,26 @@ void ParseEngine<EventHandler>::_handle_map_block()
68106810 m_evt_handler->set_val_scalar_plain_empty ();
68116811 m_evt_handler->add_sibling ();
68126812 m_evt_handler->set_key_scalar_plain_empty ();
6813- _line_progressed (1 );
6814- _maybe_skip_whitespace_tokens ();
6815- goto mapblck_again;
6813+ }
6814+ else if (startindent > m_evt_handler->m_curr ->indref )
6815+ {
6816+ _c4dbgp (" mapblck[RVAL]: start val mapblck" );
6817+ addrem_flags (RNXT, RVAL);
6818+ _handle_annotations_before_start_mapblck (startline);
6819+ m_evt_handler->begin_map_val_block ();
6820+ _handle_annotations_and_indentation_after_start_mapblck (startindent, startline);
6821+ m_evt_handler->set_key_scalar_plain_empty ();
6822+ _set_indentation (m_evt_handler->m_curr ->line_contents .indentation );
6823+ // keep the child state on RVAL
6824+ addrem_flags (RVAL, RNXT);
68166825 }
68176826 else
68186827 {
68196828 _c4err (" parse error" );
68206829 }
6830+ _line_progressed (1 );
6831+ _maybe_skip_whitespace_tokens ();
6832+ goto mapblck_again;
68216833 }
68226834 else if (first == ' .' )
68236835 {
@@ -7170,6 +7182,7 @@ void ParseEngine<EventHandler>::_handle_map_block()
71707182 {
71717183 _c4dbgp (" mapblck[QMRK]: start child seqblck (!)" );
71727184 addrem_flags (RKCL, RKEY|QMRK);
7185+ _handle_annotations_before_blck_key_scalar ();
71737186 m_evt_handler->begin_seq_key_block ();
71747187 addrem_flags (RVAL|RSEQ, RMAP|RKCL|QMRK);
71757188 _set_indentation (startindent);
@@ -7531,13 +7544,16 @@ void ParseEngine<EventHandler>::_handle_unk()
75317544 if (m_doc_empty)
75327545 {
75337546 _c4dbgp (" it's a map with an empty key" );
7547+ const size_t startindent = m_evt_handler->m_curr ->line_contents .indentation ; // save
7548+ const size_t startline = m_evt_handler->m_curr ->pos .line ; // save
75347549 m_evt_handler->check_trailing_doc_token ();
75357550 _maybe_begin_doc ();
7536- _handle_annotations_before_blck_val_scalar ( );
7551+ _handle_annotations_before_start_mapblck (startline );
75377552 m_evt_handler->begin_map_val_block ();
7553+ _handle_annotations_and_indentation_after_start_mapblck (startindent, startline);
75387554 m_evt_handler->set_key_scalar_plain_empty ();
75397555 m_doc_empty = false ;
7540- _save_indentation ( );
7556+ _set_indentation (startindent );
75417557 }
75427558 else
75437559 {
0 commit comments