Disallow array with zero size
diff --git a/syntax/parse.rs b/syntax/parse.rs
index 18809b5..018e71a 100644
--- a/syntax/parse.rs
+++ b/syntax/parse.rs
@@ -767,9 +767,14 @@
return Err(Error::new_spanned(len_expr, msg));
};
+ let len = len_token.base10_parse::<usize>()?;
+ if len == 0 {
+ let msg = "array with zero size is not supported";
+ return Err(Error::new_spanned(ty, msg));
+ }
+
let bracket = ty.bracket_token;
let semi_token = ty.semi_token;
- let len = len_token.base10_parse::<usize>()?;
Ok(Type::Array(Box::new(Array {
bracket,
diff --git a/tests/ui/array_len_expr.rs b/tests/ui/array_len_expr.rs
index 1e1a548..73da57c 100644
--- a/tests/ui/array_len_expr.rs
+++ b/tests/ui/array_len_expr.rs
@@ -3,6 +3,7 @@
struct Shared {
arraystr: [String; "13"],
arraysub: [String; 15 - 1],
+ arrayzero: [String; 0],
}
}
diff --git a/tests/ui/array_len_expr.stderr b/tests/ui/array_len_expr.stderr
index bbd7d11..4b45a0b 100644
--- a/tests/ui/array_len_expr.stderr
+++ b/tests/ui/array_len_expr.stderr
@@ -9,3 +9,9 @@
|
5 | arraysub: [String; 15 - 1],
| ^^^^^^
+
+error: array with zero size is not supported
+ --> $DIR/array_len_expr.rs:6:20
+ |
+6 | arrayzero: [String; 0],
+ | ^^^^^^^^^^^