Rollup merge of #145826 - scrabsha:push-vrpwttmzqwpt, r=jdonszelmann
Use AcceptContext in AttribueParser::check_target
This commit is contained in:
commit
64d0d1d668
2 changed files with 17 additions and 29 deletions
|
|
@ -273,14 +273,7 @@ impl<'sess, S: Stage> AttributeParser<'sess, S> {
|
|||
(accept.accept_fn)(&mut cx, args);
|
||||
if !matches!(cx.stage.should_emit(), ShouldEmit::Nothing) {
|
||||
Self::check_type(accept.attribute_type, target, &mut cx);
|
||||
self.check_target(
|
||||
path.get_attribute_path(),
|
||||
attr.span,
|
||||
&accept.allowed_targets,
|
||||
target,
|
||||
target_id,
|
||||
&mut emit_lint,
|
||||
);
|
||||
Self::check_target(&accept.allowed_targets, target, &mut cx);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -3,9 +3,8 @@ use std::borrow::Cow;
|
|||
use rustc_ast::AttrStyle;
|
||||
use rustc_errors::DiagArgValue;
|
||||
use rustc_feature::{AttributeType, Features};
|
||||
use rustc_hir::lints::{AttributeLint, AttributeLintKind};
|
||||
use rustc_hir::{AttrPath, MethodKind, Target};
|
||||
use rustc_span::Span;
|
||||
use rustc_hir::lints::AttributeLintKind;
|
||||
use rustc_hir::{MethodKind, Target};
|
||||
|
||||
use crate::AttributeParser;
|
||||
use crate::context::{AcceptContext, Stage};
|
||||
|
|
@ -71,38 +70,34 @@ pub(crate) enum Policy {
|
|||
|
||||
impl<'sess, S: Stage> AttributeParser<'sess, S> {
|
||||
pub(crate) fn check_target(
|
||||
&self,
|
||||
attr_name: AttrPath,
|
||||
attr_span: Span,
|
||||
allowed_targets: &AllowedTargets,
|
||||
target: Target,
|
||||
target_id: S::Id,
|
||||
mut emit_lint: impl FnMut(AttributeLint<S::Id>),
|
||||
cx: &mut AcceptContext<'_, 'sess, S>,
|
||||
) {
|
||||
match allowed_targets.is_allowed(target) {
|
||||
AllowedResult::Allowed => {}
|
||||
AllowedResult::Warn => {
|
||||
let allowed_targets = allowed_targets.allowed_targets();
|
||||
let (applied, only) =
|
||||
allowed_targets_applied(allowed_targets, target, self.features);
|
||||
emit_lint(AttributeLint {
|
||||
id: target_id,
|
||||
span: attr_span,
|
||||
kind: AttributeLintKind::InvalidTarget {
|
||||
name: attr_name,
|
||||
let (applied, only) = allowed_targets_applied(allowed_targets, target, cx.features);
|
||||
let name = cx.attr_path.clone();
|
||||
let attr_span = cx.attr_span;
|
||||
cx.emit_lint(
|
||||
AttributeLintKind::InvalidTarget {
|
||||
name,
|
||||
target,
|
||||
only: if only { "only " } else { "" },
|
||||
applied,
|
||||
},
|
||||
});
|
||||
attr_span,
|
||||
);
|
||||
}
|
||||
AllowedResult::Error => {
|
||||
let allowed_targets = allowed_targets.allowed_targets();
|
||||
let (applied, only) =
|
||||
allowed_targets_applied(allowed_targets, target, self.features);
|
||||
self.dcx().emit_err(InvalidTarget {
|
||||
span: attr_span,
|
||||
name: attr_name,
|
||||
let (applied, only) = allowed_targets_applied(allowed_targets, target, cx.features);
|
||||
let name = cx.attr_path.clone();
|
||||
cx.dcx().emit_err(InvalidTarget {
|
||||
span: cx.attr_span.clone(),
|
||||
name,
|
||||
target: target.plural_name(),
|
||||
only: if only { "only " } else { "" },
|
||||
applied: DiagArgValue::StrListSepByAnd(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue