//@ check-pass //@ edition:2021 //@ rustc-env:CARGO_CRATE_NAME=non_local_def #![warn(non_local_definitions)] struct Test; trait Uto {} const Z: () = { trait Uto1 {} impl Uto1 for Test {} // the trait is local, don't lint impl Uto for &Test {} //~^ WARN non-local `impl` definition }; trait Ano {} const _: () = { impl Ano for &Test {} // ignored since the parent is an anon-const }; trait Uto2 {} static A: u32 = { impl Uto2 for Test {} //~^ WARN non-local `impl` definition 1 }; trait Uto3 {} const B: u32 = { impl Uto3 for Test {} //~^ WARN non-local `impl` definition trait Uto4 {} impl Uto4 for Test {} 1 }; trait Uto5 {} fn main() { impl Test { //~^ WARN non-local `impl` definition fn foo() {} } const { impl Test { //~^ WARN non-local `impl` definition fn hoo() {} } 1 }; const _: u32 = { impl Test { //~^ WARN non-local `impl` definition fn foo2() {} } 1 }; } trait Uto9 {} trait Uto10 {} const _: u32 = { let _a = || { impl Uto9 for Test {} //~^ WARN non-local `impl` definition 1 }; type A = [u32; { impl Uto10 for Test {} //~^ WARN non-local `impl` definition 1 }]; 1 };