Skip to content

Commit

Permalink
Extend format-args capture test.
Browse files Browse the repository at this point in the history
  • Loading branch information
m-ou-se committed Jan 27, 2022
1 parent fb2d530 commit cef9b47
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 1 deletion.
4 changes: 4 additions & 0 deletions src/test/ui/fmt/format-args-capture-issue-93378.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
14 changes: 13 additions & 1 deletion src/test/ui/fmt/format-args-capture-issue-93378.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -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

8 changes: 8 additions & 0 deletions src/test/ui/fmt/format-args-capture.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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")]
{
Expand Down Expand Up @@ -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");
}

0 comments on commit cef9b47

Please sign in to comment.