Skip to content

Commit 8383cca

Browse files
committed
Port #[rustc_lint_untracked_query_information] to attribute parser
1 parent ed0006a commit 8383cca

File tree

6 files changed

+28
-6
lines changed

6 files changed

+28
-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
@@ -141,6 +141,22 @@ impl<S: Stage> NoArgsAttributeParser<S> for RustcLintQueryInstabilityParser {
141141
const CREATE: fn(Span) -> AttributeKind = |_| AttributeKind::RustcLintQueryInstability;
142142
}
143143

144+
pub(crate) struct RustcLintUntrackedQueryInformationParser;
145+
146+
impl<S: Stage> NoArgsAttributeParser<S> for RustcLintUntrackedQueryInformationParser {
147+
const PATH: &[Symbol] = &[sym::rustc_lint_untracked_query_information];
148+
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
149+
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[
150+
Allow(Target::Fn),
151+
Allow(Target::Method(MethodKind::Inherent)),
152+
Allow(Target::Method(MethodKind::Trait { body: false })),
153+
Allow(Target::Method(MethodKind::Trait { body: true })),
154+
Allow(Target::Method(MethodKind::TraitImpl)),
155+
]);
156+
157+
const CREATE: fn(Span) -> AttributeKind = |_| AttributeKind::RustcLintUntrackedQueryInformation;
158+
}
159+
144160
pub(crate) struct RustcObjectLifetimeDefaultParser;
145161

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

compiler/rustc_attr_parsing/src/context.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ use crate::attributes::repr::{AlignParser, AlignStaticParser, ReprParser};
6262
use crate::attributes::rustc_internal::{
6363
RustcLayoutScalarValidRangeEndParser, RustcLayoutScalarValidRangeStartParser,
6464
RustcLegacyConstGenericsParser, RustcLintOptTyParser, RustcLintQueryInstabilityParser,
65-
RustcMainParser, RustcNeverReturnsNullPointerParser, RustcNoImplicitAutorefsParser,
66-
RustcObjectLifetimeDefaultParser, RustcScalableVectorParser,
65+
RustcLintUntrackedQueryInformationParser, RustcMainParser, RustcNeverReturnsNullPointerParser,
66+
RustcNoImplicitAutorefsParser, RustcObjectLifetimeDefaultParser, RustcScalableVectorParser,
6767
RustcSimdMonomorphizeLaneLimitParser,
6868
};
6969
use crate::attributes::semantics::MayDangleParser;
@@ -258,6 +258,7 @@ attribute_parsers!(
258258
Single<WithoutArgs<RustcCoherenceIsCoreParser>>,
259259
Single<WithoutArgs<RustcLintOptTyParser>>,
260260
Single<WithoutArgs<RustcLintQueryInstabilityParser>>,
261+
Single<WithoutArgs<RustcLintUntrackedQueryInformationParser>>,
261262
Single<WithoutArgs<RustcMainParser>>,
262263
Single<WithoutArgs<RustcNeverReturnsNullPointerParser>>,
263264
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
@@ -937,6 +937,9 @@ pub enum AttributeKind {
937937
/// Represents `#[rustc_lint_query_instability]`
938938
RustcLintQueryInstability,
939939

940+
/// Represents `#[rustc_lint_untracked_query_information]`
941+
RustcLintUntrackedQueryInformation,
942+
940943
/// Represents `#[rustc_main]`.
941944
RustcMain,
942945

compiler/rustc_hir/src/attrs/encode_cross_crate.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ impl AttributeKind {
9696
RustcLegacyConstGenerics { .. } => Yes,
9797
RustcLintOptTy => Yes,
9898
RustcLintQueryInstability => Yes,
99+
RustcLintUntrackedQueryInformation => Yes,
99100
RustcMain => No,
100101
RustcNeverReturnsNullPointer => Yes,
101102
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
@@ -260,6 +260,7 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
260260
| AttributeKind::RustcLayoutScalarValidRangeEnd(..)
261261
| AttributeKind::RustcLintOptTy
262262
| AttributeKind::RustcLintQueryInstability
263+
| AttributeKind::RustcLintUntrackedQueryInformation
263264
| AttributeKind::RustcNeverReturnsNullPointer
264265
| AttributeKind::RustcScalableVector { .. }
265266
| AttributeKind::RustcSimdMonomorphizeLaneLimit(..)
@@ -308,9 +309,6 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
308309
self.check_diagnostic_on_const(attr.span(), hir_id, target, item)
309310
}
310311
[sym::thread_local, ..] => self.check_thread_local(attr, span, target),
311-
[sym::rustc_lint_untracked_query_information, ..] => {
312-
self.check_applied_to_fn_or_method(hir_id, attr.span(), span, target)
313-
}
314312
[sym::rustc_lint_diagnostics, ..] => {
315313
self.check_applied_to_fn_or_method(hir_id, attr.span(), span, target)
316314
}

0 commit comments

Comments
 (0)