Don't inherit stability to items in a function body.
Items defined in the body of a function has no visibility outside it, and thus have no reason to be marked with stability attributes. Closes #17488
This commit is contained in:
parent
803aacd5ae
commit
55200504f0
@ -83,10 +83,13 @@ fn visit_fn(&mut self, fk: FnKind<'v>, fd: &'v FnDecl,
|
||||
b: &'v Block, s: Span, _: NodeId) {
|
||||
match fk {
|
||||
FkMethod(_, _, meth) => {
|
||||
self.annotate(meth.id, &meth.attrs, |v| visit::walk_fn(v, fk, fd, b, s));
|
||||
// Methods are not already annotated, so we annotate it
|
||||
self.annotate(meth.id, &meth.attrs, |_| {});
|
||||
}
|
||||
_ => visit::walk_fn(self, fk, fd, b, s)
|
||||
_ => {}
|
||||
}
|
||||
// Items defined in a function body have no reason to have
|
||||
// a stability attribute, so we don't recurse.
|
||||
}
|
||||
|
||||
fn visit_trait_item(&mut self, t: &TraitItem) {
|
||||
|
@ -459,6 +459,20 @@ fn test_method_object(foo: &Trait) {
|
||||
foo.trait_stable();
|
||||
}
|
||||
|
||||
#[deprecated]
|
||||
fn test_fn_body() {
|
||||
fn fn_in_body() {}
|
||||
fn_in_body();
|
||||
}
|
||||
|
||||
impl MethodTester {
|
||||
#[deprecated]
|
||||
fn test_method_body(&self) {
|
||||
fn fn_in_body() {}
|
||||
fn_in_body();
|
||||
}
|
||||
}
|
||||
|
||||
#[deprecated]
|
||||
pub trait DeprecatedTrait {}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user