Skip to content

Commit 9b44c23

Browse files
committed
UI test arg diffs greater than u8::MAX
1 parent b23bbed commit 9b44c23

3 files changed

Lines changed: 195 additions & 11 deletions

File tree

tests/ui/splat/splat-255-limit-fail.rs

Lines changed: 105 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,28 @@
88

99
type A = ();
1010

11-
// These functions are deliberately formatted with 17 arguments in 15 lines, to show they have 255
12-
// arguments.
11+
// These types and functions are deliberately formatted with 17 arguments in 15 lines, to show they
12+
// have ~255 arguments.
13+
#[rustfmt::skip]
14+
type Tuple256 = (
15+
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
16+
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
17+
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
18+
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
19+
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
20+
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
21+
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
22+
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
23+
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
24+
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
25+
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
26+
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
27+
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
28+
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
29+
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
30+
A,
31+
);
32+
1333
#[rustfmt::skip]
1434
fn s_255_terminal(
1535
_: A, _: A, _: A, _: A, _: A, _: A, _: A, _: A, _: A, _: A, _: A, _: A, _: A, _: A, _: A, _: A, _: A,
@@ -94,4 +114,86 @@ fn s_256_non_terminal(
94114
_: A,
95115
) {}
96116

97-
fn main() {}
117+
// It's only the splatted index that's constrained to 255, not the argument count of the caller or callee.
118+
fn more_than_255_splatted_args(#[splat] _t: Tuple256) {}
119+
120+
fn main() {
121+
let a = ();
122+
123+
#[rustfmt::skip]
124+
more_than_255_splatted_args( //~ ERROR this splatted function takes 256 arguments, but 255 were provided [E0057]
125+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
126+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
127+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
128+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
129+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
130+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
131+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
132+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
133+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
134+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
135+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
136+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
137+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
138+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
139+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
140+
/* missing: a, */
141+
);
142+
143+
#[rustfmt::skip]
144+
more_than_255_splatted_args( //~ ERROR this splatted function takes 256 arguments, but 257 were provided [E0057]
145+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
146+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
147+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
148+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
149+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
150+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
151+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
152+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
153+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
154+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
155+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
156+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
157+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
158+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
159+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
160+
a, /* unexpected: */ a,
161+
);
162+
163+
#[rustfmt::skip]
164+
more_than_255_splatted_args( //~ ERROR this splatted function takes 256 arguments, but 512 were provided [E0057]
165+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
166+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
167+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
168+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
169+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
170+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
171+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
172+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
173+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
174+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
175+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
176+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
177+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
178+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
179+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
180+
a,
181+
/* unexpected: */
182+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
183+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
184+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
185+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
186+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
187+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
188+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
189+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
190+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
191+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
192+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
193+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
194+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
195+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
196+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
197+
a,
198+
);
199+
}
Lines changed: 42 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,71 @@
11
error: `#[splat]` is not supported on argument index 255
2-
--> $DIR/splat-255-limit-fail.rs:30:5
2+
--> $DIR/splat-255-limit-fail.rs:50:5
33
|
44
LL | #[splat] (_a, _b): (u32, i8),
55
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `#[splat]` is not supported here
66
|
77
= help: remove `#[splat]`, or use it on an argument closer to the start of the argument list
88

99
error: `#[splat]` is not supported on argument index 256
10-
--> $DIR/splat-255-limit-fail.rs:51:5
10+
--> $DIR/splat-255-limit-fail.rs:71:5
1111
|
1212
LL | #[splat] (_a, _b): (u32, i8),
1313
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `#[splat]` is not supported here
1414
|
1515
= help: remove `#[splat]`, or use it on an argument closer to the start of the argument list
1616

1717
error: `#[splat]` is not supported on argument index 255
18-
--> $DIR/splat-255-limit-fail.rs:71:5
18+
--> $DIR/splat-255-limit-fail.rs:91:5
1919
|
2020
LL | #[splat] (_a, _b): (u32, i8),
2121
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `#[splat]` is not supported here
2222
|
2323
= help: remove `#[splat]`, or use it on an argument closer to the start of the argument list
2424

2525
error: `#[splat]` is not supported on argument index 256
26-
--> $DIR/splat-255-limit-fail.rs:93:5
26+
--> $DIR/splat-255-limit-fail.rs:113:5
2727
|
2828
LL | #[splat] (_a, _b): (u32, i8),
2929
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `#[splat]` is not supported here
3030
|
3131
= help: remove `#[splat]`, or use it on an argument closer to the start of the argument list
3232

33-
error: aborting due to 4 previous errors
33+
error[E0057]: this splatted function takes 256 arguments, but 255 were provided
34+
--> $DIR/splat-255-limit-fail.rs:124:5
35+
|
36+
LL | / more_than_255_splatted_args(
37+
LL | | a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
38+
LL | | a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
39+
LL | | a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
40+
... |
41+
LL | | /* missing: a, */
42+
LL | | );
43+
| |_____^
44+
45+
error[E0057]: this splatted function takes 256 arguments, but 257 were provided
46+
--> $DIR/splat-255-limit-fail.rs:144:5
47+
|
48+
LL | / more_than_255_splatted_args(
49+
LL | | a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
50+
LL | | a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
51+
LL | | a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
52+
... |
53+
LL | | a, /* unexpected: */ a,
54+
LL | | );
55+
| |_____^
56+
57+
error[E0057]: this splatted function takes 256 arguments, but 512 were provided
58+
--> $DIR/splat-255-limit-fail.rs:164:5
59+
|
60+
LL | / more_than_255_splatted_args(
61+
LL | | a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
62+
LL | | a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
63+
LL | | a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
64+
... |
65+
LL | | a,
66+
LL | | );
67+
| |_____^
68+
69+
error: aborting due to 7 previous errors
3470

71+
For more information about this error, try `rustc --explain E0057`.

tests/ui/splat/splat-255-limit-pass.rs

Lines changed: 48 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,28 @@
99

1010
type A = ();
1111

12-
// These functions are deliberately formatted with 17 arguments in 15 lines, to show they have 255
13-
// arguments.
12+
// These types and functions are deliberately formatted with 17 arguments in 15 lines, to show they
13+
// have ~255 arguments.
14+
#[rustfmt::skip]
15+
type Tuple256 = (
16+
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
17+
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
18+
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
19+
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
20+
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
21+
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
22+
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
23+
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
24+
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
25+
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
26+
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
27+
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
28+
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
29+
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
30+
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
31+
A,
32+
);
33+
1434
#[rustfmt::skip]
1535
fn s_253_terminal(
1636
_: A, _: A, _: A, _: A, _: A, _: A, _: A, _: A, _: A, _: A, _: A, _: A, _: A, _: A, _: A, _: A, _: A,
@@ -132,6 +152,7 @@ fn s_0_initial_255_args(
132152
_: A, _: A, _: A, _: A, _: A, _: A, _: A, _: A, _: A, _: A, _: A, _: A, _: A, _: A, _: A, _: A, _: A,
133153
) {}
134154

155+
// It's only the splatted index that's constrained to 255, not the argument count of the caller or callee.
135156
#[rustfmt::skip]
136157
fn s_0_initial_256_args(
137158
#[splat] (_a, _b): (u32, i8),
@@ -153,4 +174,28 @@ fn s_0_initial_256_args(
153174
_: A,
154175
) {}
155176

156-
fn main() {}
177+
fn more_than_255_splatted_args(#[splat] _t: Tuple256) {}
178+
179+
fn main() {
180+
let a = ();
181+
182+
#[rustfmt::skip]
183+
more_than_255_splatted_args(
184+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
185+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
186+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
187+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
188+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
189+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
190+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
191+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
192+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
193+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
194+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
195+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
196+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
197+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
198+
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
199+
a,
200+
);
201+
}

0 commit comments

Comments
 (0)