Skip to content

Commit 78b19a9

Browse files
committed
passes: migrate half of check_attr
Migrate half of the `rustc_passes::check_attr` diagnostics to using diagnostic derives and being translatable.
1 parent 81cf229 commit 78b19a9

27 files changed

+844
-524
lines changed

Cargo.lock

+1
Original file line numberDiff line numberDiff line change
@@ -4239,6 +4239,7 @@ dependencies = [
42394239
"rustc_hir",
42404240
"rustc_index",
42414241
"rustc_lexer",
4242+
"rustc_macros",
42424243
"rustc_middle",
42434244
"rustc_serialize",
42444245
"rustc_session",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
-passes-previously-accepted =
2+
this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
3+
4+
-passes-see-issue =
5+
see issue #{$issue} <https://github.com/rust-lang/rust/issues/{$issue}> for more information
6+
7+
passes-outer-crate-level-attr =
8+
crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
9+
10+
passes-inner-crate-level-attr =
11+
crate-level attribute should be in the root module
12+
13+
passes-ignored-attr-with-macro = `#[{$sym}]` is ignored on struct fields, match arms and macro defs
14+
.warn = {-passes-previously-accepted}
15+
.note = {-passes-see-issue(issue: "80564")}
16+
17+
passes-ignored-attr = `#[{$sym}]` is ignored on struct fields and match arms
18+
.warn = {-passes-previously-accepted}
19+
.note = {-passes-see-issue(issue: "80564")}
20+
21+
passes-inline-ignored-function-prototype = `#[inline]` is ignored on function prototypes
22+
23+
passes-inline-ignored-constants = `#[inline]` is ignored on constants
24+
.warn = {-passes-previously-accepted}
25+
.note = {-passes-see-issue(issue: "65833")}
26+
27+
passes-inline-not-fn-or-closure = attribute should be applied to function or closure
28+
.label = not a function or closure
29+
30+
passes-no-coverage-ignored-function-prototype = `#[no_coverage]` is ignored on function prototypes
31+
32+
passes-no-coverage-propagate =
33+
`#[no_coverage]` does not propagate into items and must be applied to the contained functions directly
34+
35+
passes-no-coverage-fn-defn = `#[no_coverage]` may only be applied to function definitions
36+
37+
passes-no-coverage-not-coverable = `#[no_coverage]` must be applied to coverable code
38+
.label = not coverable code
39+
40+
passes-should-be-applied-to-fn = attribute should be applied to a function definition
41+
.label = not a function definition
42+
43+
passes-naked-tracked-caller = cannot use `#[track_caller]` with `#[naked]`
44+
45+
passes-should-be-applied-to-struct-enum = attribute should be applied to a struct or enum
46+
.label = not a struct or enum
47+
48+
passes-should-be-applied-to-trait = attribute should be applied to a trait
49+
.label = not a trait
50+
51+
passes-target-feature-on-statement = {passes-should-be-applied-to-fn}
52+
.warn = {-passes-previously-accepted}
53+
.label = {passes-should-be-applied-to-fn.label}
54+
55+
passes-should-be-applied-to-static = attribute should be applied to a static
56+
.label = not a static
57+
58+
passes-doc-expect-str = doc {$attr_name} attribute expects a string: #[doc({$attr_name} = "a")]
59+
60+
passes-doc-alias-empty = {$attr_str} attribute cannot have empty value
61+
62+
passes-doc-alias-bad-char = {$char_} character isn't allowed in {$attr_str}
63+
64+
passes-doc-alias-start-end = {$attr_str} cannot start or end with ' '
65+
66+
passes-doc-alias-bad-location = {$attr_str} isn't allowed on {$location}
67+
68+
passes-doc-alias-not-an-alias = {$attr_str} is the same as the item's name
69+
70+
passes-doc-alias-duplicated = doc alias is duplicated
71+
.label = first defined here
72+
73+
passes-doc-alias-not-string-literal = `#[doc(alias("a"))]` expects string literals
74+
75+
passes-doc-alias-malformed =
76+
doc alias attribute expects a string `#[doc(alias = "a")]` or a list of strings `#[doc(alias("a", "b"))]`
77+
78+
passes-doc-keyword-empty-mod = `#[doc(keyword = "...")]` should be used on empty modules
79+
80+
passes-doc-keyword-not-mod = `#[doc(keyword = "...")]` should be used on modules
81+
82+
passes-doc-keyword-invalid-ident = `{$doc_keyword}` is not a valid identifier
83+
84+
passes-doc-tuple-variadic-not-first =
85+
`#[doc(tuple_variadic)]` must be used on the first of a set of tuple trait impls with varying arity
86+
87+
passes-doc-keyword-only-impl = `#[doc(keyword = "...")]` should be used on impl blocks
88+
89+
passes-doc-inline-conflict-first = this attribute...
90+
passes-doc-inline-conflict-second = ...conflicts with this attribute
91+
passes-doc-inline-conflict = conflicting doc inlining attributes
92+
.help = remove one of the conflicting attributes
93+
94+
passes-doc-inline-only-use = this attribute can only be applied to a `use` item
95+
.label = only applicable on `use` items
96+
.not-a-use-item-label = not a `use` item
97+
.note = read <https://doc.rust-lang.org/nightly/rustdoc/the-doc-attribute.html#inline-and-no_inline> for more information
98+
99+
passes-doc-attr-not-crate-level =
100+
`#![doc({$attr_name} = "...")]` isn't allowed as a crate-level attribute
101+
102+
passes-attr-crate-level = this attribute can only be applied at the crate level
103+
.suggestion = to apply to the crate, use an inner attribute
104+
.help = to apply to the crate, use an inner attribute
105+
.note = read <https://doc.rust-lang.org/nightly/rustdoc/the-doc-attribute.html#at-the-crate-level> for more information
106+
107+
passes-doc-test-unknown = unknown `doc(test)` attribute `{$path}`
108+
109+
passes-doc-test-takes-list = `#[doc(test(...)]` takes a list of attributes
110+
111+
passes-doc-primitive = `doc(primitive)` should never have been stable
112+
113+
passes-doc-test-unknown-any = unknown `doc` attribute `{$path}`
114+
115+
passes-doc-test-unknown-spotlight = unknown `doc` attribute `{$path}`
116+
.note = `doc(spotlight)` was renamed to `doc(notable_trait)`
117+
.suggestion = use `notable_trait` instead
118+
.no-op-note = `doc(spotlight)` is now a no-op
119+
120+
passes-doc-test-unknown-include = unknown `doc` attribute `{$path}`
121+
.suggestion = use `doc = include_str!` instead
122+
123+
passes-doc-invalid = invalid `doc` attribute
124+
125+
passes-pass-by-value = `pass_by_value` attribute should be applied to a struct, enum or type alias
126+
.label = is not a struct, enum or type alias
127+
128+
passes-allow-incoherent-impl =
129+
`rustc_allow_incoherent_impl` attribute should be applied to impl items.
130+
.label = the only currently supported targets are inherent methods
131+
132+
passes-has-incoherent-inherent-impl =
133+
`rustc_has_incoherent_inherent_impls` attribute should be applied to types or traits.
134+
.label = only adts, extern types and traits are supported
135+
136+
passes-must-use-async =
137+
`must_use` attribute on `async` functions applies to the anonymous `Future` returned by the function, not the value within
138+
.label = this attribute does nothing, the `Future`s returned by async functions are already `must_use`
139+
140+
passes-must-use-no-effect = `#[must_use]` has no effect when applied to {$article} {$target}
141+
142+
passes-must-not-suspend = `must_not_suspend` attribute should be applied to a struct, enum, or trait
143+
.label = is not a struct, enum, or trait
144+
145+
passes-cold = {passes-should-be-applied-to-fn}
146+
.warn = {-passes-previously-accepted}
147+
.label = {passes-should-be-applied-to-fn.label}
148+
149+
passes-link = attribute should be applied to an `extern` block with non-Rust ABI
150+
.warn = {-passes-previously-accepted}
151+
.label = not an `extern` block

compiler/rustc_error_messages/src/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ fluent_messages! {
3737
expand => "../locales/en-US/expand.ftl",
3838
lint => "../locales/en-US/lint.ftl",
3939
parser => "../locales/en-US/parser.ftl",
40+
passes => "../locales/en-US/passes.ftl",
4041
privacy => "../locales/en-US/privacy.ftl",
4142
typeck => "../locales/en-US/typeck.ftl",
4243
}

compiler/rustc_errors/src/diagnostic.rs

+1
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ into_diagnostic_arg_using_display!(
6464
i128,
6565
u128,
6666
std::num::NonZeroU32,
67+
hir::Target,
6768
Edition,
6869
Ident,
6970
);

compiler/rustc_passes/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ rustc_hir = { path = "../rustc_hir" }
1515
rustc_index = { path = "../rustc_index" }
1616
rustc_session = { path = "../rustc_session" }
1717
rustc_target = { path = "../rustc_target" }
18+
rustc_macros = { path = "../rustc_macros" }
1819
rustc_ast = { path = "../rustc_ast" }
1920
rustc_serialize = { path = "../rustc_serialize" }
2021
rustc_span = { path = "../rustc_span" }

0 commit comments

Comments
 (0)