41 lines
1.1 KiB
Rust
41 lines
1.1 KiB
Rust
//@aux-build:proc_macros.rs
|
|
|
|
#![warn(clippy::useless_concat)]
|
|
#![allow(clippy::print_literal)]
|
|
|
|
extern crate proc_macros;
|
|
use proc_macros::{external, with_span};
|
|
|
|
macro_rules! my_concat {
|
|
($fmt:literal $(, $e:expr)*) => {
|
|
println!(concat!("ERROR: ", $fmt), $($e,)*);
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
let x = ""; //~ useless_concat
|
|
let x = "c"; //~ useless_concat
|
|
let x = "\""; //~ useless_concat
|
|
let x = "true"; //~ useless_concat
|
|
let x = "1"; //~ useless_concat
|
|
let x = "1.0000"; //~ useless_concat
|
|
let x = "1"; //~ useless_concat
|
|
let x = "1"; //~ useless_concat
|
|
let x = "1.0000"; //~ useless_concat
|
|
let x = "1.0000"; //~ useless_concat
|
|
let x = "a😀\n"; //~ useless_concat
|
|
let x = "a"; //~ useless_concat
|
|
let x = "1"; //~ useless_concat
|
|
println!("b: {}", "a"); //~ useless_concat
|
|
// Should not lint.
|
|
let x = concat!("a", "b");
|
|
let local_i32 = 1;
|
|
my_concat!("{}", local_i32);
|
|
let x = concat!(file!(), "#L", line!());
|
|
|
|
external! { concat!(); }
|
|
with_span! {
|
|
span
|
|
concat!();
|
|
}
|
|
}
|