diff options
| author | Lzu Tao <taolzu@gmail.com> | 2024-07-17 18:23:40 +0700 |
|---|---|---|
| committer | Lzu Tao <taolzu@gmail.com> | 2024-07-17 18:32:18 +0700 |
| commit | c65ddb8728de895b53557b0aaf7df1873417f916 (patch) | |
| tree | 4b1c05383baef8a82bf8e0261f45c62406520f32 | |
| parent | 0ee9f44568b60aaef5d04684cb08f112edd89542 (diff) | |
| download | rust-c65ddb8728de895b53557b0aaf7df1873417f916.tar.gz rust-c65ddb8728de895b53557b0aaf7df1873417f916.zip | |
Add regression test for issue 13110
| -rw-r--r-- | tests/ui/zero_repeat_side_effects.fixed | 10 | ||||
| -rw-r--r-- | tests/ui/zero_repeat_side_effects.rs | 10 | ||||
| -rw-r--r-- | tests/ui/zero_repeat_side_effects.stderr | 14 |
3 files changed, 33 insertions, 1 deletions
diff --git a/tests/ui/zero_repeat_side_effects.fixed b/tests/ui/zero_repeat_side_effects.fixed index 6f132521926..ce6a46b8a60 100644 --- a/tests/ui/zero_repeat_side_effects.fixed +++ b/tests/ui/zero_repeat_side_effects.fixed @@ -58,3 +58,13 @@ fn main() { // as function param drop(vec![f(); 1]); } + +macro_rules! LEN { + () => {0}; +} + +fn issue_13110() { + f(); let _data: [i32; 0] = []; + const LENGTH: usize = LEN!(); + f(); let _data: [i32; 0] = []; +} diff --git a/tests/ui/zero_repeat_side_effects.rs b/tests/ui/zero_repeat_side_effects.rs index 9d9c367375a..d68667dda31 100644 --- a/tests/ui/zero_repeat_side_effects.rs +++ b/tests/ui/zero_repeat_side_effects.rs @@ -58,3 +58,13 @@ fn main() { // as function param drop(vec![f(); 1]); } + +macro_rules! LEN { + () => {0}; +} + +fn issue_13110() { + let _data = [f(); LEN!()]; + const LENGTH: usize = LEN!(); + let _data = [f(); LENGTH]; +} diff --git a/tests/ui/zero_repeat_side_effects.stderr b/tests/ui/zero_repeat_side_effects.stderr index afdc6054253..6f31242a252 100644 --- a/tests/ui/zero_repeat_side_effects.stderr +++ b/tests/ui/zero_repeat_side_effects.stderr @@ -73,5 +73,17 @@ error: function or method calls as the initial value in zero-sized array initial LL | [f(); N]; | ^^^^^^^^ help: consider using: `{ f(); [] as [i32; 0] }` -error: aborting due to 12 previous errors +error: function or method calls as the initial value in zero-sized array initializers may cause side effects + --> tests/ui/zero_repeat_side_effects.rs:67:5 + | +LL | let _data = [f(); LEN!()]; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `f(); let _data: [i32; 0] = [];` + +error: function or method calls as the initial value in zero-sized array initializers may cause side effects + --> tests/ui/zero_repeat_side_effects.rs:69:5 + | +LL | let _data = [f(); LENGTH]; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `f(); let _data: [i32; 0] = [];` + +error: aborting due to 14 previous errors |
