@@ -553,3 +553,45 @@ fn asm_concat() {
553553 assert_eq ! ( parser. by_ref( ) . collect:: <Vec <Piece <' static >>>( ) , & [ Lit ( asm) ] ) ;
554554 assert_eq ! ( parser. line_spans, & [ ] ) ;
555555}
556+
557+ #[ test]
558+ fn diagnostic_format_flags ( ) {
559+ let lit = "{thing:blah}" ;
560+ let mut parser = Parser :: new ( lit, None , None , false , ParseMode :: Diagnostic ) ;
561+ assert ! ( !parser. is_source_literal) ;
562+
563+ let [ NextArgument ( arg) ] = & * parser. by_ref ( ) . collect :: < Vec < Piece < ' static > > > ( ) else { panic ! ( ) } ;
564+
565+ assert_eq ! (
566+ * * arg,
567+ Argument {
568+ position: ArgumentNamed ( "thing" ) ,
569+ position_span: 2 ..7 ,
570+ format: FormatSpec { ty: ":blah" , ty_span: Some ( 7 ..12 ) , ..Default :: default ( ) } ,
571+ }
572+ ) ;
573+
574+ assert_eq ! ( parser. line_spans, & [ ] ) ;
575+ assert ! ( parser. errors. is_empty( ) ) ;
576+ }
577+
578+ #[ test]
579+ fn diagnostic_format_mod ( ) {
580+ let lit = "{thing:+}" ;
581+ let mut parser = Parser :: new ( lit, None , None , false , ParseMode :: Diagnostic ) ;
582+ assert ! ( !parser. is_source_literal) ;
583+
584+ let [ NextArgument ( arg) ] = & * parser. by_ref ( ) . collect :: < Vec < Piece < ' static > > > ( ) else { panic ! ( ) } ;
585+
586+ assert_eq ! (
587+ * * arg,
588+ Argument {
589+ position: ArgumentNamed ( "thing" ) ,
590+ position_span: 2 ..7 ,
591+ format: FormatSpec { ty: ":+" , ty_span: Some ( 7 ..9 ) , ..Default :: default ( ) } ,
592+ }
593+ ) ;
594+
595+ assert_eq ! ( parser. line_spans, & [ ] ) ;
596+ assert ! ( parser. errors. is_empty( ) ) ;
597+ }
0 commit comments