haskell-tools-refactor 0.3.0.0 → 0.3.0.1
raw patch · 9 files changed
+16/−32 lines, 9 filesPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
API changes (from Hackage documentation)
+ Language.Haskell.Tools.Refactor: annMaybe :: RefMonads w r => Reference w r (MU *) (MU *) (AnnMaybeG elem0 dom0 stage0) (AnnMaybeG elem0 dom0 stage0) (Maybe (Ann elem0 dom0 stage0)) (Maybe (Ann elem0 dom0 stage0))
+ Language.Haskell.Tools.Refactor: shortShowSpan :: SrcSpan -> String
Files
- Language/Haskell/Tools/Refactor.hs +2/−1
- Language/Haskell/Tools/Refactor/Predefined/DataToNewtype.hs +1/−2
- Language/Haskell/Tools/Refactor/Predefined/DollarApp.hs +1/−1
- Language/Haskell/Tools/Refactor/Predefined/ExtractBinding.hs +1/−1
- Language/Haskell/Tools/Refactor/Predefined/GenerateExports.hs +2/−7
- Language/Haskell/Tools/Refactor/Predefined/GenerateTypeSignature.hs +1/−1
- Language/Haskell/Tools/Refactor/Predefined/IfToGuards.hs +6/−12
- Language/Haskell/Tools/Refactor/Predefined/RenameDefinition.hs +1/−6
- haskell-tools-refactor.cabal +1/−1
Language/Haskell/Tools/Refactor.hs view
@@ -9,7 +9,8 @@ , module Language.Haskell.Tools.Refactor.Prepare , module Language.Haskell.Tools.Refactor.ListOperations , module Language.Haskell.Tools.Refactor.BindingElem - , HasRange(..), annListElems, annList, annJust, isAnnNothing, Domain + , HasRange(..), annListElems, annList, annJust, annMaybe, isAnnNothing, Domain + , shortShowSpan ) where -- Important: Haddock doesn't support the rename all exported modules and export them at once hack
Language/Haskell/Tools/Refactor/Predefined/DataToNewtype.hs view
@@ -1,8 +1,7 @@ module Language.Haskell.Tools.Refactor.Predefined.DataToNewtype (dataToNewtype) where -import Control.Reference - import Language.Haskell.Tools.Refactor +import Control.Reference tryItOut moduleName = tryRefactor (localRefactoring $ dataToNewtype) moduleName
Language/Haskell/Tools/Refactor/Predefined/DollarApp.hs view
@@ -11,7 +11,7 @@ import BasicTypes (Fixity(..)) import Control.Monad.State -import Control.Reference hiding (element) +import Control.Reference import Data.Generics.Uniplate.Data import Debug.Trace
Language/Haskell/Tools/Refactor/Predefined/ExtractBinding.hs view
@@ -18,7 +18,7 @@ import Data.Char import Data.Maybe import Data.Generics.Uniplate.Data -import Control.Reference hiding (element) +import Control.Reference import Control.Monad.State import Language.Haskell.Tools.Refactor
Language/Haskell/Tools/Refactor/Predefined/GenerateExports.hs view
@@ -5,18 +5,13 @@ #-} module Language.Haskell.Tools.Refactor.Predefined.GenerateExports (generateExports, DomGenerateExports) where -import Control.Reference hiding (element) +import Language.Haskell.Tools.Refactor +import Control.Reference import qualified GHC import Data.Maybe import Control.Applicative ((<|>)) - -import Language.Haskell.Tools.AST -import Language.Haskell.Tools.Transform -import Language.Haskell.Tools.AST.Rewrite -import Language.Haskell.Tools.AST.ElementTypes -import Language.Haskell.Tools.Refactor.RefactorBase type DomGenerateExports dom = (Domain dom, HasNameInfo dom)
Language/Haskell/Tools/Refactor/Predefined/GenerateTypeSignature.hs view
@@ -22,7 +22,7 @@ import Data.Generics.Uniplate.Data import Control.Monad import Control.Monad.State -import Control.Reference hiding (element) +import Control.Reference import Language.Haskell.Tools.Refactor as AST
Language/Haskell/Tools/Refactor/Predefined/IfToGuards.hs view
@@ -1,26 +1,20 @@ {-# LANGUAGE RankNTypes, FlexibleContexts, ViewPatterns #-} module Language.Haskell.Tools.Refactor.Predefined.IfToGuards (ifToGuards) where -import Language.Haskell.Tools.AST -import Language.Haskell.Tools.AST.Rewrite -import Language.Haskell.Tools.Refactor.RefactorBase - -import Control.Reference hiding (element) +import Language.Haskell.Tools.Refactor +import Control.Reference import SrcLoc import Data.Generics.Uniplate.Data -import Language.Haskell.Tools.AST.ElementTypes -import Language.Haskell.Tools.Refactor - tryItOut moduleName sp = tryRefactor (localRefactoring $ ifToGuards (readSrcSpan (toFileName "." moduleName) sp)) moduleName ifToGuards :: Domain dom => RealSrcSpan -> LocalRefactoring dom -ifToGuards sp = return . (nodesContaining sp .- ifToGuards') +ifToGuards sp = return . (nodesContaining sp .- changeBindings) -ifToGuards' :: ValueBind dom -> ValueBind dom -ifToGuards' (SimpleBind (VarPat name) (UnguardedRhs (If pred thenE elseE)) locals) +changeBindings :: ValueBind dom -> ValueBind dom +changeBindings (SimpleBind (VarPat name) (UnguardedRhs (If pred thenE elseE)) locals) = mkFunctionBind [mkMatch (mkMatchLhs name []) (createSimpleIfRhss pred thenE elseE) (locals ^. annMaybe) ] -ifToGuards' fbs@(FunctionBind {}) +changeBindings fbs@(FunctionBind {}) = funBindMatches&annList&matchRhs .- trfRhs $ fbs where trfRhs :: Rhs dom -> Rhs dom trfRhs (UnguardedRhs (If pred thenE elseE)) = createSimpleIfRhss pred thenE elseE
Language/Haskell/Tools/Refactor/Predefined/RenameDefinition.hs view
@@ -25,13 +25,8 @@ import Data.List import Data.Maybe import Data.Generics.Uniplate.Data -import Language.Haskell.Tools.AST -import Language.Haskell.Tools.Transform -import Language.Haskell.Tools.AST.Rewrite -import Language.Haskell.Tools.AST.ElementTypes -import Language.Haskell.Tools.Refactor.RefactorBase -import Debug.Trace +import Language.Haskell.Tools.Refactor type DomainRenameDefinition dom = ( HasNameInfo dom, HasScopeInfo dom, HasDefiningInfo dom , HasImplicitFieldsInfo dom, HasModuleInfo dom )
haskell-tools-refactor.cabal view
@@ -1,5 +1,5 @@ name: haskell-tools-refactor -version: 0.3.0.0 +version: 0.3.0.1 synopsis: Refactoring Tool for Haskell description: Contains a set of refactorings based on the Haskell-Tools framework to easily transform a Haskell program. For the descriptions of the implemented refactorings, see the homepage. homepage: https://github.com/haskell-tools/haskell-tools