haskell
module Main where
import frege.compiler.Phase.java(JAST(..), JITask, make)
type family RenameFields (a :: *) :: *
type instance RenameFields (JAST "FieldDeclDecl" a b ) = JAST "FieldDeclDecl" a (RenameFields b)
type instance RenameFields (JAST "VarInitDecl" a b) = JAST "VarInitDecl" a (RenameFields b)
type instance RenameFields (JAST "ModifierDecl" a b) = JAST "ModifierDecl" a (RenameFields b)
type instance RenameFields (JAST "OtherDecl" a b) = JAST "OtherDecl" a (RenameFields b)
type instance RenameFields a = a
macro renameFields :: JITask -> JITask
macro renameFields task = do
transformedTask <- renameFields' task
return $ make transformedTask
renameFields' :: JITask -> JITask
renameFields' task = do
transformedAst <- transformAst (getAST task)
return $ task { getAST = transformedAst }
transformAst :: JAST String String -> JAST String String
main :: IO ()
main = do
let task = make sourceCode
let transformedTask = renameFields task
execute transformedTask