Skip to content

Commit 5277241

Browse files
committed
Port #[rustc_lint_untracked_query_information] to attribute parser
1 parent fcf67da commit 5277241

File tree

6 files changed

+29
-6
lines changed

6 files changed

+29
-6
lines changed

compiler/rustc_attr_parsing/src/attributes/rustc_internal.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,22 @@ impl<S: Stage> NoArgsAttributeParser<S> for RustcLintQueryInstabilityParser {
165165
const CREATE: fn(Span) -> AttributeKind = |_| AttributeKind::RustcLintQueryInstability;
166166
}
167167

168+
pub(crate) struct RustcLintUntrackedQueryInformationParser;
169+
170+
impl<S: Stage> NoArgsAttributeParser<S> for RustcLintUntrackedQueryInformationParser {
171+
const PATH: &[Symbol] = &[sym::rustc_lint_untracked_query_information];
172+
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
173+
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[
174+
Allow(Target::Fn),
175+
Allow(Target::Method(MethodKind::Inherent)),
176+
Allow(Target::Method(MethodKind::Trait { body: false })),
177+
Allow(Target::Method(MethodKind::Trait { body: true })),
178+
Allow(Target::Method(MethodKind::TraitImpl)),
179+
]);
180+
181+
const CREATE: fn(Span) -> AttributeKind = |_| AttributeKind::RustcLintUntrackedQueryInformation;
182+
}
183+
168184
pub(crate) struct RustcObjectLifetimeDefaultParser;
169185

170186
impl<S: Stage> SingleAttributeParser<S> for RustcObjectLifetimeDefaultParser {

compiler/rustc_attr_parsing/src/context.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,9 @@ use crate::attributes::repr::{AlignParser, AlignStaticParser, ReprParser};
6262
use crate::attributes::rustc_internal::{
6363
RustcLayoutScalarValidRangeEndParser, RustcLayoutScalarValidRangeStartParser,
6464
RustcLegacyConstGenericsParser, RustcLintOptDenyFieldAccessParser, RustcLintOptTyParser,
65-
RustcLintQueryInstabilityParser, RustcMainParser, RustcNeverReturnsNullPointerParser,
66-
RustcNoImplicitAutorefsParser, RustcObjectLifetimeDefaultParser, RustcScalableVectorParser,
65+
RustcLintQueryInstabilityParser, RustcLintUntrackedQueryInformationParser, RustcMainParser,
66+
RustcNeverReturnsNullPointerParser, RustcNoImplicitAutorefsParser,
67+
RustcObjectLifetimeDefaultParser, RustcScalableVectorParser,
6768
RustcSimdMonomorphizeLaneLimitParser,
6869
};
6970
use crate::attributes::semantics::MayDangleParser;
@@ -259,6 +260,7 @@ attribute_parsers!(
259260
Single<WithoutArgs<RustcCoherenceIsCoreParser>>,
260261
Single<WithoutArgs<RustcLintOptTyParser>>,
261262
Single<WithoutArgs<RustcLintQueryInstabilityParser>>,
263+
Single<WithoutArgs<RustcLintUntrackedQueryInformationParser>>,
262264
Single<WithoutArgs<RustcMainParser>>,
263265
Single<WithoutArgs<RustcNeverReturnsNullPointerParser>>,
264266
Single<WithoutArgs<RustcNoImplicitAutorefsParser>>,

compiler/rustc_hir/src/attrs/data_structures.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -940,6 +940,9 @@ pub enum AttributeKind {
940940
/// Represents `#[rustc_lint_query_instability]`
941941
RustcLintQueryInstability,
942942

943+
/// Represents `#[rustc_lint_untracked_query_information]`
944+
RustcLintUntrackedQueryInformation,
945+
943946
/// Represents `#[rustc_main]`.
944947
RustcMain,
945948

compiler/rustc_hir/src/attrs/encode_cross_crate.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ impl AttributeKind {
9797
RustcLintOptDenyFieldAccess { .. } => Yes,
9898
RustcLintOptTy => Yes,
9999
RustcLintQueryInstability => Yes,
100+
RustcLintUntrackedQueryInformation => Yes,
100101
RustcMain => No,
101102
RustcNeverReturnsNullPointer => Yes,
102103
RustcNoImplicitAutorefs => Yes,

compiler/rustc_lint/src/internal.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,10 @@ impl<'tcx> LateLintPass<'tcx> for QueryStability {
106106
);
107107
}
108108

109-
if cx.tcx.has_attr(def_id, sym::rustc_lint_untracked_query_information) {
109+
if find_attr!(
110+
cx.tcx.get_all_attrs(def_id),
111+
AttributeKind::RustcLintUntrackedQueryInformation
112+
) {
110113
cx.emit_span_lint(
111114
UNTRACKED_QUERY_INFORMATION,
112115
span,

compiler/rustc_passes/src/check_attr.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,7 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
261261
| AttributeKind::RustcLintOptDenyFieldAccess { .. }
262262
| AttributeKind::RustcLintOptTy
263263
| AttributeKind::RustcLintQueryInstability
264+
| AttributeKind::RustcLintUntrackedQueryInformation
264265
| AttributeKind::RustcNeverReturnsNullPointer
265266
| AttributeKind::RustcScalableVector { .. }
266267
| AttributeKind::RustcSimdMonomorphizeLaneLimit(..)
@@ -309,9 +310,6 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
309310
self.check_diagnostic_on_const(attr.span(), hir_id, target, item)
310311
}
311312
[sym::thread_local, ..] => self.check_thread_local(attr, span, target),
312-
[sym::rustc_lint_untracked_query_information, ..] => {
313-
self.check_applied_to_fn_or_method(hir_id, attr.span(), span, target)
314-
}
315313
[sym::rustc_lint_diagnostics, ..] => {
316314
self.check_applied_to_fn_or_method(hir_id, attr.span(), span, target)
317315
}

0 commit comments

Comments
 (0)