haskell-tools-rewrite 1.0.0.4 → 1.0.1.1
raw patch · 25 files changed
+99/−65 lines, 25 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Language.Haskell.Tools.Rewrite.Create.Exprs: mkMDoBlock :: [Stmt] -> Expr
+ Language.Haskell.Tools.Rewrite.Create.Modules: mkFilePragmas :: [FilePragma] -> FilePragmaList
+ Language.Haskell.Tools.Rewrite.ElementTypes: type ImportModifier = Ann UImportModifier IdDom SrcTemplateStage
+ Language.Haskell.Tools.Rewrite.ElementTypes: type MaybeImportModifier = AnnMaybe UImportModifier
Files
- Language/Haskell/Tools/Rewrite/Create/Binds.hs +2/−1
- Language/Haskell/Tools/Rewrite/Create/Decls.hs +2/−1
- Language/Haskell/Tools/Rewrite/Create/Exprs.hs +26/−22
- Language/Haskell/Tools/Rewrite/Create/Kinds.hs +2/−1
- Language/Haskell/Tools/Rewrite/Create/Literals.hs +2/−1
- Language/Haskell/Tools/Rewrite/Create/Modules.hs +19/−15
- Language/Haskell/Tools/Rewrite/Create/Names.hs +2/−1
- Language/Haskell/Tools/Rewrite/Create/Patterns.hs +2/−1
- Language/Haskell/Tools/Rewrite/Create/Stmts.hs +2/−1
- Language/Haskell/Tools/Rewrite/Create/TH.hs +2/−1
- Language/Haskell/Tools/Rewrite/Create/Types.hs +2/−1
- Language/Haskell/Tools/Rewrite/Create/Utils.hs +2/−1
- Language/Haskell/Tools/Rewrite/ElementTypes.hs +4/−0
- Language/Haskell/Tools/Rewrite/Match/Binds.hs +1/−0
- Language/Haskell/Tools/Rewrite/Match/Decls.hs +1/−0
- Language/Haskell/Tools/Rewrite/Match/Exprs.hs +13/−11
- Language/Haskell/Tools/Rewrite/Match/Kinds.hs +1/−0
- Language/Haskell/Tools/Rewrite/Match/Literals.hs +1/−0
- Language/Haskell/Tools/Rewrite/Match/Modules.hs +6/−5
- Language/Haskell/Tools/Rewrite/Match/Names.hs +1/−0
- Language/Haskell/Tools/Rewrite/Match/Patterns.hs +1/−0
- Language/Haskell/Tools/Rewrite/Match/Stmts.hs +1/−0
- Language/Haskell/Tools/Rewrite/Match/TH.hs +1/−0
- Language/Haskell/Tools/Rewrite/Match/Types.hs +2/−1
- haskell-tools-rewrite.cabal +1/−1
Language/Haskell/Tools/Rewrite/Create/Binds.hs view
@@ -1,7 +1,8 @@ -- | Generation of binding-level AST fragments for refactorings. -- The bindings defined here create a the annotated version of the AST constructor with the same name. -- For example, @mkMatch@ creates the annotated version of the @UMatch@ constructor. -{-# LANGUAGE OverloadedStrings, TypeFamilies #-} +{-# LANGUAGE MonoLocalBinds, OverloadedStrings #-} + module Language.Haskell.Tools.Rewrite.Create.Binds where import Data.String (IsString(..))
Language/Haskell/Tools/Rewrite/Create/Decls.hs view
@@ -1,7 +1,8 @@ -- | Generation of declaration-level AST fragments for refactorings. -- The bindings defined here create a the annotated version of the AST constructor with the same name. -- For example, @mkTypeSignature@ creates the annotated version of the @UTypeSignature@ AST constructor. -{-# LANGUAGE OverloadedStrings, TypeFamilies #-} +{-# LANGUAGE MonoLocalBinds, OverloadedStrings #-} + module Language.Haskell.Tools.Rewrite.Create.Decls where import Language.Haskell.Tools.AST
Language/Haskell/Tools/Rewrite/Create/Exprs.hs view
@@ -1,7 +1,8 @@ -- | Generation of expression-level AST fragments for refactorings. -- The bindings defined here create a the annotated version of the AST constructor with the same name. -- For example, @mkApp@ creates the annotated version of the @App@ AST constructor. -{-# LANGUAGE OverloadedStrings, TypeFamilies #-} +{-# LANGUAGE MonoLocalBinds, OverloadedStrings #-} + module Language.Haskell.Tools.Rewrite.Create.Exprs where import Language.Haskell.Tools.AST @@ -55,6 +56,11 @@ mkDoBlock :: [Stmt] -> Expr mkDoBlock stmts = mkAnn (child <> " " <> child) $ UDo (mkAnn "do" UDoKeyword) (mkAnnList (indented list) stmts) +-- | Create a mdo-notation expressions (@ mdo x <- act1; act2 @) +mkMDoBlock :: [Stmt] -> Expr +mkMDoBlock stmts = mkAnn (child <> " " <> child) $ UDo (mkAnn "mdo" UMDoKeyword) (mkAnnList (indented list) stmts) + + -- | Create a tuple expression (@ (e1, e2, e3) @) mkTuple :: [Expr] -> Expr mkTuple exprs = mkAnn ("(" <> child <> ")") $ UTuple (mkAnnList (separatedBy ", " list) exprs) @@ -65,13 +71,13 @@ -- | Create a tuple section, enabled with @TupleSections@ (@ (a,,b) @). One of the elements must be missing. mkTupleSection :: [Maybe Expr] -> Expr -mkTupleSection elems +mkTupleSection elems = let tupSecs = map (maybe (mkAnn "" Missing) (mkAnn child . Present)) elems in mkAnn ("(" <> child <> ")") $ UTupleSection (mkAnnList (separatedBy ", " list) tupSecs) -- | Create a unboxed tuple section, enabled with @TupleSections@ (@ (\#a,,b\#) @). One of the elements must be missing. mkTupleUnboxedSection :: [Maybe Expr] -> Expr -mkTupleUnboxedSection elems +mkTupleUnboxedSection elems = let tupSecs = map (maybe (mkAnn "" Missing) (mkAnn child . Present)) elems in mkAnn ("(" <> child <> ")") $ UTupleSection (mkAnnList (separatedBy ", " list) tupSecs) @@ -110,19 +116,19 @@ -- | Create a parallel array enumeration (@ [: 1,3 .. 10 :] @) mkParArrayEnum :: Expr -> Maybe (Expr) -> Expr -> Expr mkParArrayEnum from step to - = mkAnn ("[: " <> child <> child <> ".." <> child <> " :]") + = mkAnn ("[: " <> child <> child <> ".." <> child <> " :]") $ UParArrayEnum from (mkAnnMaybe (after "," opt) step) to -- | Create a list comprehension (@ [ (x, y) | x <- xs | y <- ys ] @) mkListComp :: Expr -> [ListCompBody] -> Expr -mkListComp expr stmts - = mkAnn ("[ " <> child <> " | " <> child <> " ]") +mkListComp expr stmts + = mkAnn ("[ " <> child <> " | " <> child <> " ]") $ UListComp expr $ mkAnnList (separatedBy " | " list) stmts -- | Create a parallel array comprehensions @ [: (x, y) | x <- xs , y <- ys :] @ enabled by @ParallelArrays@ mkParArrayComp :: Expr -> [ListCompBody] -> Expr -mkParArrayComp expr stmts - = mkAnn ("[: " <> child <> " | " <> child <> " :]") +mkParArrayComp expr stmts + = mkAnn ("[: " <> child <> " | " <> child <> " :]") $ UParArrayComp expr $ mkAnnList (separatedBy " | " list) stmts -- | Create a explicit type signature (@ x :: Int @) @@ -204,7 +210,7 @@ mkGuardedCaseRhss :: [GuardedCaseRhs] -> CaseRhs mkGuardedCaseRhss = mkAnn child . UGuardedCaseRhss . mkAnnList (indented list) --- | Creates a guarded right-hand side of pattern matches binding (@ | x > 3 -> 2 @) +-- | Creates a guarded right-hand side of pattern matches binding (@ | x > 3 -> 2 @) mkGuardedCaseRhs :: [RhsGuard] -> Expr -> GuardedCaseRhs mkGuardedCaseRhs guards expr = mkAnn (" | " <> child <> " -> " <> child) $ UGuardedCaseRhs (mkAnnList (separatedBy ", " list) guards) expr @@ -212,17 +218,17 @@ -- | Creates a @CORE@ pragma for adding notes to expressions. mkCorePragma :: String -> ExprPragma -mkCorePragma = mkAnn ("{-# CORE " <> child <> " #-}") . UCorePragma +mkCorePragma = mkAnn ("{-# CORE " <> child <> " #-}") . UCorePragma . mkAnn ("\"" <> child <> "\"") . UStringNode -- | Creates an @SCC@ pragma for defining cost centers for profiling mkSccPragma :: String -> ExprPragma -mkSccPragma = mkAnn ("{-# SCC " <> child <> " #-}") . USccPragma +mkSccPragma = mkAnn ("{-# SCC " <> child <> " #-}") . USccPragma . mkAnn ("\"" <> child <> "\"") . UStringNode -- | Creates a pragma that describes if an expression was generated from a code fragment by an external tool (@ {-\# GENERATED "Happy.y" 1:15-1:25 \#-} @) mkGeneratedPragma :: SourceRange -> ExprPragma -mkGeneratedPragma = mkAnn ("{-# GENERATED " <> child <> " #-}") . UGeneratedPragma +mkGeneratedPragma = mkAnn ("{-# GENERATED " <> child <> " #-}") . UGeneratedPragma -- | Create a in-AST source ranges (for generated pragmas) mkSourceRange :: String -> Integer -> Integer -> Integer -> Integer -> SourceRange @@ -236,13 +242,13 @@ -- | An arrow application command (@ f -< x + 1 @) mkArrowAppCmd :: Expr -> ArrowApp -> Expr -> Cmd -mkArrowAppCmd lhs arrow rhs +mkArrowAppCmd lhs arrow rhs = mkAnn (child <> " " <> child <> " " <> child) $ UArrowAppCmd lhs arrow rhs -- | A form command (@ (|untilA (increment -< x+y) (within 0.5 -< x)|) @) mkArrowFromCmd :: Expr -> [Cmd] -> Cmd -mkArrowFromCmd expr cmds +mkArrowFromCmd expr cmds = mkAnn ("(| " <> child <> child <> " |)") $ UArrowFormCmd expr $ mkAnnList (after " " $ separatedBy " " list) cmds @@ -256,7 +262,7 @@ mkInfixCmd lhs op rhs = mkAnn (child <> " " <> child <> " " <> child) $ UInfixCmd lhs op rhs --- | A lambda command +-- | A lambda command mkLambdaCmd :: [Pattern] -> Cmd -> Cmd mkLambdaCmd args cmd = mkAnn ("\\" <> child <> " -> " <> child) $ ULambdaCmd (mkAnnList (separatedBy " " list) args) cmd @@ -267,20 +273,20 @@ -- | A pattern match command mkCaseCmd :: Expr -> [CmdAlt] -> Cmd -mkCaseCmd expr alts - = mkAnn ("case " <> child <> " of " <> child) +mkCaseCmd expr alts + = mkAnn ("case " <> child <> " of " <> child) $ UCaseCmd expr $ mkAnnList (indented list) alts -- | An if command (@ if f x y then g -< x+1 else h -< y+2 @) mkIfCmd :: Expr -> Cmd -> Cmd -> Cmd -mkIfCmd pred then_ else_ - = mkAnn ("if " <> child <> " then " <> child <> " else " <> child) +mkIfCmd pred then_ else_ + = mkAnn ("if " <> child <> " then " <> child <> " else " <> child) $ UIfCmd pred then_ else_ -- | A local binding command (@ let z = x+y @) mkLetCmd :: [LocalBind] -> Cmd -> Cmd mkLetCmd binds cmd - = mkAnn ("let " <> child <> " in " <> child) + = mkAnn ("let " <> child <> " in " <> child) $ ULetCmd (mkAnnList (indented list) binds) cmd -- | A do-notation in a command @@ -306,5 +312,3 @@ -- | A hole expression @_@ mkHole :: Expr mkHole = mkAnn "_" UHole - -
Language/Haskell/Tools/Rewrite/Create/Kinds.hs view
@@ -1,6 +1,7 @@ -- | Generation of statement-level AST fragments for refactorings. -- The bindings defined here are the AST constructor names with an "mk" prefix. -{-# LANGUAGE OverloadedStrings, TypeFamilies #-} +{-# LANGUAGE MonoLocalBinds, OverloadedStrings #-} + module Language.Haskell.Tools.Rewrite.Create.Kinds where import Data.String (IsString(..), String)
Language/Haskell/Tools/Rewrite/Create/Literals.hs view
@@ -1,6 +1,7 @@ -- | Generation of literals for refactorings. -- The bindings defined here are the AST constructor names with an "mk" prefix. -{-# LANGUAGE OverloadedStrings, TypeFamilies #-} +{-# LANGUAGE MonoLocalBinds, OverloadedStrings #-} + module Language.Haskell.Tools.Rewrite.Create.Literals where import Data.String (IsString(..), String)
Language/Haskell/Tools/Rewrite/Create/Modules.hs view
@@ -1,7 +1,8 @@ -- | Generation of UModule-level AST fragments for refactorings. -- The bindings defined here create a the annotated version of the AST constructor with the same name. -- For example, @mkModule@ creates the annotated version of the @UModule@ AST constructor. -{-# LANGUAGE OverloadedStrings, TypeFamilies #-} +{-# LANGUAGE MonoLocalBinds, OverloadedStrings #-} + module Language.Haskell.Tools.Rewrite.Create.Modules where import Data.String (IsString(..), String) @@ -14,14 +15,14 @@ -- | The representation of a haskell module, that is a separate compilation unit. -- It may or may not have a header. mkModule :: [FilePragma] -> Maybe ModuleHead -> [ImportDecl] -> [Decl] -> Module -mkModule filePrags head imps decls - = mkAnn (child <> child <> child <> child) +mkModule filePrags head imps decls + = mkAnn (child <> child <> child <> child) $ UModule (mkAnnList (followedBy "\n" $ separatedBy "\n" list) filePrags) (mkAnnMaybe opt head) (mkAnnList (after "\n" $ indented list) imps) (mkAnnList (after "\n" $ indented list) decls) - + -- | Module declaration with name and (optional) exports mkModuleHead :: ModuleName -> Maybe ModulePragma -> Maybe ExportSpecs -> ModuleHead -mkModuleHead n pr es = mkAnn ("module " <> child <> child <> child <> " where") +mkModuleHead n pr es = mkAnn ("module " <> child <> child <> child <> " where") $ UModuleHead n (mkAnnMaybe (after "\n" opt) pr) (mkAnnMaybe opt es) -- | A list of export specifications surrounded by parentheses @@ -52,9 +53,9 @@ mkSubAll :: SubSpec mkSubAll = mkAnn ".." USubSpecAll --- | An import declaration: @import Module.Name@ +-- | An import declaration: @import Module.Name@ mkImportDecl :: Bool -> Bool -> Bool -> Maybe String -> ModuleName -> Maybe ModuleName -> Maybe ImportSpec - -> ImportDecl + -> ImportDecl mkImportDecl source qualified safe pkg name rename spec = mkAnn ("import " <> child <> child <> child <> child <> child <> child <> child) $ UImportDecl (if source then justVal (mkAnn "{-# SOURCE #-} " UImportSource) else noth) @@ -77,26 +78,29 @@ -- * Pragmas +mkFilePragmas :: [FilePragma] -> FilePragmaList +mkFilePragmas = mkAnnList (separatedBy "\n" list) + -- | @LANGUAGE@ pragma, listing the enabled language extensions in that file mkLanguagePragma :: [String] -> FilePragma -mkLanguagePragma extensions - = mkAnn ("{-# LANGUAGE " <> child <> " #-}") $ ULanguagePragma +mkLanguagePragma extensions + = mkAnn ("{-# LANGUAGE " <> child <> " #-}") $ ULanguagePragma $ mkAnnList (separatedBy ", " list) (map (\ext -> mkAnn (fromString ext) (ULanguageExtension ext)) extensions) -- | @OPTIONS@ pragma, possibly qualified with a tool, e.g. OPTIONS_GHC mkOptionsGHC :: String -> FilePragma -mkOptionsGHC opts - = mkAnn ("{-# OPTIONS_GHC " <> child <> " #-}") $ UOptionsPragma +mkOptionsGHC opts + = mkAnn ("{-# OPTIONS_GHC " <> child <> " #-}") $ UOptionsPragma $ mkStringNode opts -- | A warning pragma attached to the module mkModuleWarningPragma :: [String] -> ModulePragma -mkModuleWarningPragma msg - = mkAnn ("{-# WARNING " <> child <> " #-}") $ UModuleWarningPragma +mkModuleWarningPragma msg + = mkAnn ("{-# WARNING " <> child <> " #-}") $ UModuleWarningPragma $ mkAnnList (separatedBy " " list) $ map mkStringNode msg -- | A deprecated pragma attached to the module mkModuleDeprecatedPragma :: [String] -> ModulePragma -mkModuleDeprecatedPragma msg - = mkAnn ("{-# DEPRECATED " <> child <> " #-}") $ UModuleDeprecatedPragma +mkModuleDeprecatedPragma msg + = mkAnn ("{-# DEPRECATED " <> child <> " #-}") $ UModuleDeprecatedPragma $ mkAnnList (separatedBy " " list) $ map mkStringNode msg
Language/Haskell/Tools/Rewrite/Create/Names.hs view
@@ -1,5 +1,6 @@ -- | Generation of names for refactorings -{-# LANGUAGE OverloadedStrings, TypeFamilies #-} +{-# LANGUAGE MonoLocalBinds, OverloadedStrings #-} + module Language.Haskell.Tools.Rewrite.Create.Names where import Data.String (IsString(..), String)
Language/Haskell/Tools/Rewrite/Create/Patterns.hs view
@@ -1,7 +1,8 @@ -- | Generation of pattern-level AST fragments for refactorings. -- The bindings defined here create a the annotated version of the AST constructor with the same name. -- For example, @mkVarPat@ creates the annotated version of the @VarPat@ AST constructor. -{-# LANGUAGE OverloadedStrings, TypeFamilies #-} +{-# LANGUAGE MonoLocalBinds, OverloadedStrings #-} + module Language.Haskell.Tools.Rewrite.Create.Patterns where import Language.Haskell.Tools.AST (UFieldWildcard(..), UPatternField(..), UPattern(..))
Language/Haskell/Tools/Rewrite/Create/Stmts.hs view
@@ -1,6 +1,7 @@ -- | Generation of statement-level AST fragments for refactorings. -- The bindings defined here are the AST constructor names with an "mk" prefix. -{-# LANGUAGE OverloadedStrings, TypeFamilies #-} +{-# LANGUAGE MonoLocalBinds, OverloadedStrings #-} + module Language.Haskell.Tools.Rewrite.Create.Stmts where import Language.Haskell.Tools.AST (UCompStmt(..), UListCompBody(..), UStmt'(..))
Language/Haskell/Tools/Rewrite/Create/TH.hs view
@@ -1,5 +1,6 @@ -- | Generation of Template Haskell AST fragments for refactorings. -{-# LANGUAGE OverloadedStrings, TypeFamilies #-} +{-# LANGUAGE MonoLocalBinds, OverloadedStrings #-} + module Language.Haskell.Tools.Rewrite.Create.TH where import Data.String (IsString(..), String)
Language/Haskell/Tools/Rewrite/Create/Types.hs view
@@ -1,7 +1,8 @@ -- | Generation of type-level AST fragments for refactorings. -- The bindings defined here create a the annotated version of the AST constructor with the same name. -- For example, @mkTyForall@ creates the annotated version of the @TyForall@ AST constructor. -{-# LANGUAGE OverloadedStrings, TypeFamilies #-} +{-# LANGUAGE MonoLocalBinds, OverloadedStrings #-} + module Language.Haskell.Tools.Rewrite.Create.Types where import Data.String (IsString(..), String)
Language/Haskell/Tools/Rewrite/Create/Utils.hs view
@@ -1,5 +1,6 @@ -- | Utility methods for generating parts of the AST for refactorings -{-# LANGUAGE FlexibleInstances, TypeFamilies #-} +{-# LANGUAGE MonoLocalBinds #-} + module Language.Haskell.Tools.Rewrite.Create.Utils where import Language.Haskell.Tools.AST
Language/Haskell/Tools/Rewrite/ElementTypes.hs view
@@ -23,6 +23,9 @@ -- | Marks a name to be imported or exported with related names (subspecifier) type IESpec = Ann UIESpec IdDom SrcTemplateStage +-- | Specifies the imported element +type ImportModifier = Ann UImportModifier IdDom SrcTemplateStage + -- | Marks how related names will be imported or exported with a given name type SubSpec = Ann USubSpec IdDom SrcTemplateStage @@ -346,6 +349,7 @@ type MaybeImportSafe = AnnMaybe UImportSafe type MaybeImportSpec = AnnMaybe UImportSpec type MaybeModuleHead = AnnMaybe UModuleHead +type MaybeImportModifier = AnnMaybe UImportModifier type MaybeModulePragma = AnnMaybe UModulePragma type MaybeSubSpec = AnnMaybe USubSpec type MaybeStringNode = AnnMaybe UStringNode
Language/Haskell/Tools/Rewrite/Match/Binds.hs view
@@ -1,5 +1,6 @@ -- | UPattern matching on binding-level AST fragments for refactorings. {-# LANGUAGE PatternSynonyms #-} + module Language.Haskell.Tools.Rewrite.Match.Binds where import Language.Haskell.Tools.AST
Language/Haskell/Tools/Rewrite/Match/Decls.hs view
@@ -1,5 +1,6 @@ -- | UPattern matching on declaration-level AST fragments for refactorings. {-# LANGUAGE PatternSynonyms #-} + module Language.Haskell.Tools.Rewrite.Match.Decls where import Language.Haskell.Tools.AST
Language/Haskell/Tools/Rewrite/Match/Exprs.hs view
@@ -1,5 +1,6 @@ -- | UPattern matching expression-level AST fragments for refactorings. {-# LANGUAGE PatternSynonyms #-} + module Language.Haskell.Tools.Rewrite.Match.Exprs where import Language.Haskell.Tools.AST @@ -52,6 +53,10 @@ pattern Do :: StmtList -> Expr pattern Do stmts <- Ann _ (UDo DoKeyword stmts) +-- | MDo-notation expressions (@ mdo x <- act1; act2 @) +pattern MDo :: StmtList -> Expr +pattern MDo stmts <- Ann _ (UDo MDoKeyword stmts) + pattern ParArrayComp :: Expr -> ListCompBodyList -> Expr pattern ParArrayComp expr stmts <- Ann _ (UParArrayComp expr stmts) @@ -192,7 +197,7 @@ -- | Clause of case expression (@ Just x -> x + 1 @) pattern Alt :: Pattern -> CaseRhs -> MaybeLocalBinds -> Alt -pattern Alt pat rhs locals <- Ann _ (UAlt pat rhs locals) +pattern Alt pat rhs locals <- Ann _ (UAlt pat rhs locals) -- | Unguarded right-hand side a pattern match (@ -> 3 @) pattern CaseRhs :: Expr -> CaseRhs @@ -202,7 +207,7 @@ pattern GuardedCaseRhss :: GuardedCaseRhsList -> CaseRhs pattern GuardedCaseRhss cases <- Ann _ (UGuardedCaseRhss cases) --- | A guarded right-hand side of pattern matches binding (@ | x > 3 -> 2 @) +-- | A guarded right-hand side of pattern matches binding (@ | x > 3 -> 2 @) pattern GuardedCaseRhs :: RhsGuardList -> Expr -> GuardedCaseRhs pattern GuardedCaseRhs guards expr <- Ann _ (UGuardedCaseRhs guards expr) @@ -223,8 +228,8 @@ -- | In-AST source ranges (for generated pragmas) pattern SourceRange :: String -> Integer -> Integer -> Integer -> Integer -> SourceRange -pattern SourceRange file fromLine fromCol toLine toCol - <- Ann _ (USourceRange +pattern SourceRange file fromLine fromCol toLine toCol + <- Ann _ (USourceRange (Ann _ (UStringNode file)) (Ann _ (Number fromLine)) (Ann _ (Number fromCol)) @@ -275,23 +280,20 @@ -- | Left arrow application: @-<@ pattern LeftAppl :: ArrowApp -pattern LeftAppl <- Ann _ ULeftAppl +pattern LeftAppl <- Ann _ ULeftAppl -- | Right arrow application: @>-@ pattern RightAppl :: ArrowApp -pattern RightAppl <- Ann _ URightAppl +pattern RightAppl <- Ann _ URightAppl -- | Left arrow high application: @-<<@ pattern LeftHighApp :: ArrowApp -pattern LeftHighApp <- Ann _ ULeftHighApp +pattern LeftHighApp <- Ann _ ULeftHighApp -- | Right arrow high application: @>>-@ pattern RightHighApp :: ArrowApp -pattern RightHighApp <- Ann _ URightHighApp +pattern RightHighApp <- Ann _ URightHighApp -- | A hole expression @_@ pattern Hole :: Expr pattern Hole <- Ann _ UHole - - -
Language/Haskell/Tools/Rewrite/Match/Kinds.hs view
@@ -1,5 +1,6 @@ -- | UPattern matching on statement-level AST fragments for refactorings. {-# LANGUAGE PatternSynonyms #-} + module Language.Haskell.Tools.Rewrite.Match.Kinds where import Language.Haskell.Tools.AST
Language/Haskell/Tools/Rewrite/Match/Literals.hs view
@@ -1,5 +1,6 @@ -- | UPattern matching on literals for refactorings. {-# LANGUAGE PatternSynonyms #-} + module Language.Haskell.Tools.Rewrite.Match.Literals where import Language.Haskell.Tools.AST (ULiteral(..), Ann(..))
Language/Haskell/Tools/Rewrite/Match/Modules.hs view
@@ -1,5 +1,6 @@ -- | UPattern matching on UModule-level AST fragments for refactorings. {-# LANGUAGE PatternSynonyms #-} + module Language.Haskell.Tools.Rewrite.Match.Modules where import Language.Haskell.Tools.AST @@ -28,8 +29,8 @@ pattern ModuleExport name <- Ann _ (UModuleExport name) -- | Marks a name to be imported or exported with related names (subspecifier) -pattern IESpec :: Name -> MaybeSubSpec -> IESpec -pattern IESpec name ss <- Ann _ (UIESpec _ name ss) +pattern IESpec :: MaybeImportModifier -> Name -> MaybeSubSpec -> IESpec +pattern IESpec modifier name ss <- Ann _ (UIESpec modifier name ss) -- | @(..)@: a class exported with all of its methods, or a datatype exported with all of its constructors. pattern SubAll :: SubSpec @@ -40,10 +41,10 @@ pattern SubList names <- Ann _ (USubSpecList names) -pattern ImportDecl :: MaybeImportSource -> MaybeImportQualified +pattern ImportDecl :: MaybeImportSource -> MaybeImportQualified -> MaybeImportSafe -> MaybeStringNode -> ModuleName -> MaybeImportRenaming - -> MaybeImportSpec -> ImportDecl + -> MaybeImportSpec -> ImportDecl pattern ImportDecl source qualified safe pkg name rename spec <- Ann _ (UImportDecl source qualified safe pkg name rename spec) pattern ImportRenaming :: ModuleName -> ImportRenaming @@ -78,4 +79,4 @@ -- | A deprecated pragma attached to the module pattern ModuleDeprecatedPragma :: StringNodeList -> ModulePragma -pattern ModuleDeprecatedPragma msgs <- Ann _ (UModuleDeprecatedPragma msgs)+pattern ModuleDeprecatedPragma msgs <- Ann _ (UModuleDeprecatedPragma msgs)
Language/Haskell/Tools/Rewrite/Match/Names.hs view
@@ -1,5 +1,6 @@ -- | Generation of basic AST fragments (names for example) for refactorings {-# LANGUAGE PatternSynonyms #-} + module Language.Haskell.Tools.Rewrite.Match.Names where import Language.Haskell.Tools.AST
Language/Haskell/Tools/Rewrite/Match/Patterns.hs view
@@ -1,5 +1,6 @@ -- | UPattern matching on pattern-level AST fragments for refactorings. {-# LANGUAGE PatternSynonyms #-} + module Language.Haskell.Tools.Rewrite.Match.Patterns where import Language.Haskell.Tools.AST (Ann(..), UPatternField(..), UPattern(..))
Language/Haskell/Tools/Rewrite/Match/Stmts.hs view
@@ -1,5 +1,6 @@ -- | UPattern matching on statement-level AST fragments for refactorings. {-# LANGUAGE PatternSynonyms #-} + module Language.Haskell.Tools.Rewrite.Match.Stmts where import Language.Haskell.Tools.AST
Language/Haskell/Tools/Rewrite/Match/TH.hs view
@@ -1,5 +1,6 @@ -- | Pattern matching on Template Haskell AST fragments for refactorings. {-# LANGUAGE PatternSynonyms #-} + module Language.Haskell.Tools.Rewrite.Match.TH where import Language.Haskell.Tools.AST
Language/Haskell/Tools/Rewrite/Match/Types.hs view
@@ -1,5 +1,6 @@ -- | UPattern matching on type-level AST fragments for refactorings. {-# LANGUAGE PatternSynonyms #-} + module Language.Haskell.Tools.Rewrite.Match.Types where import Language.Haskell.Tools.AST @@ -11,7 +12,7 @@ pattern ForallType :: TyVarList -> Type -> Type pattern ForallType vars t <- Ann _ (UTyForall vars t) --- | Type with a context (@ forall x y . type @) +-- | Type with a context (@ C a => type @) pattern CtxType :: Context -> Type -> Type pattern CtxType ctx t <- Ann _ (UTyCtx ctx t)
haskell-tools-rewrite.cabal view
@@ -1,5 +1,5 @@ name: haskell-tools-rewrite -version: 1.0.0.4 +version: 1.0.1.1 synopsis: Facilities for generating new parts of the Haskell-Tools AST description: Contains utility functions to generate parts of the Haskell-Tools AST. Generates these elements to be compatible with the source annotations that are already present on the AST. The package is divided into modules based on which language elements can the given module generate. This packages should be used during the transformations to generate parts of the new AST. homepage: https://github.com/haskell-tools/haskell-tools