mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-16 05:56:56 +00:00
Pass precise HirId when calling check_stability
Signed-off-by: xizheyin <xizheyin@smail.nju.edu.cn>
This commit is contained in:
parent
a2aba0578b
commit
aad1db7373
@ -2060,7 +2060,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||
// struct-like enums (yet...), but it's definitely not
|
||||
// a bug to have constructed one.
|
||||
if adt_kind != AdtKind::Enum {
|
||||
tcx.check_stability(v_field.did, Some(expr.hir_id), field.span, None);
|
||||
tcx.check_stability(v_field.did, Some(field.hir_id), field.span, None);
|
||||
}
|
||||
|
||||
self.field_ty(field.span, v_field, args)
|
||||
|
@ -1422,7 +1422,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||
|
||||
self.tcx.check_stability(
|
||||
variant.fields[FieldIdx::from_usize(i)].did,
|
||||
Some(pat.hir_id),
|
||||
Some(subpat.hir_id),
|
||||
subpat.span,
|
||||
None,
|
||||
);
|
||||
@ -1686,7 +1686,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||
.get(&ident)
|
||||
.map(|(i, f)| {
|
||||
self.write_field_index(field.hir_id, *i);
|
||||
self.tcx.check_stability(f.did, Some(pat.hir_id), span, None);
|
||||
self.tcx.check_stability(f.did, Some(field.hir_id), span, None);
|
||||
self.field_ty(span, f, args)
|
||||
})
|
||||
.unwrap_or_else(|| {
|
||||
|
@ -0,0 +1,12 @@
|
||||
//@ check-pass
|
||||
struct Point {
|
||||
#[deprecated = "x is deprecated"]
|
||||
_x: i32,
|
||||
_y: i32,
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let p = Point { _x: 1, _y: 2 }; //~ WARNING use of deprecated field `Point::_x`
|
||||
// Before fix, it report an warning
|
||||
let Point { #[expect(deprecated)]_x, .. } = p;
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
warning: use of deprecated field `Point::_x`: x is deprecated
|
||||
--> $DIR/check-struct-pat-fields-stability-issue-138319.rs:9:21
|
||||
|
|
||||
LL | let p = Point { _x: 1, _y: 2 };
|
||||
| ^^^^^
|
||||
|
|
||||
= note: `#[warn(deprecated)]` on by default
|
||||
|
||||
warning: 1 warning emitted
|
||||
|
39
tests/ui/stability-attribute/check-stability-issue-138319.rs
Normal file
39
tests/ui/stability-attribute/check-stability-issue-138319.rs
Normal file
@ -0,0 +1,39 @@
|
||||
//@ check-pass
|
||||
fn _foo() {
|
||||
_Bar { //~ WARNING use of deprecated struct `_Bar`: reason
|
||||
#[expect(deprecated)]
|
||||
foo: 0,
|
||||
};
|
||||
}
|
||||
|
||||
#[deprecated = "reason"]
|
||||
struct _Bar {
|
||||
foo: u32,
|
||||
}
|
||||
|
||||
fn _foo2() {
|
||||
#[expect(deprecated)]
|
||||
_Bar2 {
|
||||
foo2: 0,
|
||||
};
|
||||
}
|
||||
|
||||
#[deprecated = "reason"]
|
||||
struct _Bar2 {
|
||||
foo2: u32,
|
||||
}
|
||||
|
||||
fn _foo3() {
|
||||
_Bar3 {
|
||||
#[expect(deprecated)]
|
||||
foo3: 0,
|
||||
};
|
||||
}
|
||||
|
||||
struct _Bar3 {
|
||||
#[deprecated = "reason"]
|
||||
foo3: u32,
|
||||
}
|
||||
|
||||
|
||||
fn main() {}
|
@ -0,0 +1,10 @@
|
||||
warning: use of deprecated struct `_Bar`: reason
|
||||
--> $DIR/check-stability-issue-138319.rs:3:5
|
||||
|
|
||||
LL | _Bar {
|
||||
| ^^^^
|
||||
|
|
||||
= note: `#[warn(deprecated)]` on by default
|
||||
|
||||
warning: 1 warning emitted
|
||||
|
Loading…
Reference in New Issue
Block a user