// The specific errors produced depend the thread-local implementation. // Run only on platforms with "fast" TLS. //@ ignore-windows FIXME(#84933) //@ ignore-wasm globals are used instead of thread locals //@ ignore-emscripten globals are used instead of thread locals //@ ignore-android does not use #[thread_local] //@ ignore-nto does not use #[thread_local] // Different number of duplicated diagnostics on different targets //@ compile-flags: -Zdeduplicate-diagnostics=yes #![allow(bare_trait_objects)] use std::cell::RefCell; use std::collections::HashMap; pub union Foo<'t, 'k> { i: &'t i64, f: &'k f64, } trait Bar<'t, 'k> {} pub union Qux<'t, 'k, I> { i: &'t I, f: &'k I, } trait Tar<'t, 'k, I> {} thread_local! { static a: RefCell>>> = RefCell::new(HashMap::new()); //~^ ERROR missing lifetime specifiers } thread_local! { static b: RefCell>>> = RefCell::new(HashMap::new()); //~^ ERROR missing lifetime specifiers } thread_local! { static c: RefCell>>>> = RefCell::new(HashMap::new()); //~^ ERROR missing lifetime specifiers } thread_local! { static d: RefCell>>>> = RefCell::new(HashMap::new()); //~^ ERROR missing lifetime specifiers } thread_local! { static e: RefCell>>>> = RefCell::new(HashMap::new()); //~^ ERROR union takes 2 lifetime arguments but 1 lifetime argument } thread_local! { static f: RefCell>>>> = RefCell::new(HashMap::new()); //~^ ERROR trait takes 2 lifetime arguments but 1 lifetime argument was supplied //~| ERROR missing lifetime specifier } fn main() {}