Skip to content

Commit f7046bd

Browse files
Regression tests for repr ICEs
Signed-off-by: Jonathan Brouwer <jonathantbrouwer@gmail.com>
1 parent de031bb commit f7046bd

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// Tests a few different invalid repr attributes
2+
3+
// This is a regression test for https://github.com/rust-lang/rust/issues/143522
4+
#![repr]
5+
//~^ ERROR malformed `repr` attribute input [E0539]
6+
//~| ERROR `repr` attribute cannot be used at crate level
7+
8+
// This is a regression test for https://github.com/rust-lang/rust/issues/143479
9+
#[repr(align(0))]
10+
//~^ ERROR invalid `repr(align)` attribute: not a power of two
11+
//~| ERROR unsupported representation for zero-variant enum [E0084]
12+
enum Foo {}
13+
14+
fn main() {}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
error[E0539]: malformed `repr` attribute input
2+
--> $DIR/malformed-reprs.rs:4:1
3+
|
4+
LL | #![repr]
5+
| ^^^^^^^^
6+
| |
7+
| expected this to be a list
8+
| help: must be of the form: `#[repr(C | Rust | align(...) | packed(...) | <integer type> | transparent)]`
9+
10+
error[E0589]: invalid `repr(align)` attribute: not a power of two
11+
--> $DIR/malformed-reprs.rs:9:14
12+
|
13+
LL | #[repr(align(0))]
14+
| ^
15+
16+
error: `repr` attribute cannot be used at crate level
17+
--> $DIR/malformed-reprs.rs:4:1
18+
|
19+
LL | #![repr]
20+
| ^^^^^^^^
21+
...
22+
LL | enum Foo {}
23+
| --- the inner attribute doesn't annotate this enum
24+
|
25+
help: perhaps you meant to use an outer attribute
26+
|
27+
LL - #![repr]
28+
LL + #[repr]
29+
|
30+
31+
error[E0084]: unsupported representation for zero-variant enum
32+
--> $DIR/malformed-reprs.rs:9:1
33+
|
34+
LL | #[repr(align(0))]
35+
| ^^^^^^^^^^^^^^^^^
36+
...
37+
LL | enum Foo {}
38+
| -------- zero-variant enum
39+
40+
error: aborting due to 4 previous errors
41+
42+
Some errors have detailed explanations: E0084, E0539, E0589.
43+
For more information about an error, try `rustc --explain E0084`.

0 commit comments

Comments
 (0)