Skip to content

Commit 20f922e

Browse files
wip
1 parent 3ce564a commit 20f922e

File tree

3 files changed

+12
-3
lines changed

3 files changed

+12
-3
lines changed

compiler/rustc_attr_parsing/src/attributes/deprecation.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use rustc_span::{Span, Symbol, sym};
55

66
use super::util::parse_version;
77
use super::{AttributeOrder, OnDuplicate, SingleAttributeParser};
8-
use crate::context::MaybeWarn::Allow;
8+
use crate::context::MaybeWarn::{Allow, Warn};
99
use crate::context::{AcceptContext, AllowedTargets, Stage};
1010
use crate::parser::ArgParser;
1111
use crate::session_diagnostics;
@@ -56,6 +56,7 @@ impl<S: Stage> SingleAttributeParser<S> for DeprecationParser {
5656
Allow(Target::Trait),
5757
Allow(Target::AssocTy),
5858
Allow(Target::Variant),
59+
Warn(Target::Expression),
5960
]);
6061
const TEMPLATE: AttributeTemplate = template!(
6162
Word,

compiler/rustc_attr_parsing/src/attributes/macro_attrs.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use rustc_span::{Span, Symbol, sym};
66
use thin_vec::ThinVec;
77

88
use crate::attributes::{AcceptMapping, AttributeParser, NoArgsAttributeParser, OnDuplicate};
9-
use crate::context::MaybeWarn::Allow;
9+
use crate::context::MaybeWarn::{Allow, Warn};
1010
use crate::context::{AcceptContext, AllowedTargets, FinalizeContext, Stage};
1111
use crate::parser::ArgParser;
1212
use crate::session_diagnostics;

compiler/rustc_attr_parsing/src/context.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ use crate::attributes::traits::{
5959
};
6060
use crate::attributes::transparency::TransparencyParser;
6161
use crate::attributes::{AttributeParser as _, Combine, Single, WithoutArgs};
62-
use crate::context::MaybeWarn::Allow;
62+
use crate::context::MaybeWarn::{Allow, Warn};
6363
use crate::parser::{ArgParser, MetaItemParser, PathParser};
6464
use crate::session_diagnostics::{AttributeParseError, AttributeParseErrorReason, UnknownMetaItem};
6565

@@ -657,6 +657,13 @@ impl AllowedTargets {
657657
AllowedTargets::AllowList(list) => list.contains(&Allow(target)),
658658
}
659659
}
660+
661+
pub(crate) fn is_warn(&self, target: Target) -> bool {
662+
match self {
663+
AllowedTargets::AllowAll => false,
664+
AllowedTargets::AllowList(list) => list.contains(&Warn(target)),
665+
}
666+
}
660667
}
661668

662669
#[derive(Debug, Eq, PartialEq)]
@@ -875,6 +882,7 @@ impl<'sess, S: Stage> AttributeParser<'sess, S> {
875882

876883
if self.stage.should_emit().should_emit()
877884
&& !accept.allowed_targets.is_allowed(target)
885+
&& !accept.allowed_targets.is_warn(target)
878886
{
879887
self.dcx().span_delayed_bug(
880888
n.item.span(),

0 commit comments

Comments
 (0)