@@ -553,3 +553,45 @@ fn asm_concat() {
553
553
assert_eq ! ( parser. by_ref( ) . collect:: <Vec <Piece <' static >>>( ) , & [ Lit ( asm) ] ) ;
554
554
assert_eq ! ( parser. line_spans, & [ ] ) ;
555
555
}
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