Skip to content

Commit 440bf29

Browse files
Add more tests for invalid alignments
1 parent 233e2ef commit 440bf29

File tree

2 files changed

+52
-5
lines changed

2 files changed

+52
-5
lines changed

tests/ui/attributes/malformed-fn-align.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,21 @@ fn f3() {}
2121
#[repr(align(16))] //~ ERROR `#[repr(align(...))]` is not supported on function items
2222
fn f4() {}
2323

24+
#[align(-1)] //~ ERROR expected unsuffixed literal, found `-`
25+
fn f5() {}
26+
27+
#[align(3)] //~ ERROR invalid alignment value: not a power of two
28+
fn f6() {}
29+
30+
#[align(4usize)] //~ ERROR invalid alignment value: not an unsuffixed integer [E0589]
31+
//~^ ERROR suffixed literals are not allowed in attributes
32+
fn f7() {}
33+
34+
#[align(16)]
35+
#[align(3)] //~ ERROR invalid alignment value: not a power of two
36+
#[align(16)]
37+
fn f8() {}
38+
2439
#[align(16)] //~ ERROR `#[align(...)]` is not supported on struct items
2540
struct S1;
2641

tests/ui/attributes/malformed-fn-align.stderr

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,17 @@
1+
error: expected unsuffixed literal, found `-`
2+
--> $DIR/malformed-fn-align.rs:24:9
3+
|
4+
LL | #[align(-1)]
5+
| ^
6+
7+
error: suffixed literals are not allowed in attributes
8+
--> $DIR/malformed-fn-align.rs:30:9
9+
|
10+
LL | #[align(4usize)]
11+
| ^^^^^^
12+
|
13+
= help: instead of using a suffixed literal (`1u8`, `1.0f32`, etc.), use an unsuffixed version (`1`, `1.0`, etc.)
14+
115
error[E0539]: malformed `align` attribute input
216
--> $DIR/malformed-fn-align.rs:5:5
317
|
@@ -37,6 +51,24 @@ error[E0589]: invalid alignment value: not a power of two
3751
LL | #[align(0)]
3852
| ^
3953

54+
error[E0589]: invalid alignment value: not a power of two
55+
--> $DIR/malformed-fn-align.rs:27:9
56+
|
57+
LL | #[align(3)]
58+
| ^
59+
60+
error[E0589]: invalid alignment value: not an unsuffixed integer
61+
--> $DIR/malformed-fn-align.rs:30:9
62+
|
63+
LL | #[align(4usize)]
64+
| ^^^^^^
65+
66+
error[E0589]: invalid alignment value: not a power of two
67+
--> $DIR/malformed-fn-align.rs:35:9
68+
|
69+
LL | #[align(3)]
70+
| ^
71+
4072
error: `#[repr(align(...))]` is not supported on function items
4173
--> $DIR/malformed-fn-align.rs:21:8
4274
|
@@ -50,7 +82,7 @@ LL | #[repr(align(16))]
5082
| ^^^^^^^^^
5183

5284
error: `#[align(...)]` is not supported on struct items
53-
--> $DIR/malformed-fn-align.rs:24:1
85+
--> $DIR/malformed-fn-align.rs:39:1
5486
|
5587
LL | #[align(16)]
5688
| ^^^^^^^^^^^^
@@ -62,30 +94,30 @@ LL + #[repr(align(16))]
6294
|
6395

6496
error: `#[align(...)]` should be applied to a function item
65-
--> $DIR/malformed-fn-align.rs:27:1
97+
--> $DIR/malformed-fn-align.rs:42:1
6698
|
6799
LL | #[align(32)]
68100
| ^^^^^^^^^^^^
69101
LL | const FOO: i32 = 42;
70102
| -------------------- not a function item
71103

72104
error: `#[align(...)]` should be applied to a function item
73-
--> $DIR/malformed-fn-align.rs:30:1
105+
--> $DIR/malformed-fn-align.rs:45:1
74106
|
75107
LL | #[align(32)]
76108
| ^^^^^^^^^^^^
77109
LL | mod test {}
78110
| ----------- not a function item
79111

80112
error: `#[align(...)]` should be applied to a function item
81-
--> $DIR/malformed-fn-align.rs:33:1
113+
--> $DIR/malformed-fn-align.rs:48:1
82114
|
83115
LL | #[align(32)]
84116
| ^^^^^^^^^^^^
85117
LL | use ::std::iter;
86118
| ---------------- not a function item
87119

88-
error: aborting due to 10 previous errors
120+
error: aborting due to 15 previous errors
89121

90122
Some errors have detailed explanations: E0539, E0589, E0805.
91123
For more information about an error, try `rustc --explain E0539`.

0 commit comments

Comments
 (0)