Package Release Info

ghc-th-abstraction-0.6.0.0-bp160.1.11

Update Info: Base Release
Available in Package Hub : 16.0

platforms

AArch64
ppc64le
s390x
x86-64

subpackages

ghc-th-abstraction
ghc-th-abstraction-devel
ghc-th-abstraction-doc
ghc-th-abstraction-prof

Change Logs

* Sun Mar 17 2024 Peter Simons <psimons@suse.com>
- Update th-abstraction to version 0.6.0.0 revision 2.
  Upstream has revised the Cabal build instructions on Hackage.
* Sat Sep 30 2023 Peter Simons <psimons@suse.com>
- Update th-abstraction to version 0.6.0.0 revision 1.
  [#]# 0.6.0.0 -- 2023.07.31
  * Support building with `template-haskell-2.21.0.0` (GHC 9.8).
  * Adapt to `TyVarBndr`s for type-level declarations changing their type from
    `TyVarBndr ()` to `TyVarBndr BndrVis` in `template-haskell`:
  * `Language.Haskell.TH.Datatype.TyVarBndr` now backports `type BndrVis = ()`,
    as well as `BndrReq` and `BndrInvis` pattern synonyms. These make it
    possible to write code involving `BndrVis` that is somewhat backwards
    compatible (but do see the caveats in the Haddocks for `BndrInvis`).
  * `Language.Haskell.TH.Datatype.TyVarBndr` also backports the following
    definitions:
  * The `type TyVarBndrVis = TyVarBndr BndrVis` type synonym.
  * The `DefaultBndrFlag` class, which can be used to write code that is
    polymorphic over `TyVarBndr` flags while still allowing the code to return
    a reasonable default value for the flag.
  * The `bndrReq` and `bndrInvis` definitions, which behave identically to
    `BndrReq` and `BndrInvis`.
  * `Language.Haskell.TH.Datatype.TyVarBndr` now defines the following utility
    functions, which are not present in `template-haskell`:
  * `plainTVReq`, `plainTVInvis`, `kindedTVReq`, and `kindedTVInvis`
    functions, which construct `PlainTV`s and `KindedTV`s with particular
    `BndrVis` flags.
  * An `elimTVFlag`, which behaves like `elimTV`, but where the continuation
    arguments also take a `flag` argument. (Note that the type of this
    function is slightly different on old versions of `template-haskell`.
    See the Haddocks for more.)
  * A `tvFlag` function, which extracts the `flag` from a `TyVarBndr`. (Note
    that the type of this function is slightly different on old versions of
    `template-haskell`. See the Haddocks for more.)
  * The types of the `dataDCompat` and `newtypeDCompat` functions have had
    their `[TyVarBndrUnit]` arguments changed to `[TyVarBndrVis]`, matching
    similar changes to `DataD` and `NewtypeD` in `template-haskell`.
    Because `BndrVis` is a synonym for `()` on pre-9.8 versions of GHC, this
    change is unlikely to break any existing code, provided that you build it
    with GHC 9.6 or earlier. If you build with GHC 9.8 or later, on the other
    hand, it is likely that you will need to update your existing code. Here are
    some possible ways that your code might fail to compile with GHC 9.8, along
    with some migration strategies:
  * Your code passes a `TyVarBndrUnit` in a place where a `TyVarBndrVis` is now
    expected in GHC 9.8, such as in the arguments to `dataDCompat`:
    ```hs
    import "template-haskell" Language.Haskell.TH
    import "th-abstraction"   Language.Haskell.TH.Datatype (dataDCompat)
    dec :: DecQ
    dec = dataDCompat (pure []) d [PlainTV a ()] [] []
    where
    d = mkName "d"
    a = mkName "a"
    ```
    With GHC 9.8, this will fail to compile with:
    ```
    error: [GHC-83865]
    • Couldn't match expected type ‘BndrVis’ with actual type ‘()’
    • In the second argument of ‘PlainTV’, namely ‘()’
    In the expression: PlainTV a ()
    In the third argument of ‘dataDCompat’, namely ‘[PlainTV a ()]’
    |
    | dec = dataDCompat (pure []) d [PlainTV a ()] [] []
    |                                          ^^
    ```
    Some possible ways to migrate this code include:
  * Use the `bndrReq` function or `BndrReq` pattern synonym in place of `()`,
    making sure to import them from `Language.Haskell.TH.Datatype.TyVarBndr`:
    ```hs
    ...
    import "th-abstraction" Language.Haskell.TH.Datatype.TyVarBndr
    dec :: DecQ
    dec = dataDCompat (pure []) d [PlainTV a bndrReq] [] []
  - - Or, alternatively:
    {-
    dec = dataDCompat (pure []) d [PlainTV a BndrReq] [] []
  - }
    where
    ...
    ```
  * Use the `plainTV` function from `Language.Haskell.TH.Datatype.TyVarBndr`,
    which is now sufficiently polymorphic to work as both a `TyVarBndrUnit`
    and a `TyVarBndrVis`:
    ```hs
    ...
    import Language.Haskell.TH.Datatype.TyVarBndr
    dec :: DecQ
    dec = dataDCompat (pure []) d [plainTV a] [] []
    where
    ...
    ```
  * You may have to replace some uses of `TyVarBndrUnit` with `TyVarBndrVis`
    in your code. For instance, this will no longer typecheck in GHC 9.8 for
    similar reasons to the previous example:
    ```hs
    import "template-haskell" Language.Haskell.TH
    import "th-abstraction"   Language.Haskell.TH.Datatype (dataDCompat)
    dec :: DecQ
    dec = dataDCompat (pure []) d tvbs [] []
    where
    tvbs :: [TyVarBndrUnit]
    tvbs = [plainTV a]
    d = mkName "d"
    a = mkName "a"
    ```
    Here is a version that will typecheck with GHC 9.8 and earlier:
    ```hs
    ...
    import "th-abstraction" Language.Haskell.TH.Datatype.TyVarBndr
    dec :: DecQ
    dec = dataDCompat (pure []) d tvbs [] []
    where
    tvbs :: [TyVarBndrVis]
    tvbs = [plainTV a]
    ...
    ```
  * In some cases, the `TyVarBndrUnit`s might come from another place in the
    code, e.g.,
    ```hs
    import "template-haskell" Language.Haskell.TH
    import "th-abstraction"   Language.Haskell.TH.Datatype (dataDCompat)
    dec :: [TyVarBndrUnit] -> DecQ
    dec tvbs = dataDCompat (pure []) d tvbs [] []
    where
    d = mkName "d"
    ```
    If it is not straightforward to change `dec`'s type to accept
    `[TyVarBndrVis]` as an argument, another viable option is to use the
    `changeTVFlags` function:
    ```hs
    ...
    import "th-abstraction" Language.Haskell.TH.Datatype.TyVarBndr
    dec :: [TyVarBndrUnit] -> DecQ
    dec tvbs = dataDCompat (pure []) d tvbs' [] []
    where
    tvbs' :: [TyVarBndrVis]
    tvbs' = changeTVFlags bndrReq tvbs
    ...
    ```
    This guide, while not comprehensive, should cover most of the common cases one
    will encounter when migrating their `th-abstraction` code to support GHC 9.8.
* Tue Jun 27 2023 Peter Simons <psimons@suse.com>
- Update th-abstraction to version 0.5.0.0.
  [#]# 0.5.0.0 -- 2023.02.27
  * Support the `TypeData` language extension added in GHC 9.6. The
    `DatatypeVariant` data type now has a separate `TypeData` constructor to
    represent `type data` declarations.
  * Add a `Lift` instance for `th-abstraction`'s compatibility shim for
    `Specificity` when building with pre-9.0 versions of GHC.
* Thu Mar 30 2023 Peter Simons <psimons@suse.com>
- Updated spec file to conform with ghc-rpm-macros-2.5.2.
* Mon Feb 27 2023 Peter Simons <psimons@suse.com>
- Update th-abstraction to version 0.4.5.0 revision 1.
  Upstream has revised the Cabal build instructions on Hackage.
* Mon Sep 12 2022 Peter Simons <psimons@suse.com>
- Update th-abstraction to version 0.4.5.0.
  [#]# 0.4.5.0 -- 2022.09.12
  * Fix a bug in which data family declarations with interesting return kinds
    (e.g., `data family F :: Type -> Type`) would be reified incorrectly when
    using `reifyDatatype`.
* Sat Jul 23 2022 Peter Simons <psimons@suse.com>
- Update th-abstraction to version 0.4.4.0.
  [#]# 0.4.4.0 -- 2022.07.23
  * Support free variable substitution and infix resolution for
    `PromotedInfixT` and `PromotedUInfixT` on `template-haskell-2.19.0.0` or
    later.
Version: 0.5.0.0-150500.3.3.1
* Mon Feb 27 2023 psimons@suse.com
- Update th-abstraction to version 0.5.0.0.
  [#]# 0.5.0.0 -- 2023.02.27
  * Support the `TypeData` language extension added in GHC 9.6. The
    `DatatypeVariant` data type now has a separate `TypeData` constructor to
    represent `type data` declarations.
  * Add a `Lift` instance for `th-abstraction`'s compatibility shim for
    `Specificity` when building with pre-9.0 versions of GHC.
  [#]# 0.4.5.0 -- 2022.09.12
  * Fix a bug in which data family declarations with interesting return kinds
    (e.g., `data family F :: Type -> Type`) would be reified incorrectly when
    using `reifyDatatype`.
  [#]# 0.4.4.0 -- 2022.07.23
  * Support free variable substitution and infix resolution for
    `PromotedInfixT` and `PromotedUInfixT` on `template-haskell-2.19.0.0` or
    later.
* Thu Dec 17 2020 mimi.vx@gmail.com
- disable %{ix86} build
* Tue Aug 18 2020 psimons@suse.com
- Replace %setup -q with the more modern %autosetup macro.
* Tue Jun 16 2020 psimons@suse.com
- Re-generate file with latest version of spec-cleaner.
* Fri Nov 08 2019 psimons@suse.com
- Drop obsolete group attributes.
* Sat Oct 20 2018 psimons@suse.com
- Use https URL to refer to bugs.opensuse.org.
Version: 0.4.3.0-bp154.1.12
* Thu Sep 02 2021 psimons@suse.com
- Update th-abstraction to version 0.4.3.0.
  [#]# 0.4.3.0 -- 2021.08.30
  * Make `applySubstitution` avoid capturing type variable binders when
    substituting into `forall`s.
  * Fix a bug in which `resolveTypeSynonyms` would incorrectly expand type
    synonyms that are not applied to enough arguments.
  * Allow the test suite to build with GHC 9.2.
* Fri Apr 30 2021 psimons@suse.com
- Update th-abstraction to version 0.4.2.0 revision 1.
  Upstream has revised the Cabal build instructions on Hackage.
* Wed Dec 30 2020 psimons@suse.com
- Update th-abstraction to version 0.4.2.0.
  [#]# 0.4.2.0 -- 2020-12-30
  * Explicitly mark modules as Safe (or Trustworthy for GHC versions prior to 8.4).
* Thu Dec 17 2020 Ond?ej Súkup <mimi.vx@gmail.com>
- disable %{ix86} build
* Thu Dec 10 2020 psimons@suse.com
- Update th-abstraction to version 0.4.1.0.
  [#]# 0.4.1.0 -- 2020-12-09
  * Fix a bug in which `normalizeDec` would give incorrect kind annotations to
    type variables in quoted `Dec`s. `normalizeDec` now leaves the kinds of
    type variable binders alone.
* Wed Sep 30 2020 psimons@suse.com
- Update th-abstraction to version 0.4.0.0.
  [#]# 0.4.0.0 -- 2020-09-29
  * Adapt to the `TyVarBndr` data type gaining a new `flag` type parameter
    (in `template-haskell-2.17.0.0`) to represent its specificity:
  * Introduce a new `Language.Haskell.TH.Datatype.TyVarBndr` module that
    defines `TyVarBndr_`, a backwards-compatible type synonym for `TyVarBndr`,
    as well as backporting `TyVarBndrSpec`, `TyVarBndrUnit`, and `Specificity`.
    This module also defines other useful functions for constructing and
    manipulating `TyVarBndr`s.
  * The types in `Language.Haskell.TH.Datatype` now use `TyVarBndr_`,
    `TyVarBndrUnit`, and `TyVarBndrSpec` where appropriate. Technically, this
    is not a breaking change, since all three are simple type synonyms around
    `TyVarBndr`, but it is likely that you will need to update your
    `th-abstraction`-using code anyway if it involves a `TyVarBndr`-consuming
    function.
* Tue Aug 18 2020 Peter Simons <psimons@suse.com>
- Replace %setup -q with the more modern %autosetup macro.
* Tue Jun 16 2020 Peter Simons <psimons@suse.com>
- Re-generate file with latest version of spec-cleaner.
Version: 0.3.2.0-bp152.1.10
* Fri Feb 07 2020 psimons@suse.com
- Update th-abstraction to version 0.3.2.0.
  [#]# 0.3.2.0 -- 2020-02-06
  * Support substituting into and extracting free variables from `ForallVisT`s
    on `template-haskell-2.16.0.0` (GHC 8.10) or later.
  * Fix a bug in which `freeVariables` could report duplicate kind variables when
    they occur in the kinds of the type variable binders in a `ForallT`.
  * Fix a bug in which `resolveInfixT` would not resolve `UInfixT`s occurring in
    the kinds of type variable binders in a `ForallT`.
  * Fix a bug in which the `TypeSubstitution ConstructorInfo` instance would not
    detect free kind variables in the `constructorVars`.
* Fri Nov 08 2019 Peter Simons <psimons@suse.com>
- Drop obsolete group attributes.
* Tue Apr 30 2019 psimons@suse.com
- Update th-abstraction to version 0.3.1.0.
  [#]# 0.3.1.0 -- 2019-04-28
  * Fix a bug which would cause data family information to be reified incorrectly
    with GHC 8.8+ in some situations.
  [#]# 0.3.0.0 -- 2019-04-26
  * Breaking change: the `datatypeVars` field of `DatatypeInfo` is now of type
    `[TyVarBndr]` instead of `[Type]`, as it now refers to all of the bound type
    variables in the data type. The old `datatypeVars` field has been renamed to
    `datatypeInstTypes` to better reflect its purpose.
    In addition, the type of `normalizeCon` now has an additional `[TyVarBndr]`
    argument, since `DatatypeInfo` now requires it.
  * Support `template-haskell-2.15`.
  * Fix a bug in which `normalizeDec` would not detect existential type variables
    in a GADT constructor if they were implicitly quantified.
  * Fix a bug in which `normalizeDec` would report an incorrect number of
    `datatypeVars` for GADT declarations with explicit return kinds (such as
    `data Foo :: * -> * where`).
* Wed Feb 27 2019 psimons@suse.com
- Update th-abstraction to version 0.2.11.0.
  [#]# 0.2.11.0 -- 2019-02-26
  * Fix a bug in which `freeVariablesWellScoped` would sometimes not preserve
    the left-to-right ordering of `Name`s generated with `newName`.
Version: 0.2.3.0-bp150.2.4
* Fri Jun 30 2017 psimons@suse.com
- Update to version 0.2.3.0.
* Mon Jun 19 2017 psimons@suse.com
- Update to version 0.2.2.0.
Version: 0.2.10.0-bp151.1.13
* Fri Dec 21 2018 psimons@suse.com
- Update th-abstraction to version 0.2.10.0.
  [#]# 0.2.10.0 -- 2018-12-20
  * Optimization: `quantifyType` now collapses consecutive `forall`s. For
    instance, calling `quantifyType` on `forall b. a -> b -> T a` now produces
    `forall a b. a -> b -> T a` instead of `forall a. forall b. a -> b -> T a`.
  [#]# 0.2.9.0 -- 2018-12-20
  * Fix a bug in which `resolveTypeSynonyms` would not look into `ForallT`s,
    `SigT`s, `InfixT`s, or `ParensT`s.
  * Fix a bug in which `quantifyType` would not respect the dependency order of
    type variables (e.g., `Proxy (a :: k)` would have erroneously been quantified
    as `forall a k. Proxy (a :: k)`).
  * Fix a bug in which `asEqualPred` would return incorrect results with GHC 8.7.
  * Add a `freeVariablesWellScoped` function which computes the free variables of
    a list of types and sorts them according to dependency order.
  * Add a `resolveKindSynonyms` function which expands all type synonyms in a
    `Kind`. This is mostly useful for supporting old GHCs where `Type` and `Kind`
    were not the same.
* Sat Oct 20 2018 Peter Simons <psimons@suse.com>
- Use https URL to refer to bugs.opensuse.org.
* Wed Jul 18 2018 psimons@suse.com
- Cosmetic: replace tabs with blanks, strip trailing white space,
  and update copyright headers with spec-cleaner.
* Fri Jul 13 2018 psimons@suse.com
- Update th-abstraction to version 0.2.8.0.
  [#]# 0.2.8.0 -- 2018-06-29
  * GADT reification is now much more robust with respect to `PolyKinds`:
  * A bug in which universally quantified kind variables were mistakenly
    flagged as existential has been fixed.
  * A bug in which the kinds of existentially quantified type variables
    were not substituted properly has been fixed.
  * More kind equalities are detected than before. For example, in the
    following data type:
    ```haskell
    data T (a :: k) where
    MkT :: forall (a :: Bool). T a
    ```
    We now catch the `k ~ Bool` equality.
  * Tweak `resolveTypeSynonyms` so that failing to reify a type constructor
    name so longer results in an error. Among other benefits, this makes
    it possible to pass data types with GADT syntax to `normalizeDec`.
  [#]# 0.2.7.0 -- 2018-06-17
  * Fix bug in which data family instances with duplicate occurrences of type
    variables in the left-hand side would have redundant equality constraints
    in their contexts.
* Mon May 14 2018 psimons@suse.com
- Update th-abstraction to version 0.2.6.0 revision 1.
  * Fix bug in which `applySubstitution` and `freeVariables` would ignore
    type variables in the kinds of type variable binders.
  * Added `pragLineDCompat`, `newtypeDCompat` and `tySynInstDCompat`
  * Fix bug that caused GADT equality constraints to be incorrect in some cases.
  * Expose `Unpackedness` and `Strictness` (which were unexported by accident).
  * Add `resolvePredSynonyms`
  * Add `reifyConstructor`, which allows reification of `ConstructorInfo` from
    a constructor name, and `lookupByConstructorName`, which allows directly
    looking up a `ConstructorInfo` from a `DatatypeInfo` value for a given
    constructor `Name`.
  * Augment `reifyDatatype` to be able to look up `DatatypeInfo` from the `Name`
    of a record selector for one of its constructors. Also add `reifyRecord` for
    reification of of `ConstructorInfo` from a record name, and
    `lookupByRecordName`, which allows directly looking up a `ConstructorInfo`
    from a `DatatypeInfo` value for a given record `Name`.
  * Fix bug that caused `th-abstraction` to fail on GHC 7.0 and 7.2 when passing
    a vanilla constructor name to `reifyDatatype`
  * Make `normalizeDec` and `normalizeCon` more robust with respect to
    data family instances on GHC 7.6 and 7.8