Skip to content

Commit f0e241d

Browse files
authored
Unrolled build for #145507
Rollup merge of #145507 - jdonszelmann:refactor-attr-parsing, r=davidtwco Refactor attribute parsing to improve ergonomics and some diagnostics
2 parents 6ba0ce4 + becefdd commit f0e241d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+884
-918
lines changed

Cargo.lock

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3481,7 +3481,6 @@ dependencies = [
34813481
name = "rustc_attr_parsing"
34823482
version = "0.0.0"
34833483
dependencies = [
3484-
"itertools",
34853484
"rustc_abi",
34863485
"rustc_ast",
34873486
"rustc_ast_pretty",

compiler/rustc_attr_parsing/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ edition = "2024"
55

66
[dependencies]
77
# tidy-alphabetical-start
8-
itertools = "0.12"
98
rustc_abi = { path = "../rustc_abi" }
109
rustc_ast = { path = "../rustc_ast" }
1110
rustc_ast_pretty = { path = "../rustc_ast_pretty" }

compiler/rustc_attr_parsing/src/attributes/allow_unstable.rs

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,6 @@
11
use std::iter;
22

3-
use rustc_feature::{AttributeTemplate, template};
4-
use rustc_hir::attrs::AttributeKind;
5-
use rustc_hir::{MethodKind, Target};
6-
use rustc_span::{Span, Symbol, sym};
7-
8-
use super::{CombineAttributeParser, ConvertFn};
9-
use crate::context::MaybeWarn::{Allow, Warn};
10-
use crate::context::{AcceptContext, AllowedTargets, Stage};
11-
use crate::parser::ArgParser;
3+
use super::prelude::*;
124
use crate::session_diagnostics;
135

146
pub(crate) struct AllowInternalUnstableParser;

compiler/rustc_attr_parsing/src/attributes/body.rs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,6 @@
11
//! Attributes that can be found in function body.
22
3-
use rustc_hir::Target;
4-
use rustc_hir::attrs::AttributeKind;
5-
use rustc_span::{Symbol, sym};
6-
7-
use super::{NoArgsAttributeParser, OnDuplicate};
8-
use crate::context::MaybeWarn::Allow;
9-
use crate::context::{AllowedTargets, Stage};
3+
use super::prelude::*;
104

115
pub(crate) struct CoroutineParser;
126

compiler/rustc_attr_parsing/src/attributes/codegen_attrs.rs

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,7 @@
1-
use rustc_feature::{AttributeTemplate, template};
2-
use rustc_hir::attrs::{AttributeKind, CoverageAttrKind, OptimizeAttr, UsedBy};
3-
use rustc_hir::{MethodKind, Target};
1+
use rustc_hir::attrs::{CoverageAttrKind, OptimizeAttr, UsedBy};
42
use rustc_session::parse::feature_err;
5-
use rustc_span::{Span, Symbol, sym};
6-
7-
use super::{
8-
AcceptMapping, AttributeOrder, AttributeParser, CombineAttributeParser, ConvertFn,
9-
NoArgsAttributeParser, OnDuplicate, SingleAttributeParser,
10-
};
11-
use crate::context::MaybeWarn::{Allow, Warn};
12-
use crate::context::{AcceptContext, AllowedTargets, FinalizeContext, Stage};
13-
use crate::parser::ArgParser;
3+
4+
use super::prelude::*;
145
use crate::session_diagnostics::{NakedFunctionIncompatibleAttribute, NullOnExport};
156

167
pub(crate) struct OptimizeParser;

compiler/rustc_attr_parsing/src/attributes/confusables.rs

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,6 @@
1-
use rustc_feature::template;
2-
use rustc_hir::attrs::AttributeKind;
3-
use rustc_hir::{MethodKind, Target};
4-
use rustc_span::{Span, Symbol, sym};
5-
use thin_vec::ThinVec;
6-
7-
use super::{AcceptMapping, AttributeParser};
8-
use crate::context::MaybeWarn::Allow;
9-
use crate::context::{AllowedTargets, FinalizeContext, Stage};
10-
use crate::session_diagnostics;
1+
use super::prelude::*;
2+
use crate::session_diagnostics::EmptyConfusables;
3+
114
#[derive(Default)]
125
pub(crate) struct ConfusablesParser {
136
confusables: ThinVec<Symbol>,
@@ -25,7 +18,7 @@ impl<S: Stage> AttributeParser<S> for ConfusablesParser {
2518
};
2619

2720
if list.is_empty() {
28-
cx.emit_err(session_diagnostics::EmptyConfusables { span: cx.attr_span });
21+
cx.emit_err(EmptyConfusables { span: cx.attr_span });
2922
}
3023

3124
for param in list.mixed() {

compiler/rustc_attr_parsing/src/attributes/deprecation.rs

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
1-
use rustc_feature::{AttributeTemplate, template};
2-
use rustc_hir::attrs::{AttributeKind, DeprecatedSince, Deprecation};
3-
use rustc_hir::{MethodKind, Target};
4-
use rustc_span::{Span, Symbol, sym};
1+
use rustc_hir::attrs::{DeprecatedSince, Deprecation};
52

3+
use super::prelude::*;
64
use super::util::parse_version;
7-
use super::{AttributeOrder, OnDuplicate, SingleAttributeParser};
8-
use crate::context::MaybeWarn::{Allow, Error};
9-
use crate::context::{AcceptContext, AllowedTargets, Stage};
10-
use crate::parser::ArgParser;
11-
use crate::session_diagnostics;
5+
use crate::session_diagnostics::{
6+
DeprecatedItemSuggestion, InvalidSince, MissingNote, MissingSince,
7+
};
8+
129
pub(crate) struct DeprecationParser;
1310

1411
fn get<S: Stage>(
@@ -102,7 +99,7 @@ impl<S: Stage> SingleAttributeParser<S> for DeprecationParser {
10299
}
103100
Some(name @ sym::suggestion) => {
104101
if !features.deprecated_suggestion() {
105-
cx.emit_err(session_diagnostics::DeprecatedItemSuggestion {
102+
cx.emit_err(DeprecatedItemSuggestion {
106103
span: param.span(),
107104
is_nightly: cx.sess().is_nightly_build(),
108105
details: (),
@@ -144,18 +141,18 @@ impl<S: Stage> SingleAttributeParser<S> for DeprecationParser {
144141
} else if let Some(version) = parse_version(since) {
145142
DeprecatedSince::RustcVersion(version)
146143
} else {
147-
cx.emit_err(session_diagnostics::InvalidSince { span: cx.attr_span });
144+
cx.emit_err(InvalidSince { span: cx.attr_span });
148145
DeprecatedSince::Err
149146
}
150147
} else if is_rustc {
151-
cx.emit_err(session_diagnostics::MissingSince { span: cx.attr_span });
148+
cx.emit_err(MissingSince { span: cx.attr_span });
152149
DeprecatedSince::Err
153150
} else {
154151
DeprecatedSince::Unspecified
155152
};
156153

157154
if is_rustc && note.is_none() {
158-
cx.emit_err(session_diagnostics::MissingNote { span: cx.attr_span });
155+
cx.emit_err(MissingNote { span: cx.attr_span });
159156
return None;
160157
}
161158

compiler/rustc_attr_parsing/src/attributes/dummy.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ use rustc_hir::attrs::AttributeKind;
33
use rustc_span::{Symbol, sym};
44

55
use crate::attributes::{AttributeOrder, OnDuplicate, SingleAttributeParser};
6-
use crate::context::{ALL_TARGETS, AcceptContext, AllowedTargets, Stage};
6+
use crate::context::{AcceptContext, Stage};
77
use crate::parser::ArgParser;
8+
use crate::target_checking::{ALL_TARGETS, AllowedTargets};
9+
810
pub(crate) struct DummyParser;
911
impl<S: Stage> SingleAttributeParser<S> for DummyParser {
1012
const PATH: &[Symbol] = &[sym::rustc_dummy];

compiler/rustc_attr_parsing/src/attributes/inline.rs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,10 @@
22
// note: need to model better how duplicate attr errors work when not using
33
// SingleAttributeParser which is what we have two of here.
44

5-
use rustc_feature::{AttributeTemplate, template};
65
use rustc_hir::attrs::{AttributeKind, InlineAttr};
7-
use rustc_hir::lints::AttributeLintKind;
8-
use rustc_hir::{MethodKind, Target};
9-
use rustc_span::{Symbol, sym};
106

11-
use super::{AcceptContext, AttributeOrder, OnDuplicate};
12-
use crate::attributes::SingleAttributeParser;
13-
use crate::context::MaybeWarn::{Allow, Warn};
14-
use crate::context::{AllowedTargets, Stage};
15-
use crate::parser::ArgParser;
7+
use super::prelude::*;
8+
169
pub(crate) struct InlineParser;
1710

1811
impl<S: Stage> SingleAttributeParser<S> for InlineParser {

compiler/rustc_attr_parsing/src/attributes/link_attrs.rs

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,10 @@
1-
use rustc_feature::{AttributeTemplate, template};
21
use rustc_hir::attrs::AttributeKind::{LinkName, LinkOrdinal, LinkSection};
3-
use rustc_hir::attrs::{AttributeKind, Linkage};
4-
use rustc_hir::{MethodKind, Target};
5-
use rustc_span::{Span, Symbol, sym};
6-
7-
use crate::attributes::{
8-
AttributeOrder, NoArgsAttributeParser, OnDuplicate, SingleAttributeParser,
9-
};
10-
use crate::context::MaybeWarn::Allow;
11-
use crate::context::{ALL_TARGETS, AcceptContext, AllowedTargets, Stage, parse_single_integer};
12-
use crate::parser::ArgParser;
2+
use rustc_hir::attrs::Linkage;
3+
4+
use super::prelude::*;
5+
use super::util::parse_single_integer;
136
use crate::session_diagnostics::{LinkOrdinalOutOfRange, NullOnLinkSection};
7+
148
pub(crate) struct LinkNameParser;
159

1610
impl<S: Stage> SingleAttributeParser<S> for LinkNameParser {

0 commit comments

Comments
 (0)