Skip to content

#[repr()] is allowed where it shouldn't #129606

Closed
@Kyuuhachi

Description

@Kyuuhachi
Contributor

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

added
needs-triageThis issue may need triage. Remove it if it has been sufficiently triaged.
on Aug 26, 2024
jieyouxu

jieyouxu commented on Aug 26, 2024

@jieyouxu
Member

cc #128444 (which is copied over to #128581)

added
A-attributesArea: Attributes (`#[…]`, `#![…]`)
T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.
and removed
needs-triageThis issue may need triage. Remove it if it has been sufficiently triaged.
on Aug 26, 2024
jieyouxu

jieyouxu commented on Aug 26, 2024

@jieyouxu
Member

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

compiler-errors commented on Aug 26, 2024

@compiler-errors
Member

I'll fold this into #129422 (or probably just do it as a follow-up)

compiler-errors

compiler-errors commented on Aug 26, 2024

@compiler-errors
Member

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.

#[repr()] on functions should be gated behind fn_align: #82232

Otherwise #[repr()] should only be allowed on ADTs.

added a commit that references this issue on Dec 5, 2024

Auto merge of rust-lang#133925 - folkertdev:improve-repr-warnings, r=…

added a commit that references this issue on Jan 18, 2025

Auto merge of rust-lang#133925 - folkertdev:improve-repr-warnings, r=…

6 remaining items

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

A-attributesArea: Attributes (`#[…]`, `#![…]`)A-reprArea: the `#[repr(stuff)]` attributeC-bugCategory: This is a bug.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.T-langRelevant to the language team

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

    Development

    Participants

    @chenyukang@Kyuuhachi@compiler-errors@jieyouxu@workingjubilee

    Issue actions

      `#[repr()]` is allowed where it shouldn't · Issue #129606 · rust-lang/rust