0c0dfb88ee
as request T-lang is requesting some major changes in the lint inner workings in #126768#issuecomment-2192634762
89 lines
1.3 KiB
Rust
89 lines
1.3 KiB
Rust
//@ 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
|
|
};
|