packages feed

haskell-src-meta 0.8.8 → 0.8.9

raw patch · 5 files changed

+348/−5 lines, 5 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Language.Haskell.Meta.Extensions: fromExtension :: Extension -> Maybe KnownExtension
+ Language.Haskell.Meta.Extensions: toExtension :: KnownExtension -> Maybe Extension

Files

ChangeLog view
@@ -1,3 +1,6 @@+0.8.9+- Add `toExtension` and `fromExtension` to convert between HSE and TH language extensions (by Konstantin Ivanov)+ 0.8.8 - Implement toDec for AnnPragma (by Matt Torrence) - Add support for OverloadedLabels (by funketh)
haskell-src-meta.cabal view
@@ -1,5 +1,5 @@ name:               haskell-src-meta-version:            0.8.8+version:            0.8.9 cabal-version:      >= 1.10 build-type:         Simple license:            BSD3@@ -19,7 +19,7 @@ library   default-language: Haskell2010   build-depends:   base >= 4.10 && < 5,-                   haskell-src-exts >= 1.18 && < 1.24,+                   haskell-src-exts >= 1.21 && < 1.24,                    pretty >= 1.0 && < 1.2,                    syb >= 0.1 && < 0.8,                    template-haskell >= 2.12 && < 2.19,@@ -27,6 +27,7 @@    hs-source-dirs:  src   exposed-modules: Language.Haskell.Meta+                   Language.Haskell.Meta.Extensions                    Language.Haskell.Meta.Parse                    Language.Haskell.Meta.Syntax.Translate                    Language.Haskell.Meta.Utils@@ -41,7 +42,7 @@   build-depends:     HUnit                >= 1.2,     base                 >= 4.10,-    haskell-src-exts     >= 1.17,+    haskell-src-exts     >= 1.21,     haskell-src-meta,     pretty               >= 1.0,     template-haskell     >= 2.12,
src/Language/Haskell/Meta.hs view
@@ -8,10 +8,12 @@ -}  module Language.Haskell.Meta (+    module Language.Haskell.Meta.Extensions,     module Language.Haskell.Meta.Parse,     module Language.Haskell.Meta.Syntax.Translate ) where +import Language.Haskell.Meta.Extensions import Language.Haskell.Meta.Parse import Language.Haskell.Meta.Syntax.Translate import Language.Haskell.TH.Instances ()
+ src/Language/Haskell/Meta/Extensions.hs view
@@ -0,0 +1,339 @@+{-# LANGUAGE CPP #-}+{- |+  Module      :  Language.Haskell.Meta.Parse+  Copyright   :  (c) Serokell 2022, Adam Bergmark 2022+  License     :  BSD3+  Maintainer  :  Adam Bergmark <adam@bergmark.nl>+  Stability   :  experimental+  Portability :  portable (template-haskell)+-}++module Language.Haskell.Meta.Extensions (+  toExtension,+  fromExtension+ ) where++import qualified Language.Haskell.Exts.Extension as Exts+import qualified Language.Haskell.TH.Syntax      as TH+++-----------------------------------------------------------------------------++-- * To template-haskell++-- | Returns @Nothing@ when the extension is not supported by template-haskell.+toExtension :: Exts.KnownExtension -> Maybe TH.Extension+toExtension e = case e of+  Exts.OverlappingInstances       -> Just TH.OverlappingInstances+  Exts.UndecidableInstances       -> Just TH.UndecidableInstances+  Exts.IncoherentInstances        -> Just TH.IncoherentInstances+  Exts.InstanceSigs               -> Just TH.InstanceSigs+  Exts.DoRec                      -> Nothing+  Exts.RecursiveDo                -> Just TH.RecursiveDo+  Exts.ParallelListComp           -> Just TH.ParallelListComp+  Exts.MultiParamTypeClasses      -> Just TH.MultiParamTypeClasses+  Exts.MonomorphismRestriction    -> Just TH.MonomorphismRestriction+  Exts.FunctionalDependencies     -> Just TH.FunctionalDependencies+  Exts.Rank2Types                 -> Nothing+  Exts.RankNTypes                 -> Just TH.RankNTypes+  Exts.PolymorphicComponents      -> Nothing+  Exts.ExistentialQuantification  -> Just TH.ExistentialQuantification+  Exts.ScopedTypeVariables        -> Just TH.ScopedTypeVariables+  Exts.PatternSignatures          -> Nothing+  Exts.ImplicitParams             -> Just TH.ImplicitParams+  Exts.FlexibleContexts           -> Just TH.FlexibleContexts+  Exts.FlexibleInstances          -> Just TH.FlexibleInstances+  Exts.EmptyDataDecls             -> Just TH.EmptyDataDecls+  Exts.CPP                        -> Just TH.Cpp+  Exts.KindSignatures             -> Just TH.KindSignatures+  Exts.BangPatterns               -> Just TH.BangPatterns+  Exts.TypeSynonymInstances       -> Just TH.TypeSynonymInstances+  Exts.TemplateHaskell            -> Just TH.TemplateHaskell+  Exts.ForeignFunctionInterface   -> Just TH.ForeignFunctionInterface+  Exts.Arrows                     -> Just TH.Arrows+  Exts.Generics                   -> Nothing+  Exts.ImplicitPrelude            -> Just TH.ImplicitPrelude+  Exts.NamedFieldPuns             -> Nothing+  Exts.PatternGuards              -> Just TH.PatternGuards+  Exts.GeneralizedNewtypeDeriving -> Just TH.GeneralizedNewtypeDeriving+  Exts.DeriveAnyClass             -> Just TH.DeriveAnyClass+  Exts.ExtensibleRecords          -> Nothing+  Exts.RestrictedTypeSynonyms     -> Nothing+  Exts.HereDocuments              -> Nothing+  Exts.MagicHash                  -> Just TH.MagicHash+  Exts.BinaryLiterals             -> Just TH.BinaryLiterals+  Exts.TypeFamilies               -> Just TH.TypeFamilies+  Exts.StandaloneDeriving         -> Just TH.StandaloneDeriving+  Exts.UnicodeSyntax              -> Just TH.UnicodeSyntax+  Exts.UnliftedFFITypes           -> Just TH.UnliftedFFITypes+  Exts.LiberalTypeSynonyms        -> Just TH.LiberalTypeSynonyms+  Exts.TypeOperators              -> Just TH.TypeOperators+  Exts.ParallelArrays             -> Just TH.ParallelArrays+  Exts.RecordWildCards            -> Just TH.RecordWildCards+  Exts.RecordPuns                 -> Just TH.RecordPuns+  Exts.DisambiguateRecordFields   -> Just TH.DisambiguateRecordFields+  Exts.OverloadedStrings          -> Just TH.OverloadedStrings+  Exts.GADTs                      -> Just TH.GADTs+  Exts.MonoPatBinds               ->+#if !MIN_VERSION_template_haskell(2,18,0)+    Just TH.MonoPatBinds+#else+    Nothing+#endif+  Exts.RelaxedPolyRec             -> Just TH.RelaxedPolyRec+  Exts.ExtendedDefaultRules       -> Just TH.ExtendedDefaultRules+  Exts.UnboxedTuples              -> Just TH.UnboxedTuples+  Exts.DeriveDataTypeable         -> Just TH.DeriveDataTypeable+  Exts.ConstrainedClassMethods    -> Just TH.ConstrainedClassMethods+  Exts.PackageImports             -> Just TH.PackageImports+  Exts.LambdaCase                 -> Just TH.LambdaCase+  Exts.EmptyCase                  -> Just TH.EmptyCase+  Exts.ImpredicativeTypes         -> Just TH.ImpredicativeTypes+  Exts.NewQualifiedOperators      -> Nothing+  Exts.PostfixOperators           -> Just TH.PostfixOperators+  Exts.QuasiQuotes                -> Just TH.QuasiQuotes+  Exts.TransformListComp          -> Just TH.TransformListComp+  Exts.ViewPatterns               -> Just TH.ViewPatterns+  Exts.XmlSyntax                  -> Nothing+  Exts.RegularPatterns            -> Nothing+  Exts.TupleSections              -> Just TH.TupleSections+  Exts.GHCForeignImportPrim       -> Just TH.GHCForeignImportPrim+  Exts.NPlusKPatterns             -> Just TH.NPlusKPatterns+  Exts.DoAndIfThenElse            -> Just TH.DoAndIfThenElse+  Exts.RebindableSyntax           -> Just TH.RebindableSyntax+  Exts.ExplicitForAll             -> Just TH.ExplicitForAll+  Exts.DatatypeContexts           -> Just TH.DatatypeContexts+  Exts.MonoLocalBinds             -> Just TH.MonoLocalBinds+  Exts.DeriveFunctor              -> Just TH.DeriveFunctor+  Exts.DeriveGeneric              -> Just TH.DeriveGeneric+  Exts.DeriveTraversable          -> Just TH.DeriveTraversable+  Exts.DeriveFoldable             -> Just TH.DeriveFoldable+  Exts.NondecreasingIndentation   -> Just TH.NondecreasingIndentation+  Exts.InterruptibleFFI           -> Just TH.InterruptibleFFI+  Exts.CApiFFI                    -> Just TH.CApiFFI+  Exts.JavaScriptFFI              -> Just TH.JavaScriptFFI+  Exts.ExplicitNamespaces         -> Just TH.ExplicitNamespaces+  Exts.DataKinds                  -> Just TH.DataKinds+  Exts.PolyKinds                  -> Just TH.PolyKinds+  Exts.MultiWayIf                 -> Just TH.MultiWayIf+  Exts.SafeImports                -> Nothing+  Exts.Safe                       -> Nothing+  Exts.Trustworthy                -> Nothing+  Exts.DefaultSignatures          -> Just TH.DefaultSignatures+  Exts.ConstraintKinds            -> Just TH.ConstraintKinds+  Exts.RoleAnnotations            -> Just TH.RoleAnnotations+  Exts.PatternSynonyms            -> Just TH.PatternSynonyms+  Exts.PartialTypeSignatures      -> Just TH.PartialTypeSignatures+  Exts.NamedWildCards             -> Just TH.NamedWildCards+  Exts.TypeApplications           -> Just TH.TypeApplications+  Exts.TypeFamilyDependencies     -> Just TH.TypeFamilyDependencies+  Exts.OverloadedLabels           -> Just TH.OverloadedLabels+  Exts.DerivingStrategies         -> Just TH.DerivingStrategies+  Exts.UnboxedSums                -> Just TH.UnboxedSums+#if MIN_VERSION_haskell_src_exts(1,21,0)+  Exts.TypeInType                 -> Just TH.TypeInType+#endif+  Exts.Strict                     -> Just TH.Strict+  Exts.StrictData                 -> Just TH.StrictData++#if MIN_VERSION_haskell_src_exts(1,21,0)+  Exts.DerivingVia                ->+#if MIN_VERSION_template_haskell(2,14,0)+    Just TH.DerivingVia+#else+    Nothing+#endif+#endif++#if MIN_VERSION_haskell_src_exts(1,22,0)+  Exts.QuantifiedConstraints      ->+#if MIN_VERSION_template_haskell(2,14,0)+    Just TH.QuantifiedConstraints+#else+    Nothing+#endif+#endif++#if MIN_VERSION_haskell_src_exts(1,23,0)+  Exts.BlockArguments             ->+#if MIN_VERSION_template_haskell(2,14,0)+    Just TH.BlockArguments+#else+    Nothing+#endif+#endif++  -- NB: when adding a case here, you may also need to update `fromExtension`+++-----------------------------------------------------------------------------++-- * From template-haskell++-- | Returns @Nothing@ when the extension is not supported by haskell-src-exts.+fromExtension :: TH.Extension -> Maybe Exts.KnownExtension+fromExtension e = case e of+  TH.Cpp                               -> Just Exts.CPP+  TH.OverlappingInstances              -> Just Exts.OverlappingInstances+  TH.UndecidableInstances              -> Just Exts.UndecidableInstances+  TH.IncoherentInstances               -> Just Exts.IncoherentInstances+  TH.UndecidableSuperClasses           -> Nothing+  TH.MonomorphismRestriction           -> Just Exts.MonomorphismRestriction+#if !MIN_VERSION_template_haskell(2,18,0)+  TH.MonoPatBinds                      -> Just Exts.MonoPatBinds+#endif+  TH.MonoLocalBinds                    -> Just Exts.MonoLocalBinds+  TH.RelaxedPolyRec                    -> Just Exts.RelaxedPolyRec+  TH.ExtendedDefaultRules              -> Just Exts.ExtendedDefaultRules+  TH.ForeignFunctionInterface          -> Just Exts.ForeignFunctionInterface+  TH.UnliftedFFITypes                  -> Just Exts.UnliftedFFITypes+  TH.InterruptibleFFI                  -> Just Exts.InterruptibleFFI+  TH.CApiFFI                           -> Just Exts.CApiFFI+  TH.GHCForeignImportPrim              -> Just Exts.GHCForeignImportPrim+  TH.JavaScriptFFI                     -> Just Exts.JavaScriptFFI+  TH.ParallelArrays                    -> Just Exts.ParallelArrays+  TH.Arrows                            -> Just Exts.Arrows+  TH.TemplateHaskell                   -> Just Exts.TemplateHaskell+  TH.TemplateHaskellQuotes             -> Nothing+  TH.QuasiQuotes                       -> Just Exts.QuasiQuotes+  TH.ImplicitParams                    -> Just Exts.ImplicitParams+  TH.ImplicitPrelude                   -> Just Exts.ImplicitPrelude+  TH.ScopedTypeVariables               -> Just Exts.ScopedTypeVariables+  TH.AllowAmbiguousTypes               -> Nothing+  TH.UnboxedTuples                     -> Just Exts.UnboxedTuples+  TH.UnboxedSums                       -> Just Exts.UnboxedSums+  TH.BangPatterns                      -> Just Exts.BangPatterns+  TH.TypeFamilies                      -> Just Exts.TypeFamilies+  TH.TypeFamilyDependencies            -> Just Exts.TypeFamilyDependencies+  TH.TypeInType                        ->+#if MIN_VERSION_haskell_src_exts(1,21,0)+    Just Exts.TypeInType+#else+    Nothing+#endif+  TH.OverloadedStrings                 -> Just Exts.OverloadedStrings+  TH.OverloadedLists                   -> Nothing+  TH.NumDecimals                       -> Nothing+  TH.DisambiguateRecordFields          -> Just Exts.DisambiguateRecordFields+  TH.RecordWildCards                   -> Just Exts.RecordWildCards+  TH.RecordPuns                        -> Just Exts.RecordPuns+  TH.ViewPatterns                      -> Just Exts.ViewPatterns+  TH.GADTs                             -> Just Exts.GADTs+  TH.GADTSyntax                        -> Nothing+  TH.NPlusKPatterns                    -> Just Exts.NPlusKPatterns+  TH.DoAndIfThenElse                   -> Just Exts.DoAndIfThenElse+  TH.RebindableSyntax                  -> Just Exts.RebindableSyntax+  TH.ConstraintKinds                   -> Just Exts.ConstraintKinds+  TH.PolyKinds                         -> Just Exts.PolyKinds+  TH.DataKinds                         -> Just Exts.DataKinds+  TH.InstanceSigs                      -> Just Exts.InstanceSigs+  TH.ApplicativeDo                     -> Nothing+  TH.StandaloneDeriving                -> Just Exts.StandaloneDeriving+  TH.DeriveDataTypeable                -> Just Exts.DeriveDataTypeable+  TH.AutoDeriveTypeable                -> Nothing+  TH.DeriveFunctor                     -> Just Exts.DeriveFunctor+  TH.DeriveTraversable                 -> Just Exts.DeriveTraversable+  TH.DeriveFoldable                    -> Just Exts.DeriveFoldable+  TH.DeriveGeneric                     -> Just Exts.DeriveGeneric+  TH.DefaultSignatures                 -> Just Exts.DefaultSignatures+  TH.DeriveAnyClass                    -> Just Exts.DeriveAnyClass+  TH.DeriveLift                        -> Nothing+  TH.DerivingStrategies                -> Just Exts.DerivingStrategies+  TH.TypeSynonymInstances              -> Just Exts.TypeSynonymInstances+  TH.FlexibleContexts                  -> Just Exts.FlexibleContexts+  TH.FlexibleInstances                 -> Just Exts.FlexibleInstances+  TH.ConstrainedClassMethods           -> Just Exts.ConstrainedClassMethods+  TH.MultiParamTypeClasses             -> Just Exts.MultiParamTypeClasses+  TH.NullaryTypeClasses                -> Nothing+  TH.FunctionalDependencies            -> Just Exts.FunctionalDependencies+  TH.UnicodeSyntax                     -> Just Exts.UnicodeSyntax+  TH.ExistentialQuantification         -> Just Exts.ExistentialQuantification+  TH.MagicHash                         -> Just Exts.MagicHash+  TH.EmptyDataDecls                    -> Just Exts.EmptyDataDecls+  TH.KindSignatures                    -> Just Exts.KindSignatures+  TH.RoleAnnotations                   -> Just Exts.RoleAnnotations+  TH.ParallelListComp                  -> Just Exts.ParallelListComp+  TH.TransformListComp                 -> Just Exts.TransformListComp+  TH.MonadComprehensions               -> Nothing+  TH.GeneralizedNewtypeDeriving        -> Just Exts.GeneralizedNewtypeDeriving+  TH.RecursiveDo                       -> Just Exts.RecursiveDo+  TH.PostfixOperators                  -> Just Exts.PostfixOperators+  TH.TupleSections                     -> Just Exts.TupleSections+  TH.PatternGuards                     -> Just Exts.PatternGuards+  TH.LiberalTypeSynonyms               -> Just Exts.LiberalTypeSynonyms+  TH.RankNTypes                        -> Just Exts.RankNTypes+  TH.ImpredicativeTypes                -> Just Exts.ImpredicativeTypes+  TH.TypeOperators                     -> Just Exts.TypeOperators+  TH.ExplicitNamespaces                -> Just Exts.ExplicitNamespaces+  TH.PackageImports                    -> Just Exts.PackageImports+  TH.ExplicitForAll                    -> Just Exts.ExplicitForAll+  TH.AlternativeLayoutRule             -> Nothing+  TH.AlternativeLayoutRuleTransitional -> Nothing+  TH.DatatypeContexts                  -> Just Exts.DatatypeContexts+  TH.NondecreasingIndentation          -> Just Exts.NondecreasingIndentation+  TH.RelaxedLayout                     -> Nothing+  TH.TraditionalRecordSyntax           -> Nothing+  TH.LambdaCase                        -> Just Exts.LambdaCase+  TH.MultiWayIf                        -> Just Exts.MultiWayIf+  TH.BinaryLiterals                    -> Just Exts.BinaryLiterals+  TH.NegativeLiterals                  -> Nothing+  TH.DuplicateRecordFields             -> Nothing+  TH.OverloadedLabels                  -> Just Exts.OverloadedLabels+  TH.EmptyCase                         -> Just Exts.EmptyCase+  TH.PatternSynonyms                   -> Just Exts.PatternSynonyms+  TH.PartialTypeSignatures             -> Just Exts.PartialTypeSignatures+  TH.NamedWildCards                    -> Just Exts.NamedWildCards+  TH.StaticPointers                    -> Nothing+  TH.TypeApplications                  -> Just Exts.TypeApplications+  TH.Strict                            -> Just Exts.Strict+  TH.StrictData                        -> Just Exts.StrictData+#if !MIN_VERSION_template_haskell(2,18,0)+  TH.MonadFailDesugaring               -> Nothing+#endif++-- 2.13.0 ----------------------------------------+#if MIN_VERSION_template_haskell(2,13,0)+  TH.HexFloatLiterals                  -> Nothing+  TH.EmptyDataDeriving                 -> Nothing+#endif++-- 2.14.0 ----------------------------------------+#if MIN_VERSION_template_haskell(2,14,0)++  TH.DerivingVia                       ->+#if MIN_VERSION_haskell_src_exts(1,21,0)+    Just Exts.DerivingVia+#else+    Nothing+#endif++  TH.QuantifiedConstraints             ->+#if MIN_VERSION_haskell_src_exts(1,22,0)+    Just Exts.QuantifiedConstraints+#else+    Nothing+#endif++  TH.BlockArguments                    ->+#if MIN_VERSION_haskell_src_exts(1,23,0)+    Just Exts.BlockArguments+#else+    Nothing+#endif++  TH.NumericUnderscores                -> Nothing+  TH.StarIsType                        -> Nothing+#endif++-- 2.16.0 ----------------------------------------+#if MIN_VERSION_template_haskell(2,16,0)+  TH.UnliftedNewtypes                  -> Nothing+  TH.ImportQualifiedPost               -> Nothing+  TH.CUSKs                             -> Nothing+  TH.StandaloneKindSignatures          -> Nothing+#endif+++  -- NB: when adding a case here, you may also need to update `toExtension`++-----------------------------------------------------------------------------
src/Language/Haskell/Meta/Syntax/Translate.hs view
@@ -810,5 +810,3 @@  instance ToDecs a => ToDecs [a] where   toDecs a = concatMap toDecs a-------------------------------------------------------------------------------