Generator: use mkName instead of newName (#37)

This commit is contained in:
sheaf 2021-02-09 12:23:23 +01:00 committed by GitHub
parent d4aec47f4e
commit 06921defb1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 13 deletions

View File

@ -92,7 +92,7 @@ headers = $( do
( unlines ( map Megaparsec.parseErrorPretty . toList $ Megaparsec.bundleErrors err ) ) <> "\n" <>
( unlines ( map show prev ) <> "\n\n" <> unlines ( map show rest ) )
Right res -> pure res
TH.lift =<< generateNames basicHeaders
TH.lift $ generateNames basicHeaders
)
--------------------------------------------------------------------------------

View File

@ -10,8 +10,8 @@
module DearImGui.Generator.Types where
-- base
import Data.Traversable
( for )
import Data.Functor
( (<&>) )
-- template-haskell
import qualified Language.Haskell.TH as TH
@ -50,13 +50,16 @@ data Headers typeName
{ enums :: [ Enumeration typeName ] }
deriving stock ( Show, TH.Lift )
generateNames :: Headers () -> TH.Q ( Headers ( TH.Name, TH.Name ) )
generateNames ( Headers { enums = basicEnums } ) = do
enums <- for basicEnums \ enum@( Enumeration { enumName } ) -> do
generateNames :: Headers () -> Headers ( TH.Name, TH.Name )
generateNames ( Headers { enums = basicEnums } ) = Headers { enums = namedEnums }
where
namedEnums :: [ Enumeration ( TH.Name, TH.Name ) ]
namedEnums = basicEnums <&> \ enum@( Enumeration { enumName } ) ->
let
enumNameStr :: String
enumNameStr = Text.unpack enumName
tyName <- TH.newName enumNameStr
conName <- TH.newName enumNameStr
pure $ enum { enumTypeName = ( tyName, conName ) }
pure $ Headers { enums }
tyName, conName :: TH.Name
tyName = TH.mkName enumNameStr
conName = TH.mkName enumNameStr
in
enum { enumTypeName = ( tyName, conName ) }