]> git.lizzy.rs Git - rust.git/commitdiff
Extend format-args capture test.
authorMara Bos <m-ou.se@m-ou.se>
Thu, 27 Jan 2022 22:59:34 +0000 (23:59 +0100)
committerMara Bos <m-ou.se@m-ou.se>
Thu, 27 Jan 2022 23:20:25 +0000 (00:20 +0100)
src/test/ui/fmt/format-args-capture-issue-93378.rs
src/test/ui/fmt/format-args-capture-issue-93378.stderr
src/test/ui/fmt/format-args-capture.rs

index faaa4ca242ce7526cb6ccf4a4832c8022c0a6d93..6744444426472baeb402fd7a6a1a9919549183e0 100644 (file)
@@ -4,4 +4,8 @@ fn main() {
 
     println!("{a} {b} {} {} {c} {}", c = "c");
     //~^ ERROR: invalid reference to positional arguments 1 and 2 (there is 1 argument)
+
+    let n = 1;
+    println!("{a:.n$} {b:.*}");
+    //~^ ERROR: invalid reference to positional argument 0 (no arguments were given)
 }
index 3890e3ca864d768a61a9acbc4f1b198178ec6e5e..588541044fe136369d16006abb4fc805a979d822 100644 (file)
@@ -6,5 +6,17 @@ LL |     println!("{a} {b} {} {} {c} {}", c = "c");
    |
    = note: positional arguments are zero-based
 
-error: aborting due to previous error
+error: invalid reference to positional argument 0 (no arguments were given)
+  --> $DIR/format-args-capture-issue-93378.rs:9:23
+   |
+LL |     println!("{a:.n$} {b:.*}");
+   |               ------- ^^^--^
+   |               |          |
+   |               |          this precision flag adds an extra required argument at position 0, which is why there are 3 arguments expected
+   |               this parameter corresponds to the precision flag
+   |
+   = note: positional arguments are zero-based
+   = note: for information about formatting flags, visit https://doc.rust-lang.org/std/fmt/index.html
+
+error: aborting due to 2 previous errors
 
index e830a5bc9c5c86947d40cbb331377b23beb9b233..d31d2a6c33657fff6b4975c399e33784cea5ccb2 100644 (file)
@@ -5,6 +5,7 @@ fn main() {
     named_argument_takes_precedence_to_captured();
     formatting_parameters_can_be_captured();
     capture_raw_strings_and_idents();
+    repeated_capture();
 
     #[cfg(panic = "unwind")]
     {
@@ -80,3 +81,10 @@ fn formatting_parameters_can_be_captured() {
     let s = format!("{x:-^width$.precision$}");
     assert_eq!(&s, "--7.000--");
 }
+
+fn repeated_capture() {
+    let a = 1;
+    let b = 2;
+    let s = format!("{a} {b} {a}");
+    assert_eq!(&s, "1 2 1");
+}