packages feed

ghc-typelits-knownnat 0.8.1 → 0.8.2

raw patch · 4 files changed

+15/−14 lines, 4 filesdep ~ghc-typelits-natnormalisePVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: ghc-typelits-natnormalise

API changes (from Hackage documentation)

- GHC.TypeLits.KnownNat: instance (GHC.TypeNats.KnownNat a, GHC.TypeNats.KnownNat b, b Data.Type.Ord.<= a) => GHC.TypeLits.KnownNat.KnownNat2 "GHC.TypeNats.-" a b
+ GHC.TypeLits.KnownNat: instance (GHC.TypeNats.KnownNat a, GHC.TypeNats.KnownNat b, (b Data.Type.Ord.<= a) GHC.Types.~ (() :: Constraint)) => GHC.TypeLits.KnownNat.KnownNat2 "GHC.TypeNats.-" a b

Files

CHANGELOG.md view
@@ -1,5 +1,8 @@ # Changelog for the [`ghc-typelits-knownnat`](http://hackage.haskell.org/package/ghc-typelits-knownnat) package +## 0.8.2 *October 17th 2025*+* Fix -fdefer-type-errors regression+ ## 0.8.1 *October 10th 2025* * Fix [#53](https://github.com/clash-lang/ghc-typelits-knownnat/issues/53) The plugin sometimes doesn't look through type aliases * Fix [#13](https://github.com/clash-lang/ghc-typelits-knownnat/issues/13) Type equality constraints aren't used by solver
ghc-typelits-knownnat.cabal view
@@ -1,6 +1,6 @@ cabal-version:       3.0 name:                ghc-typelits-knownnat-version:             0.8.1+version:             0.8.2 synopsis:            Derive KnownNat constraints from other KnownNat constraints description:   A type checker plugin for GHC that can derive \"complex\" @KnownNat@@@ -90,7 +90,7 @@   build-depends:       base                      >= 4.9      && <5,                        ghc                       >= 8.0.1    && <9.17,                        ghc-tcplugin-api          >= 0.18.1.0 && <0.19,-                       ghc-typelits-natnormalise >= 0.8.0    && <0.9,+                       ghc-typelits-natnormalise >= 0.9.0    && <0.10,                        transformers              >= 0.5.2.0  && <0.7,                        template-haskell          >= 2.11.0.0 && <2.26   hs-source-dirs:      src@@ -143,7 +143,7 @@   Other-Modules:       TestFunctions   build-depends:       base                      >= 4.8   && <5,                        ghc-typelits-knownnat,-                       ghc-typelits-natnormalise >= 0.8.0 && <0.9,+                       ghc-typelits-natnormalise >= 0.8.0 && <0.10,                        tasty                     >= 0.10,                        tasty-hunit               >= 0.9,                        tasty-quickcheck          >= 0.8,
src/GHC/TypeLits/KnownNat.hs view
@@ -134,6 +134,10 @@   ( If ) import GHC.Exts   ( Proxy# )+#if __GLASGOW_HASKELL__ >= 904+import GHC.Exts+  ( Constraint )+#endif import GHC.TypeLits   ( Symbol ) import GHC.TypeNats@@ -206,7 +210,11 @@   {-# NOINLINE natSing2 #-}  -- | 'KnownNat2' instance for "GHC.TypeLits"' 'GHC.TypeLits.-'+#if __GLASGOW_HASKELL__ >= 904+instance (KnownNat a, KnownNat b, (b <= a) ~ (() :: Constraint)) => KnownNat2 $(nameToSymbol ''(-)) a b where+#else instance (KnownNat a, KnownNat b, b <= a) => KnownNat2 $(nameToSymbol ''(-)) a b where+#endif   natSing2 = SNatKn (natVal (Proxy @a) - natVal (Proxy @b))   {-# NOINLINE natSing2 #-} 
src/GHC/TypeLits/KnownNat/Solver.hs view
@@ -296,10 +296,6 @@               -> TcPluginM Solve TcPluginSolveResult solveKnownNat _defs _givens []      = return (TcPluginOk [] []) solveKnownNat defs  givens  wanteds = do-  tcPluginTrace "solveKnownNat Wanteds {" $-       vcat [ text "givens:" <+> ppr givens-            , text "wanteds:" <+> ppr wanteds-            ]   let givensTyConSubst = mkTyConSubst givens       kn_wanteds = map (\(x,y,z,orig) -> (x,y,z,orig))                  $ mapMaybe (toKnConstraint defs) wanteds@@ -312,12 +308,6 @@       -- Try to solve the wanted KnownNat constraints given the [G]iven       -- KnownNat constraints       (solved,new) <- (unzip . catMaybes) <$> (mapM (constraintToEvTerm defs givensTyConSubst given_map) kn_wanteds)-      tcPluginTrace "solveKnownNat Wanteds }" $-       vcat [ text "givens:" <+> ppr givens-            , text "wanteds:" <+> ppr wanteds-            , text "solved:" <+> ppr solved-            , text "newWanteds:" <+> ppr (concat new)-            ]       return (TcPluginOk solved (concat new))  -- | Get the KnownNat constraints@@ -534,7 +524,7 @@           -- with the original Nat operation           subWant  = mkTyConApp typeNatSubTyCon . (:[want])           -- exploded :: [()]-          exploded = map (fst . runWriter . normaliseNat givensTyConSubst . subWant . fst &&& id)+          exploded = map (fst . runWriter . normaliseNat . subWant . fst &&& id)                          knownsX           -- interesting cases for us are those where           -- wanted and given only differ by a constant