Rollup merge of #138253 - mu001999-contrib:fix-138241, r=jdonszelmann

Continue to check attr if meet empty repr for adt

Fixes #138241

Returning while checking ReprEmpty results in missing the check for the next repr
This commit is contained in:
Matthias Krüger 2025-03-09 16:41:53 +01:00 committed by GitHub
commit 469f48db7f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 37 additions and 1 deletions

View File

@ -1998,7 +1998,7 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
// catch `repr()` with no arguments, applied to an item (i.e. not `#![repr()]`)
if item.is_some() {
match target {
Target::Struct | Target::Union | Target::Enum => {}
Target::Struct | Target::Union | Target::Enum => continue,
Target::Fn | Target::Method(_) => {
feature_err(
&self.tcx.sess,

View File

@ -0,0 +1,9 @@
//@ compile-flags: --crate-type=lib
#![deny(unused_attributes)]
#[repr()] //~ ERROR unused attribute
#[repr(packed)] //~ ERROR attribute should be applied to a struct or union
pub enum Foo {
Bar,
Baz(i32),
}

View File

@ -0,0 +1,27 @@
error: unused attribute
--> $DIR/repr-empty-packed.rs:4:1
|
LL | #[repr()]
| ^^^^^^^^^ help: remove this attribute
|
= note: attribute `repr` with an empty list has no effect
note: the lint level is defined here
--> $DIR/repr-empty-packed.rs:2:9
|
LL | #![deny(unused_attributes)]
| ^^^^^^^^^^^^^^^^^
error[E0517]: attribute should be applied to a struct or union
--> $DIR/repr-empty-packed.rs:5:8
|
LL | #[repr(packed)]
| ^^^^^^
LL | / pub enum Foo {
LL | | Bar,
LL | | Baz(i32),
LL | | }
| |_- not a struct or union
error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0517`.