From 369af00137638dbc4f4e76b97f3943793ff88c89 Mon Sep 17 00:00:00 2001 From: Zachary Snow Date: Fri, 19 Jun 2020 00:41:02 -0400 Subject: [PATCH] enums in packages are expanded in place --- src/Convert/Enum.hs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/Convert/Enum.hs b/src/Convert/Enum.hs index a6336ec..04d5e1f 100644 --- a/src/Convert/Enum.hs +++ b/src/Convert/Enum.hs @@ -33,13 +33,20 @@ convert :: [AST] -> [AST] convert = map $ concatMap convertDescription convertDescription :: Description -> [Description] -convertDescription (description @ Package{}) = - [Package ml name (items ++ enumItems)] - where (Package ml name items, enumItems) = convertDescription' description +convertDescription (Package ml name items) = + [Package ml name $ concatMap convertPackageItem items] convertDescription description = (map PackageItem enumItems) ++ [description'] where (description', enumItems) = convertDescription' description +-- explode a package item with its corresponding enum items +convertPackageItem :: PackageItem -> [PackageItem] +convertPackageItem item = do + item' : enumItems + where + (PackageItem item', enumItems) = + convertDescription' $ PackageItem item + -- replace and collect the enum types in a description convertDescription' :: Description -> (Description, [PackageItem]) convertDescription' description =