module Language.Haskell.Tools.Refactor.Predefined.DataToNewtype (dataToNewtype, tryItOut) where import Control.Reference ((.=), (.-), (&)) import Language.Haskell.Tools.Refactor tryItOut :: String -> IO () tryItOut moduleName = tryRefactor (\_ -> localRefactoring dataToNewtype) moduleName "" dataToNewtype :: LocalRefactoring dom dataToNewtype = return . (modDecl & annList .- changeDeclaration) changeDeclaration :: Decl dom -> Decl dom changeDeclaration dd@(DataDecl DataKeyword _ _ (AnnList [ConDecl _ (AnnList [_])]) _) = declNewtype .= mkNewtypeKeyword $ dd changeDeclaration decl = decl