about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLzu Tao <taolzu@gmail.com>2024-07-17 18:23:40 +0700
committerLzu Tao <taolzu@gmail.com>2024-07-17 18:32:18 +0700
commitc65ddb8728de895b53557b0aaf7df1873417f916 (patch)
tree4b1c05383baef8a82bf8e0261f45c62406520f32
parent0ee9f44568b60aaef5d04684cb08f112edd89542 (diff)
downloadrust-c65ddb8728de895b53557b0aaf7df1873417f916.tar.gz
rust-c65ddb8728de895b53557b0aaf7df1873417f916.zip
Add regression test for issue 13110
-rw-r--r--tests/ui/zero_repeat_side_effects.fixed10
-rw-r--r--tests/ui/zero_repeat_side_effects.rs10
-rw-r--r--tests/ui/zero_repeat_side_effects.stderr14
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