From b70f9b37502ea9336e0f3b75f6de640d2f957995 Mon Sep 17 00:00:00 2001
From: Russel Arbore <russel.jma@gmail.com>
Date: Sun, 10 Sep 2023 16:54:15 -0500
Subject: [PATCH] Parse array type

---
 hercules_ir/src/parse.rs | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/hercules_ir/src/parse.rs b/hercules_ir/src/parse.rs
index 6798c9f9..f45ccebc 100644
--- a/hercules_ir/src/parse.rs
+++ b/hercules_ir/src/parse.rs
@@ -373,6 +373,31 @@ fn parse_type<'a>(ir_text: &'a str, context: &RefCell<Context<'a>>) -> nom::IRes
             )),
             |(_, _, _, _, ids, _, _)| Type::Summation(ids.into_boxed_slice()),
         ),
+        nom::combinator::map(
+            nom::sequence::tuple((
+                nom::bytes::complete::tag("array"),
+                nom::character::complete::multispace0,
+                nom::character::complete::char('('),
+                nom::character::complete::multispace0,
+                |x| parse_type_id(x, context),
+                nom::character::complete::multispace0,
+                nom::character::complete::char(','),
+                nom::character::complete::multispace0,
+                nom::multi::separated_list1(
+                    nom::sequence::tuple((
+                        nom::character::complete::multispace0,
+                        nom::character::complete::char(','),
+                        nom::character::complete::multispace0,
+                    )),
+                    |x| parse_dynamic_constant_id(x, context),
+                ),
+                nom::character::complete::multispace0,
+                nom::character::complete::char(')'),
+            )),
+            |(_, _, _, _, ty_id, _, _, _, dc_ids, _, _)| {
+                Type::Array(ty_id, dc_ids.into_boxed_slice())
+            },
+        ),
     ))(ir_text)?;
     Ok((ir_text, ty))
 }
-- 
GitLab