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