Add more docs to templates for attrs with incorrect arguments

This commit is contained in:
Esteban Küber
2025-08-11 17:02:32 +00:00
parent 413ca5d9f0
commit 32ee26c625
39 changed files with 240 additions and 71 deletions

View File

@@ -16,7 +16,10 @@ use crate::{
CfgMatchesLintEmitter, fluent_generated, parse_version, session_diagnostics, try_gate_cfg, CfgMatchesLintEmitter, fluent_generated, parse_version, session_diagnostics, try_gate_cfg,
}; };
pub const CFG_TEMPLATE: AttributeTemplate = template!(List: &["predicate"]); pub const CFG_TEMPLATE: AttributeTemplate = template!(
List: &["predicate"],
"https://doc.rust-lang.org/reference/conditional-compilation.html#the-cfg-attribute"
);
pub fn parse_cfg_attr<'c, S: Stage>( pub fn parse_cfg_attr<'c, S: Stage>(
cx: &'c mut AcceptContext<'_, '_, S>, cx: &'c mut AcceptContext<'_, '_, S>,

View File

@@ -18,7 +18,11 @@ impl<S: Stage> SingleAttributeParser<S> for InlineParser {
const PATH: &'static [Symbol] = &[sym::inline]; const PATH: &'static [Symbol] = &[sym::inline];
const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepOutermost; const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepOutermost;
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::WarnButFutureError; const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::WarnButFutureError;
const TEMPLATE: AttributeTemplate = template!(Word, List: &["always", "never"]); const TEMPLATE: AttributeTemplate = template!(
Word,
List: &["always", "never"],
"https://doc.rust-lang.org/reference/attributes/codegen.html#the-inline-attribute"
);
fn convert(cx: &mut AcceptContext<'_, '_, S>, args: &ArgParser<'_>) -> Option<AttributeKind> { fn convert(cx: &mut AcceptContext<'_, '_, S>, args: &ArgParser<'_>) -> Option<AttributeKind> {
match args { match args {

View File

@@ -16,7 +16,10 @@ impl<S: Stage> SingleAttributeParser<S> for LinkNameParser {
const PATH: &[Symbol] = &[sym::link_name]; const PATH: &[Symbol] = &[sym::link_name];
const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepInnermost; const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepInnermost;
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::WarnButFutureError; const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::WarnButFutureError;
const TEMPLATE: AttributeTemplate = template!(NameValueStr: "name"); const TEMPLATE: AttributeTemplate = template!(
NameValueStr: "name",
"https://doc.rust-lang.org/reference/items/external-blocks.html#the-link_name-attribute"
);
fn convert(cx: &mut AcceptContext<'_, '_, S>, args: &ArgParser<'_>) -> Option<AttributeKind> { fn convert(cx: &mut AcceptContext<'_, '_, S>, args: &ArgParser<'_>) -> Option<AttributeKind> {
let Some(nv) = args.name_value() else { let Some(nv) = args.name_value() else {
@@ -38,7 +41,10 @@ impl<S: Stage> SingleAttributeParser<S> for LinkSectionParser {
const PATH: &[Symbol] = &[sym::link_section]; const PATH: &[Symbol] = &[sym::link_section];
const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepInnermost; const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepInnermost;
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::WarnButFutureError; const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::WarnButFutureError;
const TEMPLATE: AttributeTemplate = template!(NameValueStr: "name"); const TEMPLATE: AttributeTemplate = template!(
NameValueStr: "name",
"https://doc.rust-lang.org/reference/abi.html#the-link_section-attribute"
);
fn convert(cx: &mut AcceptContext<'_, '_, S>, args: &ArgParser<'_>) -> Option<AttributeKind> { fn convert(cx: &mut AcceptContext<'_, '_, S>, args: &ArgParser<'_>) -> Option<AttributeKind> {
let Some(nv) = args.name_value() else { let Some(nv) = args.name_value() else {
@@ -94,7 +100,10 @@ impl<S: Stage> SingleAttributeParser<S> for LinkOrdinalParser {
const PATH: &[Symbol] = &[sym::link_ordinal]; const PATH: &[Symbol] = &[sym::link_ordinal];
const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepOutermost; const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepOutermost;
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error; const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
const TEMPLATE: AttributeTemplate = template!(List: &["ordinal"]); const TEMPLATE: AttributeTemplate = template!(
List: &["ordinal"],
"https://doc.rust-lang.org/reference/items/external-blocks.html#the-link_ordinal-attribute"
);
fn convert(cx: &mut AcceptContext<'_, '_, S>, args: &ArgParser<'_>) -> Option<AttributeKind> { fn convert(cx: &mut AcceptContext<'_, '_, S>, args: &ArgParser<'_>) -> Option<AttributeKind> {
let ordinal = parse_single_integer(cx, args)?; let ordinal = parse_single_integer(cx, args)?;

View File

@@ -31,7 +31,10 @@ pub(crate) struct MacroUseParser {
first_span: Option<Span>, first_span: Option<Span>,
} }
const MACRO_USE_TEMPLATE: AttributeTemplate = template!(Word, List: &["name1, name2, ..."]); const MACRO_USE_TEMPLATE: AttributeTemplate = template!(
Word, List: &["name1, name2, ..."],
"https://doc.rust-lang.org/reference/macros-by-example.html#the-macro_use-attribute"
);
impl<S: Stage> AttributeParser<S> for MacroUseParser { impl<S: Stage> AttributeParser<S> for MacroUseParser {
const ATTRIBUTES: AcceptMapping<Self, S> = &[( const ATTRIBUTES: AcceptMapping<Self, S> = &[(

View File

@@ -14,7 +14,10 @@ impl<S: Stage> SingleAttributeParser<S> for MustUseParser {
const PATH: &[Symbol] = &[sym::must_use]; const PATH: &[Symbol] = &[sym::must_use];
const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepOutermost; const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepOutermost;
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::WarnButFutureError; const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::WarnButFutureError;
const TEMPLATE: AttributeTemplate = template!(Word, NameValueStr: "reason"); const TEMPLATE: AttributeTemplate = template!(
Word, NameValueStr: "reason",
"https://doc.rust-lang.org/reference/attributes/diagnostics.html#the-must_use-attribute"
);
fn convert(cx: &mut AcceptContext<'_, '_, S>, args: &ArgParser<'_>) -> Option<AttributeKind> { fn convert(cx: &mut AcceptContext<'_, '_, S>, args: &ArgParser<'_>) -> Option<AttributeKind> {
Some(AttributeKind::MustUse { Some(AttributeKind::MustUse {

View File

@@ -12,7 +12,10 @@ impl<S: Stage> SingleAttributeParser<S> for PathParser {
const PATH: &[Symbol] = &[sym::path]; const PATH: &[Symbol] = &[sym::path];
const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepOutermost; const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepOutermost;
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::WarnButFutureError; const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::WarnButFutureError;
const TEMPLATE: AttributeTemplate = template!(NameValueStr: "file"); const TEMPLATE: AttributeTemplate = template!(
NameValueStr: "file",
"https://doc.rust-lang.org/reference/items/modules.html#the-path-attribute"
);
fn convert(cx: &mut AcceptContext<'_, '_, S>, args: &ArgParser<'_>) -> Option<AttributeKind> { fn convert(cx: &mut AcceptContext<'_, '_, S>, args: &ArgParser<'_>) -> Option<AttributeKind> {
let Some(nv) = args.name_value() else { let Some(nv) = args.name_value() else {

View File

@@ -28,8 +28,10 @@ impl<S: Stage> SingleAttributeParser<S> for ProcMacroDeriveParser {
const PATH: &[Symbol] = &[sym::proc_macro_derive]; const PATH: &[Symbol] = &[sym::proc_macro_derive];
const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepOutermost; const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepOutermost;
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error; const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
const TEMPLATE: AttributeTemplate = const TEMPLATE: AttributeTemplate = template!(
template!(List: &["TraitName", "TraitName, attributes(name1, name2, ...)"]); List: &["TraitName", "TraitName, attributes(name1, name2, ...)"],
"https://doc.rust-lang.org/reference/procedural-macros.html#derive-macros"
);
fn convert(cx: &mut AcceptContext<'_, '_, S>, args: &ArgParser<'_>) -> Option<AttributeKind> { fn convert(cx: &mut AcceptContext<'_, '_, S>, args: &ArgParser<'_>) -> Option<AttributeKind> {
let (trait_name, helper_attrs) = parse_derive_like(cx, args, true)?; let (trait_name, helper_attrs) = parse_derive_like(cx, args, true)?;

View File

@@ -26,7 +26,10 @@ impl<S: Stage> CombineAttributeParser<S> for ReprParser {
const CONVERT: ConvertFn<Self::Item> = const CONVERT: ConvertFn<Self::Item> =
|items, first_span| AttributeKind::Repr { reprs: items, first_span }; |items, first_span| AttributeKind::Repr { reprs: items, first_span };
// FIXME(jdonszelmann): never used // FIXME(jdonszelmann): never used
const TEMPLATE: AttributeTemplate = template!(List: &["C", "Rust", "transparent", "align(...)", "packed(...)", "<integer type>"]); const TEMPLATE: AttributeTemplate = template!(
List: &["C", "Rust", "transparent", "align(...)", "packed(...)", "<integer type>"],
"https://doc.rust-lang.org/reference/type-layout.html#representations"
);
fn extend<'c>( fn extend<'c>(
cx: &'c mut AcceptContext<'_, '_, S>, cx: &'c mut AcceptContext<'_, '_, S>,

View File

@@ -13,7 +13,10 @@ impl<S: Stage> SingleAttributeParser<S> for IgnoreParser {
const PATH: &[Symbol] = &[sym::ignore]; const PATH: &[Symbol] = &[sym::ignore];
const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepOutermost; const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepOutermost;
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Warn; const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Warn;
const TEMPLATE: AttributeTemplate = template!(Word, NameValueStr: "reason"); const TEMPLATE: AttributeTemplate = template!(
Word, NameValueStr: "reason",
"https://doc.rust-lang.org/reference/attributes/testing.html#the-ignore-attribute"
);
fn convert(cx: &mut AcceptContext<'_, '_, S>, args: &ArgParser<'_>) -> Option<AttributeKind> { fn convert(cx: &mut AcceptContext<'_, '_, S>, args: &ArgParser<'_>) -> Option<AttributeKind> {
Some(AttributeKind::Ignore { Some(AttributeKind::Ignore {
@@ -51,8 +54,10 @@ impl<S: Stage> SingleAttributeParser<S> for ShouldPanicParser {
const PATH: &[Symbol] = &[sym::should_panic]; const PATH: &[Symbol] = &[sym::should_panic];
const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepOutermost; const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepOutermost;
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::WarnButFutureError; const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::WarnButFutureError;
const TEMPLATE: AttributeTemplate = const TEMPLATE: AttributeTemplate = template!(
template!(Word, List: &[r#"expected = "reason""#], NameValueStr: "reason"); Word, List: &[r#"expected = "reason""#], NameValueStr: "reason",
"https://doc.rust-lang.org/reference/attributes/testing.html#the-should_panic-attribute"
);
fn convert(cx: &mut AcceptContext<'_, '_, S>, args: &ArgParser<'_>) -> Option<AttributeKind> { fn convert(cx: &mut AcceptContext<'_, '_, S>, args: &ArgParser<'_>) -> Option<AttributeKind> {
Some(AttributeKind::ShouldPanic { Some(AttributeKind::ShouldPanic {

View File

@@ -691,6 +691,9 @@ impl<'a, G: EmissionGuarantee> Diagnostic<'a, G> for AttributeParseError {
} }
} }
if let Some(link) = self.template.docs {
diag.note(format!("for more information, visit <{link}>"));
}
let suggestions = self.template.suggestions(false, &name); let suggestions = self.template.suggestions(false, &name);
diag.span_suggestions( diag.span_suggestions(
self.attr_span, self.attr_span,

View File

@@ -609,7 +609,10 @@ pub static BUILTIN_ATTRIBUTES: &[BuiltinAttribute] = &[
), ),
ungated!( ungated!(
repr, Normal, repr, Normal,
template!(List: &["C"], "https://doc.rust-lang.org/reference/type-layout.html#representations"), template!(
List: &["C", "Rust", "transparent", "align(...)", "packed(...)", "<integer type>"],
"https://doc.rust-lang.org/reference/type-layout.html#representations"
),
DuplicatesOk, EncodeCrossCrate::No DuplicatesOk, EncodeCrossCrate::No
), ),
// FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity // FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity

View File

@@ -8,21 +8,25 @@ extern crate std as s1;
#[macro_use(5)] #[macro_use(5)]
//~^ ERROR malformed `macro_use` attribute input //~^ ERROR malformed `macro_use` attribute input
//~| NOTE expected a valid identifier here //~| NOTE expected a valid identifier here
//~| NOTE for more information, visit
extern crate std as s2; extern crate std as s2;
#[macro_use(a = "b")] #[macro_use(a = "b")]
//~^ ERROR malformed `macro_use` attribute input //~^ ERROR malformed `macro_use` attribute input
//~| NOTE didn't expect any arguments here //~| NOTE didn't expect any arguments here
//~| NOTE for more information, visit
extern crate std as s3; extern crate std as s3;
#[macro_use(a(b))] #[macro_use(a(b))]
//~^ ERROR malformed `macro_use` attribute input //~^ ERROR malformed `macro_use` attribute input
//~| NOTE didn't expect any arguments here //~| NOTE didn't expect any arguments here
//~| NOTE for more information, visit
extern crate std as s4; extern crate std as s4;
#[macro_use(a::b)] #[macro_use(a::b)]
//~^ ERROR malformed `macro_use` attribute input //~^ ERROR malformed `macro_use` attribute input
//~| NOTE expected a valid identifier here //~| NOTE expected a valid identifier here
//~| NOTE for more information, visit
extern crate std as s5; extern crate std as s5;
#[macro_use(a)] #[macro_use(a)]

View File

@@ -1,11 +1,11 @@
error[E0469]: imported macro not found error[E0469]: imported macro not found
--> $DIR/invalid-macro-use.rs:47:13 --> $DIR/invalid-macro-use.rs:51:13
| |
LL | #[macro_use(a)] LL | #[macro_use(a)]
| ^ | ^
error[E0469]: imported macro not found error[E0469]: imported macro not found
--> $DIR/invalid-macro-use.rs:49:13 --> $DIR/invalid-macro-use.rs:53:13
| |
LL | #[macro_use(b)] LL | #[macro_use(b)]
| ^ | ^
@@ -24,6 +24,7 @@ LL | #[macro_use(5)]
| | | |
| expected a valid identifier here | expected a valid identifier here
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/macros-by-example.html#the-macro_use-attribute>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[macro_use(5)] LL - #[macro_use(5)]
@@ -34,13 +35,14 @@ LL + #[macro_use]
| |
error[E0565]: malformed `macro_use` attribute input error[E0565]: malformed `macro_use` attribute input
--> $DIR/invalid-macro-use.rs:13:1 --> $DIR/invalid-macro-use.rs:14:1
| |
LL | #[macro_use(a = "b")] LL | #[macro_use(a = "b")]
| ^^^^^^^^^^^^^^-----^^ | ^^^^^^^^^^^^^^-----^^
| | | |
| didn't expect any arguments here | didn't expect any arguments here
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/macros-by-example.html#the-macro_use-attribute>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[macro_use(a = "b")] LL - #[macro_use(a = "b")]
@@ -51,13 +53,14 @@ LL + #[macro_use]
| |
error[E0565]: malformed `macro_use` attribute input error[E0565]: malformed `macro_use` attribute input
--> $DIR/invalid-macro-use.rs:18:1 --> $DIR/invalid-macro-use.rs:20:1
| |
LL | #[macro_use(a(b))] LL | #[macro_use(a(b))]
| ^^^^^^^^^^^^^---^^ | ^^^^^^^^^^^^^---^^
| | | |
| didn't expect any arguments here | didn't expect any arguments here
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/macros-by-example.html#the-macro_use-attribute>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[macro_use(a(b))] LL - #[macro_use(a(b))]
@@ -68,13 +71,14 @@ LL + #[macro_use]
| |
error[E0539]: malformed `macro_use` attribute input error[E0539]: malformed `macro_use` attribute input
--> $DIR/invalid-macro-use.rs:23:1 --> $DIR/invalid-macro-use.rs:26:1
| |
LL | #[macro_use(a::b)] LL | #[macro_use(a::b)]
| ^^^^^^^^^^^^----^^ | ^^^^^^^^^^^^----^^
| | | |
| expected a valid identifier here | expected a valid identifier here
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/macros-by-example.html#the-macro_use-attribute>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[macro_use(a::b)] LL - #[macro_use(a::b)]
@@ -85,13 +89,13 @@ LL + #[macro_use]
| |
error: unused attribute error: unused attribute
--> $DIR/invalid-macro-use.rs:28:1 --> $DIR/invalid-macro-use.rs:32:1
| |
LL | #[macro_use(a)] LL | #[macro_use(a)]
| ^^^^^^^^^^^^^^^ help: remove this attribute | ^^^^^^^^^^^^^^^ help: remove this attribute
| |
note: attribute also specified here note: attribute also specified here
--> $DIR/invalid-macro-use.rs:30:1 --> $DIR/invalid-macro-use.rs:34:1
| |
LL | #[macro_use] LL | #[macro_use]
| ^^^^^^^^^^^^ | ^^^^^^^^^^^^
@@ -102,25 +106,25 @@ LL | #![deny(unused_attributes)]
| ^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^
error: unused attribute error: unused attribute
--> $DIR/invalid-macro-use.rs:36:1 --> $DIR/invalid-macro-use.rs:40:1
| |
LL | #[macro_use(a)] LL | #[macro_use(a)]
| ^^^^^^^^^^^^^^^ help: remove this attribute | ^^^^^^^^^^^^^^^ help: remove this attribute
| |
note: attribute also specified here note: attribute also specified here
--> $DIR/invalid-macro-use.rs:34:1 --> $DIR/invalid-macro-use.rs:38:1
| |
LL | #[macro_use] LL | #[macro_use]
| ^^^^^^^^^^^^ | ^^^^^^^^^^^^
error: unused attribute error: unused attribute
--> $DIR/invalid-macro-use.rs:42:1 --> $DIR/invalid-macro-use.rs:46:1
| |
LL | #[macro_use] LL | #[macro_use]
| ^^^^^^^^^^^^ help: remove this attribute | ^^^^^^^^^^^^ help: remove this attribute
| |
note: attribute also specified here note: attribute also specified here
--> $DIR/invalid-macro-use.rs:40:1 --> $DIR/invalid-macro-use.rs:44:1
| |
LL | #[macro_use] LL | #[macro_use]
| ^^^^^^^^^^^^ | ^^^^^^^^^^^^

View File

@@ -6,6 +6,8 @@ LL | #[cfg]
| | | |
| expected this to be a list | expected this to be a list
| help: must be of the form: `#[cfg(predicate)]` | help: must be of the form: `#[cfg(predicate)]`
|
= note: for more information, visit <https://doc.rust-lang.org/reference/conditional-compilation.html#the-cfg-attribute>
error: malformed `cfg_attr` attribute input error: malformed `cfg_attr` attribute input
--> $DIR/malformed-attrs.rs:101:1 --> $DIR/malformed-attrs.rs:101:1
@@ -354,7 +356,16 @@ error[E0539]: malformed `rustc_macro_transparency` attribute input
--> $DIR/malformed-attrs.rs:43:1 --> $DIR/malformed-attrs.rs:43:1
| |
LL | #[rustc_macro_transparency] LL | #[rustc_macro_transparency]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: must be of the form: `#[rustc_macro_transparency = "transparent|semitransparent|opaque"]` | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
help: try changing it to one of the following valid forms of the attribute
|
LL | #[rustc_macro_transparency = "opaque"]
| ++++++++++
LL | #[rustc_macro_transparency = "semitransparent"]
| +++++++++++++++++++
LL | #[rustc_macro_transparency = "transparent"]
| +++++++++++++++
error[E0539]: malformed `repr` attribute input error[E0539]: malformed `repr` attribute input
--> $DIR/malformed-attrs.rs:45:1 --> $DIR/malformed-attrs.rs:45:1
@@ -362,6 +373,7 @@ error[E0539]: malformed `repr` attribute input
LL | #[repr] LL | #[repr]
| ^^^^^^^ expected this to be a list | ^^^^^^^ expected this to be a list
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/type-layout.html#representations>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL | #[repr(<integer type>)] LL | #[repr(<integer type>)]
@@ -496,12 +508,16 @@ error[E0539]: malformed `link_name` attribute input
| |
LL | #[link_name] LL | #[link_name]
| ^^^^^^^^^^^^ help: must be of the form: `#[link_name = "name"]` | ^^^^^^^^^^^^ help: must be of the form: `#[link_name = "name"]`
|
= note: for more information, visit <https://doc.rust-lang.org/reference/items/external-blocks.html#the-link_name-attribute>
error[E0539]: malformed `link_section` attribute input error[E0539]: malformed `link_section` attribute input
--> $DIR/malformed-attrs.rs:85:1 --> $DIR/malformed-attrs.rs:85:1
| |
LL | #[link_section] LL | #[link_section]
| ^^^^^^^^^^^^^^^ help: must be of the form: `#[link_section = "name"]` | ^^^^^^^^^^^^^^^ help: must be of the form: `#[link_section = "name"]`
|
= note: for more information, visit <https://doc.rust-lang.org/reference/abi.html#the-link_section-attribute>
error[E0539]: malformed `coverage` attribute input error[E0539]: malformed `coverage` attribute input
--> $DIR/malformed-attrs.rs:87:1 --> $DIR/malformed-attrs.rs:87:1
@@ -560,6 +576,7 @@ LL | #[must_use = 1]
| | | |
| expected a string literal here | expected a string literal here
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/attributes/diagnostics.html#the-must_use-attribute>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[must_use = 1] LL - #[must_use = 1]
@@ -575,6 +592,7 @@ error[E0539]: malformed `proc_macro_derive` attribute input
LL | #[proc_macro_derive] LL | #[proc_macro_derive]
| ^^^^^^^^^^^^^^^^^^^^ expected this to be a list | ^^^^^^^^^^^^^^^^^^^^ expected this to be a list
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/procedural-macros.html#derive-macros>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL | #[proc_macro_derive(TraitName)] LL | #[proc_macro_derive(TraitName)]
@@ -635,6 +653,8 @@ LL | #[link_ordinal]
| | | |
| expected this to be a list | expected this to be a list
| help: must be of the form: `#[link_ordinal(ordinal)]` | help: must be of the form: `#[link_ordinal(ordinal)]`
|
= note: for more information, visit <https://doc.rust-lang.org/reference/items/external-blocks.html#the-link_ordinal-attribute>
error[E0565]: malformed `ffi_const` attribute input error[E0565]: malformed `ffi_const` attribute input
--> $DIR/malformed-attrs.rs:168:5 --> $DIR/malformed-attrs.rs:168:5

View File

@@ -4,6 +4,7 @@ error[E0539]: malformed `repr` attribute input
LL | #![repr] LL | #![repr]
| ^^^^^^^^ expected this to be a list | ^^^^^^^^ expected this to be a list
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/type-layout.html#representations>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #![repr] LL - #![repr]

View File

@@ -122,6 +122,7 @@ LL | #[proc_macro_derive(unsafe(Foo))]
| | | |
| didn't expect any arguments here | didn't expect any arguments here
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/procedural-macros.html#derive-macros>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[proc_macro_derive(unsafe(Foo))] LL - #[proc_macro_derive(unsafe(Foo))]

View File

@@ -6,6 +6,8 @@ LL | #[cfg(target(o::o))]
| | | | | |
| | expected this to be of the form `... = "..."` | | expected this to be of the form `... = "..."`
| help: must be of the form: `#[cfg(predicate)]` | help: must be of the form: `#[cfg(predicate)]`
|
= note: for more information, visit <https://doc.rust-lang.org/reference/conditional-compilation.html#the-cfg-attribute>
error[E0539]: malformed `cfg` attribute input error[E0539]: malformed `cfg` attribute input
--> $DIR/cfg-target-compact-errors.rs:9:1 --> $DIR/cfg-target-compact-errors.rs:9:1
@@ -15,6 +17,8 @@ LL | #[cfg(target(os = 8))]
| | | | | |
| | expected a string literal here | | expected a string literal here
| help: must be of the form: `#[cfg(predicate)]` | help: must be of the form: `#[cfg(predicate)]`
|
= note: for more information, visit <https://doc.rust-lang.org/reference/conditional-compilation.html#the-cfg-attribute>
error[E0539]: malformed `cfg` attribute input error[E0539]: malformed `cfg` attribute input
--> $DIR/cfg-target-compact-errors.rs:13:1 --> $DIR/cfg-target-compact-errors.rs:13:1
@@ -24,6 +28,8 @@ LL | #[cfg(target(os = "linux", pointer(width = "64")))]
| | | | | |
| | expected this to be of the form `... = "..."` | | expected this to be of the form `... = "..."`
| help: must be of the form: `#[cfg(predicate)]` | help: must be of the form: `#[cfg(predicate)]`
|
= note: for more information, visit <https://doc.rust-lang.org/reference/conditional-compilation.html#the-cfg-attribute>
error[E0539]: malformed `cfg` attribute input error[E0539]: malformed `cfg` attribute input
--> $DIR/cfg-target-compact-errors.rs:17:1 --> $DIR/cfg-target-compact-errors.rs:17:1
@@ -33,6 +39,8 @@ LL | #[cfg(target(true))]
| | | | | |
| | expected this to be of the form `... = "..."` | | expected this to be of the form `... = "..."`
| help: must be of the form: `#[cfg(predicate)]` | help: must be of the form: `#[cfg(predicate)]`
|
= note: for more information, visit <https://doc.rust-lang.org/reference/conditional-compilation.html#the-cfg-attribute>
error: `cfg` predicate key must be an identifier error: `cfg` predicate key must be an identifier
--> $DIR/cfg-target-compact-errors.rs:21:14 --> $DIR/cfg-target-compact-errors.rs:21:14

View File

@@ -1,21 +1,25 @@
#[cfg] #[cfg]
//~^ ERROR malformed `cfg` attribute //~^ ERROR malformed `cfg` attribute
//~| NOTE expected this to be a list //~| NOTE expected this to be a list
//~| NOTE for more information, visit
struct S1; struct S1;
#[cfg = 10] #[cfg = 10]
//~^ ERROR malformed `cfg` attribute //~^ ERROR malformed `cfg` attribute
//~| NOTE expected this to be a list //~| NOTE expected this to be a list
//~| NOTE for more information, visit
struct S2; struct S2;
#[cfg()] #[cfg()]
//~^ ERROR malformed `cfg` attribute //~^ ERROR malformed `cfg` attribute
//~| NOTE expected a single argument here //~| NOTE expected a single argument here
//~| NOTE for more information, visit
struct S3; struct S3;
#[cfg(a, b)] #[cfg(a, b)]
//~^ ERROR malformed `cfg` attribute //~^ ERROR malformed `cfg` attribute
//~| NOTE expected a single argument here //~| NOTE expected a single argument here
//~| NOTE for more information, visit
struct S4; struct S4;
#[cfg("str")] //~ ERROR `cfg` predicate key must be an identifier #[cfg("str")] //~ ERROR `cfg` predicate key must be an identifier
@@ -29,6 +33,7 @@ struct S7;
#[cfg(a = 10)] //~ ERROR malformed `cfg` attribute input #[cfg(a = 10)] //~ ERROR malformed `cfg` attribute input
//~^ NOTE expected a string literal here //~^ NOTE expected a string literal here
//~| NOTE for more information, visit
struct S8; struct S8;
#[cfg(a = b"hi")] //~ ERROR malformed `cfg` attribute input #[cfg(a = b"hi")] //~ ERROR malformed `cfg` attribute input

View File

@@ -6,63 +6,73 @@ LL | #[cfg]
| | | |
| expected this to be a list | expected this to be a list
| help: must be of the form: `#[cfg(predicate)]` | help: must be of the form: `#[cfg(predicate)]`
|
= note: for more information, visit <https://doc.rust-lang.org/reference/conditional-compilation.html#the-cfg-attribute>
error[E0539]: malformed `cfg` attribute input error[E0539]: malformed `cfg` attribute input
--> $DIR/cfg-attr-syntax-validation.rs:6:1 --> $DIR/cfg-attr-syntax-validation.rs:7:1
| |
LL | #[cfg = 10] LL | #[cfg = 10]
| ^^^^^^^^^^^ | ^^^^^^^^^^^
| | | |
| expected this to be a list | expected this to be a list
| help: must be of the form: `#[cfg(predicate)]` | help: must be of the form: `#[cfg(predicate)]`
|
= note: for more information, visit <https://doc.rust-lang.org/reference/conditional-compilation.html#the-cfg-attribute>
error[E0805]: malformed `cfg` attribute input error[E0805]: malformed `cfg` attribute input
--> $DIR/cfg-attr-syntax-validation.rs:11:1 --> $DIR/cfg-attr-syntax-validation.rs:13:1
| |
LL | #[cfg()] LL | #[cfg()]
| ^^^^^--^ | ^^^^^--^
| | | | | |
| | expected a single argument here | | expected a single argument here
| help: must be of the form: `#[cfg(predicate)]` | help: must be of the form: `#[cfg(predicate)]`
|
= note: for more information, visit <https://doc.rust-lang.org/reference/conditional-compilation.html#the-cfg-attribute>
error[E0805]: malformed `cfg` attribute input error[E0805]: malformed `cfg` attribute input
--> $DIR/cfg-attr-syntax-validation.rs:16:1 --> $DIR/cfg-attr-syntax-validation.rs:19:1
| |
LL | #[cfg(a, b)] LL | #[cfg(a, b)]
| ^^^^^------^ | ^^^^^------^
| | | | | |
| | expected a single argument here | | expected a single argument here
| help: must be of the form: `#[cfg(predicate)]` | help: must be of the form: `#[cfg(predicate)]`
|
= note: for more information, visit <https://doc.rust-lang.org/reference/conditional-compilation.html#the-cfg-attribute>
error: `cfg` predicate key must be an identifier error: `cfg` predicate key must be an identifier
--> $DIR/cfg-attr-syntax-validation.rs:21:7 --> $DIR/cfg-attr-syntax-validation.rs:25:7
| |
LL | #[cfg("str")] LL | #[cfg("str")]
| ^^^^^ | ^^^^^
error: `cfg` predicate key must be an identifier error: `cfg` predicate key must be an identifier
--> $DIR/cfg-attr-syntax-validation.rs:24:7 --> $DIR/cfg-attr-syntax-validation.rs:28:7
| |
LL | #[cfg(a::b)] LL | #[cfg(a::b)]
| ^^^^ | ^^^^
error[E0537]: invalid predicate `a` error[E0537]: invalid predicate `a`
--> $DIR/cfg-attr-syntax-validation.rs:27:7 --> $DIR/cfg-attr-syntax-validation.rs:31:7
| |
LL | #[cfg(a())] LL | #[cfg(a())]
| ^^^ | ^^^
error[E0539]: malformed `cfg` attribute input error[E0539]: malformed `cfg` attribute input
--> $DIR/cfg-attr-syntax-validation.rs:30:1 --> $DIR/cfg-attr-syntax-validation.rs:34:1
| |
LL | #[cfg(a = 10)] LL | #[cfg(a = 10)]
| ^^^^^^^^^^--^^ | ^^^^^^^^^^--^^
| | | | | |
| | expected a string literal here | | expected a string literal here
| help: must be of the form: `#[cfg(predicate)]` | help: must be of the form: `#[cfg(predicate)]`
|
= note: for more information, visit <https://doc.rust-lang.org/reference/conditional-compilation.html#the-cfg-attribute>
error[E0539]: malformed `cfg` attribute input error[E0539]: malformed `cfg` attribute input
--> $DIR/cfg-attr-syntax-validation.rs:34:1 --> $DIR/cfg-attr-syntax-validation.rs:39:1
| |
LL | #[cfg(a = b"hi")] LL | #[cfg(a = b"hi")]
| ^^^^^^^^^^-^^^^^^ | ^^^^^^^^^^-^^^^^^
@@ -72,7 +82,7 @@ LL | #[cfg(a = b"hi")]
= note: expected a normal string literal, not a byte string literal = note: expected a normal string literal, not a byte string literal
error: expected unsuffixed literal, found `expr` metavariable error: expected unsuffixed literal, found `expr` metavariable
--> $DIR/cfg-attr-syntax-validation.rs:40:25 --> $DIR/cfg-attr-syntax-validation.rs:45:25
| |
LL | #[cfg(feature = $expr)] LL | #[cfg(feature = $expr)]
| ^^^^^ | ^^^^^

View File

@@ -6,6 +6,7 @@ LL | #[inline()]
| | | |
| expected a single argument here | expected a single argument here
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/attributes/codegen.html#the-inline-attribute>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL | #[inline(always)] LL | #[inline(always)]

View File

@@ -17,6 +17,7 @@ extern "C" {
#[link_name] #[link_name]
//~^ ERROR malformed `link_name` attribute input //~^ ERROR malformed `link_name` attribute input
//~| HELP must be of the form //~| HELP must be of the form
//~| NOTE for more information, visit
extern "C" { extern "C" {
fn bar() -> u32; fn bar() -> u32;
} }

View File

@@ -3,6 +3,8 @@ error[E0539]: malformed `link_name` attribute input
| |
LL | #[link_name] LL | #[link_name]
| ^^^^^^^^^^^^ help: must be of the form: `#[link_name = "name"]` | ^^^^^^^^^^^^ help: must be of the form: `#[link_name = "name"]`
|
= note: for more information, visit <https://doc.rust-lang.org/reference/items/external-blocks.html#the-link_name-attribute>
warning: attribute should be applied to a foreign function or static warning: attribute should be applied to a foreign function or static
--> $DIR/issue-47725.rs:3:1 --> $DIR/issue-47725.rs:3:1

View File

@@ -6,6 +6,7 @@ LL | #[inline(please,no)]
| | | |
| expected a single argument here | expected a single argument here
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/attributes/codegen.html#the-inline-attribute>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[inline(please,no)] LL - #[inline(please,no)]
@@ -26,6 +27,7 @@ LL | #[inline()]
| | | |
| expected a single argument here | expected a single argument here
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/attributes/codegen.html#the-inline-attribute>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL | #[inline(always)] LL | #[inline(always)]

View File

@@ -6,6 +6,7 @@ LL | #[inline(XYZ)]
| | | |
| valid arguments are `always` or `never` | valid arguments are `always` or `never`
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/attributes/codegen.html#the-inline-attribute>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[inline(XYZ)] LL - #[inline(XYZ)]
@@ -42,6 +43,7 @@ error[E0539]: malformed `repr` attribute input
LL | #[repr] LL | #[repr]
| ^^^^^^^ expected this to be a list | ^^^^^^^ expected this to be a list
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/type-layout.html#representations>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL | #[repr(<integer type>)] LL | #[repr(<integer type>)]
@@ -62,6 +64,7 @@ LL | #[inline(ABC)]
| | | |
| valid arguments are `always` or `never` | valid arguments are `always` or `never`
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/attributes/codegen.html#the-inline-attribute>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[inline(ABC)] LL - #[inline(ABC)]
@@ -80,6 +83,7 @@ error[E0539]: malformed `repr` attribute input
LL | let _z = #[repr] 1; LL | let _z = #[repr] 1;
| ^^^^^^^ expected this to be a list | ^^^^^^^ expected this to be a list
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/type-layout.html#representations>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL | let _z = #[repr(<integer type>)] 1; LL | let _z = #[repr(<integer type>)] 1;

View File

@@ -6,6 +6,8 @@ LL | #[link_ordinal("JustMonika")]
| | | | | |
| | expected an integer literal here | | expected an integer literal here
| help: must be of the form: `#[link_ordinal(ordinal)]` | help: must be of the form: `#[link_ordinal(ordinal)]`
|
= note: for more information, visit <https://doc.rust-lang.org/reference/items/external-blocks.html#the-link_ordinal-attribute>
error[E0539]: malformed `link_ordinal` attribute input error[E0539]: malformed `link_ordinal` attribute input
--> $DIR/link-ordinal-invalid-format.rs:6:5 --> $DIR/link-ordinal-invalid-format.rs:6:5
@@ -15,6 +17,8 @@ LL | #[link_ordinal("JustMonika")]
| | | | | |
| | expected an integer literal here | | expected an integer literal here
| help: must be of the form: `#[link_ordinal(ordinal)]` | help: must be of the form: `#[link_ordinal(ordinal)]`
|
= note: for more information, visit <https://doc.rust-lang.org/reference/items/external-blocks.html#the-link_ordinal-attribute>
error: aborting due to 2 previous errors error: aborting due to 2 previous errors

View File

@@ -3,10 +3,12 @@ extern "C" {
#[link_ordinal()] #[link_ordinal()]
//~^ ERROR malformed `link_ordinal` attribute input //~^ ERROR malformed `link_ordinal` attribute input
//~| NOTE expected a single argument //~| NOTE expected a single argument
//~| NOTE for more information, visit
fn foo(); fn foo();
#[link_ordinal()] #[link_ordinal()]
//~^ ERROR malformed `link_ordinal` attribute input //~^ ERROR malformed `link_ordinal` attribute input
//~| NOTE expected a single argument //~| NOTE expected a single argument
//~| NOTE for more information, visit
static mut imported_variable: i32; static mut imported_variable: i32;
} }

View File

@@ -6,15 +6,19 @@ LL | #[link_ordinal()]
| | | | | |
| | expected a single argument here | | expected a single argument here
| help: must be of the form: `#[link_ordinal(ordinal)]` | help: must be of the form: `#[link_ordinal(ordinal)]`
|
= note: for more information, visit <https://doc.rust-lang.org/reference/items/external-blocks.html#the-link_ordinal-attribute>
error[E0805]: malformed `link_ordinal` attribute input error[E0805]: malformed `link_ordinal` attribute input
--> $DIR/link-ordinal-missing-argument.rs:7:5 --> $DIR/link-ordinal-missing-argument.rs:8:5
| |
LL | #[link_ordinal()] LL | #[link_ordinal()]
| ^^^^^^^^^^^^^^--^ | ^^^^^^^^^^^^^^--^
| | | | | |
| | expected a single argument here | | expected a single argument here
| help: must be of the form: `#[link_ordinal(ordinal)]` | help: must be of the form: `#[link_ordinal(ordinal)]`
|
= note: for more information, visit <https://doc.rust-lang.org/reference/items/external-blocks.html#the-link_ordinal-attribute>
error: aborting due to 2 previous errors error: aborting due to 2 previous errors

View File

@@ -3,10 +3,12 @@ extern "C" {
#[link_ordinal(3, 4)] #[link_ordinal(3, 4)]
//~^ ERROR malformed `link_ordinal` attribute input //~^ ERROR malformed `link_ordinal` attribute input
//~| NOTE expected a single argument //~| NOTE expected a single argument
//~| NOTE for more information, visit
fn foo(); fn foo();
#[link_ordinal(3, 4)] #[link_ordinal(3, 4)]
//~^ ERROR malformed `link_ordinal` attribute input //~^ ERROR malformed `link_ordinal` attribute input
//~| NOTE expected a single argument //~| NOTE expected a single argument
//~| NOTE for more information, visit
static mut imported_variable: i32; static mut imported_variable: i32;
} }

View File

@@ -6,15 +6,19 @@ LL | #[link_ordinal(3, 4)]
| | | | | |
| | expected a single argument here | | expected a single argument here
| help: must be of the form: `#[link_ordinal(ordinal)]` | help: must be of the form: `#[link_ordinal(ordinal)]`
|
= note: for more information, visit <https://doc.rust-lang.org/reference/items/external-blocks.html#the-link_ordinal-attribute>
error[E0805]: malformed `link_ordinal` attribute input error[E0805]: malformed `link_ordinal` attribute input
--> $DIR/link-ordinal-too-many-arguments.rs:7:5 --> $DIR/link-ordinal-too-many-arguments.rs:8:5
| |
LL | #[link_ordinal(3, 4)] LL | #[link_ordinal(3, 4)]
| ^^^^^^^^^^^^^^------^ | ^^^^^^^^^^^^^^------^
| | | | | |
| | expected a single argument here | | expected a single argument here
| help: must be of the form: `#[link_ordinal(ordinal)]` | help: must be of the form: `#[link_ordinal(ordinal)]`
|
= note: for more information, visit <https://doc.rust-lang.org/reference/items/external-blocks.html#the-link_ordinal-attribute>
error: aborting due to 2 previous errors error: aborting due to 2 previous errors

View File

@@ -6,6 +6,7 @@ LL | #[macro_use(foo(bar))]
| | | |
| didn't expect any arguments here | didn't expect any arguments here
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/macros-by-example.html#the-macro_use-attribute>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[macro_use(foo(bar))] LL - #[macro_use(foo(bar))]

View File

@@ -6,6 +6,7 @@ LL | #[macro_use(foo="bar")]
| | | |
| didn't expect any arguments here | didn't expect any arguments here
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/macros-by-example.html#the-macro_use-attribute>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[macro_use(foo="bar")] LL - #[macro_use(foo="bar")]

View File

@@ -158,6 +158,7 @@ LL | #[must_use = "string"suffix]
| | | |
| expected a string literal here | expected a string literal here
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/attributes/diagnostics.html#the-must_use-attribute>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[must_use = "string"suffix] LL - #[must_use = "string"suffix]

View File

@@ -9,46 +9,55 @@ use proc_macro::*;
#[proc_macro_derive] #[proc_macro_derive]
//~^ ERROR malformed `proc_macro_derive` attribute //~^ ERROR malformed `proc_macro_derive` attribute
//~| NOTE expected this to be a list //~| NOTE expected this to be a list
//~| NOTE for more information, visit
pub fn foo1(input: TokenStream) -> TokenStream { input } pub fn foo1(input: TokenStream) -> TokenStream { input }
#[proc_macro_derive = ""] #[proc_macro_derive = ""]
//~^ ERROR malformed `proc_macro_derive` attribute //~^ ERROR malformed `proc_macro_derive` attribute
//~| NOTE expected this to be a list //~| NOTE expected this to be a list
//~| NOTE for more information, visit
pub fn foo2(input: TokenStream) -> TokenStream { input } pub fn foo2(input: TokenStream) -> TokenStream { input }
#[proc_macro_derive(d3, a, b)] #[proc_macro_derive(d3, a, b)]
//~^ ERROR malformed `proc_macro_derive` attribute //~^ ERROR malformed `proc_macro_derive` attribute
//~| NOTE the only valid argument here is `attributes` //~| NOTE the only valid argument here is `attributes`
//~| NOTE for more information, visit
pub fn foo3(input: TokenStream) -> TokenStream { input } pub fn foo3(input: TokenStream) -> TokenStream { input }
#[proc_macro_derive(d4, attributes(a), b)] #[proc_macro_derive(d4, attributes(a), b)]
//~^ ERROR malformed `proc_macro_derive` attribute //~^ ERROR malformed `proc_macro_derive` attribute
//~| NOTE didn't expect any arguments here //~| NOTE didn't expect any arguments here
//~| NOTE for more information, visit
pub fn foo4(input: TokenStream) -> TokenStream { input } pub fn foo4(input: TokenStream) -> TokenStream { input }
#[proc_macro_derive("a")] #[proc_macro_derive("a")]
//~^ ERROR malformed `proc_macro_derive` attribute //~^ ERROR malformed `proc_macro_derive` attribute
//~| NOTE didn't expect a literal here //~| NOTE didn't expect a literal here
//~| NOTE for more information, visit
pub fn foo5(input: TokenStream) -> TokenStream { input } pub fn foo5(input: TokenStream) -> TokenStream { input }
#[proc_macro_derive(d6 = "")] #[proc_macro_derive(d6 = "")]
//~^ ERROR malformed `proc_macro_derive` attribute //~^ ERROR malformed `proc_macro_derive` attribute
//~| NOTE didn't expect any arguments here //~| NOTE didn't expect any arguments here
//~| NOTE for more information, visit
pub fn foo6(input: TokenStream) -> TokenStream { input } pub fn foo6(input: TokenStream) -> TokenStream { input }
#[proc_macro_derive(m::d7)] #[proc_macro_derive(m::d7)]
//~^ ERROR malformed `proc_macro_derive` attribute //~^ ERROR malformed `proc_macro_derive` attribute
//~| NOTE expected a valid identifier here //~| NOTE expected a valid identifier here
//~| NOTE for more information, visit
pub fn foo7(input: TokenStream) -> TokenStream { input } pub fn foo7(input: TokenStream) -> TokenStream { input }
#[proc_macro_derive(d8(a))] #[proc_macro_derive(d8(a))]
//~^ ERROR malformed `proc_macro_derive` attribute //~^ ERROR malformed `proc_macro_derive` attribute
//~| NOTE didn't expect any arguments here //~| NOTE didn't expect any arguments here
//~| NOTE for more information, visit
pub fn foo8(input: TokenStream) -> TokenStream { input } pub fn foo8(input: TokenStream) -> TokenStream { input }
#[proc_macro_derive(self)] #[proc_macro_derive(self)]
//~^ ERROR malformed `proc_macro_derive` attribute //~^ ERROR malformed `proc_macro_derive` attribute
//~| NOTE expected a valid identifier here //~| NOTE expected a valid identifier here
//~| NOTE for more information, visit
pub fn foo9(input: TokenStream) -> TokenStream { input } pub fn foo9(input: TokenStream) -> TokenStream { input }
#[proc_macro_derive(PartialEq)] // OK #[proc_macro_derive(PartialEq)] // OK
@@ -57,34 +66,41 @@ pub fn foo10(input: TokenStream) -> TokenStream { input }
#[proc_macro_derive(d11, a)] #[proc_macro_derive(d11, a)]
//~^ ERROR malformed `proc_macro_derive` attribute //~^ ERROR malformed `proc_macro_derive` attribute
//~| NOTE the only valid argument here is `attributes` //~| NOTE the only valid argument here is `attributes`
//~| NOTE for more information, visit
pub fn foo11(input: TokenStream) -> TokenStream { input } pub fn foo11(input: TokenStream) -> TokenStream { input }
#[proc_macro_derive(d12, attributes)] #[proc_macro_derive(d12, attributes)]
//~^ ERROR malformed `proc_macro_derive` attribute //~^ ERROR malformed `proc_macro_derive` attribute
//~| NOTE expected this to be a list //~| NOTE expected this to be a list
//~| NOTE for more information, visit
pub fn foo12(input: TokenStream) -> TokenStream { input } pub fn foo12(input: TokenStream) -> TokenStream { input }
#[proc_macro_derive(d13, attributes("a"))] #[proc_macro_derive(d13, attributes("a"))]
//~^ ERROR malformed `proc_macro_derive` attribute //~^ ERROR malformed `proc_macro_derive` attribute
//~| NOTE expected a valid identifier here //~| NOTE expected a valid identifier here
//~| NOTE for more information, visit
pub fn foo13(input: TokenStream) -> TokenStream { input } pub fn foo13(input: TokenStream) -> TokenStream { input }
#[proc_macro_derive(d14, attributes(a = ""))] #[proc_macro_derive(d14, attributes(a = ""))]
//~^ ERROR malformed `proc_macro_derive` attribute //~^ ERROR malformed `proc_macro_derive` attribute
//~| NOTE didn't expect any arguments here //~| NOTE didn't expect any arguments here
//~| NOTE for more information, visit
pub fn foo14(input: TokenStream) -> TokenStream { input } pub fn foo14(input: TokenStream) -> TokenStream { input }
#[proc_macro_derive(d15, attributes(m::a))] #[proc_macro_derive(d15, attributes(m::a))]
//~^ ERROR malformed `proc_macro_derive` attribute //~^ ERROR malformed `proc_macro_derive` attribute
//~| NOTE expected a valid identifier here //~| NOTE expected a valid identifier here
//~| NOTE for more information, visit
pub fn foo15(input: TokenStream) -> TokenStream { input } pub fn foo15(input: TokenStream) -> TokenStream { input }
#[proc_macro_derive(d16, attributes(a(b)))] #[proc_macro_derive(d16, attributes(a(b)))]
//~^ ERROR malformed `proc_macro_derive` attribute //~^ ERROR malformed `proc_macro_derive` attribute
//~| NOTE didn't expect any arguments here //~| NOTE didn't expect any arguments here
//~| NOTE for more information, visit
pub fn foo16(input: TokenStream) -> TokenStream { input } pub fn foo16(input: TokenStream) -> TokenStream { input }
#[proc_macro_derive(d17, attributes(self))] #[proc_macro_derive(d17, attributes(self))]
//~^ ERROR malformed `proc_macro_derive` attribute //~^ ERROR malformed `proc_macro_derive` attribute
//~| NOTE expected a valid identifier here //~| NOTE expected a valid identifier here
//~| NOTE for more information, visit
pub fn foo17(input: TokenStream) -> TokenStream { input } pub fn foo17(input: TokenStream) -> TokenStream { input }

View File

@@ -4,6 +4,7 @@ error[E0539]: malformed `proc_macro_derive` attribute input
LL | #[proc_macro_derive] LL | #[proc_macro_derive]
| ^^^^^^^^^^^^^^^^^^^^ expected this to be a list | ^^^^^^^^^^^^^^^^^^^^ expected this to be a list
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/procedural-macros.html#derive-macros>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL | #[proc_macro_derive(TraitName)] LL | #[proc_macro_derive(TraitName)]
@@ -12,11 +13,12 @@ LL | #[proc_macro_derive(TraitName, attributes(name1, name2, ...))]
| ++++++++++++++++++++++++++++++++++++++++++ | ++++++++++++++++++++++++++++++++++++++++++
error[E0539]: malformed `proc_macro_derive` attribute input error[E0539]: malformed `proc_macro_derive` attribute input
--> $DIR/attribute.rs:14:1 --> $DIR/attribute.rs:15:1
| |
LL | #[proc_macro_derive = ""] LL | #[proc_macro_derive = ""]
| ^^^^^^^^^^^^^^^^^^^^^^^^^ expected this to be a list | ^^^^^^^^^^^^^^^^^^^^^^^^^ expected this to be a list
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/procedural-macros.html#derive-macros>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[proc_macro_derive = ""] LL - #[proc_macro_derive = ""]
@@ -27,13 +29,14 @@ LL + #[proc_macro_derive(TraitName, attributes(name1, name2, ...))]
| |
error[E0539]: malformed `proc_macro_derive` attribute input error[E0539]: malformed `proc_macro_derive` attribute input
--> $DIR/attribute.rs:19:1 --> $DIR/attribute.rs:21:1
| |
LL | #[proc_macro_derive(d3, a, b)] LL | #[proc_macro_derive(d3, a, b)]
| ^^^^^^^^^^^^^^^^^^^^^^^^-^^^^^ | ^^^^^^^^^^^^^^^^^^^^^^^^-^^^^^
| | | |
| the only valid argument here is `attributes` | the only valid argument here is `attributes`
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/procedural-macros.html#derive-macros>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[proc_macro_derive(d3, a, b)] LL - #[proc_macro_derive(d3, a, b)]
@@ -44,13 +47,14 @@ LL + #[proc_macro_derive(TraitName, attributes(name1, name2, ...))]
| |
error[E0565]: malformed `proc_macro_derive` attribute input error[E0565]: malformed `proc_macro_derive` attribute input
--> $DIR/attribute.rs:24:1 --> $DIR/attribute.rs:27:1
| |
LL | #[proc_macro_derive(d4, attributes(a), b)] LL | #[proc_macro_derive(d4, attributes(a), b)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-^^
| | | |
| didn't expect any arguments here | didn't expect any arguments here
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/procedural-macros.html#derive-macros>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[proc_macro_derive(d4, attributes(a), b)] LL - #[proc_macro_derive(d4, attributes(a), b)]
@@ -61,13 +65,14 @@ LL + #[proc_macro_derive(TraitName, attributes(name1, name2, ...))]
| |
error[E0565]: malformed `proc_macro_derive` attribute input error[E0565]: malformed `proc_macro_derive` attribute input
--> $DIR/attribute.rs:29:1 --> $DIR/attribute.rs:33:1
| |
LL | #[proc_macro_derive("a")] LL | #[proc_macro_derive("a")]
| ^^^^^^^^^^^^^^^^^^^^---^^ | ^^^^^^^^^^^^^^^^^^^^---^^
| | | |
| didn't expect a literal here | didn't expect a literal here
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/procedural-macros.html#derive-macros>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[proc_macro_derive("a")] LL - #[proc_macro_derive("a")]
@@ -78,13 +83,14 @@ LL + #[proc_macro_derive(TraitName, attributes(name1, name2, ...))]
| |
error[E0565]: malformed `proc_macro_derive` attribute input error[E0565]: malformed `proc_macro_derive` attribute input
--> $DIR/attribute.rs:34:1 --> $DIR/attribute.rs:39:1
| |
LL | #[proc_macro_derive(d6 = "")] LL | #[proc_macro_derive(d6 = "")]
| ^^^^^^^^^^^^^^^^^^^^^^^----^^ | ^^^^^^^^^^^^^^^^^^^^^^^----^^
| | | |
| didn't expect any arguments here | didn't expect any arguments here
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/procedural-macros.html#derive-macros>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[proc_macro_derive(d6 = "")] LL - #[proc_macro_derive(d6 = "")]
@@ -95,13 +101,14 @@ LL + #[proc_macro_derive(TraitName, attributes(name1, name2, ...))]
| |
error[E0539]: malformed `proc_macro_derive` attribute input error[E0539]: malformed `proc_macro_derive` attribute input
--> $DIR/attribute.rs:39:1 --> $DIR/attribute.rs:45:1
| |
LL | #[proc_macro_derive(m::d7)] LL | #[proc_macro_derive(m::d7)]
| ^^^^^^^^^^^^^^^^^^^^-----^^ | ^^^^^^^^^^^^^^^^^^^^-----^^
| | | |
| expected a valid identifier here | expected a valid identifier here
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/procedural-macros.html#derive-macros>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[proc_macro_derive(m::d7)] LL - #[proc_macro_derive(m::d7)]
@@ -112,13 +119,14 @@ LL + #[proc_macro_derive(TraitName, attributes(name1, name2, ...))]
| |
error[E0565]: malformed `proc_macro_derive` attribute input error[E0565]: malformed `proc_macro_derive` attribute input
--> $DIR/attribute.rs:44:1 --> $DIR/attribute.rs:51:1
| |
LL | #[proc_macro_derive(d8(a))] LL | #[proc_macro_derive(d8(a))]
| ^^^^^^^^^^^^^^^^^^^^^^---^^ | ^^^^^^^^^^^^^^^^^^^^^^---^^
| | | |
| didn't expect any arguments here | didn't expect any arguments here
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/procedural-macros.html#derive-macros>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[proc_macro_derive(d8(a))] LL - #[proc_macro_derive(d8(a))]
@@ -128,31 +136,33 @@ LL - #[proc_macro_derive(d8(a))]
LL + #[proc_macro_derive(TraitName, attributes(name1, name2, ...))] LL + #[proc_macro_derive(TraitName, attributes(name1, name2, ...))]
| |
error[E0539]: malformed `proc_macro_derive` attribute input
--> $DIR/attribute.rs:49:1
|
LL | #[proc_macro_derive(self)]
| ^^^^^^^^^^^^^^^^^^^^----^^
| |
| expected a valid identifier here
|
help: try changing it to one of the following valid forms of the attribute
|
LL - #[proc_macro_derive(self)]
LL + #[proc_macro_derive(TraitName)]
|
LL - #[proc_macro_derive(self)]
LL + #[proc_macro_derive(TraitName, attributes(name1, name2, ...))]
|
error[E0539]: malformed `proc_macro_derive` attribute input error[E0539]: malformed `proc_macro_derive` attribute input
--> $DIR/attribute.rs:57:1 --> $DIR/attribute.rs:57:1
| |
LL | #[proc_macro_derive(self)]
| ^^^^^^^^^^^^^^^^^^^^----^^
| |
| expected a valid identifier here
|
= note: for more information, visit <https://doc.rust-lang.org/reference/procedural-macros.html#derive-macros>
help: try changing it to one of the following valid forms of the attribute
|
LL - #[proc_macro_derive(self)]
LL + #[proc_macro_derive(TraitName)]
|
LL - #[proc_macro_derive(self)]
LL + #[proc_macro_derive(TraitName, attributes(name1, name2, ...))]
|
error[E0539]: malformed `proc_macro_derive` attribute input
--> $DIR/attribute.rs:66:1
|
LL | #[proc_macro_derive(d11, a)] LL | #[proc_macro_derive(d11, a)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^-^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^-^^
| | | |
| the only valid argument here is `attributes` | the only valid argument here is `attributes`
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/procedural-macros.html#derive-macros>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[proc_macro_derive(d11, a)] LL - #[proc_macro_derive(d11, a)]
@@ -163,13 +173,14 @@ LL + #[proc_macro_derive(TraitName, attributes(name1, name2, ...))]
| |
error[E0539]: malformed `proc_macro_derive` attribute input error[E0539]: malformed `proc_macro_derive` attribute input
--> $DIR/attribute.rs:62:1 --> $DIR/attribute.rs:72:1
| |
LL | #[proc_macro_derive(d12, attributes)] LL | #[proc_macro_derive(d12, attributes)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^----------^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^----------^^
| | | |
| expected this to be a list | expected this to be a list
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/procedural-macros.html#derive-macros>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[proc_macro_derive(d12, attributes)] LL - #[proc_macro_derive(d12, attributes)]
@@ -180,13 +191,14 @@ LL + #[proc_macro_derive(TraitName, attributes(name1, name2, ...))]
| |
error[E0539]: malformed `proc_macro_derive` attribute input error[E0539]: malformed `proc_macro_derive` attribute input
--> $DIR/attribute.rs:67:1 --> $DIR/attribute.rs:78:1
| |
LL | #[proc_macro_derive(d13, attributes("a"))] LL | #[proc_macro_derive(d13, attributes("a"))]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^---^^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^---^^^
| | | |
| expected a valid identifier here | expected a valid identifier here
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/procedural-macros.html#derive-macros>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[proc_macro_derive(d13, attributes("a"))] LL - #[proc_macro_derive(d13, attributes("a"))]
@@ -197,13 +209,14 @@ LL + #[proc_macro_derive(TraitName, attributes(name1, name2, ...))]
| |
error[E0565]: malformed `proc_macro_derive` attribute input error[E0565]: malformed `proc_macro_derive` attribute input
--> $DIR/attribute.rs:72:1 --> $DIR/attribute.rs:84:1
| |
LL | #[proc_macro_derive(d14, attributes(a = ""))] LL | #[proc_macro_derive(d14, attributes(a = ""))]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^----^^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^----^^^
| | | |
| didn't expect any arguments here | didn't expect any arguments here
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/procedural-macros.html#derive-macros>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[proc_macro_derive(d14, attributes(a = ""))] LL - #[proc_macro_derive(d14, attributes(a = ""))]
@@ -214,13 +227,14 @@ LL + #[proc_macro_derive(TraitName, attributes(name1, name2, ...))]
| |
error[E0539]: malformed `proc_macro_derive` attribute input error[E0539]: malformed `proc_macro_derive` attribute input
--> $DIR/attribute.rs:77:1 --> $DIR/attribute.rs:90:1
| |
LL | #[proc_macro_derive(d15, attributes(m::a))] LL | #[proc_macro_derive(d15, attributes(m::a))]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^----^^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^----^^^
| | | |
| expected a valid identifier here | expected a valid identifier here
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/procedural-macros.html#derive-macros>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[proc_macro_derive(d15, attributes(m::a))] LL - #[proc_macro_derive(d15, attributes(m::a))]
@@ -231,13 +245,14 @@ LL + #[proc_macro_derive(TraitName, attributes(name1, name2, ...))]
| |
error[E0565]: malformed `proc_macro_derive` attribute input error[E0565]: malformed `proc_macro_derive` attribute input
--> $DIR/attribute.rs:82:1 --> $DIR/attribute.rs:96:1
| |
LL | #[proc_macro_derive(d16, attributes(a(b)))] LL | #[proc_macro_derive(d16, attributes(a(b)))]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^---^^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^---^^^
| | | |
| didn't expect any arguments here | didn't expect any arguments here
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/procedural-macros.html#derive-macros>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[proc_macro_derive(d16, attributes(a(b)))] LL - #[proc_macro_derive(d16, attributes(a(b)))]
@@ -248,13 +263,14 @@ LL + #[proc_macro_derive(TraitName, attributes(name1, name2, ...))]
| |
error[E0539]: malformed `proc_macro_derive` attribute input error[E0539]: malformed `proc_macro_derive` attribute input
--> $DIR/attribute.rs:87:1 --> $DIR/attribute.rs:102:1
| |
LL | #[proc_macro_derive(d17, attributes(self))] LL | #[proc_macro_derive(d17, attributes(self))]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^----^^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^----^^^
| | | |
| expected a valid identifier here | expected a valid identifier here
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/procedural-macros.html#derive-macros>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[proc_macro_derive(d17, attributes(self))] LL - #[proc_macro_derive(d17, attributes(self))]

View File

@@ -4,6 +4,7 @@ error[E0539]: malformed `repr` attribute input
LL | #[repr] LL | #[repr]
| ^^^^^^^ expected this to be a list | ^^^^^^^ expected this to be a list
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/type-layout.html#representations>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL | #[repr(<integer type>)] LL | #[repr(<integer type>)]
@@ -22,6 +23,7 @@ error[E0539]: malformed `repr` attribute input
LL | #[repr = "B"] LL | #[repr = "B"]
| ^^^^^^^^^^^^^ expected this to be a list | ^^^^^^^^^^^^^ expected this to be a list
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/type-layout.html#representations>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[repr = "B"] LL - #[repr = "B"]
@@ -44,6 +46,7 @@ error[E0539]: malformed `repr` attribute input
LL | #[repr = "C"] LL | #[repr = "C"]
| ^^^^^^^^^^^^^ expected this to be a list | ^^^^^^^^^^^^^ expected this to be a list
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/type-layout.html#representations>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[repr = "C"] LL - #[repr = "C"]

View File

@@ -12,6 +12,8 @@ LL | #![path = foo!()]
| | | | | |
| | expected a string literal here | | expected a string literal here
| help: must be of the form: `#[path = "file"]` | help: must be of the form: `#[path = "file"]`
|
= note: for more information, visit <https://doc.rust-lang.org/reference/items/modules.html#the-path-attribute>
error: aborting due to 2 previous errors error: aborting due to 2 previous errors

View File

@@ -6,6 +6,7 @@ LL | #[inline(unknown)]
| | | |
| valid arguments are `always` or `never` | valid arguments are `always` or `never`
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/attributes/codegen.html#the-inline-attribute>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[inline(unknown)] LL - #[inline(unknown)]

View File

@@ -10,6 +10,7 @@ fn test1() {
#[should_panic(expected)] #[should_panic(expected)]
//~^ ERROR malformed `should_panic` attribute input //~^ ERROR malformed `should_panic` attribute input
//~| NOTE expected this to be of the form `expected = "..."` //~| NOTE expected this to be of the form `expected = "..."`
//~| NOTE for more information, visit
fn test2() { fn test2() {
panic!(); panic!();
} }
@@ -18,6 +19,7 @@ fn test2() {
#[should_panic(expect)] #[should_panic(expect)]
//~^ ERROR malformed `should_panic` attribute input //~^ ERROR malformed `should_panic` attribute input
//~| NOTE the only valid argument here is "expected" //~| NOTE the only valid argument here is "expected"
//~| NOTE for more information, visit
fn test3() { fn test3() {
panic!(); panic!();
} }
@@ -26,6 +28,7 @@ fn test3() {
#[should_panic(expected(foo, bar))] #[should_panic(expected(foo, bar))]
//~^ ERROR malformed `should_panic` attribute input //~^ ERROR malformed `should_panic` attribute input
//~| NOTE expected this to be of the form `expected = "..."` //~| NOTE expected this to be of the form `expected = "..."`
//~| NOTE for more information, visit
fn test4() { fn test4() {
panic!(); panic!();
} }
@@ -34,6 +37,7 @@ fn test4() {
#[should_panic(expected = "foo", bar)] #[should_panic(expected = "foo", bar)]
//~^ ERROR malformed `should_panic` attribute input //~^ ERROR malformed `should_panic` attribute input
//~| NOTE expected a single argument here //~| NOTE expected a single argument here
//~| NOTE for more information, visit
fn test5() { fn test5() {
panic!(); panic!();
} }

View File

@@ -6,6 +6,7 @@ LL | #[should_panic(expected)]
| | | |
| expected this to be of the form `expected = "..."` | expected this to be of the form `expected = "..."`
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/attributes/testing.html#the-should_panic-attribute>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[should_panic(expected)] LL - #[should_panic(expected)]
@@ -18,13 +19,14 @@ LL + #[should_panic]
| |
error[E0539]: malformed `should_panic` attribute input error[E0539]: malformed `should_panic` attribute input
--> $DIR/test-should-panic-attr.rs:18:1 --> $DIR/test-should-panic-attr.rs:19:1
| |
LL | #[should_panic(expect)] LL | #[should_panic(expect)]
| ^^^^^^^^^^^^^^--------^ | ^^^^^^^^^^^^^^--------^
| | | |
| the only valid argument here is "expected" | the only valid argument here is "expected"
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/attributes/testing.html#the-should_panic-attribute>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[should_panic(expect)] LL - #[should_panic(expect)]
@@ -37,13 +39,14 @@ LL + #[should_panic]
| |
error[E0539]: malformed `should_panic` attribute input error[E0539]: malformed `should_panic` attribute input
--> $DIR/test-should-panic-attr.rs:26:1 --> $DIR/test-should-panic-attr.rs:28:1
| |
LL | #[should_panic(expected(foo, bar))] LL | #[should_panic(expected(foo, bar))]
| ^^^^^^^^^^^^^^^------------------^^ | ^^^^^^^^^^^^^^^------------------^^
| | | |
| expected this to be of the form `expected = "..."` | expected this to be of the form `expected = "..."`
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/attributes/testing.html#the-should_panic-attribute>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[should_panic(expected(foo, bar))] LL - #[should_panic(expected(foo, bar))]
@@ -57,13 +60,14 @@ LL + #[should_panic]
| |
error[E0805]: malformed `should_panic` attribute input error[E0805]: malformed `should_panic` attribute input
--> $DIR/test-should-panic-attr.rs:34:1 --> $DIR/test-should-panic-attr.rs:37:1
| |
LL | #[should_panic(expected = "foo", bar)] LL | #[should_panic(expected = "foo", bar)]
| ^^^^^^^^^^^^^^-----------------------^ | ^^^^^^^^^^^^^^-----------------------^
| | | |
| expected a single argument here | expected a single argument here
| |
= note: for more information, visit <https://doc.rust-lang.org/reference/attributes/testing.html#the-should_panic-attribute>
help: try changing it to one of the following valid forms of the attribute help: try changing it to one of the following valid forms of the attribute
| |
LL - #[should_panic(expected = "foo", bar)] LL - #[should_panic(expected = "foo", bar)]