Closed
Description
I tried this code:
#[repr()] const CONST: u32 = 8;
#[repr()] struct Struct;
#[repr()] trait Trait {}
#[repr()] impl Trait for Struct {}
#[repr()] fn func() { #[repr()] let a = 4; }
I expected to see this happen: #[repr] doesn't make sense on other than struct/enum/union, so it shouldn't be permitted. Every case except the struct
should be an error. Not sure if that one ought to be legal either, but I guess the current warning is enough there.
Instead, this happened: Plenty of unused attribute warnings, but it compiles.
Meta
Tested on playground, both 1.80.1
and 1.82.0-nightly (2024-08-24 f167efad2f51088d8618)
.
Activity
jieyouxu commentedon Aug 26, 2024
cc #128444 (which is copied over to #128581)
jieyouxu commentedon Aug 26, 2024
If someone wants to fix this they should check if there's an RFC for
#[repr]
attribute and any follow-up T-lang discussions/decisions. The PR should also probably also be nominated for T-lang signoff.compiler-errors commentedon Aug 26, 2024
I'll fold this into #129422 (or probably just do it as a follow-up)
compiler-errors commentedon Aug 26, 2024
#[repr()]
on functions should be gated behindfn_align
: #82232Otherwise
#[repr()]
should only be allowed on ADTs.repr()
on invalid items #133925Auto merge of rust-lang#133925 - folkertdev:improve-repr-warnings, r=…
Auto merge of rust-lang#133925 - folkertdev:improve-repr-warnings, r=…
6 remaining items