packages feed

typecheck-plugin-nat-simple 0.1.0.8 → 0.1.0.9

raw patch · 2 files changed

+16/−4 lines, 2 files

Files

src/Plugin/TypeCheck/Nat/Simple/UnNomEq.hs view
@@ -1,17 +1,29 @@ {-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE ViewPatterns #-} {-# OPTIONS_GHC -Wall -fno-warn-tabs #-}  module Plugin.TypeCheck.Nat.Simple.UnNomEq (unNomEq) where  import GHC.Tc.Types.Constraint (Ct, ctEvidence, ctEvPred)-import GHC.Core.Type (Type)+-- import GHC.Core.Type (Type) import GHC.Core.Predicate(Pred(..), EqRel(..), classifyPredType) import GHC.Utils.Outputable (ppr, text, (<+>)) import Control.Monad.Try (Try, throw) import Data.Log (IsSDoc, fromSDoc) +import GHC.Core.TyCo.Rep (Type(..))+import GHC.Core.TyCon++import GHC.Types.Name+import GHC.Builtin.Types+ unNomEq :: (Monoid w, IsSDoc e) => Ct -> Try e w (Type, Type) unNomEq ct = case classifyPredType . ctEvPred $ ctEvidence ct of 	EqPred NomEq l r -> pure (l, r)+	IrredPred pt -> case pt of+		TyConApp (nameStableString . tyConName ->+				"$base$GHC.TypeError$Assert") [c, _e] ->+			pure (c, TyConApp promotedTrueDataCon [])+		_ -> throw . fromSDoc $ text "unNomEq: IrredPred" <+> ppr pt 	_ -> throw . fromSDoc 		$ text "unNomEq: no match to EqPred NomEq l r:" <+> ppr ct
typecheck-plugin-nat-simple.cabal view
@@ -1,13 +1,13 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.34.4.+-- This file has been generated from package.yaml by hpack version 0.35.1. -- -- see: https://github.com/sol/hpack ----- hash: c6e98b9ead49955ec8ae18665ed86d4db561b486b59685e673a22bdaac153161+-- hash: a386dfeb25b891bd8c55323858f99e1f63f665d6c90dfc86b8eb6b4f78053dd6  name:           typecheck-plugin-nat-simple-version:        0.1.0.8+version:        0.1.0.9 synopsis:       Simple type check plugin which calculate addition, subtraction and less-or-equal-than description:    Please see the README on GitHub at <https://github.com/YoshikuniJujo/typecheck-plugin-nat-simple#readme> category:       Compiler Plugin