Improve array parse error messages
diff --git a/syntax/parse.rs b/syntax/parse.rs
index 581f43b..8d2b703 100644
--- a/syntax/parse.rs
+++ b/syntax/parse.rs
@@ -752,22 +752,11 @@
     let inner = parse_type(&ty.elem, namespace)?;
     match &ty.len {
         Expr::Lit(lit) => {
-            if !lit.attrs.is_empty() {
-                return Err(Error::new_spanned(
-                    ty,
-                    "attribute not allowed in length field",
-                ));
-            }
             match &lit.lit {
                 Lit::Int(len_token) => {
                     let v = match len_token.base10_parse::<usize>() {
                         Ok(n_v) => n_v,
-                        Err(_) => {
-                            return Err(Error::new_spanned(
-                                ty,
-                                "Cannot parse integer literal to base10",
-                            ))
-                        }
+                        Err(err) => return Err(Error::new_spanned(len_token, err)),
                     };
                     Ok(Type::Array(Box::new(Array {
                         bracket: ty.bracket_token,
@@ -777,12 +766,12 @@
                         len_token: len_token.clone(),
                     })))
                 }
-                _ => Err(Error::new_spanned(ty, "length literal must be a integer")),
+                _ => Err(Error::new_spanned(lit, "array length must be an integer literal")),
             }
         }
         _ => Err(Error::new_spanned(
-            ty,
-            "only literal is currently supported in len field",
+            &ty.len,
+            "unsupported expression, array length must be an integer literal",
         )),
     }
 }