Skip to content

Commit 054cfbd

Browse files
committed
fmt: do not warn on {:.}
1 parent c07db99 commit 054cfbd

File tree

3 files changed

+14
-4
lines changed

3 files changed

+14
-4
lines changed

compiler/rustc_parse_format/src/lib.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -655,7 +655,15 @@ impl<'input> Parser<'input> {
655655
spec.precision = self.count();
656656
}
657657
let span = range.start..self.input_vec_index2range(self.input_vec_index).start;
658-
if spec.precision == CountImplied {
658+
if spec.precision == CountImplied &&
659+
// make an exception for "{:.}":
660+
// broad exception:
661+
// !self.input.contains("{:.}")
662+
// narrow exception:
663+
// !self.input.starts_with("{:.}")
664+
// very narrow exception:
665+
self.input != "{:.}" && self.input != "{:.}\n"
666+
{
659667
self.warnings.push(ParseError {
660668
description: "expected numerical precision after precision specifier"
661669
.to_string(),

tests/ui/fmt/warn-on-empty-precision.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
//@ run-pass
22
fn main() {
33
let float = 0.123_456_789;
4+
// this special case is exempted from warning
5+
println!("{:.}", float);
46
println!("Missing precision: {float:.} {float:3.} {float:_^12.}");
57
//~^ WARNING invalid format string: expected numerical precision after precision specifier
68
//~| WARNING invalid format string: expected numerical precision after precision specifier

tests/ui/fmt/warn-on-empty-precision.stderr

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
warning: invalid format string: expected numerical precision after precision specifier
2-
--> $DIR/warn-on-empty-precision.rs:4:41
2+
--> $DIR/warn-on-empty-precision.rs:6:41
33
|
44
LL | println!("Missing precision: {float:.} {float:3.} {float:_^12.}");
55
| ^ precision specifier without numerical precision in format string
66
|
77
= note: This may become an error in a future release
88

99
warning: invalid format string: expected numerical precision after precision specifier
10-
--> $DIR/warn-on-empty-precision.rs:4:52
10+
--> $DIR/warn-on-empty-precision.rs:6:52
1111
|
1212
LL | println!("Missing precision: {float:.} {float:3.} {float:_^12.}");
1313
| ^ precision specifier without numerical precision in format string
1414
|
1515
= note: This may become an error in a future release
1616

1717
warning: invalid format string: expected numerical precision after precision specifier
18-
--> $DIR/warn-on-empty-precision.rs:4:66
18+
--> $DIR/warn-on-empty-precision.rs:6:66
1919
|
2020
LL | println!("Missing precision: {float:.} {float:3.} {float:_^12.}");
2121
| ^ precision specifier without numerical precision in format string

0 commit comments

Comments
 (0)