ghc-typelits-presburger 0.7.4.1 → 0.7.4.2
raw patch · 5 files changed
+126/−108 lines, 5 filesdep ~ghc-tcplugins-extraPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: ghc-tcplugins-extra
API changes (from Hackage documentation)
- GHC.TypeLits.Presburger.Compat: AbstractClosedSynFamilyTyCon :: FamTyConFlav
- GHC.TypeLits.Presburger.Compat: AbstractTyCon :: AlgTyConRhs
- GHC.TypeLits.Presburger.Compat: AbstractTypeFlavour :: TyConFlavour
- GHC.TypeLits.Presburger.Compat: AddrRep :: PrimRep
- GHC.TypeLits.Presburger.Compat: AnonTCB :: FunTyFlag -> TyConBndrVis
- GHC.TypeLits.Presburger.Compat: BuiltInSynFamTyCon :: BuiltInSynFamily -> FamTyConFlav
- GHC.TypeLits.Presburger.Compat: BuiltInSynFamily :: ([Type] -> Maybe (CoAxiomRule, [Type], Type)) -> ([Type] -> Type -> [TypeEqn]) -> ([Type] -> Type -> [Type] -> Type -> [TypeEqn]) -> BuiltInSynFamily
- GHC.TypeLits.Presburger.Compat: BuiltInTypeFlavour :: TyConFlavour
- GHC.TypeLits.Presburger.Compat: ClassFlavour :: TyConFlavour
- GHC.TypeLits.Presburger.Compat: ClassTyCon :: Class -> TyConRepName -> AlgTyConFlav
- GHC.TypeLits.Presburger.Compat: ClosedSynFamilyTyCon :: Maybe (CoAxiom Branched) -> FamTyConFlav
- GHC.TypeLits.Presburger.Compat: ClosedTypeFamilyFlavour :: TyConFlavour
- GHC.TypeLits.Presburger.Compat: CtLoc :: CtOrigin -> TcLclEnv -> Maybe TypeOrKind -> !SubGoalDepth -> CtLoc
- GHC.TypeLits.Presburger.Compat: DataFamInstTyCon :: CoAxiom Unbranched -> TyCon -> [Type] -> AlgTyConFlav
- GHC.TypeLits.Presburger.Compat: DataFamilyFlavour :: Maybe TyCon -> TyConFlavour
- GHC.TypeLits.Presburger.Compat: DataFamilyInst :: TyCon -> FamFlavor
- GHC.TypeLits.Presburger.Compat: DataFamilyTyCon :: TyConRepName -> FamTyConFlav
- GHC.TypeLits.Presburger.Compat: DataTyCon :: [DataCon] -> Int -> Bool -> Bool -> Bool -> AlgTyConRhs
- GHC.TypeLits.Presburger.Compat: DataTypeFlavour :: TyConFlavour
- GHC.TypeLits.Presburger.Compat: DoubleElemRep :: PrimElemRep
- GHC.TypeLits.Presburger.Compat: DoubleRep :: PrimRep
- GHC.TypeLits.Presburger.Compat: ExpandsSyn :: [(TyVar, tyco)] -> Type -> [tyco] -> ExpandSynResult tyco
- GHC.TypeLits.Presburger.Compat: FamInst :: CoAxiom Unbranched -> FamFlavor -> Name -> [RoughMatchTc] -> [TyVar] -> [CoVar] -> [Type] -> Type -> FamInst
- GHC.TypeLits.Presburger.Compat: FamInstMatch :: FamInst -> [Type] -> [Coercion] -> FamInstMatch
- GHC.TypeLits.Presburger.Compat: FloatElemRep :: PrimElemRep
- GHC.TypeLits.Presburger.Compat: FloatRep :: PrimRep
- GHC.TypeLits.Presburger.Compat: GhcBug20076 :: CtOrigin
- GHC.TypeLits.Presburger.Compat: Injective :: [Bool] -> Injectivity
- GHC.TypeLits.Presburger.Compat: InjectivityAccepted :: InjectivityCheckResult
- GHC.TypeLits.Presburger.Compat: InjectivityUnified :: CoAxBranch -> CoAxBranch -> InjectivityCheckResult
- GHC.TypeLits.Presburger.Compat: Int16ElemRep :: PrimElemRep
- GHC.TypeLits.Presburger.Compat: Int16Rep :: PrimRep
- GHC.TypeLits.Presburger.Compat: Int32ElemRep :: PrimElemRep
- GHC.TypeLits.Presburger.Compat: Int32Rep :: PrimRep
- GHC.TypeLits.Presburger.Compat: Int64ElemRep :: PrimElemRep
- GHC.TypeLits.Presburger.Compat: Int64Rep :: PrimRep
- GHC.TypeLits.Presburger.Compat: Int8ElemRep :: PrimElemRep
- GHC.TypeLits.Presburger.Compat: Int8Rep :: PrimRep
- GHC.TypeLits.Presburger.Compat: IntRep :: PrimRep
- GHC.TypeLits.Presburger.Compat: Levity :: Levity -> PromDataConInfo
- GHC.TypeLits.Presburger.Compat: LiftedRep :: PrimRep
- GHC.TypeLits.Presburger.Compat: NamedTCB :: ForAllTyFlag -> TyConBndrVis
- GHC.TypeLits.Presburger.Compat: NewTyCon :: DataCon -> Type -> ([TyVar], Type) -> CoAxiom Unbranched -> Bool -> AlgTyConRhs
- GHC.TypeLits.Presburger.Compat: NewtypeFlavour :: TyConFlavour
- GHC.TypeLits.Presburger.Compat: NoExpansion :: ExpandSynResult tyco
- GHC.TypeLits.Presburger.Compat: NoPromInfo :: PromDataConInfo
- GHC.TypeLits.Presburger.Compat: Nominal :: Role
- GHC.TypeLits.Presburger.Compat: NotInjective :: Injectivity
- GHC.TypeLits.Presburger.Compat: OpenSynFamilyTyCon :: FamTyConFlav
- GHC.TypeLits.Presburger.Compat: OpenTypeFamilyFlavour :: Maybe TyCon -> TyConFlavour
- GHC.TypeLits.Presburger.Compat: Phantom :: Role
- GHC.TypeLits.Presburger.Compat: PromotedDataConFlavour :: TyConFlavour
- GHC.TypeLits.Presburger.Compat: Representational :: Role
- GHC.TypeLits.Presburger.Compat: RuntimeRep :: ([Type] -> [PrimRep]) -> PromDataConInfo
- GHC.TypeLits.Presburger.Compat: SumFlavour :: TyConFlavour
- GHC.TypeLits.Presburger.Compat: SumTyCon :: [DataCon] -> Int -> AlgTyConRhs
- GHC.TypeLits.Presburger.Compat: SynFamilyInst :: FamFlavor
- GHC.TypeLits.Presburger.Compat: TupleFlavour :: Boxity -> TyConFlavour
- GHC.TypeLits.Presburger.Compat: TupleTyCon :: DataCon -> TupleSort -> AlgTyConRhs
- GHC.TypeLits.Presburger.Compat: TypeSynonymFlavour :: TyConFlavour
- GHC.TypeLits.Presburger.Compat: UnboxedSumTyCon :: AlgTyConFlav
- GHC.TypeLits.Presburger.Compat: UnliftedRep :: PrimRep
- GHC.TypeLits.Presburger.Compat: VanillaAlgTyCon :: TyConRepName -> AlgTyConFlav
- GHC.TypeLits.Presburger.Compat: VecCount :: Int -> PromDataConInfo
- GHC.TypeLits.Presburger.Compat: VecElem :: PrimElemRep -> PromDataConInfo
- GHC.TypeLits.Presburger.Compat: VecRep :: Int -> PrimElemRep -> PrimRep
- GHC.TypeLits.Presburger.Compat: VoidRep :: PrimRep
- GHC.TypeLits.Presburger.Compat: Word16ElemRep :: PrimElemRep
- GHC.TypeLits.Presburger.Compat: Word16Rep :: PrimRep
- GHC.TypeLits.Presburger.Compat: Word32ElemRep :: PrimElemRep
- GHC.TypeLits.Presburger.Compat: Word32Rep :: PrimRep
- GHC.TypeLits.Presburger.Compat: Word64ElemRep :: PrimElemRep
- GHC.TypeLits.Presburger.Compat: Word64Rep :: PrimRep
- GHC.TypeLits.Presburger.Compat: Word8ElemRep :: PrimElemRep
- GHC.TypeLits.Presburger.Compat: Word8Rep :: PrimRep
- GHC.TypeLits.Presburger.Compat: WordRep :: PrimRep
- GHC.TypeLits.Presburger.Compat: [ctl_depth] :: CtLoc -> !SubGoalDepth
- GHC.TypeLits.Presburger.Compat: [ctl_env] :: CtLoc -> TcLclEnv
- GHC.TypeLits.Presburger.Compat: [ctl_origin] :: CtLoc -> CtOrigin
- GHC.TypeLits.Presburger.Compat: [ctl_t_or_k] :: CtLoc -> Maybe TypeOrKind
- GHC.TypeLits.Presburger.Compat: [data_con] :: AlgTyConRhs -> DataCon
- GHC.TypeLits.Presburger.Compat: [data_cons] :: AlgTyConRhs -> [DataCon]
- GHC.TypeLits.Presburger.Compat: [data_cons_size] :: AlgTyConRhs -> Int
- GHC.TypeLits.Presburger.Compat: [data_fixed_lev] :: AlgTyConRhs -> Bool
- GHC.TypeLits.Presburger.Compat: [fi_axiom] :: FamInst -> CoAxiom Unbranched
- GHC.TypeLits.Presburger.Compat: [fi_cvs] :: FamInst -> [CoVar]
- GHC.TypeLits.Presburger.Compat: [fi_fam] :: FamInst -> Name
- GHC.TypeLits.Presburger.Compat: [fi_flavor] :: FamInst -> FamFlavor
- GHC.TypeLits.Presburger.Compat: [fi_rhs] :: FamInst -> Type
- GHC.TypeLits.Presburger.Compat: [fi_tcs] :: FamInst -> [RoughMatchTc]
- GHC.TypeLits.Presburger.Compat: [fi_tvs] :: FamInst -> [TyVar]
- GHC.TypeLits.Presburger.Compat: [fi_tys] :: FamInst -> [Type]
- GHC.TypeLits.Presburger.Compat: [fim_cos] :: FamInstMatch -> [Coercion]
- GHC.TypeLits.Presburger.Compat: [fim_instance] :: FamInstMatch -> FamInst
- GHC.TypeLits.Presburger.Compat: [fim_tys] :: FamInstMatch -> [Type]
- GHC.TypeLits.Presburger.Compat: [is_enum] :: AlgTyConRhs -> Bool
- GHC.TypeLits.Presburger.Compat: [is_type_data] :: AlgTyConRhs -> Bool
- GHC.TypeLits.Presburger.Compat: [nt_co] :: AlgTyConRhs -> CoAxiom Unbranched
- GHC.TypeLits.Presburger.Compat: [nt_etad_rhs] :: AlgTyConRhs -> ([TyVar], Type)
- GHC.TypeLits.Presburger.Compat: [nt_fixed_rep] :: AlgTyConRhs -> Bool
- GHC.TypeLits.Presburger.Compat: [nt_rhs] :: AlgTyConRhs -> Type
- GHC.TypeLits.Presburger.Compat: [sfInteractInert] :: BuiltInSynFamily -> [Type] -> Type -> [Type] -> Type -> [TypeEqn]
- GHC.TypeLits.Presburger.Compat: [sfInteractTop] :: BuiltInSynFamily -> [Type] -> Type -> [TypeEqn]
- GHC.TypeLits.Presburger.Compat: [sfMatchFam] :: BuiltInSynFamily -> [Type] -> Maybe (CoAxiomRule, [Type], Type)
- GHC.TypeLits.Presburger.Compat: [tup_sort] :: AlgTyConRhs -> TupleSort
- GHC.TypeLits.Presburger.Compat: algTcFields :: TyConDetails -> FieldLabelEnv
- GHC.TypeLits.Presburger.Compat: algTyConRhs :: TyCon -> AlgTyConRhs
- GHC.TypeLits.Presburger.Compat: apartnessCheck :: [Type] -> CoAxBranch -> Bool
- GHC.TypeLits.Presburger.Compat: compatibleBranches :: CoAxBranch -> CoAxBranch -> Bool
- GHC.TypeLits.Presburger.Compat: ctEvPred :: CtEvidence -> TcPredType
- GHC.TypeLits.Presburger.Compat: ctEvidence :: Ct -> CtEvidence
- GHC.TypeLits.Presburger.Compat: data () => AlgTyConFlav
- GHC.TypeLits.Presburger.Compat: data () => AlgTyConRhs
- GHC.TypeLits.Presburger.Compat: data () => BuiltInSynFamily
- GHC.TypeLits.Presburger.Compat: data () => Ct
- GHC.TypeLits.Presburger.Compat: data () => CtEvidence
- GHC.TypeLits.Presburger.Compat: data () => CtLoc
- GHC.TypeLits.Presburger.Compat: data () => ExpandSynResult tyco
- GHC.TypeLits.Presburger.Compat: data () => FamFlavor
- GHC.TypeLits.Presburger.Compat: data () => FamInst
- GHC.TypeLits.Presburger.Compat: data () => FamInstEnv
- GHC.TypeLits.Presburger.Compat: data () => FamInstMatch
- GHC.TypeLits.Presburger.Compat: data () => FamTyConFlav
- GHC.TypeLits.Presburger.Compat: data () => Injectivity
- GHC.TypeLits.Presburger.Compat: data () => InjectivityCheckResult
- GHC.TypeLits.Presburger.Compat: data () => PrimElemRep
- GHC.TypeLits.Presburger.Compat: data () => PrimRep
- GHC.TypeLits.Presburger.Compat: data () => PromDataConInfo
- GHC.TypeLits.Presburger.Compat: data () => Role
- GHC.TypeLits.Presburger.Compat: data () => TyCon
- GHC.TypeLits.Presburger.Compat: data () => TyConBndrVis
- GHC.TypeLits.Presburger.Compat: data () => TyConFlavour
- GHC.TypeLits.Presburger.Compat: dataFamInstRepTyCon :: FamInst -> TyCon
- GHC.TypeLits.Presburger.Compat: emptyFamInstEnv :: FamInstEnv
- GHC.TypeLits.Presburger.Compat: emptyFamInstEnvs :: (FamInstEnv, FamInstEnv)
- GHC.TypeLits.Presburger.Compat: expandSynTyCon_maybe :: TyCon -> [tyco] -> ExpandSynResult tyco
- GHC.TypeLits.Presburger.Compat: extendFamInstEnv :: FamInstEnv -> FamInst -> FamInstEnv
- GHC.TypeLits.Presburger.Compat: extendFamInstEnvList :: FamInstEnv -> [FamInst] -> FamInstEnv
- GHC.TypeLits.Presburger.Compat: famInstAxiom :: FamInst -> CoAxiom Unbranched
- GHC.TypeLits.Presburger.Compat: famInstEnvElts :: FamInstEnv -> [FamInst]
- GHC.TypeLits.Presburger.Compat: famInstEnvSize :: FamInstEnv -> Int
- GHC.TypeLits.Presburger.Compat: famInstRHS :: FamInst -> Type
- GHC.TypeLits.Presburger.Compat: famInstRepTyCon_maybe :: FamInst -> Maybe TyCon
- GHC.TypeLits.Presburger.Compat: famInstTyCon :: FamInst -> TyCon
- GHC.TypeLits.Presburger.Compat: famInstsRepTyCons :: [FamInst] -> [TyCon]
- GHC.TypeLits.Presburger.Compat: famTyConFlav_maybe :: TyCon -> Maybe FamTyConFlav
- GHC.TypeLits.Presburger.Compat: familyInstances :: (FamInstEnv, FamInstEnv) -> TyCon -> [FamInst]
- GHC.TypeLits.Presburger.Compat: familyNameInstances :: (FamInstEnv, FamInstEnv) -> Name -> [FamInst]
- GHC.TypeLits.Presburger.Compat: initialSubGoalDepth :: SubGoalDepth
- GHC.TypeLits.Presburger.Compat: injectiveBranches :: [Bool] -> CoAxBranch -> CoAxBranch -> InjectivityCheckResult
- GHC.TypeLits.Presburger.Compat: isAbstractTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isAlgTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isBoxedTupleTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isBuiltInSynFamTyCon_maybe :: TyCon -> Maybe BuiltInSynFamily
- GHC.TypeLits.Presburger.Compat: isClassTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isClosedSynFamilyTyConWithAxiom_maybe :: TyCon -> Maybe (CoAxiom Branched)
- GHC.TypeLits.Presburger.Compat: isConcreteTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isDataFamilyTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isDataKindsPromotedDataCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isDataTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isDominatedBy :: CoAxBranch -> [CoAxBranch] -> Bool
- GHC.TypeLits.Presburger.Compat: isEnumerationTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isFamFreeTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isFamInstTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isFamilyTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isForgetfulSynTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isGadtSyntaxTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isGcPtrRep :: PrimRep -> Bool
- GHC.TypeLits.Presburger.Compat: isGenInjAlgRhs :: AlgTyConRhs -> Bool
- GHC.TypeLits.Presburger.Compat: isGenerativeTyCon :: TyCon -> Role -> Bool
- GHC.TypeLits.Presburger.Compat: isImplicitTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isInjectiveTyCon :: TyCon -> Role -> Bool
- GHC.TypeLits.Presburger.Compat: isInvisibleTyConBinder :: VarBndr tv TyConBndrVis -> Bool
- GHC.TypeLits.Presburger.Compat: isKindTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isLiftedAlgTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isLiftedTypeKindTyConName :: Name -> Bool
- GHC.TypeLits.Presburger.Compat: isMonoTcTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isNamedTyConBinder :: TyConBinder -> Bool
- GHC.TypeLits.Presburger.Compat: isNewTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isNoParent :: AlgTyConFlav -> Bool
- GHC.TypeLits.Presburger.Compat: isOpenFamilyTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isOpenTypeFamilyTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isPrimTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isPromotedDataCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isPromotedDataCon_maybe :: TyCon -> Maybe DataCon
- GHC.TypeLits.Presburger.Compat: isPromotedTupleTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isTauTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isTcTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isTupleTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isTyConAssoc :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isTyConWithSrcDataCons :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isTypeDataTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isTypeFamilyTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isTypeSynonymTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isUnboxedSumTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isUnboxedTupleTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isVanillaAlgTyCon :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: isVisibleTcbVis :: TyConBndrVis -> Bool
- GHC.TypeLits.Presburger.Compat: isVisibleTyConBinder :: VarBndr tv TyConBndrVis -> Bool
- GHC.TypeLits.Presburger.Compat: isVoidRep :: PrimRep -> Bool
- GHC.TypeLits.Presburger.Compat: isWanted :: CtEvidence -> Bool
- GHC.TypeLits.Presburger.Compat: lookupFamInstEnv :: FamInstEnvs -> TyCon -> [Type] -> [FamInstMatch]
- GHC.TypeLits.Presburger.Compat: lookupFamInstEnvByTyCon :: FamInstEnvs -> TyCon -> [FamInst]
- GHC.TypeLits.Presburger.Compat: lookupFamInstEnvConflicts :: FamInstEnvs -> FamInst -> [FamInst]
- GHC.TypeLits.Presburger.Compat: lookupFamInstEnvInjectivityConflicts :: [Bool] -> FamInstEnvs -> FamInst -> [CoAxBranch]
- GHC.TypeLits.Presburger.Compat: lookupTyConFieldLabel :: FieldLabelString -> TyCon -> Maybe FieldLabel
- GHC.TypeLits.Presburger.Compat: mkAlgTyCon :: Name -> [TyConBinder] -> Kind -> [Role] -> Maybe CType -> [PredType] -> AlgTyConRhs -> AlgTyConFlav -> Bool -> TyCon
- GHC.TypeLits.Presburger.Compat: mkAnonTyConBinder :: TyVar -> TyConBinder
- GHC.TypeLits.Presburger.Compat: mkAnonTyConBinders :: [TyVar] -> [TyConBinder]
- GHC.TypeLits.Presburger.Compat: mkBranchedCoAxiom :: Name -> TyCon -> [CoAxBranch] -> CoAxiom Branched
- GHC.TypeLits.Presburger.Compat: mkClassTyCon :: Name -> [TyConBinder] -> [Role] -> AlgTyConRhs -> Class -> Name -> TyCon
- GHC.TypeLits.Presburger.Compat: mkCoAxBranch :: [TyVar] -> [TyVar] -> [CoVar] -> [Type] -> Type -> [Role] -> SrcSpan -> CoAxBranch
- GHC.TypeLits.Presburger.Compat: mkDataTyConRhs :: [DataCon] -> AlgTyConRhs
- GHC.TypeLits.Presburger.Compat: mkFamilyTyCon :: Name -> [TyConBinder] -> Kind -> Maybe Name -> FamTyConFlav -> Maybe Class -> Injectivity -> TyCon
- GHC.TypeLits.Presburger.Compat: mkImportedFamInst :: Name -> [RoughMatchTc] -> CoAxiom Unbranched -> FamInst
- GHC.TypeLits.Presburger.Compat: mkInvisAnonTyConBinder :: TyVar -> TyConBinder
- GHC.TypeLits.Presburger.Compat: mkLevPolyDataTyConRhs :: Bool -> Bool -> [DataCon] -> AlgTyConRhs
- GHC.TypeLits.Presburger.Compat: mkNamedTyConBinder :: ForAllTyFlag -> TyVar -> TyConBinder
- GHC.TypeLits.Presburger.Compat: mkNamedTyConBinders :: ForAllTyFlag -> [TyVar] -> [TyConBinder]
- GHC.TypeLits.Presburger.Compat: mkNewTypeCoAxiom :: Name -> TyCon -> [TyVar] -> [Role] -> Type -> CoAxiom Unbranched
- GHC.TypeLits.Presburger.Compat: mkPrelTyConRepName :: Name -> TyConRepName
- GHC.TypeLits.Presburger.Compat: mkPrimTyCon :: Name -> [TyConBinder] -> Kind -> [Role] -> TyCon
- GHC.TypeLits.Presburger.Compat: mkPromotedDataCon :: DataCon -> Name -> TyConRepName -> [TyConPiTyBinder] -> Kind -> [Role] -> PromDataConInfo -> TyCon
- GHC.TypeLits.Presburger.Compat: mkRequiredTyConBinder :: TyCoVarSet -> TyVar -> TyConBinder
- GHC.TypeLits.Presburger.Compat: mkSingleCoAxiom :: Role -> Name -> [TyVar] -> [TyVar] -> [CoVar] -> TyCon -> [Type] -> Type -> CoAxiom Unbranched
- GHC.TypeLits.Presburger.Compat: mkSumTyCon :: Name -> [TyConBinder] -> Kind -> [DataCon] -> AlgTyConFlav -> TyCon
- GHC.TypeLits.Presburger.Compat: mkSynonymTyCon :: Name -> [TyConBinder] -> Kind -> [Role] -> Type -> Bool -> Bool -> Bool -> TyCon
- GHC.TypeLits.Presburger.Compat: mkTcTyCon :: Name -> [TyConBinder] -> Kind -> [(Name, TcTyVar)] -> Bool -> TyConFlavour -> TyCon
- GHC.TypeLits.Presburger.Compat: mkTupleTyCon :: Name -> [TyConBinder] -> Kind -> DataCon -> TupleSort -> AlgTyConFlav -> TyCon
- GHC.TypeLits.Presburger.Compat: mkTyConKind :: [TyConBinder] -> Kind -> Kind
- GHC.TypeLits.Presburger.Compat: mkTyConTagMap :: TyCon -> NameEnv ConTag
- GHC.TypeLits.Presburger.Compat: mkTyConTy :: TyCon -> Type
- GHC.TypeLits.Presburger.Compat: mkUnbranchedCoAxiom :: Name -> TyCon -> CoAxBranch -> CoAxiom Unbranched
- GHC.TypeLits.Presburger.Compat: newTyConCo :: TyCon -> CoAxiom Unbranched
- GHC.TypeLits.Presburger.Compat: newTyConCo_maybe :: TyCon -> Maybe (CoAxiom Unbranched)
- GHC.TypeLits.Presburger.Compat: newTyConDataCon_maybe :: TyCon -> Maybe DataCon
- GHC.TypeLits.Presburger.Compat: newTyConEtadArity :: TyCon -> Int
- GHC.TypeLits.Presburger.Compat: newTyConEtadRhs :: TyCon -> ([TyVar], Type)
- GHC.TypeLits.Presburger.Compat: newTyConRhs :: TyCon -> ([TyVar], Type)
- GHC.TypeLits.Presburger.Compat: noTcTyConScopedTyVars :: [(Name, TcTyVar)]
- GHC.TypeLits.Presburger.Compat: normaliseTcApp :: FamInstEnvs -> Role -> TyCon -> [Type] -> Reduction
- GHC.TypeLits.Presburger.Compat: normaliseType :: FamInstEnvs -> Role -> Type -> Reduction
- GHC.TypeLits.Presburger.Compat: orphNamesOfFamInst :: FamInst -> NameSet
- GHC.TypeLits.Presburger.Compat: pprFamInst :: FamInst -> SDoc
- GHC.TypeLits.Presburger.Compat: pprFamInsts :: [FamInst] -> SDoc
- GHC.TypeLits.Presburger.Compat: pprPromotionQuote :: TyCon -> SDoc
- GHC.TypeLits.Presburger.Compat: primElemRepSizeB :: Platform -> PrimElemRep -> Int
- GHC.TypeLits.Presburger.Compat: primElemRepToPrimRep :: PrimElemRep -> PrimRep
- GHC.TypeLits.Presburger.Compat: primRepCompatible :: Platform -> PrimRep -> PrimRep -> Bool
- GHC.TypeLits.Presburger.Compat: primRepIsFloat :: PrimRep -> Maybe Bool
- GHC.TypeLits.Presburger.Compat: primRepIsInt :: PrimRep -> Bool
- GHC.TypeLits.Presburger.Compat: primRepIsWord :: PrimRep -> Bool
- GHC.TypeLits.Presburger.Compat: primRepSizeB :: Platform -> PrimRep -> Int
- GHC.TypeLits.Presburger.Compat: primRepsCompatible :: Platform -> [PrimRep] -> [PrimRep] -> Bool
- GHC.TypeLits.Presburger.Compat: reduceTyFamApp_maybe :: FamInstEnvs -> Role -> TyCon -> [Type] -> Maybe Reduction
- GHC.TypeLits.Presburger.Compat: setTcTyConKind :: TyCon -> Kind -> TyCon
- GHC.TypeLits.Presburger.Compat: synTyConDefn_maybe :: TyCon -> Maybe ([TyVar], Type)
- GHC.TypeLits.Presburger.Compat: synTyConRhs_maybe :: TyCon -> Maybe Type
- GHC.TypeLits.Presburger.Compat: tcFlavourIsOpen :: TyConFlavour -> Bool
- GHC.TypeLits.Presburger.Compat: tcHasFixedRuntimeRep :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: tcTyConScopedTyVars :: TyCon -> [(Name, TcTyVar)]
- GHC.TypeLits.Presburger.Compat: topNormaliseType :: FamInstEnvs -> Type -> Type
- GHC.TypeLits.Presburger.Compat: topNormaliseType_maybe :: FamInstEnvs -> Type -> Maybe Reduction
- GHC.TypeLits.Presburger.Compat: topReduceTyFamApp_maybe :: FamInstEnvs -> TyCon -> [Type] -> Maybe HetReduction
- GHC.TypeLits.Presburger.Compat: tyConATs :: TyCon -> [TyCon]
- GHC.TypeLits.Presburger.Compat: tyConAlgDataCons_maybe :: TyCon -> Maybe [DataCon]
- GHC.TypeLits.Presburger.Compat: tyConAssoc_maybe :: TyCon -> Maybe TyCon
- GHC.TypeLits.Presburger.Compat: tyConBinderForAllTyFlag :: TyConBinder -> ForAllTyFlag
- GHC.TypeLits.Presburger.Compat: tyConBndrVisForAllTyFlag :: TyConBndrVis -> ForAllTyFlag
- GHC.TypeLits.Presburger.Compat: tyConCType_maybe :: TyCon -> Maybe CType
- GHC.TypeLits.Presburger.Compat: tyConClass_maybe :: TyCon -> Maybe Class
- GHC.TypeLits.Presburger.Compat: tyConDataCons :: TyCon -> [DataCon]
- GHC.TypeLits.Presburger.Compat: tyConDataCons_maybe :: TyCon -> Maybe [DataCon]
- GHC.TypeLits.Presburger.Compat: tyConFamInstSig_maybe :: TyCon -> Maybe (TyCon, [Type], CoAxiom Unbranched)
- GHC.TypeLits.Presburger.Compat: tyConFamInst_maybe :: TyCon -> Maybe (TyCon, [Type])
- GHC.TypeLits.Presburger.Compat: tyConFamilyCoercion_maybe :: TyCon -> Maybe (CoAxiom Unbranched)
- GHC.TypeLits.Presburger.Compat: tyConFamilyResVar_maybe :: TyCon -> Maybe Name
- GHC.TypeLits.Presburger.Compat: tyConFamilySize :: TyCon -> Int
- GHC.TypeLits.Presburger.Compat: tyConFieldLabels :: TyCon -> [FieldLabel]
- GHC.TypeLits.Presburger.Compat: tyConFlavour :: TyCon -> TyConFlavour
- GHC.TypeLits.Presburger.Compat: tyConFlavourAssoc_maybe :: TyConFlavour -> Maybe TyCon
- GHC.TypeLits.Presburger.Compat: tyConInjectivityInfo :: TyCon -> Injectivity
- GHC.TypeLits.Presburger.Compat: tyConInvisTVBinders :: [TyConBinder] -> [InvisTVBinder]
- GHC.TypeLits.Presburger.Compat: tyConMustBeSaturated :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: tyConPromDataConInfo :: TyCon -> PromDataConInfo
- GHC.TypeLits.Presburger.Compat: tyConRepModOcc :: Module -> OccName -> (Module, OccName)
- GHC.TypeLits.Presburger.Compat: tyConRepName_maybe :: TyCon -> Maybe TyConRepName
- GHC.TypeLits.Presburger.Compat: tyConSingleAlgDataCon_maybe :: TyCon -> Maybe DataCon
- GHC.TypeLits.Presburger.Compat: tyConSingleDataCon :: TyCon -> DataCon
- GHC.TypeLits.Presburger.Compat: tyConSingleDataCon_maybe :: TyCon -> Maybe DataCon
- GHC.TypeLits.Presburger.Compat: tyConSkolem :: TyCon -> Bool
- GHC.TypeLits.Presburger.Compat: tyConStupidTheta :: TyCon -> [PredType]
- GHC.TypeLits.Presburger.Compat: tyConTuple_maybe :: TyCon -> Maybe TupleSort
- GHC.TypeLits.Presburger.Compat: tyConVisibleTyVars :: TyCon -> [TyVar]
- GHC.TypeLits.Presburger.Compat: type FamInstEnvs = (FamInstEnv, FamInstEnv)
- GHC.TypeLits.Presburger.Compat: type TyConBinder = VarBndr TyVar TyConBndrVis
- GHC.TypeLits.Presburger.Compat: type TyConPiTyBinder = VarBndr TyCoVar TyConBndrVis
- GHC.TypeLits.Presburger.Compat: type TyConRepName = Name
- GHC.TypeLits.Presburger.Compat: typeCharCmpTyCon :: TyCon
- GHC.TypeLits.Presburger.Compat: typeCharToNatTyCon :: TyCon
- GHC.TypeLits.Presburger.Compat: typeConsSymbolTyCon :: TyCon
- GHC.TypeLits.Presburger.Compat: typeNatAddTyCon :: TyCon
- GHC.TypeLits.Presburger.Compat: typeNatCmpTyCon :: TyCon
- GHC.TypeLits.Presburger.Compat: typeNatCoAxiomRules :: UniqFM FastString CoAxiomRule
- GHC.TypeLits.Presburger.Compat: typeNatDivTyCon :: TyCon
- GHC.TypeLits.Presburger.Compat: typeNatExpTyCon :: TyCon
- GHC.TypeLits.Presburger.Compat: typeNatLogTyCon :: TyCon
- GHC.TypeLits.Presburger.Compat: typeNatModTyCon :: TyCon
- GHC.TypeLits.Presburger.Compat: typeNatMulTyCon :: TyCon
- GHC.TypeLits.Presburger.Compat: typeNatSubTyCon :: TyCon
- GHC.TypeLits.Presburger.Compat: typeNatToCharTyCon :: TyCon
- GHC.TypeLits.Presburger.Compat: typeNatTyCons :: [TyCon]
- GHC.TypeLits.Presburger.Compat: typeSymbolAppendTyCon :: TyCon
- GHC.TypeLits.Presburger.Compat: typeSymbolCmpTyCon :: TyCon
- GHC.TypeLits.Presburger.Compat: typeUnconsSymbolTyCon :: TyCon
- GHC.TypeLits.Presburger.Compat: unionFamInstEnv :: FamInstEnv -> FamInstEnv -> FamInstEnv
- GHC.TypeLits.Presburger.Compat: unwrapNewTyConEtad_maybe :: TyCon -> Maybe ([TyVar], Type, CoAxiom Unbranched)
- GHC.TypeLits.Presburger.Compat: unwrapNewTyCon_maybe :: TyCon -> Maybe ([TyVar], Type, CoAxiom Unbranched)
- GHC.TypeLits.Presburger.Compat: visibleDataCons :: AlgTyConRhs -> [DataCon]
+ GHC.TypeLits.Presburger.Compat: ImpedanceMatching :: Id -> CtOrigin
+ GHC.TypeLits.Presburger.Compat: data Coercion
+ GHC.TypeLits.Presburger.Compat: mkUnivCo' :: UnivCoProvenance -> Role -> Type -> Type -> Coercion
- GHC.TypeLits.Presburger.Compat: data () => CtOrigin
+ GHC.TypeLits.Presburger.Compat: data CtOrigin
- GHC.TypeLits.Presburger.Compat: data () => EqRel
+ GHC.TypeLits.Presburger.Compat: data EqRel
- GHC.TypeLits.Presburger.Compat: data () => EvTerm
+ GHC.TypeLits.Presburger.Compat: data EvTerm
- GHC.TypeLits.Presburger.Compat: data () => FastString
+ GHC.TypeLits.Presburger.Compat: data FastString
- GHC.TypeLits.Presburger.Compat: data () => GenericUnitInfo srcpkgid srcpkgname uid modulename mod
+ GHC.TypeLits.Presburger.Compat: data GenericUnitInfo srcpkgid srcpkgname uid modulename mod
- GHC.TypeLits.Presburger.Compat: data () => HsModule p
+ GHC.TypeLits.Presburger.Compat: data HsModule p
- GHC.TypeLits.Presburger.Compat: data () => HsParsedModule
+ GHC.TypeLits.Presburger.Compat: data HsParsedModule
- GHC.TypeLits.Presburger.Compat: data () => Hsc a
+ GHC.TypeLits.Presburger.Compat: data Hsc a
- GHC.TypeLits.Presburger.Compat: data () => HscEnv
+ GHC.TypeLits.Presburger.Compat: data HscEnv
- GHC.TypeLits.Presburger.Compat: data () => ImportDecl pass
+ GHC.TypeLits.Presburger.Compat: data ImportDecl pass
- GHC.TypeLits.Presburger.Compat: data () => ImportDeclQualifiedStyle
+ GHC.TypeLits.Presburger.Compat: data ImportDeclQualifiedStyle
- GHC.TypeLits.Presburger.Compat: data () => IsBootInterface
+ GHC.TypeLits.Presburger.Compat: data IsBootInterface
- GHC.TypeLits.Presburger.Compat: data () => ModuleName
+ GHC.TypeLits.Presburger.Compat: data ModuleName
- GHC.TypeLits.Presburger.Compat: data () => NoExtField
+ GHC.TypeLits.Presburger.Compat: data NoExtField
- GHC.TypeLits.Presburger.Compat: data () => Plugin
+ GHC.TypeLits.Presburger.Compat: data Plugin
- GHC.TypeLits.Presburger.Compat: data () => Pred
+ GHC.TypeLits.Presburger.Compat: data Pred
- GHC.TypeLits.Presburger.Compat: data () => Subst
+ GHC.TypeLits.Presburger.Compat: data Subst
- GHC.TypeLits.Presburger.Compat: data () => TcPlugin
+ GHC.TypeLits.Presburger.Compat: data TcPlugin
- GHC.TypeLits.Presburger.Compat: data () => TcPluginM a
+ GHC.TypeLits.Presburger.Compat: data TcPluginM a
- GHC.TypeLits.Presburger.Compat: data () => TcPluginSolveResult
+ GHC.TypeLits.Presburger.Compat: data TcPluginSolveResult
- GHC.TypeLits.Presburger.Compat: data () => TyLit
+ GHC.TypeLits.Presburger.Compat: data TyLit
- GHC.TypeLits.Presburger.Compat: data () => Type
+ GHC.TypeLits.Presburger.Compat: data Type
- GHC.TypeLits.Presburger.Compat: data () => Unique
+ GHC.TypeLits.Presburger.Compat: data Unique
- GHC.TypeLits.Presburger.Compat: data () => UnitDatabase unit
+ GHC.TypeLits.Presburger.Compat: data UnitDatabase unit
- GHC.TypeLits.Presburger.Compat: data () => UnivCoProvenance
+ GHC.TypeLits.Presburger.Compat: data UnivCoProvenance
- GHC.TypeLits.Presburger.Compat: newtype () => PackageName
+ GHC.TypeLits.Presburger.Compat: newtype PackageName
- GHC.TypeLits.Presburger.Types: type Machine = MaybeT (StateT ParseEnv TcPluginM)
+ GHC.TypeLits.Presburger.Types: type Machine = MaybeT StateT ParseEnv TcPluginM
Files
- Changelog.md +0/−4
- examples/simple-arith-core.hs +16/−20
- ghc-typelits-presburger.cabal +89/−80
- src/GHC/TypeLits/Presburger/Compat.hs +20/−3
- src/GHC/TypeLits/Presburger/Types.hs +1/−1
Changelog.md view
@@ -1,9 +1,5 @@ # Changelog -## 0.7.4.1--* Supports GHC 9.8.4- ## 0.7.4.0 * Supports GHC 9.10
examples/simple-arith-core.hs view
@@ -1,34 +1,31 @@ {-# LANGUAGE CPP #-}-{-# LANGUAGE TypeApplications #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE EmptyCase #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE LambdaCase #-}+{-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE UndecidableInstances #-}-{-# LANGUAGE NoStarIsType #-}-{-# LANGUAGE NoStarIsType #-}-{-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE ViewPatterns #-}+{-# LANGUAGE NoStarIsType #-} {-# OPTIONS_GHC -dcore-lint #-}-{-# OPTIONS_GHC -fplugin GHC.TypeLits.Presburger #-} {-# OPTIONS_GHC -ddump-tc-trace -ddump-to-file #-}-+{-# OPTIONS_GHC -fplugin GHC.TypeLits.Presburger #-} module Main where -import Unsafe.Coerce import Data.Proxy-import Numeric.Natural import Data.Type.Equality-import GHC.TypeLits hiding (SNat) import Data.Void+import GHC.TypeLits hiding (SNat)+import Numeric.Natural import Proof.Propositional (Empty (..), IsTrue (Witness), withEmpty)+import Unsafe.Coerce #if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 902 import qualified Data.Type.Ord as DTO #endif@@ -42,7 +39,7 @@ type n <=! m = IsTrue (n <=? m) infix 4 <=!-{- + type family Length (as :: [k]) where Length '[] = 0 Length (x ': xs) = 1 + Length xs@@ -69,13 +66,13 @@ minusLeq :: (n <= m) => proxy (n :: Nat) -> proxy m -> IsTrue ((m - n) + n <=? m) minusLeq _ _ = Witness -absurdTrueFalse :: ( 'True :~: 'False) -> a+absurdTrueFalse :: ('True :~: 'False) -> a absurdTrueFalse = \case {} hoge :: proxy n -> IsTrue (n + 1 <=? n) -> a hoge _ Witness = absurdTrueFalse Refl -bar :: (2 * (n + 1)) ~ (2 * n + 2) => proxy n -> ()+bar :: ((2 * (n + 1)) ~ (2 * n + 2)) => proxy n -> () bar _ = () barResult :: ()@@ -87,12 +84,12 @@ eqv :: proxy n -> proxy m -> (n <=? m) :~: ((n + 1) <=? (m + 1)) eqv _ _ = Refl -predSuccBool :: forall proxy n. (n <=? 0) ~ 'False => proxy n -> IsTrue (n + 1 <=? 2 * n)+predSuccBool :: forall proxy n. ((n <=? 0) ~ 'False) => proxy n -> IsTrue (n + 1 <=? 2 * n) predSuccBool _ = Witness- -}-predSuccProp :: forall proxy n. Empty (n <=! 0) => proxy n -> IsTrue (n + 1 <=? 2 * n)++predSuccProp :: forall proxy n. (Empty (n <=! 0)) => proxy n -> IsTrue (n + 1 <=? 2 * n) predSuccProp _ = Witness-{- + succLEqLTSucc :: pxy m -> CmpNat 0 (m + 1) :~: 'LT succLEqLTSucc _ = Refl @@ -192,10 +189,10 @@ then unsafeCoerce IsZero else unsafeCoerce (SNat (n - 1)) -pattern Zero :: forall n. () => n ~ 0 => SNat n+pattern Zero :: forall n. () => (n ~ 0) => SNat n pattern Zero <- (viewNat -> IsZero) -pattern Succ :: forall n. () => forall n1. n ~ Succ n1 => SNat n1 -> SNat n+pattern Succ :: forall n. () => forall n1. (n ~ Succ n1) => SNat n1 -> SNat n pattern Succ n <- (viewNat -> IsSucc n) {-# COMPLETE Zero, Succ #-}@@ -207,4 +204,3 @@ boolToPropLeq Zero m = ZeroLeq m boolToPropLeq (Succ n) (Succ m) = SuccLeqSucc $ boolToPropLeq n m boolToPropLeq (Succ n) Zero = absurd $ succLeqZeroAbsurd n Witness- -}
ghc-typelits-presburger.cabal view
@@ -1,39 +1,38 @@-cabal-version: 1.12---- This file has been generated from package.yaml by hpack version 0.36.0.------ see: https://github.com/sol/hpack------ hash: f62c6305d38380eb4cc8063c8e4c4b0056c9bcb01d01075789915680436a7263+cabal-version: 3.4+name: ghc-typelits-presburger+version: 0.7.4.2+synopsis: Presburger Arithmetic Solver for GHC Type-level natural numbers.+description:+ @ghc-typelits-presburger@ augments GHC type-system with Presburger+ Arithmetic Solver for Type-level natural numbers.+ This plugin only work with GHC builtin operations.+ To work with those of @singletons@ package, use @ghc-typelits-meta@ and/or @ghc-typelits-presburger@ instead.+ .+ Since 0.3.0.0, integration with <https://hackage.haskell.org/package/singletons singletons> package moves to <https://hackage.haskell.org/package/singletons-presburger singletons-presburger>.+ .+ You can use by adding this package to @build-depends@ and add the following pragma+ to the head of .hs files:+ .+ .+ > OPTIONS_GHC -fplugin GHC.TypeLits.Presburger -name: ghc-typelits-presburger-version: 0.7.4.1-synopsis: Presburger Arithmetic Solver for GHC Type-level natural numbers.-description: @ghc-typelits-presburger@ augments GHC type-system with Presburger- Arithmetic Solver for Type-level natural numbers.- This plugin only work with GHC builtin operations.- To work with those of @singletons@ package, use @ghc-typelits-meta@ and/or @ghc-typelits-presburger@ instead.- .- Since 0.3.0.0, integration with <https://hackage.haskell.org/package/singletons singletons> package moves to <https://hackage.haskell.org/package/singletons-presburger singletons-presburger>.- .- You can use by adding this package to @build-depends@ and add the following pragma- to the head of .hs files:- .- .- > OPTIONS_GHC -fplugin GHC.TypeLits.Presburger-category: Math, Type System-homepage: https://github.com/konn/ghc-typelits-presburger#readme-bug-reports: https://github.com/konn/ghc-typelits-presburger/issues-author: Hiromi ISHII-maintainer: konn.jinro _at_ gmail.com-copyright: 2015 (c) Hiromi ISHII-license: BSD3-license-file: LICENSE+category: Math, Type System+homepage: https://github.com/konn/ghc-typelits-presburger#readme+bug-reports: https://github.com/konn/ghc-typelits-presburger/issues+author: Hiromi ISHII+maintainer: konn.jinro _at_ gmail.com+copyright: 2015-2025 (c) Hiromi ISHII+license: BSD-3-Clause+license-file: LICENSE+build-type: Simple tested-with:- GHC==9.2.8 GHC==9.4.8 GHC==9.6.5 GHC==9.8.4 GHC==9.10.1+ ghc ==9.6.7+ ghc ==9.8.4+ ghc ==9.10.2+ ghc ==9.12.2+ extra-source-files:- Changelog.md-build-type: Simple+ Changelog.md source-repository head type: git@@ -44,66 +43,76 @@ manual: False default: False +common defaults+ autogen-modules: Paths_ghc_typelits_presburger+ other-modules: Paths_ghc_typelits_presburger+ default-language: Haskell2010+ ghc-options:+ -Wall+ -Wcompat+ -Widentities+ -Wincomplete-record-updates+ -Wincomplete-uni-patterns+ -Wmissing-export-lists+ -Wmissing-home-modules+ -Wpartial-fields+ -Wredundant-constraints+ -Wunused-packages+ library+ import: defaults+ hs-source-dirs: src exposed-modules:- GHC.TypeLits.Presburger.Types- GHC.TypeLits.Presburger- GHC.TypeLits.Presburger.Compat+ GHC.TypeLits.Presburger+ GHC.TypeLits.Presburger.Compat+ GHC.TypeLits.Presburger.Types+ other-modules:- Data.Integer.SAT- GHC.TypeLits.Presburger.Flags- Paths_ghc_typelits_presburger- hs-source-dirs:- src- ghc-options: -Wall -Wno-dodgy-imports+ Data.Integer.SAT+ GHC.TypeLits.Presburger.Flags+ build-depends:- base >=4.7 && <5- , containers- , ghc <9.13- , ghc-tcplugins-extra >=0.2 && <0.5- , mtl- , pretty- , reflection- , syb- , transformers- default-language: Haskell2010+ base >=4.7 && <5,+ containers,+ ghc <9.13,+ ghc-tcplugins-extra >=0.2 && <0.6,+ mtl,+ pretty,+ reflection,+ syb,+ transformers, executable simple-arith-core+ import: defaults main-is: simple-arith-core.hs- other-modules:- Paths_ghc_typelits_presburger- hs-source-dirs:- examples- ghc-options: -Wall -Wno-dodgy-imports -Wno-unused-imports+ hs-source-dirs: examples build-depends:- base- , equational-reasoning- , ghc-typelits-presburger- default-language: Haskell2010+ base,+ equational-reasoning,+ ghc-typelits-presburger,+ if !(flag(examples)) buildable: False test-suite test-typeltis-presburger+ import: defaults type: exitcode-stdio-1.0 main-is: test.hs+ hs-source-dirs: test+ -- cabal-gild: discover test --exclude=test/test.hs other-modules:- ErrorsNoPlugin- ErrorsWithPlugin- GHC.TypeLits.PresburgerSpec- Shared- Paths_ghc_typelits_presburger- hs-source-dirs:- test- ghc-options: -Wall -Wno-dodgy-imports- build-tool-depends:- tasty-discover:tasty-discover+ ErrorsNoPlugin+ ErrorsWithPlugin+ GHC.TypeLits.PresburgerSpec+ Shared++ build-tool-depends: tasty-discover:tasty-discover build-depends:- base- , equational-reasoning- , ghc-typelits-presburger- , tasty- , tasty-discover- , tasty-expected-failure- , tasty-hunit- , text- default-language: Haskell2010+ base,+ equational-reasoning,+ ghc-typelits-presburger,+ tasty,+ tasty-discover,+ tasty-expected-failure,+ tasty-hunit,+ text,
src/GHC/TypeLits/Presburger/Compat.hs view
@@ -1,3 +1,5 @@+{- HLINT ignore "Use camelCase" -}+{- HLINT ignore "Move filter" -} {-# LANGUAGE CPP #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE OverloadedStrings #-}@@ -25,7 +27,7 @@ import GHC.Builtin.Names (gHC_TYPENATS, gHC_TYPEERROR) #endif #endif-import GHC.Tc.Types.Constraint as GHC.TypeLits.Presburger.Compat (CtLoc (..), initialSubGoalDepth)+import GHC.Tc.Types.Constraint as GHC.TypeLits.Presburger.Compat import GHC.Tc.Types.Origin as GHC.TypeLits.Presburger.Compat (CtOrigin (..)) import GHC.TcPluginM.Extra as GHC.TypeLits.Presburger.Compat ( evByFiat,@@ -37,13 +39,17 @@ import GHC.Tc.Types as GHC.TypeLits.Presburger.Compat (TcPlugin (..), TcPluginSolveResult (..)) import GHC.Builtin.Types as GHC.TypeLits.Presburger.Compat (cTupleTyCon, cTupleDataCon) import GHC.Tc.Types.Evidence as GHC.TypeLits.Presburger.Compat (evCast)-import GHC.Plugins as GHC.TypeLits.Presburger.Compat (mkUnivCo)+import GHC.Plugins as GHC.TypeLits.Presburger.Compat (mkUnivCo, Role(..))+import GHC.Core.TyCo.Rep as GHC.TypeLits.Presburger.Compat (Coercion) import GHC.Core.TyCo.Rep as GHC.TypeLits.Presburger.Compat (UnivCoProvenance(..)) import GHC.Core.DataCon as GHC.TypeLits.Presburger.Compat (dataConWrapId) #else import GHC.Tc.Types as GHC.TypeLits.Presburger.Compat (TcPlugin (..), TcPluginResult (..)) #endif-#if MIN_VERSION_ghc(9,4,1)+#if MIN_VERSION_ghc(9,12,1)+-- mkBaseModule is not available in GHC 9.12.1++import GHC.Core.Reduction (reductionReducedType)+#elif MIN_VERSION_ghc(9,4,1) import GHC.Builtin.Names as GHC.TypeLits.Presburger.Compat (mkBaseModule) import GHC.Core.Reduction (reductionReducedType) #else@@ -74,7 +80,9 @@ import GHC.Unit.Types as GHC.TypeLits.Presburger.Compat (mkModule) #if MIN_VERSION_ghc(9,2,0) import GHC.Driver.Env.Types as GHC.TypeLits.Presburger.Compat (HscEnv (hsc_dflags))+#if !MIN_VERSION_ghc(9,12,1) import GHC.Builtin.Names (mkBaseModule)+#endif #else import GHC.Driver.Types as GHC.TypeLits.Presburger.Compat (HscEnv (hsc_dflags)) import GHC.Driver.Session (unitState, unitDatabases)@@ -182,6 +190,15 @@ #if !MIN_VERSION_ghc(9,4,1) type TcPluginSolveResult = TcPluginResult+#endif++-- mkUnivCo API compatibility+#if MIN_VERSION_ghc(9,12,1)+mkUnivCo' :: UnivCoProvenance -> Role -> Type -> Type -> Coercion +mkUnivCo' prov role ty1 ty2 = mkUnivCo prov [] role ty1 ty2+#else+mkUnivCo' :: UnivCoProvenance -> Role -> Type -> Type -> Coercion +mkUnivCo' = mkUnivCo #endif #if MIN_VERSION_ghc(9,10,1)
src/GHC/TypeLits/Presburger/Types.hs view
@@ -362,7 +362,7 @@ | Just (con, lastN 2 -> [_, _]) <- splitTyConApp_maybe prd , con `elem` assertTy given = Just $ GHC.Var (dataConWrapId $ cTupleDataCon 0) `evCast`- mkUnivCo+ mkUnivCo' (PluginProv $ "ghc-typelits-presburger: extractProof") Representational (mkTyConTy (cTupleTyCon 0))