th-desugar 1.5.4 → 1.5.4.1
raw patch · 5 files changed
+25/−18 lines, 5 filesdep ~basedep ~template-haskellPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: base, template-haskell
API changes (from Hackage documentation)
- Language.Haskell.TH.Desugar: instance Language.Haskell.TH.Desugar.Desugar Language.Haskell.TH.Syntax.Con Language.Haskell.TH.Desugar.Core.DCon
- Language.Haskell.TH.Desugar: instance Language.Haskell.TH.Desugar.Desugar Language.Haskell.TH.Syntax.Cxt Language.Haskell.TH.Desugar.Core.DCxt
- Language.Haskell.TH.Desugar: instance Language.Haskell.TH.Desugar.Desugar Language.Haskell.TH.Syntax.Exp Language.Haskell.TH.Desugar.Core.DExp
- Language.Haskell.TH.Desugar: instance Language.Haskell.TH.Desugar.Desugar Language.Haskell.TH.Syntax.Kind Language.Haskell.TH.Desugar.Core.DKind
- Language.Haskell.TH.Desugar: instance Language.Haskell.TH.Desugar.Desugar Language.Haskell.TH.Syntax.TyVarBndr Language.Haskell.TH.Desugar.Core.DTyVarBndr
- Language.Haskell.TH.Desugar: instance Language.Haskell.TH.Desugar.Desugar Language.Haskell.TH.Syntax.Type Language.Haskell.TH.Desugar.Core.DType
- Language.Haskell.TH.Desugar: instance Language.Haskell.TH.Desugar.Desugar [Language.Haskell.TH.Syntax.Dec] [Language.Haskell.TH.Desugar.Core.DDec]
- Language.Haskell.TH.Desugar.Lift: instance Language.Haskell.TH.Syntax.Lift Language.Haskell.TH.Desugar.Core.DClause
- Language.Haskell.TH.Desugar.Lift: instance Language.Haskell.TH.Syntax.Lift Language.Haskell.TH.Desugar.Core.DCon
- Language.Haskell.TH.Desugar.Lift: instance Language.Haskell.TH.Syntax.Lift Language.Haskell.TH.Desugar.Core.DConFields
- Language.Haskell.TH.Desugar.Lift: instance Language.Haskell.TH.Syntax.Lift Language.Haskell.TH.Desugar.Core.DDec
- Language.Haskell.TH.Desugar.Lift: instance Language.Haskell.TH.Syntax.Lift Language.Haskell.TH.Desugar.Core.DExp
- Language.Haskell.TH.Desugar.Lift: instance Language.Haskell.TH.Syntax.Lift Language.Haskell.TH.Desugar.Core.DForeign
- Language.Haskell.TH.Desugar.Lift: instance Language.Haskell.TH.Syntax.Lift Language.Haskell.TH.Desugar.Core.DKind
- Language.Haskell.TH.Desugar.Lift: instance Language.Haskell.TH.Syntax.Lift Language.Haskell.TH.Desugar.Core.DLetDec
- Language.Haskell.TH.Desugar.Lift: instance Language.Haskell.TH.Syntax.Lift Language.Haskell.TH.Desugar.Core.DMatch
- Language.Haskell.TH.Desugar.Lift: instance Language.Haskell.TH.Syntax.Lift Language.Haskell.TH.Desugar.Core.DPat
- Language.Haskell.TH.Desugar.Lift: instance Language.Haskell.TH.Syntax.Lift Language.Haskell.TH.Desugar.Core.DPragma
- Language.Haskell.TH.Desugar.Lift: instance Language.Haskell.TH.Syntax.Lift Language.Haskell.TH.Desugar.Core.DPred
- Language.Haskell.TH.Desugar.Lift: instance Language.Haskell.TH.Syntax.Lift Language.Haskell.TH.Desugar.Core.DRuleBndr
- Language.Haskell.TH.Desugar.Lift: instance Language.Haskell.TH.Syntax.Lift Language.Haskell.TH.Desugar.Core.DTySynEqn
- Language.Haskell.TH.Desugar.Lift: instance Language.Haskell.TH.Syntax.Lift Language.Haskell.TH.Desugar.Core.DTyVarBndr
- Language.Haskell.TH.Desugar.Lift: instance Language.Haskell.TH.Syntax.Lift Language.Haskell.TH.Desugar.Core.DType
- Language.Haskell.TH.Desugar.Lift: instance Language.Haskell.TH.Syntax.Lift Language.Haskell.TH.Desugar.Core.NewOrData
+ Language.Haskell.TH.Desugar: instance Desugar Con DCon
+ Language.Haskell.TH.Desugar: instance Desugar Cxt DCxt
+ Language.Haskell.TH.Desugar: instance Desugar Exp DExp
+ Language.Haskell.TH.Desugar: instance Desugar Kind DKind
+ Language.Haskell.TH.Desugar: instance Desugar TyVarBndr DTyVarBndr
+ Language.Haskell.TH.Desugar: instance Desugar Type DType
+ Language.Haskell.TH.Desugar: instance Desugar [Dec] [DDec]
+ Language.Haskell.TH.Desugar.Lift: instance Lift DClause
+ Language.Haskell.TH.Desugar.Lift: instance Lift DCon
+ Language.Haskell.TH.Desugar.Lift: instance Lift DConFields
+ Language.Haskell.TH.Desugar.Lift: instance Lift DDec
+ Language.Haskell.TH.Desugar.Lift: instance Lift DExp
+ Language.Haskell.TH.Desugar.Lift: instance Lift DForeign
+ Language.Haskell.TH.Desugar.Lift: instance Lift DKind
+ Language.Haskell.TH.Desugar.Lift: instance Lift DLetDec
+ Language.Haskell.TH.Desugar.Lift: instance Lift DMatch
+ Language.Haskell.TH.Desugar.Lift: instance Lift DPat
+ Language.Haskell.TH.Desugar.Lift: instance Lift DPragma
+ Language.Haskell.TH.Desugar.Lift: instance Lift DPred
+ Language.Haskell.TH.Desugar.Lift: instance Lift DRuleBndr
+ Language.Haskell.TH.Desugar.Lift: instance Lift DTySynEqn
+ Language.Haskell.TH.Desugar.Lift: instance Lift DTyVarBndr
+ Language.Haskell.TH.Desugar.Lift: instance Lift DType
+ Language.Haskell.TH.Desugar.Lift: instance Lift NewOrData
- Language.Haskell.TH.Desugar: type DInstanceDec = DDec Guaranteed to be an instance declaration
+ Language.Haskell.TH.Desugar: type DInstanceDec = DDec
Files
- CHANGES.md +5/−1
- Language/Haskell/TH/Desugar/Reify.hs +9/−11
- Language/Haskell/TH/Desugar/Util.hs +4/−4
- Test/Splices.hs +5/−0
- th-desugar.cabal +2/−2
CHANGES.md view
@@ -1,9 +1,13 @@ `th-desugar` release notes ========================== +Version 1.5.4.1+---------------+* Fix issue #32, concerning reification of classes with default methods.+ Version 1.5.4 --------------* Added+* Added `expandUnsoundly` Version 1.5.3 -------------
Language/Haskell/TH/Desugar/Reify.hs view
@@ -153,7 +153,7 @@ localDeclarations = lift localDeclarations instance (DsMonad m, Monoid w) => DsMonad (RWST r w s m) where- localDeclarations = lift localDeclarations + localDeclarations = lift localDeclarations -- | Add a list of declarations to be considered when reifying local -- declarations.@@ -196,14 +196,13 @@ reifyInDec n decs (NewtypeD _ ty_name tvbs con _) | Just info <- maybeReifyCon n decs ty_name (map tvbToType tvbs) [con] = Just info-reifyInDec n decs (ClassD _ _ _ _ sub_decs)- | Just info <- firstMatch (reifyInDec n (sub_decs ++ decs)) sub_decs- = Just info -- must necessarily *not* be a method, because type signatures- -- don't reify reifyInDec n decs (ClassD _ ty_name tvbs _ sub_decs) | Just ty <- findType n sub_decs = Just $ ClassOpI n (addClassCxt ty_name tvbs ty) ty_name (findFixity n $ sub_decs ++ decs)+reifyInDec n decs (ClassD _ _ _ _ sub_decs)+ | Just info <- firstMatch (reifyInDec n (sub_decs ++ decs)) sub_decs+ = Just info reifyInDec n decs (InstanceD _ _ sub_decs) | Just info <- firstMatch reify_in_instance sub_decs = Just info@@ -245,11 +244,11 @@ mkVarI n decs = mkVarITy n decs (fromMaybe no_type $ findType n decs) where no_type = error $ "No type information found in local declaration for "- ++ show n + ++ show n mkVarITy :: Name -> [Dec] -> Type -> Info mkVarITy n decs ty = VarI n ty Nothing (findFixity n decs)- + findFixity :: Name -> [Dec] -> Fixity findFixity n = fromMaybe defaultFixity . firstMatch match_fixity where@@ -331,8 +330,8 @@ match_rec_sel (n', _, ty) | n `nameMatches` n' = Just ty match_rec_sel _ = Nothing- + handleBug8884 :: Dec -> Dec #if __GLASGOW_HASKELL__ >= 707 handleBug8884 = id@@ -343,11 +342,10 @@ kind_from_maybe = fromMaybe StarT tvb_kind (PlainTV _) = Nothing tvb_kind (KindedTV _ k) = Just k- + result_kind = kind_from_maybe m_kind args_kinds = map (kind_from_maybe . tvb_kind) tvbs stupid_kind = mkArrows args_kinds result_kind handleBug8884 dec = dec-#endif -+#endif
Language/Haskell/TH/Desugar/Util.hs view
@@ -10,7 +10,7 @@ module Language.Haskell.TH.Desugar.Util ( newUniqueName,- impossible, + impossible, nameOccursIn, allNamesIn, mkTypeName, mkDataName, isDataName, stripVarP_maybe, extractBoundNamesStmt, concatMapM, mapMaybeM, expectJustM,@@ -40,7 +40,8 @@ ---------------------------------------- -- | Like newName, but even more unique (unique across different splices),--- and with unique @nameBase@s.+-- and with unique @nameBase@s. Precondition: the string is a valid Haskell+-- alphanumeric identifier (could be upper- or lower-case). newUniqueName :: Quasi q => String -> q Name newUniqueName str = do n <- qNewName str@@ -166,7 +167,7 @@ -- | Extract all Names mentioned in a TH tree. allNamesIn :: Data a => a -> [Name] allNamesIn = everything (++) $ mkQ [] (:[])- + -- | Extract the names bound in a @Stmt@ extractBoundNamesStmt :: Stmt -> S.Set Name extractBoundNamesStmt (BindS pat _) = extractBoundNamesPat pat@@ -271,4 +272,3 @@ firstMatch :: (a -> Maybe b) -> [a] -> Maybe b firstMatch f xs = listToMaybe $ mapMaybe f xs-
Test/Splices.hs view
@@ -353,6 +353,10 @@ #if __GLASGOW_HASKELL__ >= 707 type family R21 (a :: k) (b :: k) :: k where R21 a b = b #endif+ class XXX a where+ r22 :: a -> a+ r22 = id -- test #32+ |] reifyDecsNames :: [Name]@@ -362,6 +366,7 @@ #if __GLASGOW_HASKELL__ >= 707 , "R21" #endif+ , "r22" ] simplCaseTests :: [Q Exp]
th-desugar.cabal view
@@ -1,5 +1,5 @@ name: th-desugar-version: 1.5.4+version: 1.5.4.1 cabal-version: >= 1.10 synopsis: Functions to desugar Template Haskell homepage: http://www.cis.upenn.edu/~eir/packages/th-desugar@@ -26,7 +26,7 @@ source-repository this type: git location: https://github.com/goldfirere/th-desugar.git- tag: v1.5.4+ tag: v1.5.4.1 library build-depends: