2023-12-27 08:25:59 -06:00
|
|
|
#![warn(clippy::thread_local_initializer_can_be_made_const)]
|
|
|
|
|
|
|
|
use std::cell::RefCell;
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
// lint and suggest const
|
|
|
|
thread_local! {
|
|
|
|
static BUF_1: RefCell<String> = const { RefCell::new(String::new()) };
|
|
|
|
}
|
|
|
|
//~^^ ERROR: initializer for `thread_local` value can be made `const`
|
|
|
|
|
|
|
|
// don't lint
|
|
|
|
thread_local! {
|
|
|
|
static BUF_2: RefCell<String> = const { RefCell::new(String::new()) };
|
|
|
|
}
|
|
|
|
|
|
|
|
thread_local! {
|
|
|
|
static SIMPLE:i32 = const { 1 };
|
|
|
|
}
|
|
|
|
//~^^ ERROR: initializer for `thread_local` value can be made `const`
|
|
|
|
|
|
|
|
// lint and suggest const for all non const items
|
|
|
|
thread_local! {
|
|
|
|
static BUF_3_CAN_BE_MADE_CONST: RefCell<String> = const { RefCell::new(String::new()) };
|
|
|
|
static CONST_MIXED_WITH:i32 = const { 1 };
|
|
|
|
static BUF_4_CAN_BE_MADE_CONST: RefCell<String> = const { RefCell::new(String::new()) };
|
|
|
|
}
|
|
|
|
//~^^^^ ERROR: initializer for `thread_local` value can be made `const`
|
|
|
|
//~^^^ ERROR: initializer for `thread_local` value can be made `const`
|
2024-01-21 17:16:47 -06:00
|
|
|
|
|
|
|
thread_local! {
|
|
|
|
static PEEL_ME: i32 = const { 1 };
|
|
|
|
//~^ ERROR: initializer for `thread_local` value can be made `const`
|
|
|
|
static PEEL_ME_MANY: i32 = const { { let x = 1; x * x } };
|
|
|
|
//~^ ERROR: initializer for `thread_local` value can be made `const`
|
|
|
|
}
|
2023-12-27 08:25:59 -06:00
|
|
|
}
|
2024-03-03 08:42:03 -06:00
|
|
|
|
|
|
|
#[clippy::msrv = "1.58"]
|
|
|
|
fn f() {
|
|
|
|
thread_local! {
|
|
|
|
static TLS: i32 = 1;
|
|
|
|
}
|
|
|
|
}
|