Skip to content

Commit ba1c650

Browse files
committed
Add ParseMode::Diagnostic unit tests
1 parent 03c846e commit ba1c650

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

compiler/rustc_parse_format/src/tests.rs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)