mirror of
https://github.com/rust-lang/rust.git
synced 2026-04-27 18:57:42 +03:00
Mitigate #[align] name resolution ambiguity regression with a rename
From `#[align]` -> `#[rustc_align]`. Attributes starting with `rustc`
are always perma-unstable and feature-gated by `feature(rustc_attrs)`.
See regression RUST-143834.
For the underlying problem where even introducing new feature-gated
unstable built-in attributes can break user code such as
```rs
macro_rules! align {
() => {
/* .. */
};
}
pub(crate) use align; // `use` here becomes ambiguous
```
refer to RUST-134963.
Since the `#[align]` attribute is still feature-gated by
`feature(fn_align)`, we can rename it as a mitigation. Note that
`#[rustc_align]` will obviously mean that current unstable user code
using `feature(fn_aling)` will need additionally `feature(rustc_attrs)`,
but this is a short-term mitigation to buy time, and is expected to be
changed to a better name with less collision potential.
See
<https://rust-lang.zulipchat.com/#narrow/channel/238009-t-compiler.2Fmeetings/topic/.5Bweekly.5D.202025-07-17/near/529290371>
where mitigation options were considered.
This commit is contained in:
@@ -234,6 +234,7 @@ pub enum CfgEntry {
|
||||
pub enum AttributeKind {
|
||||
// tidy-alphabetical-start
|
||||
/// Represents `#[align(N)]`.
|
||||
// FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity
|
||||
Align { align: Align, span: Span },
|
||||
|
||||
/// Represents `#[rustc_allow_const_fn_unstable]`.
|
||||
|
||||
@@ -177,7 +177,8 @@ fn finalize(self, cx: &FinalizeContext<'_, '_, S>) -> Option<AttributeKind> {
|
||||
sym::instruction_set,
|
||||
sym::repr,
|
||||
sym::rustc_std_internal_symbol,
|
||||
sym::align,
|
||||
// FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity
|
||||
sym::rustc_align,
|
||||
// obviously compatible with self
|
||||
sym::naked,
|
||||
// documentation
|
||||
|
||||
@@ -274,7 +274,7 @@ fn parse_alignment(node: &LitKind) -> Result<Align, &'static str> {
|
||||
pub(crate) struct AlignParser(Option<(Align, Span)>);
|
||||
|
||||
impl AlignParser {
|
||||
const PATH: &'static [Symbol] = &[sym::align];
|
||||
const PATH: &'static [Symbol] = &[sym::rustc_align];
|
||||
const TEMPLATE: AttributeTemplate = template!(List: "<alignment in bytes>");
|
||||
|
||||
fn parse<'c, S: Stage>(
|
||||
|
||||
@@ -490,7 +490,8 @@ pub struct BuiltinAttribute {
|
||||
),
|
||||
ungated!(no_link, Normal, template!(Word), WarnFollowing, EncodeCrossCrate::No),
|
||||
ungated!(repr, Normal, template!(List: "C"), DuplicatesOk, EncodeCrossCrate::No),
|
||||
gated!(align, Normal, template!(List: "alignment"), DuplicatesOk, EncodeCrossCrate::No, fn_align, experimental!(align)),
|
||||
// FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity
|
||||
gated!(rustc_align, Normal, template!(List: "alignment"), DuplicatesOk, EncodeCrossCrate::No, fn_align, experimental!(rustc_align)),
|
||||
ungated!(unsafe(Edition2024) export_name, Normal, template!(NameValueStr: "name"), FutureWarnPreceding, EncodeCrossCrate::No),
|
||||
ungated!(unsafe(Edition2024) link_section, Normal, template!(NameValueStr: "name"), FutureWarnPreceding, EncodeCrossCrate::No),
|
||||
ungated!(unsafe(Edition2024) no_mangle, Normal, template!(Word), WarnFollowing, EncodeCrossCrate::No),
|
||||
|
||||
@@ -70,6 +70,7 @@ pub struct CodegenFnAttrs {
|
||||
/// switching between multiple instruction sets.
|
||||
pub instruction_set: Option<InstructionSetAttr>,
|
||||
/// The `#[align(...)]` attribute. Determines the alignment of the function body.
|
||||
// FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity
|
||||
pub alignment: Option<Align>,
|
||||
/// The `#[patchable_function_entry(...)]` attribute. Indicates how many nops should be around
|
||||
/// the function entry.
|
||||
|
||||
@@ -294,7 +294,9 @@ pub fn check_builtin_meta_item(
|
||||
| sym::rustc_paren_sugar
|
||||
| sym::type_const
|
||||
| sym::repr
|
||||
| sym::align
|
||||
// FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres
|
||||
// ambiguity
|
||||
| sym::rustc_align
|
||||
| sym::deprecated
|
||||
| sym::optimize
|
||||
| sym::pointee
|
||||
|
||||
@@ -14,7 +14,7 @@ passes_abi_of =
|
||||
fn_abi_of({$fn_name}) = {$fn_abi}
|
||||
|
||||
passes_align_attr_application =
|
||||
`#[align(...)]` should be applied to a function item
|
||||
`#[rustc_align(...)]` should be applied to a function item
|
||||
.label = not a function item
|
||||
|
||||
passes_align_on_fields =
|
||||
@@ -22,7 +22,7 @@ passes_align_on_fields =
|
||||
.warn = {-passes_previously_accepted}
|
||||
|
||||
passes_align_should_be_repr_align =
|
||||
`#[align(...)]` is not supported on {$item} items
|
||||
`#[rustc_align(...)]` is not supported on {$item} items
|
||||
.suggestion = use `#[repr(align(...))]` instead
|
||||
|
||||
passes_allow_incoherent_impl =
|
||||
@@ -604,7 +604,7 @@ passes_repr_align_greater_than_target_max =
|
||||
|
||||
passes_repr_align_should_be_align =
|
||||
`#[repr(align(...))]` is not supported on {$item} items
|
||||
.help = use `#[align(...)]` instead
|
||||
.help = use `#[rustc_align(...)]` instead
|
||||
|
||||
passes_repr_conflicting =
|
||||
conflicting representation hints
|
||||
|
||||
@@ -1957,6 +1957,7 @@ fn check_no_mangle(&self, hir_id: HirId, attr_span: Span, span: Span, target: Ta
|
||||
}
|
||||
|
||||
/// Checks if the `#[align]` attributes on `item` are valid.
|
||||
// FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity
|
||||
fn check_align(
|
||||
&self,
|
||||
span: Span,
|
||||
|
||||
@@ -1809,6 +1809,8 @@
|
||||
rust_out,
|
||||
rustc,
|
||||
rustc_abi,
|
||||
// FIXME(#82232, #143834): temporary name to mitigate `#[align]` nameres ambiguity
|
||||
rustc_align,
|
||||
rustc_allocator,
|
||||
rustc_allocator_zeroed,
|
||||
rustc_allow_const_fn_unstable,
|
||||
|
||||
@@ -1,15 +1,19 @@
|
||||
//@compile-flags: -Zmin-function-alignment=8
|
||||
|
||||
// FIXME(rust-lang/rust#82232, rust-lang/rust#143834): temporarily renamed to mitigate `#[align]`
|
||||
// nameres ambiguity
|
||||
#![feature(rustc_attrs)]
|
||||
#![feature(fn_align)]
|
||||
|
||||
// When a function uses `align(N)`, the function address should be a multiple of `N`.
|
||||
|
||||
#[align(256)]
|
||||
#[rustc_align(256)]
|
||||
fn foo() {}
|
||||
|
||||
#[align(16)]
|
||||
#[rustc_align(16)]
|
||||
fn bar() {}
|
||||
|
||||
#[align(4)]
|
||||
#[rustc_align(4)]
|
||||
fn baz() {}
|
||||
|
||||
fn main() {
|
||||
|
||||
+28
-26
@@ -3,11 +3,13 @@
|
||||
//@ ignore-wasm32 aligning functions is not currently supported on wasm (#143368)
|
||||
|
||||
#![crate_type = "lib"]
|
||||
// FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity
|
||||
#![feature(rustc_attrs)]
|
||||
#![feature(fn_align)]
|
||||
|
||||
// CHECK: align 16
|
||||
#[unsafe(no_mangle)]
|
||||
#[align(16)]
|
||||
#[rustc_align(16)]
|
||||
pub fn fn_align() {}
|
||||
|
||||
pub struct A;
|
||||
@@ -15,12 +17,12 @@ pub fn fn_align() {}
|
||||
impl A {
|
||||
// CHECK: align 16
|
||||
#[unsafe(no_mangle)]
|
||||
#[align(16)]
|
||||
#[rustc_align(16)]
|
||||
pub fn method_align(self) {}
|
||||
|
||||
// CHECK: align 16
|
||||
#[unsafe(no_mangle)]
|
||||
#[align(16)]
|
||||
#[rustc_align(16)]
|
||||
pub fn associated_fn() {}
|
||||
}
|
||||
|
||||
@@ -29,18 +31,18 @@ fn trait_fn() {}
|
||||
|
||||
fn trait_method(self) {}
|
||||
|
||||
#[align(8)]
|
||||
#[rustc_align(8)]
|
||||
fn trait_method_inherit_low(self);
|
||||
|
||||
#[align(32)]
|
||||
#[rustc_align(32)]
|
||||
fn trait_method_inherit_high(self);
|
||||
|
||||
#[align(32)]
|
||||
#[rustc_align(32)]
|
||||
fn trait_method_inherit_default(self) {}
|
||||
|
||||
#[align(4)]
|
||||
#[align(128)]
|
||||
#[align(8)]
|
||||
#[rustc_align(4)]
|
||||
#[rustc_align(128)]
|
||||
#[rustc_align(8)]
|
||||
fn inherit_highest(self) {}
|
||||
}
|
||||
|
||||
@@ -48,27 +50,27 @@ impl T for A {
|
||||
// CHECK-LABEL: trait_fn
|
||||
// CHECK-SAME: align 16
|
||||
#[unsafe(no_mangle)]
|
||||
#[align(16)]
|
||||
#[rustc_align(16)]
|
||||
fn trait_fn() {}
|
||||
|
||||
// CHECK-LABEL: trait_method
|
||||
// CHECK-SAME: align 16
|
||||
#[unsafe(no_mangle)]
|
||||
#[align(16)]
|
||||
#[rustc_align(16)]
|
||||
fn trait_method(self) {}
|
||||
|
||||
// The prototype's align is ignored because the align here is higher.
|
||||
// CHECK-LABEL: trait_method_inherit_low
|
||||
// CHECK-SAME: align 16
|
||||
#[unsafe(no_mangle)]
|
||||
#[align(16)]
|
||||
#[rustc_align(16)]
|
||||
fn trait_method_inherit_low(self) {}
|
||||
|
||||
// The prototype's align is used because it is higher.
|
||||
// CHECK-LABEL: trait_method_inherit_high
|
||||
// CHECK-SAME: align 32
|
||||
#[unsafe(no_mangle)]
|
||||
#[align(16)]
|
||||
#[rustc_align(16)]
|
||||
fn trait_method_inherit_high(self) {}
|
||||
|
||||
// The prototype's align inherited.
|
||||
@@ -81,8 +83,8 @@ fn trait_method_inherit_default(self) {}
|
||||
// CHECK-LABEL: inherit_highest
|
||||
// CHECK-SAME: align 128
|
||||
#[unsafe(no_mangle)]
|
||||
#[align(32)]
|
||||
#[align(64)]
|
||||
#[rustc_align(32)]
|
||||
#[rustc_align(64)]
|
||||
fn inherit_highest(self) {}
|
||||
}
|
||||
|
||||
@@ -90,7 +92,7 @@ trait HasDefaultImpl: Sized {
|
||||
// CHECK-LABEL: inherit_from_default_method
|
||||
// CHECK-LABEL: inherit_from_default_method
|
||||
// CHECK-SAME: align 32
|
||||
#[align(32)]
|
||||
#[rustc_align(32)]
|
||||
fn inherit_from_default_method(self) {}
|
||||
}
|
||||
|
||||
@@ -101,35 +103,35 @@ impl HasDefaultImpl for InstantiateDefaultMethods {}
|
||||
// CHECK-LABEL: align_specified_twice_1
|
||||
// CHECK-SAME: align 64
|
||||
#[unsafe(no_mangle)]
|
||||
#[align(32)]
|
||||
#[align(64)]
|
||||
#[rustc_align(32)]
|
||||
#[rustc_align(64)]
|
||||
pub fn align_specified_twice_1() {}
|
||||
|
||||
// CHECK-LABEL: align_specified_twice_2
|
||||
// CHECK-SAME: align 128
|
||||
#[unsafe(no_mangle)]
|
||||
#[align(128)]
|
||||
#[align(32)]
|
||||
#[rustc_align(128)]
|
||||
#[rustc_align(32)]
|
||||
pub fn align_specified_twice_2() {}
|
||||
|
||||
// CHECK-LABEL: align_specified_twice_3
|
||||
// CHECK-SAME: align 256
|
||||
#[unsafe(no_mangle)]
|
||||
#[align(32)]
|
||||
#[align(256)]
|
||||
#[rustc_align(32)]
|
||||
#[rustc_align(256)]
|
||||
pub fn align_specified_twice_3() {}
|
||||
|
||||
const _: () = {
|
||||
// CHECK-LABEL: align_unmangled
|
||||
// CHECK-SAME: align 256
|
||||
#[unsafe(no_mangle)]
|
||||
#[align(32)]
|
||||
#[align(256)]
|
||||
#[rustc_align(32)]
|
||||
#[rustc_align(256)]
|
||||
extern "C" fn align_unmangled() {}
|
||||
};
|
||||
|
||||
unsafe extern "C" {
|
||||
#[align(256)]
|
||||
#[rustc_align(256)]
|
||||
fn align_unmangled();
|
||||
}
|
||||
|
||||
@@ -137,5 +139,5 @@ extern "C" fn align_unmangled() {}
|
||||
// CHECK-LABEL: async_align
|
||||
// CHECK-SAME: align 64
|
||||
#[unsafe(no_mangle)]
|
||||
#[align(64)]
|
||||
#[rustc_align(64)]
|
||||
pub async fn async_align() {}
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
//@ ignore-wasm32 aligning functions is not currently supported on wasm (#143368)
|
||||
|
||||
#![crate_type = "lib"]
|
||||
// FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity
|
||||
#![feature(rustc_attrs)]
|
||||
#![feature(fn_align)]
|
||||
|
||||
// Functions without explicit alignment use the global minimum.
|
||||
@@ -21,7 +23,7 @@ pub fn no_explicit_align() {}
|
||||
// align16: align 16
|
||||
// align1024: align 1024
|
||||
#[no_mangle]
|
||||
#[align(8)]
|
||||
#[rustc_align(8)]
|
||||
pub fn lower_align() {}
|
||||
|
||||
// the higher value of min-function-alignment and the align attribute wins out
|
||||
@@ -30,7 +32,7 @@ pub fn lower_align() {}
|
||||
// align16: align 32
|
||||
// align1024: align 1024
|
||||
#[no_mangle]
|
||||
#[align(32)]
|
||||
#[rustc_align(32)]
|
||||
pub fn higher_align() {}
|
||||
|
||||
// cold functions follow the same rules as other functions
|
||||
|
||||
@@ -4,12 +4,15 @@
|
||||
//@ ignore-wasm32 aligning functions is not currently supported on wasm (#143368)
|
||||
|
||||
#![crate_type = "lib"]
|
||||
// FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity
|
||||
#![feature(rustc_attrs)]
|
||||
#![feature(fn_align)]
|
||||
|
||||
use std::arch::naked_asm;
|
||||
|
||||
// CHECK: .balign 16
|
||||
// CHECK-LABEL: naked_empty:
|
||||
#[align(16)]
|
||||
#[rustc_align(16)]
|
||||
#[no_mangle]
|
||||
#[unsafe(naked)]
|
||||
pub extern "C" fn naked_empty() {
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
//@ ignore-arm no "ret" mnemonic
|
||||
//@ ignore-wasm32 aligning functions is not currently supported on wasm (#143368)
|
||||
|
||||
// FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity
|
||||
#![feature(rustc_attrs)]
|
||||
#![feature(fn_align)]
|
||||
#![crate_type = "lib"]
|
||||
|
||||
@@ -17,7 +19,7 @@ pub extern "C" fn naked_no_explicit_align() {
|
||||
|
||||
// CHECK: .balign 16
|
||||
#[no_mangle]
|
||||
#[align(8)]
|
||||
#[rustc_align(8)]
|
||||
#[unsafe(naked)]
|
||||
pub extern "C" fn naked_lower_align() {
|
||||
core::arch::naked_asm!("ret")
|
||||
@@ -25,7 +27,7 @@ pub extern "C" fn naked_lower_align() {
|
||||
|
||||
// CHECK: .balign 32
|
||||
#[no_mangle]
|
||||
#[align(32)]
|
||||
#[rustc_align(32)]
|
||||
#[unsafe(naked)]
|
||||
pub extern "C" fn naked_higher_align() {
|
||||
core::arch::naked_asm!("ret")
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
//@ needs-asm-support
|
||||
|
||||
// FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity
|
||||
#![feature(rustc_attrs)]
|
||||
#![feature(fn_align)]
|
||||
|
||||
#![crate_type = "lib"]
|
||||
use std::arch::naked_asm;
|
||||
|
||||
@@ -21,7 +25,7 @@ extern "C" fn example2() {
|
||||
|
||||
#[repr(C)]
|
||||
//~^ ERROR attribute should be applied to a struct, enum, or union [E0517]
|
||||
#[align(16)]
|
||||
#[rustc_align(16)]
|
||||
#[unsafe(naked)]
|
||||
extern "C" fn example3() {
|
||||
//~^ NOTE not a struct, enum, or union
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error[E0517]: attribute should be applied to a struct, enum, or union
|
||||
--> $DIR/naked-with-invalid-repr-attr.rs:6:8
|
||||
--> $DIR/naked-with-invalid-repr-attr.rs:10:8
|
||||
|
|
||||
LL | #[repr(C)]
|
||||
| ^
|
||||
@@ -11,7 +11,7 @@ LL | | }
|
||||
| |_- not a struct, enum, or union
|
||||
|
||||
error[E0517]: attribute should be applied to a struct, enum, or union
|
||||
--> $DIR/naked-with-invalid-repr-attr.rs:14:8
|
||||
--> $DIR/naked-with-invalid-repr-attr.rs:18:8
|
||||
|
|
||||
LL | #[repr(transparent)]
|
||||
| ^^^^^^^^^^^
|
||||
@@ -23,7 +23,7 @@ LL | | }
|
||||
| |_- not a struct, enum, or union
|
||||
|
||||
error[E0517]: attribute should be applied to a struct, enum, or union
|
||||
--> $DIR/naked-with-invalid-repr-attr.rs:22:8
|
||||
--> $DIR/naked-with-invalid-repr-attr.rs:26:8
|
||||
|
|
||||
LL | #[repr(C)]
|
||||
| ^
|
||||
@@ -35,7 +35,7 @@ LL | | }
|
||||
| |_- not a struct, enum, or union
|
||||
|
||||
error[E0517]: attribute should be applied to a struct, enum, or union
|
||||
--> $DIR/naked-with-invalid-repr-attr.rs:32:8
|
||||
--> $DIR/naked-with-invalid-repr-attr.rs:36:8
|
||||
|
|
||||
LL | #[repr(C, packed)]
|
||||
| ^
|
||||
@@ -48,7 +48,7 @@ LL | | }
|
||||
| |_- not a struct, enum, or union
|
||||
|
||||
error[E0517]: attribute should be applied to a struct or union
|
||||
--> $DIR/naked-with-invalid-repr-attr.rs:32:11
|
||||
--> $DIR/naked-with-invalid-repr-attr.rs:36:11
|
||||
|
|
||||
LL | #[repr(C, packed)]
|
||||
| ^^^^^^
|
||||
@@ -61,7 +61,7 @@ LL | | }
|
||||
| |_- not a struct or union
|
||||
|
||||
error[E0517]: attribute should be applied to an enum
|
||||
--> $DIR/naked-with-invalid-repr-attr.rs:42:8
|
||||
--> $DIR/naked-with-invalid-repr-attr.rs:46:8
|
||||
|
|
||||
LL | #[repr(u8)]
|
||||
| ^^
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
//@ run-pass
|
||||
//@ ignore-wasm32 aligning functions is not currently supported on wasm (#143368)
|
||||
|
||||
// FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity
|
||||
#![feature(rustc_attrs)]
|
||||
#![feature(fn_align)]
|
||||
|
||||
trait Test {
|
||||
#[align(4096)]
|
||||
#[rustc_align(4096)]
|
||||
fn foo(&self);
|
||||
|
||||
#[align(4096)]
|
||||
#[rustc_align(4096)]
|
||||
fn foo1(&self);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,21 +1,19 @@
|
||||
//~ NOTE `align` could refer to a built-in attribute
|
||||
|
||||
// Anti-regression test to demonstrate that at least we mitigated breakage from adding a new
|
||||
// `#[align]` built-in attribute.
|
||||
//
|
||||
// See https://github.com/rust-lang/rust/issues/143834.
|
||||
|
||||
//@ check-pass
|
||||
|
||||
// Needs edition >= 2018 macro use behavior.
|
||||
//@ edition: 2018
|
||||
|
||||
macro_rules! align {
|
||||
//~^ NOTE `align` could also refer to the macro defined here
|
||||
() => {
|
||||
/* .. */
|
||||
};
|
||||
}
|
||||
|
||||
pub(crate) use align;
|
||||
//~^ ERROR `align` is ambiguous
|
||||
//~| NOTE ambiguous name
|
||||
//~| NOTE ambiguous because of a name conflict with a builtin attribute
|
||||
|
||||
fn main() {}
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
error[E0659]: `align` is ambiguous
|
||||
--> $DIR/fn-align-nameres-ambiguity-143834.rs:16:16
|
||||
|
|
||||
LL | pub(crate) use align;
|
||||
| ^^^^^ ambiguous name
|
||||
|
|
||||
= note: ambiguous because of a name conflict with a builtin attribute
|
||||
= note: `align` could refer to a built-in attribute
|
||||
note: `align` could also refer to the macro defined here
|
||||
--> $DIR/fn-align-nameres-ambiguity-143834.rs:9:1
|
||||
|
|
||||
LL | / macro_rules! align {
|
||||
LL | |
|
||||
LL | | () => {
|
||||
LL | | /* .. */
|
||||
LL | | };
|
||||
LL | | }
|
||||
| |_^
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0659`.
|
||||
@@ -3,6 +3,7 @@
|
||||
#![feature(rustc_attrs)]
|
||||
#![feature(rustc_allow_const_fn_unstable)]
|
||||
#![feature(allow_internal_unstable)]
|
||||
// FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity
|
||||
#![feature(fn_align)]
|
||||
#![feature(optimize_attribute)]
|
||||
#![feature(dropck_eyepatch)]
|
||||
@@ -53,7 +54,7 @@
|
||||
#[inline = 5]
|
||||
//~^ ERROR valid forms for the attribute are
|
||||
//~| WARN this was previously accepted by the compiler
|
||||
#[align]
|
||||
#[rustc_align]
|
||||
//~^ ERROR malformed
|
||||
#[optimize]
|
||||
//~^ ERROR malformed
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error[E0539]: malformed `cfg` attribute input
|
||||
--> $DIR/malformed-attrs.rs:102:1
|
||||
--> $DIR/malformed-attrs.rs:103:1
|
||||
|
|
||||
LL | #[cfg]
|
||||
| ^^^^^^
|
||||
@@ -8,7 +8,7 @@ LL | #[cfg]
|
||||
| help: must be of the form: `#[cfg(predicate)]`
|
||||
|
||||
error: malformed `cfg_attr` attribute input
|
||||
--> $DIR/malformed-attrs.rs:104:1
|
||||
--> $DIR/malformed-attrs.rs:105:1
|
||||
|
|
||||
LL | #[cfg_attr]
|
||||
| ^^^^^^^^^^^
|
||||
@@ -20,67 +20,67 @@ LL | #[cfg_attr(condition, attribute, other_attribute, ...)]
|
||||
| ++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
error[E0463]: can't find crate for `wloop`
|
||||
--> $DIR/malformed-attrs.rs:211:1
|
||||
--> $DIR/malformed-attrs.rs:212:1
|
||||
|
|
||||
LL | extern crate wloop;
|
||||
| ^^^^^^^^^^^^^^^^^^^ can't find crate
|
||||
|
||||
error: malformed `windows_subsystem` attribute input
|
||||
--> $DIR/malformed-attrs.rs:29:1
|
||||
--> $DIR/malformed-attrs.rs:30:1
|
||||
|
|
||||
LL | #![windows_subsystem]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^ help: must be of the form: `#![windows_subsystem = "windows|console"]`
|
||||
|
||||
error: malformed `crate_name` attribute input
|
||||
--> $DIR/malformed-attrs.rs:74:1
|
||||
--> $DIR/malformed-attrs.rs:75:1
|
||||
|
|
||||
LL | #[crate_name]
|
||||
| ^^^^^^^^^^^^^ help: must be of the form: `#[crate_name = "name"]`
|
||||
|
||||
error: malformed `no_sanitize` attribute input
|
||||
--> $DIR/malformed-attrs.rs:92:1
|
||||
--> $DIR/malformed-attrs.rs:93:1
|
||||
|
|
||||
LL | #[no_sanitize]
|
||||
| ^^^^^^^^^^^^^^ help: must be of the form: `#[no_sanitize(address, kcfi, memory, thread)]`
|
||||
|
||||
error: malformed `proc_macro` attribute input
|
||||
--> $DIR/malformed-attrs.rs:99:1
|
||||
--> $DIR/malformed-attrs.rs:100:1
|
||||
|
|
||||
LL | #[proc_macro = 18]
|
||||
| ^^^^^^^^^^^^^^^^^^ help: must be of the form: `#[proc_macro]`
|
||||
|
||||
error: malformed `instruction_set` attribute input
|
||||
--> $DIR/malformed-attrs.rs:106:1
|
||||
--> $DIR/malformed-attrs.rs:107:1
|
||||
|
|
||||
LL | #[instruction_set]
|
||||
| ^^^^^^^^^^^^^^^^^^ help: must be of the form: `#[instruction_set(set)]`
|
||||
|
||||
error: malformed `patchable_function_entry` attribute input
|
||||
--> $DIR/malformed-attrs.rs:108:1
|
||||
--> $DIR/malformed-attrs.rs:109:1
|
||||
|
|
||||
LL | #[patchable_function_entry]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: must be of the form: `#[patchable_function_entry(prefix_nops = m, entry_nops = n)]`
|
||||
|
||||
error: malformed `coroutine` attribute input
|
||||
--> $DIR/malformed-attrs.rs:111:5
|
||||
--> $DIR/malformed-attrs.rs:112:5
|
||||
|
|
||||
LL | #[coroutine = 63] || {}
|
||||
| ^^^^^^^^^^^^^^^^^ help: must be of the form: `#[coroutine]`
|
||||
|
||||
error: malformed `proc_macro_attribute` attribute input
|
||||
--> $DIR/malformed-attrs.rs:116:1
|
||||
--> $DIR/malformed-attrs.rs:117:1
|
||||
|
|
||||
LL | #[proc_macro_attribute = 19]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: must be of the form: `#[proc_macro_attribute]`
|
||||
|
||||
error: malformed `proc_macro_derive` attribute input
|
||||
--> $DIR/malformed-attrs.rs:123:1
|
||||
--> $DIR/malformed-attrs.rs:124:1
|
||||
|
|
||||
LL | #[proc_macro_derive]
|
||||
| ^^^^^^^^^^^^^^^^^^^^ help: must be of the form: `#[proc_macro_derive(TraitName, /*opt*/ attributes(name1, name2, ...))]`
|
||||
|
||||
error: malformed `must_not_suspend` attribute input
|
||||
--> $DIR/malformed-attrs.rs:132:1
|
||||
--> $DIR/malformed-attrs.rs:133:1
|
||||
|
|
||||
LL | #[must_not_suspend()]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
@@ -95,67 +95,67 @@ LL + #[must_not_suspend]
|
||||
|
|
||||
|
||||
error: malformed `cfi_encoding` attribute input
|
||||
--> $DIR/malformed-attrs.rs:134:1
|
||||
--> $DIR/malformed-attrs.rs:135:1
|
||||
|
|
||||
LL | #[cfi_encoding]
|
||||
| ^^^^^^^^^^^^^^^ help: must be of the form: `#[cfi_encoding = "encoding"]`
|
||||
|
||||
error: malformed `linkage` attribute input
|
||||
--> $DIR/malformed-attrs.rs:173:5
|
||||
--> $DIR/malformed-attrs.rs:174:5
|
||||
|
|
||||
LL | #[linkage]
|
||||
| ^^^^^^^^^^ help: must be of the form: `#[linkage = "external|internal|..."]`
|
||||
|
||||
error: malformed `allow` attribute input
|
||||
--> $DIR/malformed-attrs.rs:178:1
|
||||
--> $DIR/malformed-attrs.rs:179:1
|
||||
|
|
||||
LL | #[allow]
|
||||
| ^^^^^^^^ help: must be of the form: `#[allow(lint1, lint2, ..., /*opt*/ reason = "...")]`
|
||||
|
||||
error: malformed `expect` attribute input
|
||||
--> $DIR/malformed-attrs.rs:180:1
|
||||
--> $DIR/malformed-attrs.rs:181:1
|
||||
|
|
||||
LL | #[expect]
|
||||
| ^^^^^^^^^ help: must be of the form: `#[expect(lint1, lint2, ..., /*opt*/ reason = "...")]`
|
||||
|
||||
error: malformed `warn` attribute input
|
||||
--> $DIR/malformed-attrs.rs:182:1
|
||||
--> $DIR/malformed-attrs.rs:183:1
|
||||
|
|
||||
LL | #[warn]
|
||||
| ^^^^^^^ help: must be of the form: `#[warn(lint1, lint2, ..., /*opt*/ reason = "...")]`
|
||||
|
||||
error: malformed `deny` attribute input
|
||||
--> $DIR/malformed-attrs.rs:184:1
|
||||
--> $DIR/malformed-attrs.rs:185:1
|
||||
|
|
||||
LL | #[deny]
|
||||
| ^^^^^^^ help: must be of the form: `#[deny(lint1, lint2, ..., /*opt*/ reason = "...")]`
|
||||
|
||||
error: malformed `forbid` attribute input
|
||||
--> $DIR/malformed-attrs.rs:186:1
|
||||
--> $DIR/malformed-attrs.rs:187:1
|
||||
|
|
||||
LL | #[forbid]
|
||||
| ^^^^^^^^^ help: must be of the form: `#[forbid(lint1, lint2, ..., /*opt*/ reason = "...")]`
|
||||
|
||||
error: malformed `debugger_visualizer` attribute input
|
||||
--> $DIR/malformed-attrs.rs:188:1
|
||||
--> $DIR/malformed-attrs.rs:189:1
|
||||
|
|
||||
LL | #[debugger_visualizer]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^ help: must be of the form: `#[debugger_visualizer(natvis_file = "...", gdb_script_file = "...")]`
|
||||
|
||||
error: malformed `thread_local` attribute input
|
||||
--> $DIR/malformed-attrs.rs:203:1
|
||||
--> $DIR/malformed-attrs.rs:204:1
|
||||
|
|
||||
LL | #[thread_local()]
|
||||
| ^^^^^^^^^^^^^^^^^ help: must be of the form: `#[thread_local]`
|
||||
|
||||
error: malformed `no_link` attribute input
|
||||
--> $DIR/malformed-attrs.rs:207:1
|
||||
--> $DIR/malformed-attrs.rs:208:1
|
||||
|
|
||||
LL | #[no_link()]
|
||||
| ^^^^^^^^^^^^ help: must be of the form: `#[no_link]`
|
||||
|
||||
error: malformed `macro_use` attribute input
|
||||
--> $DIR/malformed-attrs.rs:209:1
|
||||
--> $DIR/malformed-attrs.rs:210:1
|
||||
|
|
||||
LL | #[macro_use = 1]
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
@@ -170,7 +170,7 @@ LL + #[macro_use]
|
||||
|
|
||||
|
||||
error: malformed `macro_export` attribute input
|
||||
--> $DIR/malformed-attrs.rs:214:1
|
||||
--> $DIR/malformed-attrs.rs:215:1
|
||||
|
|
||||
LL | #[macro_export = 18]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
@@ -185,31 +185,31 @@ LL + #[macro_export]
|
||||
|
|
||||
|
||||
error: malformed `allow_internal_unsafe` attribute input
|
||||
--> $DIR/malformed-attrs.rs:216:1
|
||||
--> $DIR/malformed-attrs.rs:217:1
|
||||
|
|
||||
LL | #[allow_internal_unsafe = 1]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: must be of the form: `#[allow_internal_unsafe]`
|
||||
|
||||
error: the `#[proc_macro]` attribute is only usable with crates of the `proc-macro` crate type
|
||||
--> $DIR/malformed-attrs.rs:99:1
|
||||
--> $DIR/malformed-attrs.rs:100:1
|
||||
|
|
||||
LL | #[proc_macro = 18]
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: the `#[proc_macro_attribute]` attribute is only usable with crates of the `proc-macro` crate type
|
||||
--> $DIR/malformed-attrs.rs:116:1
|
||||
--> $DIR/malformed-attrs.rs:117:1
|
||||
|
|
||||
LL | #[proc_macro_attribute = 19]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: the `#[proc_macro_derive]` attribute is only usable with crates of the `proc-macro` crate type
|
||||
--> $DIR/malformed-attrs.rs:123:1
|
||||
--> $DIR/malformed-attrs.rs:124:1
|
||||
|
|
||||
LL | #[proc_macro_derive]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0658]: allow_internal_unsafe side-steps the unsafe_code lint
|
||||
--> $DIR/malformed-attrs.rs:216:1
|
||||
--> $DIR/malformed-attrs.rs:217:1
|
||||
|
|
||||
LL | #[allow_internal_unsafe = 1]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@@ -218,7 +218,7 @@ LL | #[allow_internal_unsafe = 1]
|
||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||
|
||||
error: valid forms for the attribute are `#[doc(hidden|inline|...)]` and `#[doc = "string"]`
|
||||
--> $DIR/malformed-attrs.rs:43:1
|
||||
--> $DIR/malformed-attrs.rs:44:1
|
||||
|
|
||||
LL | #[doc]
|
||||
| ^^^^^^
|
||||
@@ -228,7 +228,7 @@ LL | #[doc]
|
||||
= note: `#[deny(ill_formed_attribute_input)]` on by default
|
||||
|
||||
error: valid forms for the attribute are `#[doc(hidden|inline|...)]` and `#[doc = "string"]`
|
||||
--> $DIR/malformed-attrs.rs:76:1
|
||||
--> $DIR/malformed-attrs.rs:77:1
|
||||
|
|
||||
LL | #[doc]
|
||||
| ^^^^^^
|
||||
@@ -237,7 +237,7 @@ LL | #[doc]
|
||||
= note: for more information, see issue #57571 <https://github.com/rust-lang/rust/issues/57571>
|
||||
|
||||
error: attribute must be of the form `#[link(name = "...", /*opt*/ kind = "dylib|static|...", /*opt*/ wasm_import_module = "...", /*opt*/ import_name_type = "decorated|noprefix|undecorated")]`
|
||||
--> $DIR/malformed-attrs.rs:83:1
|
||||
--> $DIR/malformed-attrs.rs:84:1
|
||||
|
|
||||
LL | #[link]
|
||||
| ^^^^^^^
|
||||
@@ -246,7 +246,7 @@ LL | #[link]
|
||||
= note: for more information, see issue #57571 <https://github.com/rust-lang/rust/issues/57571>
|
||||
|
||||
error: invalid argument
|
||||
--> $DIR/malformed-attrs.rs:188:1
|
||||
--> $DIR/malformed-attrs.rs:189:1
|
||||
|
|
||||
LL | #[debugger_visualizer]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
@@ -256,7 +256,7 @@ LL | #[debugger_visualizer]
|
||||
= note: expected: `gdb_script_file = "..."`
|
||||
|
||||
error[E0565]: malformed `omit_gdb_pretty_printer_section` attribute input
|
||||
--> $DIR/malformed-attrs.rs:26:1
|
||||
--> $DIR/malformed-attrs.rs:27:1
|
||||
|
|
||||
LL | #![omit_gdb_pretty_printer_section = 1]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^---^
|
||||
@@ -265,25 +265,25 @@ LL | #![omit_gdb_pretty_printer_section = 1]
|
||||
| help: must be of the form: `#[omit_gdb_pretty_printer_section]`
|
||||
|
||||
error[E0539]: malformed `export_name` attribute input
|
||||
--> $DIR/malformed-attrs.rs:32:1
|
||||
--> $DIR/malformed-attrs.rs:33:1
|
||||
|
|
||||
LL | #[unsafe(export_name)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^ help: must be of the form: `#[export_name = "name"]`
|
||||
|
||||
error: `rustc_allow_const_fn_unstable` expects a list of feature names
|
||||
--> $DIR/malformed-attrs.rs:34:1
|
||||
--> $DIR/malformed-attrs.rs:35:1
|
||||
|
|
||||
LL | #[rustc_allow_const_fn_unstable]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: `allow_internal_unstable` expects a list of feature names
|
||||
--> $DIR/malformed-attrs.rs:37:1
|
||||
--> $DIR/malformed-attrs.rs:38:1
|
||||
|
|
||||
LL | #[allow_internal_unstable]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0539]: malformed `rustc_confusables` attribute input
|
||||
--> $DIR/malformed-attrs.rs:39:1
|
||||
--> $DIR/malformed-attrs.rs:40:1
|
||||
|
|
||||
LL | #[rustc_confusables]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
@@ -292,7 +292,7 @@ LL | #[rustc_confusables]
|
||||
| help: must be of the form: `#[rustc_confusables("name1", "name2", ...)]`
|
||||
|
||||
error[E0539]: malformed `deprecated` attribute input
|
||||
--> $DIR/malformed-attrs.rs:41:1
|
||||
--> $DIR/malformed-attrs.rs:42:1
|
||||
|
|
||||
LL | #[deprecated = 5]
|
||||
| ^^^^^^^^^^^^^^^-^
|
||||
@@ -312,13 +312,13 @@ LL + #[deprecated]
|
||||
|
|
||||
|
||||
error[E0539]: malformed `rustc_macro_transparency` attribute input
|
||||
--> $DIR/malformed-attrs.rs:46:1
|
||||
--> $DIR/malformed-attrs.rs:47:1
|
||||
|
|
||||
LL | #[rustc_macro_transparency]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: must be of the form: `#[rustc_macro_transparency = "transparent|semitransparent|opaque"]`
|
||||
|
||||
error[E0539]: malformed `repr` attribute input
|
||||
--> $DIR/malformed-attrs.rs:48:1
|
||||
--> $DIR/malformed-attrs.rs:49:1
|
||||
|
|
||||
LL | #[repr]
|
||||
| ^^^^^^^
|
||||
@@ -327,7 +327,7 @@ LL | #[repr]
|
||||
| help: must be of the form: `#[repr(C | Rust | align(...) | packed(...) | <integer type> | transparent)]`
|
||||
|
||||
error[E0565]: malformed `rustc_as_ptr` attribute input
|
||||
--> $DIR/malformed-attrs.rs:51:1
|
||||
--> $DIR/malformed-attrs.rs:52:1
|
||||
|
|
||||
LL | #[rustc_as_ptr = 5]
|
||||
| ^^^^^^^^^^^^^^^---^
|
||||
@@ -335,17 +335,17 @@ LL | #[rustc_as_ptr = 5]
|
||||
| | didn't expect any arguments here
|
||||
| help: must be of the form: `#[rustc_as_ptr]`
|
||||
|
||||
error[E0539]: malformed `align` attribute input
|
||||
--> $DIR/malformed-attrs.rs:56:1
|
||||
error[E0539]: malformed `rustc_align` attribute input
|
||||
--> $DIR/malformed-attrs.rs:57:1
|
||||
|
|
||||
LL | #[align]
|
||||
| ^^^^^^^^
|
||||
LL | #[rustc_align]
|
||||
| ^^^^^^^^^^^^^^
|
||||
| |
|
||||
| expected this to be a list
|
||||
| help: must be of the form: `#[align(<alignment in bytes>)]`
|
||||
| help: must be of the form: `#[rustc_align(<alignment in bytes>)]`
|
||||
|
||||
error[E0539]: malformed `optimize` attribute input
|
||||
--> $DIR/malformed-attrs.rs:58:1
|
||||
--> $DIR/malformed-attrs.rs:59:1
|
||||
|
|
||||
LL | #[optimize]
|
||||
| ^^^^^^^^^^^
|
||||
@@ -354,7 +354,7 @@ LL | #[optimize]
|
||||
| help: must be of the form: `#[optimize(size|speed|none)]`
|
||||
|
||||
error[E0565]: malformed `cold` attribute input
|
||||
--> $DIR/malformed-attrs.rs:60:1
|
||||
--> $DIR/malformed-attrs.rs:61:1
|
||||
|
|
||||
LL | #[cold = 1]
|
||||
| ^^^^^^^---^
|
||||
@@ -363,13 +363,13 @@ LL | #[cold = 1]
|
||||
| help: must be of the form: `#[cold]`
|
||||
|
||||
error: valid forms for the attribute are `#[must_use = "reason"]` and `#[must_use]`
|
||||
--> $DIR/malformed-attrs.rs:62:1
|
||||
--> $DIR/malformed-attrs.rs:63:1
|
||||
|
|
||||
LL | #[must_use()]
|
||||
| ^^^^^^^^^^^^^
|
||||
|
||||
error[E0565]: malformed `no_mangle` attribute input
|
||||
--> $DIR/malformed-attrs.rs:64:1
|
||||
--> $DIR/malformed-attrs.rs:65:1
|
||||
|
|
||||
LL | #[no_mangle = 1]
|
||||
| ^^^^^^^^^^^^---^
|
||||
@@ -378,7 +378,7 @@ LL | #[no_mangle = 1]
|
||||
| help: must be of the form: `#[no_mangle]`
|
||||
|
||||
error[E0565]: malformed `naked` attribute input
|
||||
--> $DIR/malformed-attrs.rs:66:1
|
||||
--> $DIR/malformed-attrs.rs:67:1
|
||||
|
|
||||
LL | #[unsafe(naked())]
|
||||
| ^^^^^^^^^^^^^^--^^
|
||||
@@ -387,7 +387,7 @@ LL | #[unsafe(naked())]
|
||||
| help: must be of the form: `#[naked]`
|
||||
|
||||
error[E0565]: malformed `track_caller` attribute input
|
||||
--> $DIR/malformed-attrs.rs:68:1
|
||||
--> $DIR/malformed-attrs.rs:69:1
|
||||
|
|
||||
LL | #[track_caller()]
|
||||
| ^^^^^^^^^^^^^^--^
|
||||
@@ -396,13 +396,13 @@ LL | #[track_caller()]
|
||||
| help: must be of the form: `#[track_caller]`
|
||||
|
||||
error[E0539]: malformed `export_name` attribute input
|
||||
--> $DIR/malformed-attrs.rs:70:1
|
||||
--> $DIR/malformed-attrs.rs:71:1
|
||||
|
|
||||
LL | #[export_name()]
|
||||
| ^^^^^^^^^^^^^^^^ help: must be of the form: `#[export_name = "name"]`
|
||||
|
||||
error[E0805]: malformed `used` attribute input
|
||||
--> $DIR/malformed-attrs.rs:72:1
|
||||
--> $DIR/malformed-attrs.rs:73:1
|
||||
|
|
||||
LL | #[used()]
|
||||
| ^^^^^^--^
|
||||
@@ -418,7 +418,7 @@ LL + #[used]
|
||||
|
|
||||
|
||||
error[E0539]: malformed `target_feature` attribute input
|
||||
--> $DIR/malformed-attrs.rs:79:1
|
||||
--> $DIR/malformed-attrs.rs:80:1
|
||||
|
|
||||
LL | #[target_feature]
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
@@ -427,7 +427,7 @@ LL | #[target_feature]
|
||||
| help: must be of the form: `#[target_feature(enable = "feat1, feat2")]`
|
||||
|
||||
error[E0565]: malformed `export_stable` attribute input
|
||||
--> $DIR/malformed-attrs.rs:81:1
|
||||
--> $DIR/malformed-attrs.rs:82:1
|
||||
|
|
||||
LL | #[export_stable = 1]
|
||||
| ^^^^^^^^^^^^^^^^---^
|
||||
@@ -436,19 +436,19 @@ LL | #[export_stable = 1]
|
||||
| help: must be of the form: `#[export_stable]`
|
||||
|
||||
error[E0539]: malformed `link_name` attribute input
|
||||
--> $DIR/malformed-attrs.rs:86:1
|
||||
--> $DIR/malformed-attrs.rs:87:1
|
||||
|
|
||||
LL | #[link_name]
|
||||
| ^^^^^^^^^^^^ help: must be of the form: `#[link_name = "name"]`
|
||||
|
||||
error[E0539]: malformed `link_section` attribute input
|
||||
--> $DIR/malformed-attrs.rs:88:1
|
||||
--> $DIR/malformed-attrs.rs:89:1
|
||||
|
|
||||
LL | #[link_section]
|
||||
| ^^^^^^^^^^^^^^^ help: must be of the form: `#[link_section = "name"]`
|
||||
|
||||
error[E0539]: malformed `coverage` attribute input
|
||||
--> $DIR/malformed-attrs.rs:90:1
|
||||
--> $DIR/malformed-attrs.rs:91:1
|
||||
|
|
||||
LL | #[coverage]
|
||||
| ^^^^^^^^^^^ this attribute is only valid with either `on` or `off` as an argument
|
||||
@@ -461,7 +461,7 @@ LL | #[coverage(on)]
|
||||
| ++++
|
||||
|
||||
error[E0565]: malformed `no_implicit_prelude` attribute input
|
||||
--> $DIR/malformed-attrs.rs:97:1
|
||||
--> $DIR/malformed-attrs.rs:98:1
|
||||
|
|
||||
LL | #[no_implicit_prelude = 23]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^----^
|
||||
@@ -470,7 +470,7 @@ LL | #[no_implicit_prelude = 23]
|
||||
| help: must be of the form: `#[no_implicit_prelude]`
|
||||
|
||||
error[E0539]: malformed `must_use` attribute input
|
||||
--> $DIR/malformed-attrs.rs:119:1
|
||||
--> $DIR/malformed-attrs.rs:120:1
|
||||
|
|
||||
LL | #[must_use = 1]
|
||||
| ^^^^^^^^^^^^^-^
|
||||
@@ -487,7 +487,7 @@ LL + #[must_use]
|
||||
|
|
||||
|
||||
error[E0539]: malformed `rustc_layout_scalar_valid_range_start` attribute input
|
||||
--> $DIR/malformed-attrs.rs:128:1
|
||||
--> $DIR/malformed-attrs.rs:129:1
|
||||
|
|
||||
LL | #[rustc_layout_scalar_valid_range_start]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@@ -496,7 +496,7 @@ LL | #[rustc_layout_scalar_valid_range_start]
|
||||
| help: must be of the form: `#[rustc_layout_scalar_valid_range_start(start)]`
|
||||
|
||||
error[E0539]: malformed `rustc_layout_scalar_valid_range_end` attribute input
|
||||
--> $DIR/malformed-attrs.rs:130:1
|
||||
--> $DIR/malformed-attrs.rs:131:1
|
||||
|
|
||||
LL | #[rustc_layout_scalar_valid_range_end]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@@ -505,7 +505,7 @@ LL | #[rustc_layout_scalar_valid_range_end]
|
||||
| help: must be of the form: `#[rustc_layout_scalar_valid_range_end(end)]`
|
||||
|
||||
error[E0565]: malformed `marker` attribute input
|
||||
--> $DIR/malformed-attrs.rs:155:1
|
||||
--> $DIR/malformed-attrs.rs:156:1
|
||||
|
|
||||
LL | #[marker = 3]
|
||||
| ^^^^^^^^^---^
|
||||
@@ -514,7 +514,7 @@ LL | #[marker = 3]
|
||||
| help: must be of the form: `#[marker]`
|
||||
|
||||
error[E0565]: malformed `fundamental` attribute input
|
||||
--> $DIR/malformed-attrs.rs:157:1
|
||||
--> $DIR/malformed-attrs.rs:158:1
|
||||
|
|
||||
LL | #[fundamental()]
|
||||
| ^^^^^^^^^^^^^--^
|
||||
@@ -523,7 +523,7 @@ LL | #[fundamental()]
|
||||
| help: must be of the form: `#[fundamental]`
|
||||
|
||||
error[E0565]: malformed `ffi_pure` attribute input
|
||||
--> $DIR/malformed-attrs.rs:165:5
|
||||
--> $DIR/malformed-attrs.rs:166:5
|
||||
|
|
||||
LL | #[unsafe(ffi_pure = 1)]
|
||||
| ^^^^^^^^^^^^^^^^^^---^^
|
||||
@@ -532,7 +532,7 @@ LL | #[unsafe(ffi_pure = 1)]
|
||||
| help: must be of the form: `#[ffi_pure]`
|
||||
|
||||
error[E0539]: malformed `link_ordinal` attribute input
|
||||
--> $DIR/malformed-attrs.rs:167:5
|
||||
--> $DIR/malformed-attrs.rs:168:5
|
||||
|
|
||||
LL | #[link_ordinal]
|
||||
| ^^^^^^^^^^^^^^^
|
||||
@@ -541,7 +541,7 @@ LL | #[link_ordinal]
|
||||
| help: must be of the form: `#[link_ordinal(ordinal)]`
|
||||
|
||||
error[E0565]: malformed `ffi_const` attribute input
|
||||
--> $DIR/malformed-attrs.rs:171:5
|
||||
--> $DIR/malformed-attrs.rs:172:5
|
||||
|
|
||||
LL | #[unsafe(ffi_const = 1)]
|
||||
| ^^^^^^^^^^^^^^^^^^^---^^
|
||||
@@ -550,7 +550,7 @@ LL | #[unsafe(ffi_const = 1)]
|
||||
| help: must be of the form: `#[ffi_const]`
|
||||
|
||||
error[E0565]: malformed `automatically_derived` attribute input
|
||||
--> $DIR/malformed-attrs.rs:191:1
|
||||
--> $DIR/malformed-attrs.rs:192:1
|
||||
|
|
||||
LL | #[automatically_derived = 18]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^----^
|
||||
@@ -559,7 +559,7 @@ LL | #[automatically_derived = 18]
|
||||
| help: must be of the form: `#[automatically_derived]`
|
||||
|
||||
error[E0565]: malformed `non_exhaustive` attribute input
|
||||
--> $DIR/malformed-attrs.rs:197:1
|
||||
--> $DIR/malformed-attrs.rs:198:1
|
||||
|
|
||||
LL | #[non_exhaustive = 1]
|
||||
| ^^^^^^^^^^^^^^^^^---^
|
||||
@@ -568,7 +568,7 @@ LL | #[non_exhaustive = 1]
|
||||
| help: must be of the form: `#[non_exhaustive]`
|
||||
|
||||
error[E0565]: malformed `type_const` attribute input
|
||||
--> $DIR/malformed-attrs.rs:143:5
|
||||
--> $DIR/malformed-attrs.rs:144:5
|
||||
|
|
||||
LL | #[type_const = 1]
|
||||
| ^^^^^^^^^^^^^---^
|
||||
@@ -577,7 +577,7 @@ LL | #[type_const = 1]
|
||||
| help: must be of the form: `#[type_const]`
|
||||
|
||||
error: attribute should be applied to `const fn`
|
||||
--> $DIR/malformed-attrs.rs:34:1
|
||||
--> $DIR/malformed-attrs.rs:35:1
|
||||
|
|
||||
LL | #[rustc_allow_const_fn_unstable]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@@ -589,19 +589,19 @@ LL | | }
|
||||
| |_- not a `const fn`
|
||||
|
||||
error: `#[repr(align(...))]` is not supported on function items
|
||||
--> $DIR/malformed-attrs.rs:48:1
|
||||
--> $DIR/malformed-attrs.rs:49:1
|
||||
|
|
||||
LL | #[repr]
|
||||
| ^^^^^^^
|
||||
|
|
||||
help: use `#[align(...)]` instead
|
||||
--> $DIR/malformed-attrs.rs:48:1
|
||||
help: use `#[rustc_align(...)]` instead
|
||||
--> $DIR/malformed-attrs.rs:49:1
|
||||
|
|
||||
LL | #[repr]
|
||||
| ^^^^^^^
|
||||
|
||||
warning: `#[diagnostic::do_not_recommend]` does not expect any arguments
|
||||
--> $DIR/malformed-attrs.rs:149:1
|
||||
--> $DIR/malformed-attrs.rs:150:1
|
||||
|
|
||||
LL | #[diagnostic::do_not_recommend()]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@@ -609,7 +609,7 @@ LL | #[diagnostic::do_not_recommend()]
|
||||
= note: `#[warn(malformed_diagnostic_attributes)]` on by default
|
||||
|
||||
warning: missing options for `on_unimplemented` attribute
|
||||
--> $DIR/malformed-attrs.rs:138:1
|
||||
--> $DIR/malformed-attrs.rs:139:1
|
||||
|
|
||||
LL | #[diagnostic::on_unimplemented]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@@ -617,7 +617,7 @@ LL | #[diagnostic::on_unimplemented]
|
||||
= help: at least one of the `message`, `note` and `label` options are expected
|
||||
|
||||
warning: malformed `on_unimplemented` attribute
|
||||
--> $DIR/malformed-attrs.rs:140:1
|
||||
--> $DIR/malformed-attrs.rs:141:1
|
||||
|
|
||||
LL | #[diagnostic::on_unimplemented = 1]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid option found here
|
||||
@@ -625,7 +625,7 @@ LL | #[diagnostic::on_unimplemented = 1]
|
||||
= help: only `message`, `note` and `label` are allowed as options
|
||||
|
||||
error: valid forms for the attribute are `#[inline(always|never)]` and `#[inline]`
|
||||
--> $DIR/malformed-attrs.rs:53:1
|
||||
--> $DIR/malformed-attrs.rs:54:1
|
||||
|
|
||||
LL | #[inline = 5]
|
||||
| ^^^^^^^^^^^^^
|
||||
@@ -634,7 +634,7 @@ LL | #[inline = 5]
|
||||
= note: for more information, see issue #57571 <https://github.com/rust-lang/rust/issues/57571>
|
||||
|
||||
error: valid forms for the attribute are `#[ignore = "reason"]` and `#[ignore]`
|
||||
--> $DIR/malformed-attrs.rs:94:1
|
||||
--> $DIR/malformed-attrs.rs:95:1
|
||||
|
|
||||
LL | #[ignore()]
|
||||
| ^^^^^^^^^^^
|
||||
@@ -643,7 +643,7 @@ LL | #[ignore()]
|
||||
= note: for more information, see issue #57571 <https://github.com/rust-lang/rust/issues/57571>
|
||||
|
||||
error: valid forms for the attribute are `#[ignore = "reason"]` and `#[ignore]`
|
||||
--> $DIR/malformed-attrs.rs:223:1
|
||||
--> $DIR/malformed-attrs.rs:224:1
|
||||
|
|
||||
LL | #[ignore = 1]
|
||||
| ^^^^^^^^^^^^^
|
||||
@@ -652,7 +652,7 @@ LL | #[ignore = 1]
|
||||
= note: for more information, see issue #57571 <https://github.com/rust-lang/rust/issues/57571>
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/malformed-attrs.rs:111:23
|
||||
--> $DIR/malformed-attrs.rs:112:23
|
||||
|
|
||||
LL | fn test() {
|
||||
| - help: a return type might be missing here: `-> _`
|
||||
@@ -660,7 +660,7 @@ LL | #[coroutine = 63] || {}
|
||||
| ^^^^^ expected `()`, found coroutine
|
||||
|
|
||||
= note: expected unit type `()`
|
||||
found coroutine `{coroutine@$DIR/malformed-attrs.rs:111:23: 111:25}`
|
||||
found coroutine `{coroutine@$DIR/malformed-attrs.rs:112:23: 112:25}`
|
||||
|
||||
error: aborting due to 75 previous errors; 3 warnings emitted
|
||||
|
||||
|
||||
@@ -1,49 +1,54 @@
|
||||
// ignore-tidy-linelength
|
||||
|
||||
// FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity
|
||||
#![feature(rustc_attrs)]
|
||||
#![feature(fn_align)]
|
||||
|
||||
#![crate_type = "lib"]
|
||||
|
||||
trait MyTrait {
|
||||
#[align] //~ ERROR malformed `align` attribute input
|
||||
#[rustc_align] //~ ERROR malformed `rustc_align` attribute input
|
||||
fn myfun1();
|
||||
|
||||
#[align(1, 2)] //~ ERROR malformed `align` attribute input
|
||||
#[rustc_align(1, 2)] //~ ERROR malformed `rustc_align` attribute input
|
||||
fn myfun2();
|
||||
}
|
||||
|
||||
#[align = 16] //~ ERROR malformed `align` attribute input
|
||||
#[rustc_align = 16] //~ ERROR malformed `rustc_align` attribute input
|
||||
fn f1() {}
|
||||
|
||||
#[align("hello")] //~ ERROR invalid alignment value: not an unsuffixed integer
|
||||
#[rustc_align("hello")] //~ ERROR invalid alignment value: not an unsuffixed integer
|
||||
fn f2() {}
|
||||
|
||||
#[align(0)] //~ ERROR invalid alignment value: not a power of two
|
||||
#[rustc_align(0)] //~ ERROR invalid alignment value: not a power of two
|
||||
fn f3() {}
|
||||
|
||||
#[repr(align(16))] //~ ERROR `#[repr(align(...))]` is not supported on function items
|
||||
fn f4() {}
|
||||
|
||||
#[align(-1)] //~ ERROR expected unsuffixed literal, found `-`
|
||||
#[rustc_align(-1)] //~ ERROR expected unsuffixed literal, found `-`
|
||||
fn f5() {}
|
||||
|
||||
#[align(3)] //~ ERROR invalid alignment value: not a power of two
|
||||
#[rustc_align(3)] //~ ERROR invalid alignment value: not a power of two
|
||||
fn f6() {}
|
||||
|
||||
#[align(4usize)] //~ ERROR invalid alignment value: not an unsuffixed integer [E0589]
|
||||
#[rustc_align(4usize)] //~ ERROR invalid alignment value: not an unsuffixed integer [E0589]
|
||||
//~^ ERROR suffixed literals are not allowed in attributes
|
||||
fn f7() {}
|
||||
|
||||
#[align(16)]
|
||||
#[align(3)] //~ ERROR invalid alignment value: not a power of two
|
||||
#[align(16)]
|
||||
#[rustc_align(16)]
|
||||
#[rustc_align(3)] //~ ERROR invalid alignment value: not a power of two
|
||||
#[rustc_align(16)]
|
||||
fn f8() {}
|
||||
|
||||
#[align(16)] //~ ERROR `#[align(...)]` is not supported on struct items
|
||||
#[rustc_align(16)] //~ ERROR `#[rustc_align(...)]` is not supported on struct items
|
||||
struct S1;
|
||||
|
||||
#[align(32)] //~ ERROR `#[align(...)]` should be applied to a function item
|
||||
#[rustc_align(32)] //~ ERROR `#[rustc_align(...)]` should be applied to a function item
|
||||
const FOO: i32 = 42;
|
||||
|
||||
#[align(32)] //~ ERROR `#[align(...)]` should be applied to a function item
|
||||
#[rustc_align(32)] //~ ERROR `#[rustc_align(...)]` should be applied to a function item
|
||||
mod test {}
|
||||
|
||||
#[align(32)] //~ ERROR `#[align(...)]` should be applied to a function item
|
||||
#[rustc_align(32)] //~ ERROR `#[rustc_align(...)]` should be applied to a function item
|
||||
use ::std::iter;
|
||||
|
||||
@@ -1,119 +1,119 @@
|
||||
error: expected unsuffixed literal, found `-`
|
||||
--> $DIR/malformed-fn-align.rs:24:9
|
||||
--> $DIR/malformed-fn-align.rs:29:15
|
||||
|
|
||||
LL | #[align(-1)]
|
||||
| ^
|
||||
LL | #[rustc_align(-1)]
|
||||
| ^
|
||||
|
||||
error: suffixed literals are not allowed in attributes
|
||||
--> $DIR/malformed-fn-align.rs:30:9
|
||||
--> $DIR/malformed-fn-align.rs:35:15
|
||||
|
|
||||
LL | #[align(4usize)]
|
||||
| ^^^^^^
|
||||
LL | #[rustc_align(4usize)]
|
||||
| ^^^^^^
|
||||
|
|
||||
= help: instead of using a suffixed literal (`1u8`, `1.0f32`, etc.), use an unsuffixed version (`1`, `1.0`, etc.)
|
||||
|
||||
error[E0539]: malformed `align` attribute input
|
||||
--> $DIR/malformed-fn-align.rs:5:5
|
||||
error[E0539]: malformed `rustc_align` attribute input
|
||||
--> $DIR/malformed-fn-align.rs:10:5
|
||||
|
|
||||
LL | #[align]
|
||||
| ^^^^^^^^
|
||||
LL | #[rustc_align]
|
||||
| ^^^^^^^^^^^^^^
|
||||
| |
|
||||
| expected this to be a list
|
||||
| help: must be of the form: `#[align(<alignment in bytes>)]`
|
||||
| help: must be of the form: `#[rustc_align(<alignment in bytes>)]`
|
||||
|
||||
error[E0805]: malformed `align` attribute input
|
||||
--> $DIR/malformed-fn-align.rs:8:5
|
||||
error[E0805]: malformed `rustc_align` attribute input
|
||||
--> $DIR/malformed-fn-align.rs:13:5
|
||||
|
|
||||
LL | #[align(1, 2)]
|
||||
| ^^^^^^^------^
|
||||
| | |
|
||||
| | expected a single argument here
|
||||
| help: must be of the form: `#[align(<alignment in bytes>)]`
|
||||
LL | #[rustc_align(1, 2)]
|
||||
| ^^^^^^^^^^^^^------^
|
||||
| | |
|
||||
| | expected a single argument here
|
||||
| help: must be of the form: `#[rustc_align(<alignment in bytes>)]`
|
||||
|
||||
error[E0539]: malformed `align` attribute input
|
||||
--> $DIR/malformed-fn-align.rs:12:1
|
||||
error[E0539]: malformed `rustc_align` attribute input
|
||||
--> $DIR/malformed-fn-align.rs:17:1
|
||||
|
|
||||
LL | #[align = 16]
|
||||
| ^^^^^^^^^^^^^
|
||||
LL | #[rustc_align = 16]
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
| |
|
||||
| expected this to be a list
|
||||
| help: must be of the form: `#[align(<alignment in bytes>)]`
|
||||
| help: must be of the form: `#[rustc_align(<alignment in bytes>)]`
|
||||
|
||||
error[E0589]: invalid alignment value: not an unsuffixed integer
|
||||
--> $DIR/malformed-fn-align.rs:15:9
|
||||
--> $DIR/malformed-fn-align.rs:20:15
|
||||
|
|
||||
LL | #[align("hello")]
|
||||
| ^^^^^^^
|
||||
LL | #[rustc_align("hello")]
|
||||
| ^^^^^^^
|
||||
|
||||
error[E0589]: invalid alignment value: not a power of two
|
||||
--> $DIR/malformed-fn-align.rs:18:9
|
||||
--> $DIR/malformed-fn-align.rs:23:15
|
||||
|
|
||||
LL | #[align(0)]
|
||||
| ^
|
||||
LL | #[rustc_align(0)]
|
||||
| ^
|
||||
|
||||
error[E0589]: invalid alignment value: not a power of two
|
||||
--> $DIR/malformed-fn-align.rs:27:9
|
||||
--> $DIR/malformed-fn-align.rs:32:15
|
||||
|
|
||||
LL | #[align(3)]
|
||||
| ^
|
||||
LL | #[rustc_align(3)]
|
||||
| ^
|
||||
|
||||
error[E0589]: invalid alignment value: not an unsuffixed integer
|
||||
--> $DIR/malformed-fn-align.rs:30:9
|
||||
--> $DIR/malformed-fn-align.rs:35:15
|
||||
|
|
||||
LL | #[align(4usize)]
|
||||
| ^^^^^^
|
||||
LL | #[rustc_align(4usize)]
|
||||
| ^^^^^^
|
||||
|
||||
error[E0589]: invalid alignment value: not a power of two
|
||||
--> $DIR/malformed-fn-align.rs:35:9
|
||||
--> $DIR/malformed-fn-align.rs:40:15
|
||||
|
|
||||
LL | #[align(3)]
|
||||
| ^
|
||||
LL | #[rustc_align(3)]
|
||||
| ^
|
||||
|
||||
error: `#[repr(align(...))]` is not supported on function items
|
||||
--> $DIR/malformed-fn-align.rs:21:8
|
||||
--> $DIR/malformed-fn-align.rs:26:8
|
||||
|
|
||||
LL | #[repr(align(16))]
|
||||
| ^^^^^^^^^
|
||||
|
|
||||
help: use `#[align(...)]` instead
|
||||
--> $DIR/malformed-fn-align.rs:21:8
|
||||
help: use `#[rustc_align(...)]` instead
|
||||
--> $DIR/malformed-fn-align.rs:26:8
|
||||
|
|
||||
LL | #[repr(align(16))]
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: `#[align(...)]` is not supported on struct items
|
||||
--> $DIR/malformed-fn-align.rs:39:1
|
||||
error: `#[rustc_align(...)]` is not supported on struct items
|
||||
--> $DIR/malformed-fn-align.rs:44:1
|
||||
|
|
||||
LL | #[align(16)]
|
||||
| ^^^^^^^^^^^^
|
||||
LL | #[rustc_align(16)]
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
help: use `#[repr(align(...))]` instead
|
||||
|
|
||||
LL - #[align(16)]
|
||||
LL - #[rustc_align(16)]
|
||||
LL + #[repr(align(16))]
|
||||
|
|
||||
|
||||
error: `#[align(...)]` should be applied to a function item
|
||||
--> $DIR/malformed-fn-align.rs:42:1
|
||||
error: `#[rustc_align(...)]` should be applied to a function item
|
||||
--> $DIR/malformed-fn-align.rs:47:1
|
||||
|
|
||||
LL | #[align(32)]
|
||||
| ^^^^^^^^^^^^
|
||||
LL | #[rustc_align(32)]
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
LL | const FOO: i32 = 42;
|
||||
| -------------------- not a function item
|
||||
|
||||
error: `#[align(...)]` should be applied to a function item
|
||||
--> $DIR/malformed-fn-align.rs:45:1
|
||||
error: `#[rustc_align(...)]` should be applied to a function item
|
||||
--> $DIR/malformed-fn-align.rs:50:1
|
||||
|
|
||||
LL | #[align(32)]
|
||||
| ^^^^^^^^^^^^
|
||||
LL | #[rustc_align(32)]
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
LL | mod test {}
|
||||
| ----------- not a function item
|
||||
|
||||
error: `#[align(...)]` should be applied to a function item
|
||||
--> $DIR/malformed-fn-align.rs:48:1
|
||||
error: `#[rustc_align(...)]` should be applied to a function item
|
||||
--> $DIR/malformed-fn-align.rs:53:1
|
||||
|
|
||||
LL | #[align(32)]
|
||||
| ^^^^^^^^^^^^
|
||||
LL | #[rustc_align(32)]
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
LL | use ::std::iter;
|
||||
| ---------------- not a function item
|
||||
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
#![crate_type = "lib"]
|
||||
|
||||
#[align(16)]
|
||||
//~^ ERROR the `#[align]` attribute is an experimental feature
|
||||
// ignore-tidy-linelength
|
||||
|
||||
// FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity
|
||||
|
||||
#[rustc_align(16)]
|
||||
//~^ ERROR the `#[rustc_align]` attribute is an experimental feature
|
||||
fn requires_alignment() {}
|
||||
|
||||
trait MyTrait {
|
||||
#[align]
|
||||
//~^ ERROR the `#[align]` attribute is an experimental feature
|
||||
//~| ERROR malformed `align` attribute input
|
||||
#[rustc_align]
|
||||
//~^ ERROR the `#[rustc_align]` attribute is an experimental feature
|
||||
//~| ERROR malformed `rustc_align` attribute input
|
||||
fn myfun();
|
||||
}
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
error[E0658]: the `#[align]` attribute is an experimental feature
|
||||
--> $DIR/feature-gate-fn_align.rs:3:1
|
||||
error[E0658]: the `#[rustc_align]` attribute is an experimental feature
|
||||
--> $DIR/feature-gate-fn_align.rs:7:1
|
||||
|
|
||||
LL | #[align(16)]
|
||||
| ^^^^^^^^^^^^
|
||||
LL | #[rustc_align(16)]
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: see issue #82232 <https://github.com/rust-lang/rust/issues/82232> for more information
|
||||
= help: add `#![feature(fn_align)]` to the crate attributes to enable
|
||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||
|
||||
error[E0658]: the `#[align]` attribute is an experimental feature
|
||||
--> $DIR/feature-gate-fn_align.rs:8:5
|
||||
error[E0658]: the `#[rustc_align]` attribute is an experimental feature
|
||||
--> $DIR/feature-gate-fn_align.rs:12:5
|
||||
|
|
||||
LL | #[align]
|
||||
| ^^^^^^^^
|
||||
LL | #[rustc_align]
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: see issue #82232 <https://github.com/rust-lang/rust/issues/82232> for more information
|
||||
= help: add `#![feature(fn_align)]` to the crate attributes to enable
|
||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||
|
||||
error[E0539]: malformed `align` attribute input
|
||||
--> $DIR/feature-gate-fn_align.rs:8:5
|
||||
error[E0539]: malformed `rustc_align` attribute input
|
||||
--> $DIR/feature-gate-fn_align.rs:12:5
|
||||
|
|
||||
LL | #[align]
|
||||
| ^^^^^^^^
|
||||
LL | #[rustc_align]
|
||||
| ^^^^^^^^^^^^^^
|
||||
| |
|
||||
| expected this to be a list
|
||||
| help: must be of the form: `#[align(<alignment in bytes>)]`
|
||||
| help: must be of the form: `#[rustc_align(<alignment in bytes>)]`
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
|
||||
Reference in New Issue
Block a user