don't require const stability for const impls
This commit is contained in:
parent
bcfea1f8d2
commit
030ddeecab
3 changed files with 3 additions and 21 deletions
|
@ -590,16 +590,7 @@ impl<'tcx> MissingStabilityAnnotations<'tcx> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn check_missing_const_stability(&self, def_id: LocalDefId, span: Span) {
|
fn check_missing_const_stability(&self, def_id: LocalDefId, span: Span) {
|
||||||
// if the const impl is derived using the `derive_const` attribute,
|
let is_const = self.tcx.is_const_fn(def_id.to_def_id());
|
||||||
// then it would be "stable" at least for the impl.
|
|
||||||
// We gate usages of it using `feature(const_trait_impl)` anyways
|
|
||||||
// so there is no unstable leakage
|
|
||||||
if self.tcx.is_automatically_derived(def_id.to_def_id()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let is_const = self.tcx.is_const_fn(def_id.to_def_id())
|
|
||||||
|| self.tcx.is_const_trait_impl(def_id.to_def_id());
|
|
||||||
|
|
||||||
// Reachable const fn must have a stability attribute.
|
// Reachable const fn must have a stability attribute.
|
||||||
if is_const
|
if is_const
|
||||||
|
|
|
@ -27,7 +27,7 @@ pub trait Bar {
|
||||||
}
|
}
|
||||||
#[stable(feature = "stable", since = "1.0.0")]
|
#[stable(feature = "stable", since = "1.0.0")]
|
||||||
impl const Bar for Foo {
|
impl const Bar for Foo {
|
||||||
//~^ ERROR implementation has missing const stability attribute
|
// ok because all users must enable `const_trait_impl`
|
||||||
fn fun() {}
|
fn fun() {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,15 +4,6 @@ error: function has missing const stability attribute
|
||||||
LL | pub const fn foo() {}
|
LL | pub const fn foo() {}
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: implementation has missing const stability attribute
|
|
||||||
--> $DIR/missing-const-stability.rs:29:1
|
|
||||||
|
|
|
||||||
LL | / impl const Bar for Foo {
|
|
||||||
LL | |
|
|
||||||
LL | | fn fun() {}
|
|
||||||
LL | | }
|
|
||||||
| |_^
|
|
||||||
|
|
||||||
error: function has missing const stability attribute
|
error: function has missing const stability attribute
|
||||||
--> $DIR/missing-const-stability.rs:36:1
|
--> $DIR/missing-const-stability.rs:36:1
|
||||||
|
|
|
|
||||||
|
@ -25,5 +16,5 @@ error: associated function has missing const stability attribute
|
||||||
LL | pub const fn foo() {}
|
LL | pub const fn foo() {}
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: aborting due to 4 previous errors
|
error: aborting due to 3 previous errors
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue