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:
commit
469f48db7f
3 changed files with 37 additions and 1 deletions
|
@ -1998,7 +1998,7 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
|
||||||
// catch `repr()` with no arguments, applied to an item (i.e. not `#![repr()]`)
|
// catch `repr()` with no arguments, applied to an item (i.e. not `#![repr()]`)
|
||||||
if item.is_some() {
|
if item.is_some() {
|
||||||
match target {
|
match target {
|
||||||
Target::Struct | Target::Union | Target::Enum => {}
|
Target::Struct | Target::Union | Target::Enum => continue,
|
||||||
Target::Fn | Target::Method(_) => {
|
Target::Fn | Target::Method(_) => {
|
||||||
feature_err(
|
feature_err(
|
||||||
&self.tcx.sess,
|
&self.tcx.sess,
|
||||||
|
|
9
tests/ui/repr/repr-empty-packed.rs
Normal file
9
tests/ui/repr/repr-empty-packed.rs
Normal 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),
|
||||||
|
}
|
27
tests/ui/repr/repr-empty-packed.stderr
Normal file
27
tests/ui/repr/repr-empty-packed.stderr
Normal 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`.
|
Loading…
Add table
Add a link
Reference in a new issue