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:
Jieyou Xu
2025-07-18 00:10:46 +08:00
parent b2e94bf020
commit 69b71e4410
25 changed files with 270 additions and 255 deletions
@@ -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>(
+2 -1
View File
@@ -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.
+3 -1
View File
@@ -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
+3 -3
View File
@@ -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
+1
View File
@@ -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,
+2
View File
@@ -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,
+7 -3
View File
@@ -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
View File
@@ -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() {}
+4 -2
View File
@@ -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 -1
View File
@@ -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")
+5 -1
View File
@@ -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)]
| ^^
+5 -2
View File
@@ -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`.
+2 -1
View File
@@ -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
+85 -85
View File
@@ -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
+20 -15
View File
@@ -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;
+58 -58
View File
@@ -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