{-# LANGUAGE FlexibleContexts, TypeFamilies #-}
module Language.Haskell.Tools.Refactor.Builtin ( builtinRefactorings ) where
import Language.Haskell.Tools.Refactor (RefactoringChoice)
import Language.Haskell.Tools.Refactor.Builtin.ExtractBinding (ExtractBindingDomain, extractBindingRefactoring)
import Language.Haskell.Tools.Refactor.Builtin.FloatOut (floatOutRefactoring)
import Language.Haskell.Tools.Refactor.Builtin.GenerateExports (DomGenerateExports, generateExportsRefactoring)
import Language.Haskell.Tools.Refactor.Builtin.GenerateTypeSignature (GenerateSignatureDomain, generateTypeSignatureRefactoring)
import Language.Haskell.Tools.Refactor.Builtin.InlineBinding (inlineBindingRefactoring)
import Language.Haskell.Tools.Refactor.Builtin.OrganizeExtensions (OrganizeExtensionsDomain, organizeExtensionsRefactoring, projectOrganizeExtensionsRefactoring)
import Language.Haskell.Tools.Refactor.Builtin.OrganizeImports (OrganizeImportsDomain, organizeImportsRefactoring, projectOrganizeImportsRefactoring)
import Language.Haskell.Tools.Refactor.Builtin.RenameDefinition (DomainRenameDefinition, renameDefinitionRefactoring)
builtinRefactorings :: ( DomGenerateExports dom, OrganizeImportsDomain dom
, DomainRenameDefinition dom, ExtractBindingDomain dom
, GenerateSignatureDomain dom, OrganizeExtensionsDomain dom
) => [RefactoringChoice dom]
builtinRefactorings
= [ organizeImportsRefactoring
, projectOrganizeImportsRefactoring
, inlineBindingRefactoring
, generateTypeSignatureRefactoring
, renameDefinitionRefactoring
, generateExportsRefactoring
, floatOutRefactoring
, extractBindingRefactoring
, organizeExtensionsRefactoring
, projectOrganizeExtensionsRefactoring
]