diff --git a/compiler/rustc_passes/src/stability.rs b/compiler/rustc_passes/src/stability.rs index cfd6acd8d7cd0b404310d043e6838cc3768f2ffa..78591e640e38f960ffd090b09440bd4db5441ba8 100644 --- a/compiler/rustc_passes/src/stability.rs +++ b/compiler/rustc_passes/src/stability.rs @@ -888,10 +888,15 @@ fn visit_trait_ref(&mut self, t: &'tcx TraitRef<'tcx>) { } fn visit_ty(&mut self, t: &'tcx Ty<'tcx>) { - if let TyKind::Never = t.kind { - self.fully_stable = false; + match t.kind { + TyKind::Never => self.fully_stable = false, + TyKind::BareFn(f) => { + if rustc_target::spec::abi::is_stable(f.abi.name()).is_err() { + self.fully_stable = false; + } + } + _ => intravisit::walk_ty(self, t), } - intravisit::walk_ty(self, t) } }