]> git.lizzy.rs Git - rust.git/blob - tests/ui/uninlined_format_args.fixed
fallout: fix tests to allow uninlined_format_args
[rust.git] / tests / ui / uninlined_format_args.fixed
1 // run-rustfix
2 #![feature(custom_inner_attributes)]
3 #![warn(clippy::uninlined_format_args)]
4 #![allow(named_arguments_used_positionally, unused_imports, unused_macros, unused_variables)]
5 #![allow(clippy::eq_op, clippy::format_in_format_args, clippy::print_literal)]
6
7 macro_rules! no_param_str {
8     () => {
9         "{}"
10     };
11 }
12
13 macro_rules! pass_through {
14     ($expr:expr) => {
15         $expr
16     };
17 }
18
19 macro_rules! my_println {
20    ($($args:tt),*) => {{
21         println!($($args),*)
22     }};
23 }
24
25 macro_rules! my_println_args {
26     ($($args:tt),*) => {{
27         println!("foo: {}", format_args!($($args),*))
28     }};
29 }
30
31 fn tester(fn_arg: i32) {
32     let local_i32 = 1;
33     let local_f64 = 2.0;
34     let local_opt: Option<i32> = Some(3);
35     let width = 4;
36     let prec = 5;
37     let val = 6;
38
39     // make sure this file hasn't been corrupted with tabs converted to spaces
40     // let _ = '        ';  // <- this is a single tab character
41     let _: &[u8; 3] = b"                "; // <- <tab><space><tab>
42
43     println!("val='{local_i32}'");
44     println!("val='{local_i32}'"); // 3 spaces
45     println!("val='{local_i32}'"); // tab
46     println!("val='{local_i32}'"); // space+tab
47     println!("val='{local_i32}'"); // tab+space
48     println!(
49         "val='{local_i32}'"
50     );
51     println!("{local_i32}");
52     println!("{fn_arg}");
53     println!("{local_i32:?}");
54     println!("{local_i32:#?}");
55     println!("{local_i32:4}");
56     println!("{local_i32:04}");
57     println!("{local_i32:<3}");
58     println!("{local_i32:#010x}");
59     println!("{local_f64:.1}");
60     println!("Hello {} is {local_f64:.local_i32$}", "x");
61     println!("Hello {local_i32} is {local_f64:.*}", 5);
62     println!("Hello {local_i32} is {local_f64:.*}", 5);
63     println!("{local_i32} {local_f64}");
64     println!("{local_i32}, {}", local_opt.unwrap());
65     println!("{val}");
66     println!("{val}");
67     println!("{} {1}", local_i32, 42);
68     println!("val='{local_i32}'");
69     println!("val='{local_i32}'");
70     println!("val='{local_i32}'");
71     println!("val='{fn_arg}'");
72     println!("{local_i32}");
73     println!("{local_i32:?}");
74     println!("{local_i32:#?}");
75     println!("{local_i32:04}");
76     println!("{local_i32:<3}");
77     println!("{local_i32:#010x}");
78     println!("{local_f64:.1}");
79     println!("{local_i32} {local_i32}");
80     println!("{local_f64} {local_i32} {local_i32} {local_f64}");
81     println!("{local_i32} {local_f64}");
82     println!("{local_f64} {local_i32}");
83     println!("{local_f64} {local_i32} {local_f64} {local_i32}");
84     println!("{1} {0}", "str", local_i32);
85     println!("{local_i32}");
86     println!("{local_i32:width$}");
87     println!("{local_i32:width$}");
88     println!("{local_i32:.prec$}");
89     println!("{local_i32:.prec$}");
90     println!("{val:val$}");
91     println!("{val:val$}");
92     println!("{val:val$.val$}");
93     println!("{val:val$.val$}");
94     println!("{val:val$.val$}");
95     println!("{val:val$.val$}");
96     println!("{val:val$.val$}");
97     println!("{val:val$.val$}");
98     println!("{val:val$.val$}");
99     println!("{val:val$.val$}");
100     println!("{width:width$}");
101     println!("{local_i32:width$}");
102     println!("{width:width$}");
103     println!("{local_i32:width$}");
104     println!("{prec:.prec$}");
105     println!("{local_i32:.prec$}");
106     println!("{prec:.prec$}");
107     println!("{local_i32:.prec$}");
108     println!("{width:width$.prec$}");
109     println!("{width:width$.prec$}");
110     println!("{local_f64:width$.prec$}");
111     println!("{local_f64:width$.prec$} {local_f64} {width} {prec}");
112     println!(
113         "{local_i32:width$.prec$} {local_i32:prec$.width$} {width:local_i32$.prec$} {width:prec$.local_i32$} {prec:local_i32$.width$} {prec:width$.local_i32$}",
114     );
115     println!(
116         "{0:1$.2$} {0:2$.1$} {1:0$.2$} {1:2$.0$} {2:0$.1$} {2:1$.0$} {3}",
117         local_i32,
118         width,
119         prec,
120         1 + 2
121     );
122     println!("Width = {local_i32}, value with width = {local_f64:local_i32$}");
123     println!("{local_i32:width$.prec$}");
124     println!("{width:width$.prec$}");
125     println!("{}", format!("{local_i32}"));
126     my_println!("{}", local_i32);
127     my_println_args!("{}", local_i32);
128
129     // these should NOT be modified by the lint
130     println!(concat!("nope ", "{}"), local_i32);
131     println!("val='{local_i32}'");
132     println!("val='{local_i32 }'");
133     println!("val='{local_i32   }'"); // with tab
134     println!("val='{local_i32\n}'");
135     println!("{}", usize::MAX);
136     println!("{}", local_opt.unwrap());
137     println!(
138         "val='{local_i32
139     }'"
140     );
141     println!(no_param_str!(), local_i32);
142
143     // FIXME: bugs!
144     // println!(pass_through!("foo={local_i32}"), local_i32 = local_i32);
145     // println!(pass_through!("foo={}"), local_i32);
146     // println!(indoc!("foo={}"), local_i32);
147     // printdoc!("foo={}", local_i32);
148 }
149
150 fn main() {
151     tester(42);
152 }
153
154 fn _under_msrv() {
155     #![clippy::msrv = "1.57"]
156     let local_i32 = 1;
157     println!("don't expand='{}'", local_i32);
158 }
159
160 fn _meets_msrv() {
161     #![clippy::msrv = "1.58"]
162     let local_i32 = 1;
163     println!("expand='{local_i32}'");
164 }