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