Skip to content

Commit 3296df4

Browse files
committed
Add failing uninlined-format-args tests
All these tests are currently failing (generating uncompilable code). * Implement a simplified `indoc!` proc macro * added a `pass_through!(...)` macro test The .fixed and .stderr were hacked without the `cargo dev bless`, so might be incorrect.
1 parent 3837422 commit 3296df4

File tree

4 files changed

+159
-84
lines changed

4 files changed

+159
-84
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// compile-flags: --emit=link
2+
// no-prefer-dynamic
3+
4+
#![crate_type = "proc-macro"]
5+
6+
extern crate proc_macro;
7+
8+
use proc_macro::{TokenStream, TokenTree};
9+
use std::str::FromStr;
10+
11+
/// This code was adapted from the indoc crate
12+
#[proc_macro]
13+
pub fn simple_indoc(input: TokenStream) -> TokenStream {
14+
let token = input.into_iter().next().unwrap();
15+
let new_token = TokenStream::from_str(&token.to_string())
16+
.unwrap()
17+
.into_iter()
18+
.next()
19+
.unwrap();
20+
21+
if let TokenTree::Literal(mut lit) = new_token {
22+
lit.set_span(token.span());
23+
return TokenStream::from(TokenTree::Literal(lit));
24+
}
25+
panic!();
26+
}

tests/ui/uninlined_format_args.fixed

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,17 @@
11
// run-rustfix
2+
// aux-build:proc_macro_indoc.rs
3+
24
#![feature(custom_inner_attributes)]
35
#![warn(clippy::uninlined_format_args)]
46
#![allow(named_arguments_used_positionally, unused_imports, unused_macros, unused_variables)]
5-
#![allow(clippy::eq_op, clippy::format_in_format_args, clippy::print_literal)]
7+
#![allow(
8+
clippy::double_parens,
9+
clippy::eq_op,
10+
clippy::format_in_format_args,
11+
clippy::print_literal
12+
)]
13+
14+
extern crate proc_macro_indoc;
615

716
macro_rules! no_param_str {
817
() => {
@@ -125,6 +134,10 @@ fn tester(fn_arg: i32) {
125134
println!("{}", format!("{local_i32}"));
126135
my_println!("{}", local_i32);
127136
my_println_args!("{}", local_i32);
137+
println!("{local_i32}");
138+
#[rustfmt::skip]
139+
println!("{local_i32}");
140+
println!("{local_i32:width$.prec$}");
128141

129142
// these should NOT be modified by the lint
130143
println!(concat!("nope ", "{}"), local_i32);
@@ -140,11 +153,10 @@ fn tester(fn_arg: i32) {
140153
);
141154
println!(no_param_str!(), local_i32);
142155

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);
156+
println!(pass_through!("foo={}"), local_i32);
157+
println!(pass_through!("foo={a}"), a = local_i32);
158+
println!(proc_macro_indoc::simple_indoc!("foo={}"), local_i32);
159+
println!(proc_macro_indoc::simple_indoc!("foo={a}"), a = local_i32);
148160
}
149161

150162
fn main() {

tests/ui/uninlined_format_args.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// run-rustfix
2+
// aux-build:proc_macro_indoc.rs
23

34
#![feature(custom_inner_attributes)]
45
#![warn(clippy::uninlined_format_args)]
@@ -10,6 +11,8 @@
1011
clippy::print_literal
1112
)]
1213

14+
extern crate proc_macro_indoc;
15+
1316
macro_rules! no_param_str {
1417
() => {
1518
"{}"
@@ -153,11 +156,10 @@ fn tester(fn_arg: i32) {
153156
);
154157
println!(no_param_str!(), local_i32);
155158

156-
// FIXME: bugs!
157-
// println!(pass_through!("foo={local_i32}"), local_i32 = local_i32);
158-
// println!(pass_through!("foo={}"), local_i32);
159-
// println!(indoc!("foo={}"), local_i32);
160-
// printdoc!("foo={}", local_i32);
159+
println!(pass_through!("foo={}"), local_i32);
160+
println!(pass_through!("foo={a}"), a = local_i32);
161+
println!(proc_macro_indoc::simple_indoc!("foo={}"), local_i32);
162+
println!(proc_macro_indoc::simple_indoc!("foo={a}"), a = local_i32);
161163
}
162164

163165
fn main() {

0 commit comments

Comments
 (0)