diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2023-02-26 00:46:28 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-02-26 00:46:28 +0100 |
| commit | a223ff7ceaaaa7b5a41c97b2322a64ccd23d5497 (patch) | |
| tree | 16e7855f1dc0e1b3b52c5e3f64f7b14aceb308d8 | |
| parent | 65eecc6b59f69bac45ddce8081f5edd23e74b17e (diff) | |
| parent | ed34354bfa4f98da2883fdbba4453c571dde1ef7 (diff) | |
| download | rust-a223ff7ceaaaa7b5a41c97b2322a64ccd23d5497.tar.gz rust-a223ff7ceaaaa7b5a41c97b2322a64ccd23d5497.zip | |
Rollup merge of #108449 - fee1-dead-contrib:do_not_lint_unresolved, r=compiler-errors
Do not lint ineffective unstable trait impl for unresolved trait
| -rw-r--r-- | compiler/rustc_passes/src/stability.rs | 5 | ||||
| -rw-r--r-- | tests/ui/stability-attribute/unresolved_stability_lint.rs | 8 | ||||
| -rw-r--r-- | tests/ui/stability-attribute/unresolved_stability_lint.stderr | 9 |
3 files changed, 21 insertions, 1 deletions
diff --git a/compiler/rustc_passes/src/stability.rs b/compiler/rustc_passes/src/stability.rs index 88a55dc8319..16194a6f196 100644 --- a/compiler/rustc_passes/src/stability.rs +++ b/compiler/rustc_passes/src/stability.rs @@ -748,7 +748,10 @@ impl<'tcx> Visitor<'tcx> for Checker<'tcx> { let mut c = CheckTraitImplStable { tcx: self.tcx, fully_stable: true }; c.visit_ty(self_ty); c.visit_trait_ref(t); - if c.fully_stable { + + // do not lint when the trait isn't resolved, since resolution error should + // be fixed first + if t.path.res != Res::Err && c.fully_stable { self.tcx.struct_span_lint_hir( INEFFECTIVE_UNSTABLE_TRAIT_IMPL, item.hir_id(), diff --git a/tests/ui/stability-attribute/unresolved_stability_lint.rs b/tests/ui/stability-attribute/unresolved_stability_lint.rs new file mode 100644 index 00000000000..818d228bc91 --- /dev/null +++ b/tests/ui/stability-attribute/unresolved_stability_lint.rs @@ -0,0 +1,8 @@ +#![feature(staged_api)] +#![stable(feature = "uwu", since = "1.0.0")] + +#[unstable(feature = "foo", issue = "none")] +impl Foo for () {} +//~^ ERROR cannot find trait `Foo` in this scope + +fn main() {} diff --git a/tests/ui/stability-attribute/unresolved_stability_lint.stderr b/tests/ui/stability-attribute/unresolved_stability_lint.stderr new file mode 100644 index 00000000000..11d6abcaf36 --- /dev/null +++ b/tests/ui/stability-attribute/unresolved_stability_lint.stderr @@ -0,0 +1,9 @@ +error[E0405]: cannot find trait `Foo` in this scope + --> $DIR/unresolved_stability_lint.rs:5:6 + | +LL | impl Foo for () {} + | ^^^ not found in this scope + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0405`. |
