ghc-9.6.3: The GHC API

Safe Haskell | Safe-Inferred
Language | Haskell2010

GHC.Tc.Errors.Types

Contents

- Main types

Synopsis

- data TcRnMessage where
  - TcRnUnknownMessage :: UnknownDiagnostic -> TcRnMessage
  - TcRnMessageWithInfo :: !UnitState -> !TcRnMessageDetailed -> TcRnMessage
  - TcRnWithHsDocContext :: !HsDocContext -> !TcRnMessage -> TcRnMessage
  - TcRnSolverReport :: SolverReportWithCtxt -> DiagnosticReason -> [GhcHint] -> TcRnMessage
  - TcRnRedundantConstraints :: [Id] -> (SkolemInfoAnon, Bool) -> TcRnMessage
  - TcRnInaccessibleCode :: Implication -> SolverReportWithCtxt -> TcRnMessage
  - TcRnTypeDoesNotHaveFixedRuntimeRep :: !Type -> !FixedRuntimeRepProvenance -> !ErrInfo -> TcRnMessage
  - TcRnImplicitLift :: Name -> !ErrInfo -> TcRnMessage
  - TcRnUnusedPatternBinds :: HsBind GhcRn -> TcRnMessage
  - TcRnDodgyImports :: RdrName -> TcRnMessage
  - TcRnDodgyExports :: Name -> TcRnMessage
  - TcRnMissingImportList :: IE GhcPs -> TcRnMessage
  - TcRnUnsafeDueToPlugin :: TcRnMessage
  - TcRnModMissingRealSrcSpan :: Module -> TcRnMessage
  - TcRnIdNotExportedFromModuleSig :: Name -> Module -> TcRnMessage
  - TcRnIdNotExportedFromLocalSig :: Name -> TcRnMessage
  - TcRnShadowedName :: OccName -> ShadowedNameProvenance -> TcRnMessage
  - TcRnDuplicateWarningDecls :: !(LocatedN RdrName) -> !RdrName -> TcRnMessage
  - TcRnSimplifierTooManyIterations :: Cts -> !IntWithInf -> WantedConstraints -> TcRnMessage
  - TcRnIllegalPatSynDecl :: !(LIdP GhcPs) -> TcRnMessage
  - TcRnLinearPatSyn :: !Type -> TcRnMessage
  - TcRnEmptyRecordUpdate :: TcRnMessage
  - TcRnIllegalFieldPunning :: !(Located RdrName) -> TcRnMessage
  - TcRnIllegalWildcardsInRecord :: !RecordFieldPart -> TcRnMessage
  - TcRnIllegalWildcardInType :: Maybe Name -> !BadAnonWildcardContext -> TcRnMessage
  - TcRnDuplicateFieldName :: !RecordFieldPart -> NonEmpty RdrName -> TcRnMessage
  - TcRnIllegalViewPattern :: !(Pat GhcPs) -> TcRnMessage
  - TcRnCharLiteralOutOfRange :: !Char -> TcRnMessage
  - TcRnIllegalWildcardsInConstructor :: !Name -> TcRnMessage
  - TcRnIgnoringAnnotations :: [LAnnDecl GhcRn] -> TcRnMessage
  - TcRnAnnotationInSafeHaskell :: TcRnMessage
  - TcRnInvalidTypeApplication :: Type -> LHsWcType GhcRn -> TcRnMessage
  - TcRnTagToEnumMissingValArg :: TcRnMessage
  - TcRnTagToEnumUnspecifiedResTy :: Type -> TcRnMessage
  - TcRnTagToEnumResTyNotAnEnum :: Type -> TcRnMessage
  - TcRnTagToEnumResTyTypeData :: Type -> TcRnMessage
  - TcRnArrowIfThenElsePredDependsOnResultTy :: TcRnMessage
  - TcRnIllegalHsBootFileDecl :: TcRnMessage
  - TcRnRecursivePatternSynonym :: LHsBinds GhcRn -> TcRnMessage
  - TcRnPartialTypeSigTyVarMismatch :: Name -> Name -> Name -> LHsSigWcType GhcRn -> TcRnMessage
  - TcRnPartialTypeSigBadQuantifier :: Name -> Name -> Maybe Type -> LHsSigWcType GhcRn -> TcRnMessage
  - TcRnMissingSignature :: MissingSignature -> Exported -> Bool -> TcRnMessage
  - TcRnPolymorphicBinderMissingSig :: Name -> Type -> TcRnMessage
  - TcRnOverloadedSig :: TcIdSigInfo -> TcRnMessage
  - TcRnTupleConstraintInst :: !Class -> TcRnMessage
  - TcRnAbstractClassInst :: !Class -> TcRnMessage
  - TcRnNoClassInstHead :: !Type -> TcRnMessage
  - TcRnUserTypeError :: !Type -> TcRnMessage
  - TcRnConstraintInKind :: !Type -> TcRnMessage
  - TcRnUnboxedTupleOrSumTypeFuncArg :: UnboxedTupleOrSum -> !Type -> TcRnMessage
  - TcRnLinearFuncInKind :: !Type -> TcRnMessage
  - TcRnForAllEscapeError :: !Type -> !Kind -> TcRnMessage
  - TcRnVDQInTermType :: !(Maybe Type) -> TcRnMessage
  - TcRnBadQuantPredHead :: !Type -> TcRnMessage
  - TcRnIllegalTupleConstraint :: !Type -> TcRnMessage
  - TcRnNonTypeVarArgInConstraint :: !Type -> TcRnMessage
  - TcRnIllegalImplicitParam :: !Type -> TcRnMessage
  - TcRnIllegalConstraintSynonymOfKind :: !Type -> TcRnMessage
  - TcRnIllegalClassInst :: !TyConFlavour -> TcRnMessage
  - TcRnOversaturatedVisibleKindArg :: !Type -> TcRnMessage
  - TcRnBadAssociatedType :: !Name -> !Name -> TcRnMessage
  - TcRnForAllRankErr :: !Rank -> !Type -> TcRnMessage
  - TcRnMonomorphicBindings :: [Name] -> TcRnMessage
  - TcRnOrphanInstance :: ClsInst -> TcRnMessage
  - TcRnFunDepConflict :: !UnitState -> NonEmpty ClsInst -> TcRnMessage
  - TcRnDupInstanceDecls :: !UnitState -> NonEmpty ClsInst -> TcRnMessage
  - TcRnConflictingFamInstDecls :: NonEmpty FamInst -> TcRnMessage
  - TcRnFamInstNotInjective :: InjectivityErrReason -> TyCon -> NonEmpty CoAxBranch -> TcRnMessage
  - TcRnBangOnUnliftedType :: !Type -> TcRnMessage
  - TcRnLazyBangOnUnliftedType :: !Type -> TcRnMessage
  - TcRnMultipleDefaultDeclarations :: [LDefaultDecl GhcRn] -> TcRnMessage
  - TcRnBadDefaultType :: Type -> [Class] -> TcRnMessage
  - TcRnPatSynBundledWithNonDataCon :: TcRnMessage
  - TcRnPatSynBundledWithWrongType :: Type -> Type -> TcRnMessage
  - TcRnDupeModuleExport :: ModuleName -> TcRnMessage
  - TcRnExportedModNotImported :: ModuleName -> TcRnMessage
  - TcRnNullExportedModule :: ModuleName -> TcRnMessage
  - TcRnMissingExportList :: ModuleName -> TcRnMessage
  - TcRnExportHiddenComponents :: IE GhcPs -> TcRnMessage
  - TcRnDuplicateExport :: GreName -> IE GhcPs -> IE GhcPs -> TcRnMessage
  - TcRnExportedParentChildMismatch :: Name -> TyThing -> GreName -> [Name] -> TcRnMessage
  - TcRnConflictingExports :: OccName -> GreName -> GlobalRdrElt -> IE GhcPs -> GreName -> GlobalRdrElt -> IE GhcPs -> TcRnMessage
  - TcRnAmbiguousField :: HsExpr GhcRn -> TyCon -> TcRnMessage
  - TcRnMissingFields :: ConLike -> [(FieldLabelString, TcType)] -> TcRnMessage
  - TcRnFieldUpdateInvalidType :: [(FieldLabelString, TcType)] -> TcRnMessage
  - TcRnNoConstructorHasAllFields :: [FieldLabelString] -> TcRnMessage
  - TcRnMixedSelectors :: Name -> [Id] -> Name -> [Id] -> TcRnMessage
  - TcRnMissingStrictFields :: ConLike -> [(FieldLabelString, TcType)] -> TcRnMessage
  - TcRnNoPossibleParentForFields :: [LHsRecUpdField GhcRn] -> TcRnMessage
  - TcRnBadOverloadedRecordUpdate :: [LHsRecUpdField GhcRn] -> TcRnMessage
  - TcRnStaticFormNotClosed :: Name -> NotClosedReason -> TcRnMessage
  - TcRnSpecialClassInst :: !Class -> !Bool -> TcRnMessage
  - TcRnUselessTypeable :: TcRnMessage
  - TcRnDerivingDefaults :: !Class -> TcRnMessage
  - TcRnNonUnaryTypeclassConstraint :: !(LHsSigType GhcRn) -> TcRnMessage
  - TcRnPartialTypeSignatures :: !SuggestPartialTypeSignatures -> !ThetaType -> TcRnMessage
  - TcRnCannotDeriveInstance :: !Class -> [Type] -> !(Maybe (DerivStrategy GhcTc)) -> !UsingGeneralizedNewtypeDeriving -> !DeriveInstanceErrReason -> TcRnMessage
  - TcRnLazyGADTPattern :: TcRnMessage
  - TcRnArrowProcGADTPattern :: TcRnMessage
  - TcRnForallIdentifier :: RdrName -> TcRnMessage
  - TcRnTypeEqualityOutOfScope :: TcRnMessage
  - TcRnTypeEqualityRequiresOperators :: TcRnMessage
  - TcRnIllegalTypeOperator :: !SDoc -> !RdrName -> TcRnMessage
  - TcRnIllegalTypeOperatorDecl :: !RdrName -> TcRnMessage
  - TcRnGADTMonoLocalBinds :: TcRnMessage
  - TcRnNotInScope :: NotInScopeError -> RdrName -> [ImportError] -> [GhcHint] -> TcRnMessage
  - TcRnUntickedPromotedThing :: UntickedPromotedThing -> TcRnMessage
  - TcRnIllegalBuiltinSyntax :: SDoc -> RdrName -> TcRnMessage
  - TcRnWarnDefaulting :: [Ct] -> Maybe TyVar -> Type -> TcRnMessage
  - TcRnIncorrectNameSpace :: Name -> Bool -> TcRnMessage
  - TcRnForeignImportPrimExtNotSet :: ForeignImport GhcRn -> TcRnMessage
  - TcRnForeignImportPrimSafeAnn :: ForeignImport GhcRn -> TcRnMessage
  - TcRnForeignFunctionImportAsValue :: ForeignImport GhcRn -> TcRnMessage
  - TcRnFunPtrImportWithoutAmpersand :: ForeignImport GhcRn -> TcRnMessage
  - TcRnIllegalForeignDeclBackend :: Either (ForeignExport GhcRn) (ForeignImport GhcRn) -> Backend -> ExpectedBackends -> TcRnMessage
  - TcRnUnsupportedCallConv :: Either (ForeignExport GhcRn) (ForeignImport GhcRn) -> UnsupportedCallConvention -> TcRnMessage
  - TcRnIllegalForeignType :: !(Maybe ArgOrResult) -> !IllegalForeignTypeReason -> TcRnMessage
  - TcRnInvalidCIdentifier :: !CLabelString -> TcRnMessage
  - TcRnExpectedValueId :: !TcTyThing -> TcRnMessage
  - TcRnNotARecordSelector :: !Name -> TcRnMessage
  - TcRnRecSelectorEscapedTyVar :: !OccName -> TcRnMessage
  - TcRnPatSynNotBidirectional :: !Name -> TcRnMessage
  - TcRnSplicePolymorphicLocalVar :: !Id -> TcRnMessage
  - TcRnIllegalDerivingItem :: !(LHsSigType GhcRn) -> TcRnMessage
  - TcRnUnexpectedAnnotation :: !(HsType GhcRn) -> !HsSrcBang -> TcRnMessage
  - TcRnIllegalRecordSyntax :: !(HsType GhcRn) -> TcRnMessage
  - TcRnUnexpectedTypeSplice :: !(HsType GhcRn) -> TcRnMessage
  - TcRnInvalidVisibleKindArgument :: !(LHsType GhcRn) -> !Type -> TcRnMessage
  - TcRnTooManyBinders :: !Kind -> ![LHsTyVarBndr () GhcRn] -> TcRnMessage
  - TcRnDifferentNamesForTyVar :: !Name -> !Name -> TcRnMessage
  - TcRnInvalidReturnKind :: !DataSort -> !AllowedDataResKind -> !Kind -> !(Maybe SuggestUnliftedTypes) -> TcRnMessage
  - TcRnClassKindNotConstraint :: !Kind -> TcRnMessage
  - TcRnUnpromotableThing :: !Name -> !PromotionErr -> TcRnMessage
  - TcRnMatchesHaveDiffNumArgs :: !(HsMatchContext GhcTc) -> !MatchArgBadMatches -> TcRnMessage
  - TcRnCannotBindScopedTyVarInPatSig :: !(NonEmpty (Name, TcTyVar)) -> TcRnMessage
  - TcRnCannotBindTyVarsInPatBind :: !(NonEmpty (Name, TcTyVar)) -> TcRnMessage
  - TcRnTooManyTyArgsInConPattern :: !ConLike -> !Int -> !Int -> TcRnMessage
  - TcRnMultipleInlinePragmas :: !Id -> !(LocatedA InlinePragma) -> !(NonEmpty (LocatedA InlinePragma)) -> TcRnMessage
  - TcRnUnexpectedPragmas :: !Id -> !(NonEmpty (LSig GhcRn)) -> TcRnMessage
  - TcRnNonOverloadedSpecialisePragma :: !(LIdP GhcRn) -> TcRnMessage
  - TcRnSpecialiseNotVisible :: !Name -> TcRnMessage
  - TcRnNameByTemplateHaskellQuote :: !RdrName -> TcRnMessage
  - TcRnIllegalBindingOfBuiltIn :: !OccName -> TcRnMessage
  - TcRnPragmaWarning :: {..} -> TcRnMessage
  - TcRnIllegalHsigDefaultMethods :: !Name -> NonEmpty (LHsBind GhcRn) -> TcRnMessage
  - TcRnBadGenericMethod :: !Name -> !Name -> TcRnMessage
  - TcRnWarningMinimalDefIncomplete :: ClassMinimalDef -> TcRnMessage
  - TcRnDefaultMethodForPragmaLacksBinding :: Id -> Sig GhcRn -> TcRnMessage
  - TcRnIgnoreSpecialisePragmaOnDefMethod :: !Name -> TcRnMessage
  - TcRnBadMethodErr :: {..} -> TcRnMessage
  - TcRnNoExplicitAssocTypeOrDefaultDeclaration :: Name -> TcRnMessage
  - TcRnIllegalNewtype :: DataCon -> Bool -> IllegalNewtypeReason -> TcRnMessage
  - TcRnIllegalTypeData :: TcRnMessage
  - TcRnTypeDataForbids :: !TypeDataForbids -> TcRnMessage
  - TcRnTypedTHWithPolyType :: !TcType -> TcRnMessage
  - TcRnSpliceThrewException :: !SplicePhase -> !SomeException -> !String -> !(LHsExpr GhcTc) -> !Bool -> TcRnMessage
  - TcRnInvalidTopDecl :: !(HsDecl GhcPs) -> TcRnMessage
  - TcRnNonExactName :: !RdrName -> TcRnMessage
  - TcRnAddInvalidCorePlugin :: !String -> TcRnMessage
  - TcRnAddDocToNonLocalDefn :: !DocLoc -> TcRnMessage
  - TcRnFailedToLookupThInstName :: !Type -> !LookupTHInstNameErrReason -> TcRnMessage
  - TcRnCannotReifyInstance :: !Type -> TcRnMessage
  - TcRnCannotReifyOutOfScopeThing :: !Name -> TcRnMessage
  - TcRnCannotReifyThingNotInTypeEnv :: !Name -> TcRnMessage
  - TcRnNoRolesAssociatedWithThing :: !TcTyThing -> TcRnMessage
  - TcRnCannotRepresentType :: !UnrepresentableTypeDescr -> !Type -> TcRnMessage
  - TcRnRunSpliceFailure :: !(Maybe String) -> !RunSpliceFailReason -> TcRnMessage
  - TcRnReportCustomQuasiError :: !Bool -> !String -> TcRnMessage
  - TcRnInterfaceLookupError :: !Name -> !SDoc -> TcRnMessage
  - TcRnUnsatisfiedMinimalDef :: ClassMinimalDef -> TcRnMessage
  - TcRnMisplacedInstSig :: Name -> LHsSigType GhcRn -> TcRnMessage
  - TcRnBadBootFamInstDecl :: {..} -> TcRnMessage
  - TcRnIllegalFamilyInstance :: TyCon -> TcRnMessage
  - TcRnMissingClassAssoc :: TyCon -> TcRnMessage
  - TcRnBadFamInstDecl :: TyCon -> TcRnMessage
  - TcRnNotOpenFamily :: TyCon -> TcRnMessage
  - TcRnNoRebindableSyntaxRecordDot :: TcRnMessage
  - TcRnNoFieldPunsRecordDot :: TcRnMessage
  - TcRnIllegalStaticExpression :: HsExpr GhcPs -> TcRnMessage
  - TcRnIllegalStaticFormInSplice :: HsExpr GhcPs -> TcRnMessage
  - TcRnListComprehensionDuplicateBinding :: Name -> TcRnMessage
  - TcRnEmptyStmtsGroup :: EmptyStatementGroupErrReason -> TcRnMessage
  - TcRnLastStmtNotExpr :: HsStmtContext GhcRn -> UnexpectedStatement -> TcRnMessage
  - TcRnUnexpectedStatementInContext :: HsStmtContext GhcRn -> UnexpectedStatement -> Maybe Extension -> TcRnMessage
  - TcRnIllegalTupleSection :: TcRnMessage
  - TcRnIllegalImplicitParameterBindings :: Either (HsLocalBindsLR GhcPs GhcPs) (HsLocalBindsLR GhcRn GhcPs) -> TcRnMessage
  - TcRnSectionWithoutParentheses :: HsExpr GhcPs -> TcRnMessage
  - TcRnLoopySuperclassSolve :: CtLoc -> PredType -> TcRnMessage
  - TcRnCannotDefaultConcrete :: !FixedRuntimeRepOrigin -> TcRnMessage
- mkTcRnUnknownMessage :: (Diagnostic a, Typeable a, DiagnosticOpts a ~ NoDiagnosticOpts) => a -> TcRnMessage
- data TcRnMessageDetailed = TcRnMessageDetailed !ErrInfo !TcRnMessage
- data TypeDataForbids
  - = TypeDataForbidsDatatypeContexts
  - | TypeDataForbidsLabelledFields
  - | TypeDataForbidsStrictnessAnnotations
  - | TypeDataForbidsDerivingClauses
- data ErrInfo = ErrInfo {
  - errInfoContext :: !SDoc
  - errInfoSupplementary :: !SDoc
  }
- data FixedRuntimeRepProvenance
  - = FixedRuntimeRepDataConField
  - | FixedRuntimeRepPatSynSigArg
  - | FixedRuntimeRepPatSynSigRes
- pprFixedRuntimeRepProvenance :: FixedRuntimeRepProvenance -> SDoc
- data ShadowedNameProvenance
  - = ShadowedNameProvenanceLocal !SrcLoc
  - | ShadowedNameProvenanceGlobal [GlobalRdrElt]
- data RecordFieldPart
  - = RecordFieldConstructor !Name
  - | RecordFieldPattern !Name
  - | RecordFieldUpdate
- data IllegalNewtypeReason
  - = DoesNotHaveSingleField !Int
  - | IsNonLinear
  - | IsGADT
  - | HasConstructorContext
  - | HasExistentialTyVar
  - | HasStrictnessAnnotation
- data InjectivityErrReason
  - = InjErrRhsBareTyVar [Type]
  - | InjErrRhsCannotBeATypeFam
  - | InjErrRhsOverlap
  - | InjErrCannotInferFromRhs !TyVarSet !HasKinds !SuggestUndecidableInstances
- data HasKinds
  - = YesHasKinds
  - | NoHasKinds
- hasKinds :: Bool -> HasKinds
- data SuggestUndecidableInstances
  - = YesSuggestUndecidableInstaces
  - | NoSuggestUndecidableInstaces
- suggestUndecidableInstances :: Bool -> SuggestUndecidableInstances
- data SuggestUnliftedTypes
  - = SuggestUnliftedNewtypes
  - | SuggestUnliftedDatatypes
- data DataSort
  - = DataDeclSort NewOrData
  - | DataInstanceSort NewOrData
  - | DataFamilySort
- ppDataSort :: DataSort -> SDoc
- data AllowedDataResKind
  - = AnyTYPEKind
  - | AnyBoxedKind
  - | LiftedKind
- data NotClosedReason
  - = NotLetBoundReason
  - | NotTypeClosed VarSet
  - | NotClosed Name NotClosedReason
- data SuggestPartialTypeSignatures
  - = YesSuggestPartialTypeSignatures
  - | NoSuggestPartialTypeSignatures
- suggestPartialTypeSignatures :: Bool -> SuggestPartialTypeSignatures
- data DeriveInstanceErrReason
  - = DerivErrNotWellKinded !TyCon !Kind !Int
  - | DerivErrSafeHaskellGenericInst
  - | DerivErrDerivingViaWrongKind !Kind !Type !Kind
  - | DerivErrNoEtaReduce !Type
  - | DerivErrBootFileFound
  - | DerivErrDataConsNotAllInScope !TyCon
  - | DerivErrGNDUsedOnData
  - | DerivErrNullaryClasses
  - | DerivErrLastArgMustBeApp
  - | DerivErrNoFamilyInstance !TyCon [Type]
  - | DerivErrNotStockDeriveable !DeriveAnyClassEnabled
  - | DerivErrHasAssociatedDatatypes !HasAssociatedDataFamInsts !AssociatedTyLastVarInKind !AssociatedTyNotParamOverLastTyVar
  - | DerivErrNewtypeNonDeriveableClass
  - | DerivErrCannotEtaReduceEnough !Bool
  - | DerivErrOnlyAnyClassDeriveable !TyCon !DeriveAnyClassEnabled
  - | DerivErrNotDeriveable !DeriveAnyClassEnabled
  - | DerivErrNotAClass !PredType
  - | DerivErrNoConstructors !TyCon
  - | DerivErrLangExtRequired !Extension
  - | DerivErrDunnoHowToDeriveForType !Type
  - | DerivErrMustBeEnumType !TyCon
  - | DerivErrMustHaveExactlyOneConstructor !TyCon
  - | DerivErrMustHaveSomeParameters !TyCon
  - | DerivErrMustNotHaveClassContext !TyCon !ThetaType
  - | DerivErrBadConstructor !(Maybe HasWildcard) [DeriveInstanceBadConstructor]
  - | DerivErrGenerics [DeriveGenericsErrReason]
  - | DerivErrEnumOrProduct !DeriveInstanceErrReason !DeriveInstanceErrReason
- data UsingGeneralizedNewtypeDeriving
  - = YesGeneralizedNewtypeDeriving
  - | NoGeneralizedNewtypeDeriving
- usingGeneralizedNewtypeDeriving :: Bool -> UsingGeneralizedNewtypeDeriving
- data DeriveAnyClassEnabled
  - = YesDeriveAnyClassEnabled
  - | NoDeriveAnyClassEnabled
- deriveAnyClassEnabled :: Bool -> DeriveAnyClassEnabled
- data DeriveInstanceBadConstructor
  - = DerivErrBadConExistential !DataCon
  - | DerivErrBadConCovariant !DataCon
  - | DerivErrBadConFunTypes !DataCon
  - | DerivErrBadConWrongArg !DataCon
  - | DerivErrBadConIsGADT !DataCon
  - | DerivErrBadConHasExistentials !DataCon
  - | DerivErrBadConHasConstraints !DataCon
  - | DerivErrBadConHasHigherRankType !DataCon
- data HasWildcard
  - = YesHasWildcard
  - | NoHasWildcard
- hasWildcard :: Bool -> HasWildcard
- data BadAnonWildcardContext
  - = WildcardNotLastInConstraint
  - | ExtraConstraintWildcardNotAllowed SoleExtraConstraintWildcardAllowed
  - | WildcardsNotAllowedAtAll
- data SoleExtraConstraintWildcardAllowed
  - = SoleExtraConstraintWildcardNotAllowed
  - | SoleExtraConstraintWildcardAllowed
- data DeriveGenericsErrReason
  - = DerivErrGenericsMustNotHaveDatatypeContext !TyCon
  - | DerivErrGenericsMustNotHaveExoticArgs !DataCon
  - | DerivErrGenericsMustBeVanillaDataCon !DataCon
  - | DerivErrGenericsMustHaveSomeTypeParams !TyCon
  - | DerivErrGenericsMustNotHaveExistentials !DataCon
  - | DerivErrGenericsWrongArgKind !DataCon
- data HasAssociatedDataFamInsts
  - = YesHasAdfs
  - | NoHasAdfs
- hasAssociatedDataFamInsts :: Bool -> HasAssociatedDataFamInsts
- data AssociatedTyLastVarInKind
  - = YesAssocTyLastVarInKind !TyCon
  - | NoAssocTyLastVarInKind
- associatedTyLastVarInKind :: Maybe TyCon -> AssociatedTyLastVarInKind
- data AssociatedTyNotParamOverLastTyVar
  - = YesAssociatedTyNotParamOverLastTyVar !TyCon
  - | NoAssociatedTyNotParamOverLastTyVar
- associatedTyNotParamOverLastTyVar :: Maybe TyCon -> AssociatedTyNotParamOverLastTyVar
- data MissingSignature
  - = MissingTopLevelBindingSig Name Type
  - | MissingPatSynSig PatSyn
  - | MissingTyConKindSig TyCon Bool
- data Exported
  - = IsNotExported
  - | IsExported
- data HsDocContext
  - = TypeSigCtx SDoc
  - | StandaloneKindSigCtx SDoc
  - | PatCtx
  - | SpecInstSigCtx
  - | DefaultDeclCtx
  - | ForeignDeclCtx (LocatedN RdrName)
  - | DerivDeclCtx
  - | RuleCtx FastString
  - | TyDataCtx (LocatedN RdrName)
  - | TySynCtx (LocatedN RdrName)
  - | TyFamilyCtx (LocatedN RdrName)
  - | FamPatCtx (LocatedN RdrName)
  - | ConDeclCtx [LocatedN Name]
  - | ClassDeclCtx (LocatedN RdrName)
  - | ExprWithTySigCtx
  - | TypBrCtx
  - | HsTypeCtx
  - | HsTypePatCtx
  - | GHCiCtx
  - | SpliceTypeCtx (LHsType GhcPs)
  - | ClassInstanceCtx
  - | GenericCtx SDoc
- data FixedRuntimeRepErrorInfo = FRR_Info {
  - frr_info_origin :: FixedRuntimeRepOrigin
  - frr_info_not_concrete :: Maybe (TcTyVar, TcType)
  }
- data ErrorItem = EI {
  - ei_pred :: PredType
  - ei_evdest :: Maybe TcEvDest
  - ei_flavour :: CtFlavour
  - ei_loc :: CtLoc
  - ei_m_reason :: Maybe CtIrredReason
  - ei_suppress :: Bool
  }
- errorItemOrigin :: ErrorItem -> CtOrigin
- errorItemEqRel :: ErrorItem -> EqRel
- errorItemPred :: ErrorItem -> PredType
- errorItemCtLoc :: ErrorItem -> CtLoc
- data SolverReport = SolverReport {
  - sr_important_msg :: SolverReportWithCtxt
  - sr_supplementary :: [SolverReportSupplementary]
  - sr_hints :: [GhcHint]
  }
- data SolverReportSupplementary
  - = SupplementaryBindings RelevantBindings
  - | SupplementaryHoleFits ValidHoleFits
  - | SupplementaryCts [(PredType, RealSrcSpan)]
- data SolverReportWithCtxt = SolverReportWithCtxt {
  - reportContext :: SolverReportErrCtxt
  - reportContent :: TcSolverReportMsg
  }
- data SolverReportErrCtxt = CEC {
  - cec_encl :: [Implication]
  - cec_tidy :: TidyEnv
  - cec_binds :: EvBindsVar
  - cec_defer_type_errors :: DiagnosticReason
  - cec_expr_holes :: DiagnosticReason
  - cec_type_holes :: DiagnosticReason
  - cec_out_of_scope_holes :: DiagnosticReason
  - cec_warn_redundant :: Bool
  - cec_expand_syns :: Bool
  - cec_suppress :: Bool
  }
- getUserGivens :: SolverReportErrCtxt -> [UserGiven]
- discardProvCtxtGivens :: CtOrigin -> [UserGiven] -> [UserGiven]
- data TcSolverReportMsg
  - = BadTelescope TyVarBndrs [TyCoVar]
  - | UserTypeError Type
  - | ReportHoleError Hole HoleError
  - | UntouchableVariable {
    - untouchableTyVar :: TyVar
    - untouchableTyVarImplication :: Implication
    }
  - | CannotUnifyVariable {
    - mismatchMsg :: MismatchMsg
    - cannotUnifyReason :: CannotUnifyVariableReason
    }
  - | Mismatch {
    - mismatchMsg :: MismatchMsg
    - mismatchTyVarInfo :: Maybe TyVarInfo
    - mismatchAmbiguityInfo :: [AmbiguityInfo]
    - mismatchCoercibleInfo :: Maybe CoercibleMsg
    }
  - | FixedRuntimeRepError [FixedRuntimeRepErrorInfo]
  - | BlockedEquality ErrorItem
  - | ExpectingMoreArguments Int TypedThing
  - | UnboundImplicitParams (NonEmpty ErrorItem)
  - | AmbiguityPreventsSolvingCt ErrorItem ([TyVar], [TyVar])
  - | CannotResolveInstance {
    - cannotResolve_item :: ErrorItem
    - cannotResolve_unifiers :: [ClsInst]
    - cannotResolve_candidates :: [ClsInst]
    - cannotResolve_importErrors :: [ImportError]
    - cannotResolve_suggestions :: [GhcHint]
    - cannotResolve_relevant_bindings :: RelevantBindings
    }
  - | OverlappingInstances {
    - overlappingInstances_item :: ErrorItem
    - overlappingInstances_matches :: NonEmpty ClsInst
    - overlappingInstances_unifiers :: [ClsInst]
    }
  - | UnsafeOverlap {
    - unsafeOverlap_item :: ErrorItem
    - unsafeOverlap_match :: ClsInst
    - unsafeOverlapped :: NonEmpty ClsInst
    }
- data CannotUnifyVariableReason
  - = CannotUnifyWithPolytype ErrorItem TyVar Type (Maybe TyVarInfo)
  - | OccursCheck {
    - occursCheckInterestingTyVars :: [TyVar]
    - occursCheckAmbiguityInfos :: [AmbiguityInfo]
    }
  - | SkolemEscape ErrorItem Implication [TyVar]
  - | DifferentTyVars TyVarInfo
  - | RepresentationalEq TyVarInfo (Maybe CoercibleMsg)
- data MismatchMsg
  - = BasicMismatch {
    - mismatch_ea :: MismatchEA
    - mismatch_item :: ErrorItem
    - mismatch_ty1 :: Type
    - mismatch_ty2 :: Type
    - mismatch_whenMatching :: Maybe WhenMatching
    - mismatch_mb_same_occ :: Maybe SameOccInfo
    }
  - | KindMismatch {
    - kmismatch_what :: TypedThing
    - kmismatch_expected :: Type
    - kmismatch_actual :: Type
    }
  - | TypeEqMismatch {
    - teq_mismatch_ppr_explicit_kinds :: Bool
    - teq_mismatch_item :: ErrorItem
    - teq_mismatch_ty1 :: Type
    - teq_mismatch_ty2 :: Type
    - teq_mismatch_expected :: Type
    - teq_mismatch_actual :: Type
    - teq_mismatch_what :: Maybe TypedThing
    - teq_mb_same_occ :: Maybe SameOccInfo
    }
  - | CouldNotDeduce {
    - cnd_user_givens :: [Implication]
    - cnd_wanted :: NonEmpty ErrorItem
    - cnd_extra :: Maybe CND_Extra
    }
- data MismatchEA
  - = NoEA
  - | EA {
    - mismatch_mbEA :: Maybe ExpectedActualInfo
    }
- mkPlainMismatchMsg :: MismatchMsg -> TcSolverReportMsg
- mkBasicMismatchMsg :: MismatchEA -> ErrorItem -> Type -> Type -> MismatchMsg
- data WhenMatching = WhenMatching TcType TcType CtOrigin (Maybe TypeOrKind)
- data ExpectedActualInfo
  - = ExpectedActual {
    - ea_expected, ea_actual :: Type
    }
  - | ExpectedActualAfterTySynExpansion {
    - ea_expanded_expected, ea_expanded_actual :: Type
    }
- data TyVarInfo = TyVarInfo {
  - thisTyVar :: TyVar
  - thisTyVarIsUntouchable :: Maybe Implication
  - otherTy :: Maybe TyVar
  }
- data SameOccInfo = SameOcc {
  - sameOcc_same_pkg :: Bool
  - sameOcc_lhs :: Name
  - sameOcc_rhs :: Name
  }
- data AmbiguityInfo
  - = Ambiguity {
    - lead_with_ambig_msg :: Bool
    - ambig_tyvars :: ([TyVar], [TyVar])
    }
  - | NonInjectiveTyFam TyCon
- data CND_Extra = CND_Extra TypeOrKind Type Type
- data FitsMbSuppressed = Fits {
  - fits :: [HoleFit]
  - fitsSuppressed :: Bool
  }
- data ValidHoleFits = ValidHoleFits {
  - holeFits :: FitsMbSuppressed
  - refinementFits :: FitsMbSuppressed
  }
- noValidHoleFits :: ValidHoleFits
- data HoleFitDispConfig = HFDC {
  - showWrap, showWrapVars, showType, showProv, showMatches :: Bool
  }
- data RelevantBindings = RelevantBindings {
  - relevantBindingNamesAndTys :: [(Name, Type)]
  - ranOutOfFuel :: Bool
  }
- pprRelevantBindings :: RelevantBindings -> SDoc
- data PromotionErr
  - = TyConPE
  - | ClassPE
  - | FamDataConPE
  - | ConstrainedDataConPE PredType
  - | PatSynPE
  - | RecDataConPE
  - | TermVariablePE
  - | NoDataKindsDC
- pprPECategory :: PromotionErr -> SDoc
- peCategory :: PromotionErr -> String
- data NotInScopeError
  - = NotInScope
  - | NoExactName Name
  - | SameName [GlobalRdrElt]
  - | MissingBinding SDoc [GhcHint]
  - | NoTopLevelBinding
  - | UnknownSubordinate SDoc
- mkTcRnNotInScope :: RdrName -> NotInScopeError -> TcRnMessage
- data ImportError
  - = MissingModule ModuleName
  - | ModulesDoNotExport (NonEmpty Module) OccName
- data HoleError
  - = OutOfScopeHole [ImportError]
  - | HoleError HoleSort [TcTyVar] [(SkolemInfoAnon, [TcTyVar])]
- data CoercibleMsg
  - = UnknownRoles Type
  - | TyConIsAbstract TyCon
  - | OutOfScopeNewtypeConstructor TyCon DataCon
- data PotentialInstances = PotentialInstances {
  - matches :: [ClsInst]
  - unifiers :: [ClsInst]
  }
- data UnsupportedCallConvention
  - = StdCallConvUnsupported
  - | PrimCallConvUnsupported
  - | JavaScriptCallConvUnsupported
- type ExpectedBackends = [Backend]
- data ArgOrResult
  - = Arg
  - | Result
- data MatchArgsContext
  - = EquationArgs !Name
  - | PatternArgs !(HsMatchContext GhcTc)
- data MatchArgBadMatches where
  - MatchArgMatches :: {..} -> MatchArgBadMatches
- data ConversionFailReason
  - = IllegalOccName !NameSpace !String
  - | SumAltArityExceeded !SumAlt !SumArity
  - | IllegalSumAlt !SumAlt
  - | IllegalSumArity !SumArity
  - | MalformedType !TypeOrKind !Type
  - | IllegalLastStatement !HsDoFlavour !(LStmt GhcPs (LHsExpr GhcPs))
  - | KindSigsOnlyAllowedOnGADTs
  - | IllegalDeclaration !THDeclDescriptor !IllegalDecls
  - | CannotMixGADTConsWith98Cons
  - | EmptyStmtListInDoBlock
  - | NonVarInInfixExpr
  - | MultiWayIfWithoutAlts
  - | CasesExprWithoutAlts
  - | ImplicitParamsWithOtherBinds
  - | InvalidCCallImpent !String
  - | RecGadtNoCons
  - | GadtNoCons
  - | InvalidTypeInstanceHeader !Type
  - | InvalidTyFamInstLHS !Type
  - | InvalidImplicitParamBinding
  - | DefaultDataInstDecl ![LDataFamInstDecl GhcPs]
  - | FunBindLacksEquations !Name
- data UnrepresentableTypeDescr
  - = LinearInvisibleArgument
  - | CoercionsInTypes
- data LookupTHInstNameErrReason
  - = NoMatchesFound
  - | CouldNotDetermineInstance
- data SplicePhase
  - = SplicePhase_Run
  - | SplicePhase_CompileAndLink
- data THDeclDescriptor
  - = InstanceDecl
  - | WhereClause
  - | LetBinding
  - | LetExpression
  - | ClssDecl
- data RunSpliceFailReason = ConversionFail !ThingBeingConverted !ConversionFailReason
- data ThingBeingConverted
  - = ConvDec !Dec
  - | ConvExp !Exp
  - | ConvPat !Pat
  - | ConvType !Type
- data IllegalDecls
  - = IllegalDecls !(NonEmpty (LHsDecl GhcPs))
  - | IllegalFamDecls !(NonEmpty (LFamilyDecl GhcPs))
- data EmptyStatementGroupErrReason
  - = EmptyStmtsGroupInParallelComp
  - | EmptyStmtsGroupInTransformListComp
  - | EmptyStmtsGroupInDoNotation HsDoFlavour
  - | EmptyStmtsGroupInArrowNotation
- data UnexpectedStatement where
  - UnexpectedStatement :: Outputable (StmtLR GhcPs GhcPs body) => StmtLR GhcPs GhcPs body -> UnexpectedStatement

# Main types

data TcRnMessage where Source #

An error which might arise during typechecking/renaming.

Constructors

TcRnUnknownMessage :: UnknownDiagnostic -> TcRnMessage | Simply wraps an unknown `Diagnostic` message `a`. It can be used by plugins to provide custom diagnostic messages originated during typechecking/renaming.
TcRnMessageWithInfo | TcRnMessageWithInfo is a constructor which is used when extra information is needed to be provided in order to qualify a diagnostic and where it was originated (and why). It carries an extra `UnitState` which can be used to pretty-print some names and it wraps a `TcRnMessageDetailed`, which includes any extra context associated with this diagnostic.

Fields

- :: !UnitState

  The `UnitState` will allow us to pretty-print some diagnostics with more detail.

- -> !TcRnMessageDetailed
- -> TcRnMessage

TcRnWithHsDocContext :: !HsDocContext -> !TcRnMessage -> TcRnMessage | TcRnWithHsDocContext annotates an error message with the context in which it originated.
TcRnSolverReport :: SolverReportWithCtxt -> DiagnosticReason -> [GhcHint] -> TcRnMessage | TcRnSolverReport is the constructor used to report unsolved constraints after constraint solving, as well as other errors such as hole fit errors. See the documentation of the `TcSolverReportMsg` datatype for an overview of the different errors.
TcRnRedundantConstraints | TcRnRedundantConstraints is a warning that is emitted when a binding has a user-written type signature which contains superfluous constraints. Example: f :: (Eq a, Ord a) => a -> a -> a f x y = (x < y) || x == y -- `Eq a` is superfluous: the `Ord a` constraint suffices. Test cases: T9939, T10632, T18036a, T20602, PluralS, T19296.

Fields

- :: [Id]
- -> (SkolemInfoAnon, Bool)

  The contextual skolem info. The boolean controls whether we want to show it in the user message. (Nice to keep track of the info in either case, for other users of the GHC API.)

- -> TcRnMessage

TcRnInaccessibleCode

TcRnInaccessibleCode is a warning that is emitted when the RHS of a pattern match is inaccessible, because the constraint solver has detected a contradiction.

Example:

data B a where { MkTrue :: B True; MkFalse :: B False }

foo :: B False -> Bool foo MkFalse = False foo MkTrue = True -- Inaccessible: requires True ~ False

Test cases: T7293, T7294, T15558, T17646, T18572, T18610, tcfail167.

Fields

- :: Implication

  The implication containing a contradiction.

- -> SolverReportWithCtxt

  The contradiction.

- -> TcRnMessage

TcRnTypeDoesNotHaveFixedRuntimeRep :: !Type -> !FixedRuntimeRepProvenance -> !ErrInfo -> TcRnMessage | A type which was expected to have a fixed runtime representation does not have a fixed runtime representation. Example: data D (a :: TYPE r) = MkD a Test cases: T11724, T18534, RepPolyPatSynArg, RepPolyPatSynUnliftedNewtype, RepPolyPatSynRes, T20423
TcRnImplicitLift :: Name -> !ErrInfo -> TcRnMessage | TcRnImplicitLift is a warning (controlled with -Wimplicit-lift) that occurs when a Template Haskell quote implicitly uses `lift`. Example: warning1 :: Lift t => t -> Q Exp warning1 x = [| x |] Test cases: th/T17804

TcRnUnusedPatternBinds :: HsBind GhcRn -> TcRnMessage

TcRnUnusedPatternBinds is a warning (controlled with -Wunused-pattern-binds) that occurs if a pattern binding binds no variables at all, unless it is a lone wild-card pattern, or a banged pattern.

Example: Just _ = rhs3 -- Warning: unused pattern binding (_, _) = rhs4 -- Warning: unused pattern binding _ = rhs3 -- No warning: lone wild-card pattern !() = rhs4 -- No warning: banged pattern; behaves like seq

Test cases: rename/{T13646,T17c,T17e,T7085}

TcRnDodgyImports :: RdrName -> TcRnMessage | TcRnDodgyImports is a warning (controlled with -Wdodgy-imports) that occurs when a datatype `T` is imported with all constructors, i.e. 'T(..)', but has been exported abstractly, i.e. `T`. Test cases: renameshould_compileT7167

TcRnDodgyExports :: Name -> TcRnMessage

TcRnDodgyExports is a warning (controlled by -Wdodgy-exports) that occurs when a datatype `T` is exported with all constructors, i.e. 'T(..)', but is it just a type synonym or a type/data family.

Example: module Foo ( T(..) -- Warning: T is a type synonym , A(..) -- Warning: A is a type family , C(..) -- Warning: C is a data family ) where

type T = Int type family A :: * -> * data family C :: * -> *

Test cases: warningsshould_compileDodgyExports01

TcRnMissingImportList :: IE GhcPs -> TcRnMessage | TcRnMissingImportList is a warning (controlled by -Wmissing-import-lists) that occurs when an import declaration does not explicitly list all the names brought into scope. Test cases: renameshould_compileT4489
TcRnUnsafeDueToPlugin :: TcRnMessage | When a module marked trustworthy or unsafe (using -XTrustworthy or -XUnsafe) is compiled with a plugin, the TcRnUnsafeDueToPlugin warning (controlled by -Wunsafe) is used as the reason the module was inferred to be unsafe. This warning is not raised if the -fplugin-trustworthy flag is passed. Test cases: plugins/T19926
TcRnModMissingRealSrcSpan :: Module -> TcRnMessage | TcRnModMissingRealSrcSpan is an error that occurs when compiling a module that lacks an associated `RealSrcSpan`. Test cases: None
TcRnIdNotExportedFromModuleSig :: Name -> Module -> TcRnMessage | TcRnIdNotExportedFromModuleSig is an error pertaining to backpack that occurs when an identifier required by a signature is not exported by the module or signature that is being used as a substitution for that signature. Example(s): None Test cases: backpackshould_failbkpfail36
TcRnIdNotExportedFromLocalSig :: Name -> TcRnMessage | TcRnIdNotExportedFromLocalSig is an error pertaining to backpack that occurs when an identifier which is necessary for implementing a module signature is not exported from that signature. Example(s): None Test cases: backpackshould_failbkpfail30 backpackshould_failbkpfail31 backpackshould_failbkpfail34

TcRnShadowedName :: OccName -> ShadowedNameProvenance -> TcRnMessage

TcRnShadowedName is a warning (controlled by -Wname-shadowing) that occurs whenever an inner-scope value has the same name as an outer-scope value, i.e. the inner value shadows the outer one. This can catch typographical errors that turn into hard-to-find bugs. The warning is suppressed for names beginning with an underscore.

Examples(s): f = ... let f = id in ... f ... -- NOT OK, `f` is shadowed f x = do { _ignore <- this; _ignore <- that; return (the other) } -- suppressed via underscore

Test cases: typecheckshould_compileT10971a renameshould_compilern039 renameshould_compilern064 renameshould_compileT1972 renameshould_failT2723 renameshould_compileT3262 driver/werror

TcRnDuplicateWarningDecls :: !(LocatedN RdrName) -> !RdrName -> TcRnMessage | TcRnDuplicateWarningDecls is an error that occurs whenever a warning is declared twice. Examples(s): None. Test cases: None.
TcRnSimplifierTooManyIterations | TcRnDuplicateWarningDecls is an error that occurs whenever the constraint solver in the simplifier hits the iterations' limit. Examples(s): None. Test cases: None.

Fields

- :: Cts
- -> !IntWithInf

  The limit.

- -> WantedConstraints
- -> TcRnMessage

TcRnIllegalPatSynDecl :: !(LIdP GhcPs) -> TcRnMessage | TcRnIllegalPatSynDecl is an error that occurs whenever there is an illegal pattern synonym declaration. Examples(s): varWithLocalPatSyn x = case x of P -> () where pattern P = () -- not valid, it can't be local, it must be defined at top-level. Test cases: patsynshould_faillocal
TcRnLinearPatSyn :: !Type -> TcRnMessage | TcRnLinearPatSyn is an error that occurs whenever a pattern synonym signature uses a field that is not unrestricted. Example(s): None Test cases: linearshould_failLinearPatSyn2
TcRnEmptyRecordUpdate :: TcRnMessage | TcRnEmptyRecordUpdate is an error that occurs whenever a record is updated without specifying any field. Examples(s): $(deriveJSON defaultOptions{} ''Bad) -- not ok, no fields selected for update of defaultOptions Test cases: th/T12788
TcRnIllegalFieldPunning :: !(Located RdrName) -> TcRnMessage | TcRnIllegalFieldPunning is an error that occurs whenever field punning is used without the `NamedFieldPuns` extension enabled. Examples(s): data Foo = Foo { a :: Int } foo :: Foo -> Int foo Foo{a} = a -- Not ok, punning used without extension. Test cases: parsershould_failRecordDotSyntaxFail12
TcRnIllegalWildcardsInRecord :: !RecordFieldPart -> TcRnMessage | TcRnIllegalWildcardsInRecord is an error that occurs whenever wildcards (..) are used in a record without the relevant extension being enabled. Examples(s): data Foo = Foo { a :: Int } foo :: Foo -> Int foo Foo{..} = a -- Not ok, wildcards used without extension. Test cases: parsershould_failRecordWildCardsFail

TcRnIllegalWildcardInType

TcRnIllegalWildcardInType is an error that occurs when a wildcard appears in a type in a location in which wildcards aren't allowed.

Examples:

Type synonyms:

type T = _

Class declarations and instances:

class C _ instance C _

Standalone kind signatures:

type D :: _ data D

Test cases: ExtraConstraintsWildcardInTypeSplice2 ExtraConstraintsWildcardInTypeSpliceUsed ExtraConstraintsWildcardNotLast ExtraConstraintsWildcardTwice NestedExtraConstraintsWildcard NestedNamedExtraConstraintsWildcard PartialClassMethodSignature PartialClassMethodSignature2 T12039 T13324_fail1 UnnamedConstraintWildcard1 UnnamedConstraintWildcard2 WildcardInADT1 WildcardInADT2 WildcardInADT3 WildcardInADTContext1 WildcardInDefault WildcardInDefaultSignature WildcardInDeriving WildcardInForeignExport WildcardInForeignImport WildcardInGADT1 WildcardInGADT2 WildcardInInstanceHead WildcardInInstanceSig WildcardInNewtype WildcardInPatSynSig WildcardInStandaloneDeriving WildcardInTypeFamilyInstanceRHS WildcardInTypeSynonymRHS saks_fail003 T15433a

Fields

- :: Maybe Name

  the wildcard name, or `Nothing` for an anonymous wildcard

- -> !BadAnonWildcardContext
- -> TcRnMessage

TcRnDuplicateFieldName :: !RecordFieldPart -> NonEmpty RdrName -> TcRnMessage | TcRnDuplicateFieldName is an error that occurs whenever there are duplicate field names in a record. Examples(s): None. Test cases: None.
TcRnIllegalViewPattern :: !(Pat GhcPs) -> TcRnMessage | TcRnIllegalViewPattern is an error that occurs whenever the ViewPatterns syntax is used but the ViewPatterns language extension is not enabled. Examples(s): data Foo = Foo { a :: Int } foo :: Foo -> Int foo (a -> l) = l -- not OK, the `ViewPattern` extension is not enabled. Test cases: parsershould_failViewPatternsFail
TcRnCharLiteralOutOfRange :: !Char -> TcRnMessage | TcRnCharLiteralOutOfRange is an error that occurs whenever a character is out of range. Examples(s): None Test cases: None
TcRnIllegalWildcardsInConstructor :: !Name -> TcRnMessage | TcRnIllegalWildcardsInConstructor is an error that occurs whenever the record wildcards '..' are used inside a constructor without labeled fields. Examples(s): None Test cases: None
TcRnIgnoringAnnotations :: [LAnnDecl GhcRn] -> TcRnMessage | TcRnIgnoringAnnotations is a warning that occurs when the source code contains annotation pragmas but the platform in use does not support an external interpreter such as GHCi and therefore the annotations are ignored. Example(s): None Test cases: None
TcRnAnnotationInSafeHaskell :: TcRnMessage | TcRnAnnotationInSafeHaskell is an error that occurs if annotation pragmas are used in conjunction with Safe Haskell. Example(s): None Test cases: annotationsshould_failT10826

TcRnInvalidTypeApplication :: Type -> LHsWcType GhcRn -> TcRnMessage

TcRnInvalidTypeApplication is an error that occurs when a visible type application is used with an expression that does not accept "specified" type arguments.

Example(s): foo :: forall {a}. a -> a foo x = x bar :: () bar = let x = foo @Int 42 in ()

Test cases: overloadedrecfldsshould_failoverloadedlabelsfail03 typecheckshould_failExplicitSpecificity1 typecheckshould_failExplicitSpecificity10 typecheckshould_failExplicitSpecificity2 typecheckshould_failT17173 typecheckshould_failVtaFail

TcRnTagToEnumMissingValArg :: TcRnMessage | TcRnTagToEnumMissingValArg is an error that occurs when the 'tagToEnum#' function is not applied to a single value argument. Example(s): tagToEnum# 1 2 Test cases: None
TcRnTagToEnumUnspecifiedResTy :: Type -> TcRnMessage | TcRnTagToEnumUnspecifiedResTy is an error that occurs when the 'tagToEnum#' function is not given a concrete result type. Example(s): foo :: forall a. a foo = tagToEnum# 0# Test cases: typecheckshould_failtcfail164
TcRnTagToEnumResTyNotAnEnum :: Type -> TcRnMessage | TcRnTagToEnumResTyNotAnEnum is an error that occurs when the 'tagToEnum#' function is given a result type that is not an enumeration type. Example(s): foo :: Int -- not an enumeration TyCon foo = tagToEnum# 0# Test cases: typecheckshould_failtcfail164
TcRnTagToEnumResTyTypeData :: Type -> TcRnMessage | TcRnTagToEnumResTyTypeData is an error that occurs when the 'tagToEnum#' function is given a result type that is headed by a `type data` type, as the data constructors of a `type data` do not exist at the term level. Example(s): type data Letter = A | B | C foo :: Letter foo = tagToEnum# 0# Test cases: type-datashould_failTDTagToEnum.hs
TcRnArrowIfThenElsePredDependsOnResultTy :: TcRnMessage | TcRnArrowIfThenElsePredDependsOnResultTy is an error that occurs when the predicate type of an ifThenElse expression in arrow notation depends on the type of the result. Example(s): None Test cases: None
TcRnIllegalHsBootFileDecl :: TcRnMessage | TcRnIllegalHsBootFileDecl is an error that occurs when an hs-boot file contains declarations that are not allowed, such as bindings. Example(s): None Test cases: None
TcRnRecursivePatternSynonym :: LHsBinds GhcRn -> TcRnMessage | TcRnRecursivePatternSynonym is an error that occurs when a pattern synonym is defined in terms of itself, either directly or indirectly. Example(s): pattern A = B pattern B = A Test cases: patsynshould_failT16900
TcRnPartialTypeSigTyVarMismatch | TcRnPartialTypeSigTyVarMismatch is an error that occurs when a partial type signature attempts to unify two different types. Example(s): f :: a -> b -> _ f x y = [x, y] Test cases: partial-sigsshould_failT14449

Fields

- :: Name

  first type variable

- -> Name

  second type variable

- -> Name

  function name

- -> LHsSigWcType GhcRn
- -> TcRnMessage

TcRnPartialTypeSigBadQuantifier | TcRnPartialTypeSigBadQuantifier is an error that occurs when a type variable being quantified over in the partial type signature of a function gets unified with a type that is free in that function's context. Example(s): foo :: Num a => a -> a foo xxx = g xxx where g :: forall b. Num b => _ -> b g y = xxx + y Test cases: partial-sigshould_failT14479

Fields

- :: Name

  user-written name of type variable being quantified

- -> Name

  function name

- -> Maybe Type

  type the variable unified with, if known

- -> LHsSigWcType GhcRn

  partial type signature

- -> TcRnMessage

TcRnMissingSignature

TcRnMissingSignature is a warning that occurs when a top-level binding or a pattern synonym does not have a type signature.

Controlled by the flags: -Wmissing-signatures -Wmissing-exported-signatures -Wmissing-pattern-synonym-signatures -Wmissing-exported-pattern-synonym-signatures -Wmissing-kind-signatures

Test cases: T11077 (top-level bindings) T12484 (pattern synonyms) T19564 (kind signatures)

Fields

- :: MissingSignature
- -> Exported
- -> Bool

  True: -Wmissing-signatures overrides -Wmissing-exported-signatures, or -Wmissing-pattern-synonym-signatures overrides -Wmissing-exported-pattern-synonym-signatures

- -> TcRnMessage

TcRnPolymorphicBinderMissingSig :: Name -> Type -> TcRnMessage | TcRnPolymorphicBinderMissingSig is a warning controlled by -Wmissing-local-signatures that occurs when a local polymorphic binding lacks a type signature. Example(s): id a = a Test cases: warningsshould_compileT12574
TcRnOverloadedSig :: TcIdSigInfo -> TcRnMessage | TcRnOverloadedSig is an error that occurs when a binding group conflicts with the monomorphism restriction. Example(s): data T a = T a mono = ... where x :: Applicative f => f a T x = ... Test cases: typecheckshould_compileT11339
TcRnTupleConstraintInst :: !Class -> TcRnMessage | TcRnTupleConstraintInst is an error that occurs whenever an instance for a tuple constraint is specified. Examples(s): class C m a class D m a f :: (forall a. Eq a => (C m a, D m a)) => m a f = undefined Test cases: quantified-constraints/T15334

TcRnAbstractClassInst :: !Class -> TcRnMessage

TcRnAbstractClassInst is an error that occurs whenever an instance of an abstract class is specified.

Examples(s): -- A.hs-boot module A where class C a

- - B.hs module B where import {-# SOURCE #-} A instance C Int where
- - A.hs module A where import B class C a where f :: a
- - Main.hs import A main = print (f :: Int)

Test cases: typecheckshould_failT13068

TcRnNoClassInstHead :: !Type -> TcRnMessage | TcRnNoClassInstHead is an error that occurs whenever an instance head is not headed by a class. Examples(s): instance c Test cases: typecheckrenameT5513 typecheckrenameT16385
TcRnUserTypeError :: !Type -> TcRnMessage | TcRnUserTypeError is an error that occurs due to a user's custom type error, which can be triggered by adding a `TypeError` constraint in a type signature or typeclass instance. Examples(s): f :: TypeError (Text "This is a type error") f = undefined Test cases: typecheckshould_failCustomTypeErrors02 typecheckshould_failCustomTypeErrors03
TcRnConstraintInKind :: !Type -> TcRnMessage | TcRnConstraintInKind is an error that occurs whenever a constraint is specified in a kind. Examples(s): data Q :: Eq a => Type where {} Test cases: dependentshould_failT13895 polykinds/T16263 saksshould_failsaks_fail004 typecheckshould_failT16059a typecheckshould_failT18714

TcRnUnboxedTupleOrSumTypeFuncArg

TcRnUnboxedTupleTypeFuncArg is an error that occurs whenever an unboxed tuple or unboxed sum type is specified as a function argument, when the appropriate extension (`-XUnboxedTuples` or `-XUnboxedSums`) isn't enabled.

Examples(s): -- T15073.hs import T15073a newtype Foo a = MkFoo a deriving P

- - T15073a.hs class P a where p :: a -> (# a #)

Test cases: derivingshould_failT15073.hs derivingshould_failT15073a.hs typecheckshould_failT16059d

Fields

- :: UnboxedTupleOrSum

  whether this is an unboxed tuple or an unboxed sum

- -> !Type
- -> TcRnMessage

TcRnLinearFuncInKind :: !Type -> TcRnMessage | TcRnLinearFuncInKind is an error that occurs whenever a linear function is specified in a kind. Examples(s): data A :: * %1 -> * Test cases: linearshould_failLinearKind linearshould_failLinearKind2 linearshould_failLinearKind3
TcRnForAllEscapeError :: !Type -> !Kind -> TcRnMessage | TcRnForAllEscapeError is an error that occurs whenever a quantified type's kind mentions quantified type variable. Examples(s): type T :: TYPE (BoxedRep l) data T = MkT Test cases: unlifted-datatypesshould_failUnlDataNullaryPoly

TcRnVDQInTermType :: !(Maybe Type) -> TcRnMessage

TcRnVDQInTermType is an error that occurs whenever a visible dependent quantification is specified in the type of a term.

Examples(s): a = (undefined :: forall k -> k -> Type) @Int

Test cases: dependentshould_failT15859 dependentshould_failT16326_Fail1 dependentshould_failT16326_Fail2 dependentshould_failT16326_Fail3 dependentshould_failT16326_Fail4 dependentshould_failT16326_Fail5 dependentshould_failT16326_Fail6 dependentshould_failT16326_Fail7 dependentshould_failT16326_Fail8 dependentshould_failT16326_Fail9 dependentshould_failT16326_Fail10 dependentshould_failT16326_Fail11 dependentshould_failT16326_Fail12 dependentshould_failT17687 dependentshould_failT18271

TcRnBadQuantPredHead :: !Type -> TcRnMessage | TcRnBadQuantPredHead is an error that occurs whenever a quantified predicate lacks a class or type variable head. Examples(s): class (forall a. A t a => A t [a]) => B t where type A t a :: Constraint Test cases: quantified-constraints/T16474
TcRnIllegalTupleConstraint :: !Type -> TcRnMessage | TcRnIllegalTupleConstraint is an error that occurs whenever an illegal tuple constraint is specified. Examples(s): g :: ((Show a, Num a), Eq a) => a -> a g = undefined Test cases: typecheckshould_failtcfail209a
TcRnNonTypeVarArgInConstraint :: !Type -> TcRnMessage | TcRnNonTypeVarArgInConstraint is an error that occurs whenever a non type-variable argument is specified in a constraint. Examples(s): data T instance Eq Int => Eq T Test cases: ghciscriptsT13202 ghciscriptsT13202a polykinds/T12055a typecheckshould_failT10351 typecheckshould_failT19187 typecheckshould_failT6022 typecheckshould_failT8883
TcRnIllegalImplicitParam :: !Type -> TcRnMessage | TcRnIllegalImplicitParam is an error that occurs whenever an illegal implicit parameter is specified. Examples(s): type Bla = ?x::Int data T = T instance Bla => Eq T Test cases: polykinds/T11466 typecheckshould_failT8912 typecheckshould_failtcfail041 typecheckshould_failtcfail211 typecheckshould_failtcrun045
TcRnIllegalConstraintSynonymOfKind :: !Type -> TcRnMessage | TcRnIllegalConstraintSynonymOfKind is an error that occurs whenever an illegal constraint synonym of kind is specified. Examples(s): type Showish = Show f :: (Showish a) => a -> a f = undefined Test cases: typecheckshould_failtcfail209
TcRnIllegalClassInst :: !TyConFlavour -> TcRnMessage | TcRnIllegalClassInst is an error that occurs whenever a class instance is specified for a non-class. Examples(s): type C1 a = (Show (a -> Bool)) instance C1 Int where Test cases: polykinds/T13267
TcRnOversaturatedVisibleKindArg :: !Type -> TcRnMessage | TcRnOversaturatedVisibleKindArg is an error that occurs whenever an illegal oversaturated visible kind argument is specified. Examples(s): type family F2 :: forall (a :: Type). Type where F2 @a = Maybe a Test cases: typecheckshould_failT15793 typecheckshould_failT16255
TcRnBadAssociatedType :: !Name -> !Name -> TcRnMessage | TcRnBadAssociatedType is an error that occurs whenever a class doesn't have an associated type. Examples(s): $(do d <- instanceD (cxt []) (conT ''Eq `appT` conT ''Foo) [tySynInstD $ tySynEqn Nothing (conT ''Rep `appT` conT ''Foo) (conT ''Maybe)] return [d]) ======> instance Eq Foo where type Rep Foo = Maybe Test cases: th/T12387a

TcRnForAllRankErr :: !Rank -> !Type -> TcRnMessage

TcRnForAllRankErr is an error that occurs whenever an illegal ranked type is specified.

Examples(s): foo :: (a,b) -> (a~b => t) -> (a,b) foo p x = p

Test cases: - ghcishould_runT15806 - indexed-typesshould_failSimpleFail15 - typecheckshould_failT11355 - typecheckshould_failT12083a - typecheckshould_failT12083b - typecheckshould_failT16059c - typecheckshould_failT16059e - typecheckshould_failT17213 - typecheckshould_failT18939_Fail - typecheckshould_failT2538 - typecheckshould_failT5957 - typecheckshould_failT7019 - typecheckshould_failT7019a - typecheckshould_failT7809 - typecheckshould_failT9196 - typecheckshould_failtcfail127 - typecheckshould_failtcfail184 - typecheckshould_failtcfail196 - typecheckshould_failtcfail197

TcRnMonomorphicBindings :: [Name] -> TcRnMessage

TcRnMonomorphicBindings is a warning (controlled by -Wmonomorphism-restriction) that arise when the monomorphism restriction applies to the given bindings.

Examples(s): {-# OPTIONS_GHC -Wmonomorphism-restriction #-}

bar = 10

foo :: Int foo = bar

main :: IO () main = print foo

The example above emits the warning (for `bar`), because without monomorphism restriction the inferred type for `bar` is 'bar :: Num p => p'. This warning tells us that if we were to enable '-XMonomorphismRestriction' we would make `bar` less polymorphic, as its type would become 'bar :: Int', so GHC warns us about that.

Test cases: typecheckshould_compileT13785

TcRnOrphanInstance :: ClsInst -> TcRnMessage | TcRnOrphanInstance is a warning (controlled by -Wwarn-orphans) that arises when a typeclass instance is an "orphan", i.e. if it appears in a module in which neither the class nor the type being instanced are declared in the same module. Examples(s): None Test cases: warningsshould_compileT9178 typecheckshould_compileT4912
TcRnFunDepConflict :: !UnitState -> NonEmpty ClsInst -> TcRnMessage | TcRnFunDepConflict is an error that occurs when there are functional dependencies conflicts between instance declarations. Examples(s): None Test cases: typecheckshould_failT2307 typecheckshould_failtcfail096 typecheckshould_failtcfail202

TcRnDupInstanceDecls :: !UnitState -> NonEmpty ClsInst -> TcRnMessage

TcRnDupInstanceDecls is an error that occurs when there are duplicate instance declarations.

Examples(s): class Foo a where foo :: a -> Int

instance Foo Int where foo = id

instance Foo Int where foo = const 42

Test cases: cabalT12733T12733 typecheckshould_failtcfail035 typecheckshould_failtcfail023 backpackshould_failbkpfail18 typecheckshould_failTcNullaryTCFail typecheckshould_failtcfail036 typecheckshould_failtcfail073 module/mod51 module/mod52 module/mod44

TcRnConflictingFamInstDecls :: NonEmpty FamInst -> TcRnMessage

TcRnConflictingFamInstDecls is an error that occurs when there are conflicting family instance declarations.

Examples(s): None.

Test cases: indexed-typesshould_failExplicitForAllFams4b indexed-typesshould_failNoGood indexed-typesshould_failOver indexed-typesshould_failOverDirectThisMod indexed-typesshould_failOverIndirectThisMod indexed-typesshould_failSimpleFail11a indexed-typesshould_failSimpleFail11b indexed-typesshould_failSimpleFail11c indexed-typesshould_failSimpleFail11d indexed-typesshould_failSimpleFail2a indexed-typesshould_failSimpleFail2b indexed-typesshould_failT13092/T13092 indexed-typesshould_failT13092c/T13092c indexed-typesshould_failT14179 indexed-typesshould_failT2334A indexed-typesshould_failT2677 indexed-typesshould_failT3330b indexed-typesshould_failT4246 indexed-typesshould_failT7102a indexed-typesshould_failT9371 polykinds/T7524 typecheckshould_failUnliftedNewtypesOverlap

TcRnFamInstNotInjective :: InjectivityErrReason -> TyCon -> NonEmpty CoAxBranch -> TcRnMessage |
TcRnBangOnUnliftedType :: !Type -> TcRnMessage | TcRnBangOnUnliftedType is a warning (controlled by -Wredundant-strictness-flags) that occurs when a strictness annotation is applied to an unlifted type. Example(s): data T = MkT !Int# -- Strictness flag has no effect on unlifted types Test cases: typecheckshould_compileT20187a typecheckshould_compileT20187b
TcRnLazyBangOnUnliftedType :: !Type -> TcRnMessage | TcRnLazyBangOnUnliftedType is a warning (controlled by -Wredundant-strictness-flags) that occurs when a lazy annotation is applied to an unlifted type. Example(s): data T = MkT ~Int# -- Lazy flag has no effect on unlifted types Test cases: typecheckshould_compileT21951a typecheckshould_compileT21951b
TcRnMultipleDefaultDeclarations :: [LDefaultDecl GhcRn] -> TcRnMessage | TcRnMultipleDefaultDeclarations is an error that occurs when a module has more than one default declaration. Example: default (Integer, Int) default (Double, Float) -- 2nd default declaration not allowed Text cases: module/mod58
TcRnBadDefaultType :: Type -> [Class] -> TcRnMessage | TcRnBadDefaultType is an error that occurs when a type used in a default declaration does not have an instance for any of the applicable classes. Example(s): data Foo default (Foo) Test cases: typecheckshould_failT11974b
TcRnPatSynBundledWithNonDataCon :: TcRnMessage | TcRnPatSynBundledWithNonDataCon is an error that occurs when a module's export list bundles a pattern synonym with a type that is not a proper `data` or `newtype` construction. Example(s): module Foo (MyClass(.., P)) where pattern P = Nothing class MyClass a where foo :: a -> Int Test cases: patsynshould_failexport-class

TcRnPatSynBundledWithWrongType :: Type -> Type -> TcRnMessage

TcRnPatSynBundledWithWrongType is an error that occurs when the export list of a module has a pattern synonym bundled with a type that does not match the type of the pattern synonym.

Example(s): module Foo (R(P,x)) where data Q = Q Int data R = R pattern P{x} = Q x

Text cases: patsynshould_failexport-ps-rec-sel patsynshould_failexport-type-synonym patsynshould_failexport-type

TcRnDupeModuleExport :: ModuleName -> TcRnMessage | TcRnDupeModuleExport is a warning controlled by `-Wduplicate-exports` that occurs when a module appears more than once in an export list. Example(s): module Foo (module Bar, module Bar) import Bar Text cases: None
TcRnExportedModNotImported :: ModuleName -> TcRnMessage | TcRnExportedModNotImported is an error that occurs when an export list contains a module that is not imported. Example(s): None Text cases: module/mod135 module/mod8 renameshould_failrnfail028 backpackshould_failbkpfail48
TcRnNullExportedModule :: ModuleName -> TcRnMessage | TcRnNullExportedModule is a warning controlled by -Wdodgy-exports that occurs when an export list contains a module that has no exports. Example(s): module Foo (module Bar) where import Bar () Test cases: None
TcRnMissingExportList :: ModuleName -> TcRnMessage | TcRnMissingExportList is a warning controlled by -Wmissing-export-lists that occurs when a module does not have an explicit export list. Example(s): None Test cases: typecheckshould_failMissingExportList03
TcRnExportHiddenComponents :: IE GhcPs -> TcRnMessage | TcRnExportHiddenComponents is an error that occurs when an export contains constructor or class methods that are not visible. Example(s): None Test cases: None
TcRnDuplicateExport :: GreName -> IE GhcPs -> IE GhcPs -> TcRnMessage | TcRnDuplicateExport is a warning (controlled by -Wduplicate-exports) that occurs when an identifier appears in an export list more than once. Example(s): None Test cases: module/MultiExport module/mod128 module/mod14 module/mod5 overloadedrecfldsshould_failDuplicateExports patsynshould_compileT11959
TcRnExportedParentChildMismatch :: Name -> TyThing -> GreName -> [Name] -> TcRnMessage | TcRnExportedParentChildMismatch is an error that occurs when an export is bundled with a parent that it does not belong to Example(s): module Foo (T(a)) where data T a = True Test cases: module/T11970 module/T11970B module/mod17 module/mod3 overloadedrecfldsshould_failNoParent

TcRnConflictingExports

TcRnConflictingExports is an error that occurs when different identifiers that have the same name are being exported by a module.

Example(s): module Foo (Bar.f, module Baz) where import qualified Bar (f) import Baz (f)

Test cases: module/mod131 module/mod142 module/mod143 module/mod144 module/mod145 module/mod146 module/mod150 module/mod155 overloadedrecfldsshould_failT14953 overloadedrecfldsshould_failoverloadedrecfldsfail10 renameshould_failrnfail029 renameshould_failrnfail040 typecheckshould_failT16453E2 typecheckshould_failtcfail025 typecheckshould_failtcfail026

Fields

- :: OccName

  Occurrence name shared by both exports

- -> GreName

  Name of first export

- -> GlobalRdrElt

  Provenance for definition site of first export

- -> IE GhcPs

  Export decl of first export

- -> GreName

  Name of second export

- -> GlobalRdrElt

  Provenance for definition site of second export

- -> IE GhcPs

  Export decl of second export

- -> TcRnMessage

TcRnAmbiguousField

TcRnAmbiguousField is a warning controlled by -Wambiguous-fields occurring when a record update's type cannot be precisely determined. This will not be supported by -XDuplicateRecordFields in future releases.

Example(s): data Person = MkPerson { personId :: Int, name :: String } data Address = MkAddress { personId :: Int, address :: String } bad1 x = x { personId = 4 } :: Person -- ambiguous bad2 (x :: Person) = x { personId = 4 } -- ambiguous good x = (x :: Person) { personId = 4 } -- not ambiguous

Test cases: overloadedrecfldsshould_failoverloadedrecfldsfail06

Fields

- :: HsExpr GhcRn

  Field update

- -> TyCon

  Record type

- -> TcRnMessage

TcRnMissingFields :: ConLike -> [(FieldLabelString, TcType)] -> TcRnMessage

TcRnMissingFields is a warning controlled by -Wmissing-fields occurring when the intialisation of a record is missing one or more (lazy) fields.

Example(s): data Rec = Rec { a :: Int, b :: String, c :: Bool } x = Rec { a = 1, b = "two" } -- missing field `c`

Test cases: deSugarshould_compileT13870 deSugarshould_compileds041 patsynshould_compileT11283 renameshould_compileT5334 renameshould_compileT12229 renameshould_compileT5892a warningsshould_failWerrorFail2

TcRnFieldUpdateInvalidType :: [(FieldLabelString, TcType)] -> TcRnMessage

TcRnFieldUpdateInvalidType is an error occurring when an updated field's type mentions something that is outside the universally quantified variables of the data constructor, such as an existentially quantified type.

Example(s): data X = forall a. MkX { f :: a } x = (MkX ()) { f = False }

Test cases: patsynshould_failrecords-exquant typecheckshould_failT3323

TcRnNoConstructorHasAllFields :: [FieldLabelString] -> TcRnMessage

TcRnNoConstructorHasAllFields is an error that occurs when a record update has fields that no single constructor encompasses.

Example(s): data Foo = A { x :: Bool } | B { y :: Int } foo = (A False) { x = True, y = 5 }

Test cases: overloadedrecfldsshould_failoverloadedrecfldsfail08 patsynshould_failmixed-pat-syn-record-sels typecheckshould_failT7989

TcRnMixedSelectors |

Fields

- :: Name

  Record

- -> [Id]

  Record selectors

- -> Name

  Pattern synonym

- -> [Id]

  Pattern selectors

- -> TcRnMessage

TcRnMissingStrictFields :: ConLike -> [(FieldLabelString, TcType)] -> TcRnMessage |
TcRnNoPossibleParentForFields :: [LHsRecUpdField GhcRn] -> TcRnMessage |
TcRnBadOverloadedRecordUpdate :: [LHsRecUpdField GhcRn] -> TcRnMessage |
TcRnStaticFormNotClosed :: Name -> NotClosedReason -> TcRnMessage |
TcRnSpecialClassInst | TcRnSpecialClassInst is an error that occurs when a user attempts to define an instance for a built-in typeclass such as `Coercible`, `Typeable`, or `KnownNat`, outside of a signature file. Test cases: derivingshould_failT9687 derivingshould_failT14916 polykinds/T8132 typecheckshould_failTcCoercibleFail2 typecheckshould_failT12837 typecheckshould_failT14390

Fields

- :: !Class
- -> !Bool

  Whether the error is due to Safe Haskell being enabled

- -> TcRnMessage

TcRnUselessTypeable :: TcRnMessage | TcRnUselessTypeable is a warning (controlled by -Wderiving-typeable) that occurs when trying to derive an instance of the `Typeable` class. Deriving `Typeable` is no longer necessary (hence the "useless") as all types automatically derive `Typeable` in modern GHC versions. Example(s): None. Test cases: warningsshould_compileDerivingTypeable
TcRnDerivingDefaults :: !Class -> TcRnMessage | TcRnDerivingDefaults is a warning (controlled by -Wderiving-defaults) that occurs when both `DeriveAnyClass` and `GeneralizedNewtypeDeriving` are enabled, and therefore GHC defaults to `DeriveAnyClass`, which might not be what the user wants. Example(s): None. Test cases: typecheckshould_compileT15839a derivingshould_compileT16179

TcRnNonUnaryTypeclassConstraint :: !(LHsSigType GhcRn) -> TcRnMessage

TcRnNonUnaryTypeclassConstraint is an error that occurs when GHC encounters a non-unary constraint when trying to derive a typeclass.

Example(s): class A deriving instance A data B deriving A -- We cannot derive A, is not unary (i.e. 'class A a').

Test cases: derivingshould_failT7959 derivingshould_faildrvfail005 derivingshould_faildrvfail009 derivingshould_faildrvfail006

TcRnPartialTypeSignatures :: !SuggestPartialTypeSignatures -> !ThetaType -> TcRnMessage

TcRnPartialTypeSignatures is a warning (controlled by -Wpartial-type-signatures) that occurs when a wildcard '_' is found in place of a type in a signature or a type class derivation

Example(s): foo :: _ -> Int foo = ...

deriving instance _ => Eq (Foo a)

Test cases: dependentshould_compileT11241 dependentshould_compileT15076 dependentshould_compileT14880-2 typecheckshould_compileT17024 typecheckshould_compileT10072 partial-sigsshould_failTidyClash2 partial-sigsshould_failDefaulting1MROff partial-sigsshould_failWildcardsInPatternAndExprSig partial-sigsshould_failT10615 partial-sigsshould_failT14584a partial-sigsshould_failTidyClash partial-sigsshould_failT11122 partial-sigsshould_failT14584 partial-sigsshould_failT10045 partial-sigsshould_failPartialTypeSignaturesDisabled partial-sigsshould_failT10999 partial-sigsshould_failExtraConstraintsWildcardInExpressionSignature partial-sigsshould_failExtraConstraintsWildcardInPatternSplice partial-sigsshould_failWildcardInstantiations partial-sigsshould_runT15415 partial-sigsshould_compileT10463 partial-sigsshould_compileT15039a partial-sigsshould_compileT16728b partial-sigsshould_compileT15039c partial-sigsshould_compileT10438 partial-sigsshould_compileSplicesUsed partial-sigsshould_compileT18008 partial-sigsshould_compileExprSigLocal partial-sigsshould_compileT11339a partial-sigsshould_compileT11670 partial-sigsshould_compileWarningWildcardInstantiations partial-sigsshould_compileT16728 partial-sigsshould_compileT12033 partial-sigsshould_compileT15039b partial-sigsshould_compileT10403 partial-sigsshould_compileT11192 partial-sigsshould_compileT16728a partial-sigsshould_compileTypedSplice partial-sigsshould_compileT15039d partial-sigsshould_compileT11016 partial-sigsshould_compileT13324_compile2 linearshould_failLinearPartialSig polykinds/T14265 polykinds/T14172

TcRnCannotDeriveInstance

TcRnCannotDeriveInstance is an error that occurs every time a typeclass instance can't be derived. The `DeriveInstanceErrReason` will contain the specific reason this error arose.

Example(s): None.

Test cases: genericsT10604T10604_no_PolyKinds derivingshould_faildrvfail009 derivingshould_faildrvfail-functor2 derivingshould_failT10598_fail3 derivingshould_failderiving-via-fail2 derivingshould_failderiving-via-fail derivingshould_failT16181

Fields

- :: !Class

  The typeclass we are trying to derive an instance for

- -> [Type]

  The typeclass arguments, if any.

- -> !(Maybe (DerivStrategy GhcTc))

  The derivation strategy, if any.

- -> !UsingGeneralizedNewtypeDeriving

  Is '-XGeneralizedNewtypeDeriving' enabled?

- -> !DeriveInstanceErrReason

  The specific reason why we couldn't derive an instance for the class.

- -> TcRnMessage

TcRnLazyGADTPattern :: TcRnMessage | TcRnLazyGADTPattern is an error that occurs when a user writes a nested GADT pattern match inside a lazy (~) pattern. Test case: gadt/lazypat
TcRnArrowProcGADTPattern :: TcRnMessage | TcRnArrowProcGADTPattern is an error that occurs when a user writes a GADT pattern inside arrow proc notation. Test case: arrowsshould_failarrowfail004.
TcRnForallIdentifier :: RdrName -> TcRnMessage | TcRnForallIdentifier is a warning (controlled with -Wforall-identifier) that occurs when a definition uses `forall` as an identifier. Example: forall x = () g forall = () Test cases: T20609 T20609a T20609b T20609c T20609d
TcRnTypeEqualityOutOfScope :: TcRnMessage | TcRnTypeEqualityOutOfScope is a warning (controlled by -Wtype-equality-out-of-scope) that occurs when the type equality (a ~ b) is not in scope. Test case: T18862b
TcRnTypeEqualityRequiresOperators :: TcRnMessage | TcRnTypeEqualityRequiresOperators is a warning (controlled by -Wtype-equality-requires-operators) that occurs when the type equality (a ~ b) is used without the TypeOperators extension. Example: {-# LANGUAGE NoTypeOperators #-} f :: (a ~ b) => a -> b Test case: T18862a
TcRnIllegalTypeOperator :: !SDoc -> !RdrName -> TcRnMessage | TcRnIllegalTypeOperator is an error that occurs when a type operator is used without the TypeOperators extension. Example: {-# LANGUAGE NoTypeOperators #-} f :: Vec a n -> Vec a m -> Vec a (n + m) Test case: T12811

TcRnIllegalTypeOperatorDecl :: !RdrName -> TcRnMessage

TcRnIllegalTypeOperatorDecl is an error that occurs when a type or class operator is declared without the TypeOperators extension.

See Note [Type and class operator definitions]

Example: {-# LANGUAGE Haskell2010 #-} {-# LANGUAGE MultiParamTypeClasses #-}

module T3265 where

data a :+: b = Left a | Right b

class a :*: b where {}

Test cases: T3265, tcfail173

TcRnGADTMonoLocalBinds :: TcRnMessage | TcRnGADTMonoLocalBinds is a warning controlled by -Wgadt-mono-local-binds that occurs when pattern matching on a GADT when -XMonoLocalBinds is off. Example(s): None Test cases: T20485, T20485a
TcRnNotInScope | The TcRnNotInScope constructor is used for various not-in-scope errors. See `NotInScopeError` for more details.

Fields

- :: NotInScopeError

  what the problem is

- -> RdrName

  the name that is not in scope

- -> [ImportError]

  import errors that are relevant

- -> [GhcHint]

  hints, e.g. enable DataKinds to refer to a promoted data constructor

- -> TcRnMessage

TcRnUntickedPromotedThing :: UntickedPromotedThing -> TcRnMessage | TcRnUntickedPromotedThing is a warning (controlled with -Wunticked-promoted-constructors) that is triggered by an unticked occurrence of a promoted data constructor. Examples: data A = MkA type family F (a :: A) where { F MkA = Bool } type B = [ Int, Bool ] Test cases: T9778, T19984.
TcRnIllegalBuiltinSyntax | TcRnIllegalBuiltinSyntax is an error that occurs when built-in syntax appears in an unexpected location, e.g. as a data constructor or in a fixity declaration. Examples: infixl 5 : data P = (,) Test cases: rnfail042, T14907b, T15124, T15233.

Fields

- :: SDoc

  what kind of thing this is (a binding, fixity declaration, ...)

- -> RdrName
- -> TcRnMessage

TcRnWarnDefaulting | TcRnWarnDefaulting is a warning (controlled by -Wtype-defaults) that is triggered whenever a Wanted typeclass constraint is solving through the defaulting of a type variable. Example: one = show 1 -- We get Wanteds Show a0, Num a0, and default a0 to Integer. Test cases: none (which are really specific to defaulting), but see e.g. tcfail204.

Fields

- :: [Ct]

  Wanted constraints in which defaulting occurred

- -> Maybe TyVar

  The type variable being defaulted

- -> Type

  The default type

- -> TcRnMessage

TcRnIncorrectNameSpace | TcRnIncorrectNameSpace is an error that occurs when a `Name` is used in the incorrect `NameSpace`, e.g. a type constructor or class used in a term, or a term variable used in a type. Example: f x = Int Test cases: T18740a, T20884.

Fields

- :: Name
- -> Bool

  whether the error is happening in a Template Haskell tick (so we should give a Template Haskell hint)

- -> TcRnMessage

TcRnForeignImportPrimExtNotSet :: ForeignImport GhcRn -> TcRnMessage |
TcRnForeignImportPrimSafeAnn :: ForeignImport GhcRn -> TcRnMessage |
TcRnForeignFunctionImportAsValue :: ForeignImport GhcRn -> TcRnMessage |
TcRnFunPtrImportWithoutAmpersand :: ForeignImport GhcRn -> TcRnMessage |
TcRnIllegalForeignDeclBackend :: Either (ForeignExport GhcRn) (ForeignImport GhcRn) -> Backend -> ExpectedBackends -> TcRnMessage |
TcRnUnsupportedCallConv :: Either (ForeignExport GhcRn) (ForeignImport GhcRn) -> UnsupportedCallConvention -> TcRnMessage |
TcRnIllegalForeignType :: !(Maybe ArgOrResult) -> !IllegalForeignTypeReason -> TcRnMessage |
TcRnInvalidCIdentifier :: !CLabelString -> TcRnMessage |
TcRnExpectedValueId :: !TcTyThing -> TcRnMessage |
TcRnNotARecordSelector :: !Name -> TcRnMessage |
TcRnRecSelectorEscapedTyVar :: !OccName -> TcRnMessage |
TcRnPatSynNotBidirectional :: !Name -> TcRnMessage |
TcRnSplicePolymorphicLocalVar :: !Id -> TcRnMessage |
TcRnIllegalDerivingItem :: !(LHsSigType GhcRn) -> TcRnMessage |
TcRnUnexpectedAnnotation :: !(HsType GhcRn) -> !HsSrcBang -> TcRnMessage |
TcRnIllegalRecordSyntax :: !(HsType GhcRn) -> TcRnMessage |
TcRnUnexpectedTypeSplice :: !(HsType GhcRn) -> TcRnMessage |
TcRnInvalidVisibleKindArgument |

Fields

- :: !(LHsType GhcRn)

  The visible kind argument

- -> !Type

  Target of the kind application

- -> TcRnMessage

TcRnTooManyBinders :: !Kind -> ![LHsTyVarBndr () GhcRn] -> TcRnMessage |
TcRnDifferentNamesForTyVar :: !Name -> !Name -> TcRnMessage |
TcRnInvalidReturnKind |

Fields

- :: !DataSort

  classification of thing being returned

- -> !AllowedDataResKind

  allowed kind

- -> !Kind

  the return kind

- -> !(Maybe SuggestUnliftedTypes)

  suggested extension

- -> TcRnMessage

TcRnClassKindNotConstraint :: !Kind -> TcRnMessage |
TcRnUnpromotableThing :: !Name -> !PromotionErr -> TcRnMessage |
TcRnMatchesHaveDiffNumArgs |

Fields

- :: !(HsMatchContext GhcTc)

  Pattern match specifics

- -> !MatchArgBadMatches
- -> TcRnMessage

TcRnCannotBindScopedTyVarInPatSig :: !(NonEmpty (Name, TcTyVar)) -> TcRnMessage |
TcRnCannotBindTyVarsInPatBind :: !(NonEmpty (Name, TcTyVar)) -> TcRnMessage |
TcRnTooManyTyArgsInConPattern |

Fields

- :: !ConLike
- -> !Int

  Expected number of args

- -> !Int

  Actual number of args

- -> TcRnMessage

TcRnMultipleInlinePragmas |

Fields

- :: !Id

  Target of the pragmas

- -> !(LocatedA InlinePragma)

  The first pragma

- -> !(NonEmpty (LocatedA InlinePragma))

  Other pragmas

- -> TcRnMessage

TcRnUnexpectedPragmas :: !Id -> !(NonEmpty (LSig GhcRn)) -> TcRnMessage |
TcRnNonOverloadedSpecialisePragma :: !(LIdP GhcRn) -> TcRnMessage |
TcRnSpecialiseNotVisible :: !Name -> TcRnMessage |
TcRnNameByTemplateHaskellQuote :: !RdrName -> TcRnMessage |
TcRnIllegalBindingOfBuiltIn :: !OccName -> TcRnMessage |
TcRnPragmaWarning |

Fields

- :: { pragma_warning_occ :: OccName
- , pragma_warning_msg :: WarningTxt GhcRn
- , pragma_warning_import_mod :: ModuleName
- , pragma_warning_defined_mod :: ModuleName
- } -> TcRnMessage

TcRnIllegalHsigDefaultMethods | TcRnIllegalHsigDefaultMethods is an error that occurs when a binding for a class default method is provided in a Backpack signature file. Test case: bkpfail40

Fields

- :: !Name

  `Name` of the class

- -> NonEmpty (LHsBind GhcRn)

  default methods

- -> TcRnMessage

TcRnBadGenericMethod | TcRnBadGenericMethod This test ensures that if you provide a "more specific" type signatures for the default method, you must also provide a binding. Example: {-# LANGUAGE DefaultSignatures #-} class C a where meth :: a default meth :: Num a => a meth = 0 Test case: testsuiteteststypecheckshould_failMissingDefaultMethodBinding.hs

Fields

- :: !Name

  `Name` of the class

- -> !Name

  Problematic method

- -> TcRnMessage

TcRnWarningMinimalDefIncomplete :: ClassMinimalDef -> TcRnMessage | TcRnWarningMinimalDefIncomplete is a warning that one must specify which methods must be implemented by all instances. Example: class Cheater a where -- WARNING LINE cheater :: a {-# MINIMAL #-} -- warning! Test case: testsuitetestswarningsminimalWarnMinimal.hs:
TcRnDefaultMethodForPragmaLacksBinding | TcRnDefaultMethodForPragmaLacksBinding is an error that occurs when a default method pragma is missing an accompanying binding. Test cases: testsuiteteststypecheckshould_failT5084.hs testsuiteteststypecheckshould_failT2354.hs

Fields

- :: Id

  method

- -> Sig GhcRn

  the pragma

- -> TcRnMessage

TcRnIgnoreSpecialisePragmaOnDefMethod :: !Name -> TcRnMessage | TcRnIgnoreSpecialisePragmaOnDefMethod is a warning that occurs when a specialise pragma is put on a default method. Test cases: none
TcRnBadMethodErr | TcRnBadMethodErr is an error that happens when one attempts to provide a method in a class instance, when the class doesn't have a method by that name. Test case: testsuiteteststh/T12387

Fields

- :: { badMethodErrClassName :: !Name
- , badMethodErrMethodName :: !Name
- } -> TcRnMessage

TcRnNoExplicitAssocTypeOrDefaultDeclaration :: Name -> TcRnMessage | TcRnNoExplicitAssocTypeOrDefaultDeclaration is an error that occurs when a class instance does not provide an expected associated type or default declaration. Test cases: testsuitetestsderivingshould_compileT14094 testsuitetestsindexed-typesshould_compileSimple2 testsuiteteststypecheckshould_compiletc254

TcRnIllegalNewtype

TcRnIllegalNewtype is an error that occurs when a newtype:

- Does not have exactly one field, or
- is non-linear, or
- is a GADT, or
- has a context in its constructor's type, or
- has existential type variables in its constructor's type, or
- has strictness annotations.

Test cases: testsuitetestsgadt/T14719 testsuitetestsindexed-typesshould_failT14033 testsuitetestsindexed-typesshould_failT2334A testsuitetestslinearshould_failLinearGADTNewtype testsuitetestsparsershould_failreadFail008 testsuitetestspolykinds/T11459 testsuiteteststypecheckshould_failT15523 testsuiteteststypecheckshould_failT15796 testsuiteteststypecheckshould_failT17955 testsuiteteststypecheckshould_failT18891a testsuiteteststypecheckshould_failT21447 testsuiteteststypecheckshould_failtcfail156

Fields

- :: DataCon
- -> Bool

  True if linear types enabled

- -> IllegalNewtypeReason
- -> TcRnMessage

TcRnIllegalTypeData :: TcRnMessage | TcRnIllegalTypeData is an error that occurs when a `type data` declaration occurs without the TypeOperators extension. See Note [Type data declarations] Test case: testsuiteteststype-datashould_failTDNoPragma

TcRnTypeDataForbids :: !TypeDataForbids -> TcRnMessage

TcRnTypeDataForbids is an error that occurs when a `type data` declaration contains `data` declaration features that are forbidden in a `type data` declaration.

See Note [Type data declarations]

Test cases: testsuiteteststype-datashould_failTDDeriving testsuiteteststype-datashould_failTDRecordsGADT testsuiteteststype-datashould_failTDRecordsH98 testsuiteteststype-datashould_failTDStrictnessGADT testsuiteteststype-datashould_failTDStrictnessH98

TcRnTypedTHWithPolyType :: !TcType -> TcRnMessage | TcRnTypedTHWithPolyType is an error that signifies the illegal use of a polytype in a typed template haskell expression. Example(s): bad :: (forall a. a -> a) -> () bad = $$( [|| _ -> () ||] ) Test cases: th/T11452
TcRnSpliceThrewException | TcRnSpliceThrewException is an error that occurrs when running a template haskell splice throws an exception. Example(s): Test cases: annotationsshould_failannfail12 perfcompilerMultiLayerModulesTH_Make perfcompilerMultiLayerModulesTH_OneShot th/T10796b th/T19470 th/T19709d th/T5358 th/T5976 th/T7276a th/T8987 th/TH_exn1 th/TH_exn2 th/TH_runIO

Fields

- :: !SplicePhase
- -> !SomeException
- -> !String

  Result of showing the exception (cannot be done safely outside IO)

- -> !(LHsExpr GhcTc)
- -> !Bool
- -> TcRnMessage

TcRnInvalidTopDecl :: !(HsDecl GhcPs) -> TcRnMessage | TcRnInvalidTopDecl is a template haskell error occurring when one of the `Dec`s passed to `addTopDecls` is not a function, value, annotation, or foreign import declaration. Example(s): Test cases:
TcRnNonExactName :: !RdrName -> TcRnMessage | TcRnNonExactName is a template haskell error for when a declaration being added is bound to a name that is not fully known. Example(s): Test cases:
TcRnAddInvalidCorePlugin | TcRnAddInvalidCorePlugin is a template haskell error indicating that a core plugin being added has an invalid module due to being in the current package. Example(s): Test cases:

Fields

- :: !String

  Module name

- -> TcRnMessage

TcRnAddDocToNonLocalDefn :: !DocLoc -> TcRnMessage | TcRnAddDocToNonLocalDefn is a template haskell error for documentation being added to a definition which is not in the current module. Example(s): Test cases: showIfaceshould_failTHPutDocExternal
TcRnFailedToLookupThInstName :: !Type -> !LookupTHInstNameErrReason -> TcRnMessage | TcRnFailedToLookupThInstName is a template haskell error that occurrs when looking up an instance fails. Example(s): Test cases: showIfaceshould_failTHPutDocNonExistent
TcRnCannotReifyInstance :: !Type -> TcRnMessage | TcRnCannotReifyInstance is a template haskell error for when an instance being reified via `reifyInstances` is not a class constraint or type family application. Example(s): Test cases:
TcRnCannotReifyOutOfScopeThing :: !Name -> TcRnMessage | TcRnCannotReifyOutOfScopeThing is a template haskell error indicating that the given name is not in scope and therefore cannot be reified. Example(s): Test cases: th/T16976f
TcRnCannotReifyThingNotInTypeEnv :: !Name -> TcRnMessage | TcRnCannotReifyThingNotInTypeEnv is a template haskell error occurring when the given name is not in the type environment and therefore cannot be reified. Example(s): Test cases:
TcRnNoRolesAssociatedWithThing :: !TcTyThing -> TcRnMessage | TcRnNoRolesAssociatedWithName is a template haskell error for when the user tries to reify the roles of a given name but it is not something that has roles associated with it. Example(s): Test cases:
TcRnCannotRepresentType :: !UnrepresentableTypeDescr -> !Type -> TcRnMessage | TcRnCannotRepresentThing is a template haskell error indicating that a type cannot be reified because it does not have a representation in template haskell. Example(s): Test cases:

TcRnRunSpliceFailure

TcRnRunSpliceFailure is an error indicating that a template haskell splice failed to be converted into a valid expression.

Example(s):

Test cases: th/T10828a th/T10828b th/T12478_4 th/T15270A th/T15270B th/T16895a th/T16895b th/T16895c th/T16895d th/T16895e th/T17379a th/T17379b th/T18740d th/T2597b th/T2674 th/T3395 th/T7484 th/T7667a th/TH_implicitParamsErr1 th/TH_implicitParamsErr2 th/TH_implicitParamsErr3 th/TH_invalid_add_top_decl

Fields

- :: !(Maybe String)

  Name of the function used to run the splice

- -> !RunSpliceFailReason
- -> TcRnMessage

TcRnReportCustomQuasiError :: !Bool -> !String -> TcRnMessage | TcRnUserErrReported is an error or warning thrown using `qReport` from the `Quasi` instance of `TcM`. Example(s): Test cases:
TcRnInterfaceLookupError :: !Name -> !SDoc -> TcRnMessage | TcRnInterfaceLookupError is an error resulting from looking up a name in an interface file. Example(s): Test cases:

TcRnUnsatisfiedMinimalDef :: ClassMinimalDef -> TcRnMessage

TcRnUnsatisfiedMinimalDef is a warning that occurs when a class instance is missing methods that are required by the minimal definition.

Example: class C a where foo :: a -> a instance C () -- | foo needs to be defined here

Test cases: testsuiteteststypecheckprog001typecheck.prog001 testsuiteteststypecheckshould_compiletc126 testsuiteteststypecheckshould_compileT7903 testsuiteteststypecheckshould_compiletc116 testsuiteteststypecheckshould_compiletc175 testsuiteteststypecheckshould_compileHasKey testsuiteteststypecheckshould_compiletc125 testsuiteteststypecheckshould_compiletc078 testsuiteteststypecheckshould_compiletc161 testsuiteteststypecheckshould_failT5051 testsuiteteststypecheckshould_compileT21583 testsuitetestsbackpackshould_compilebkp47 testsuitetestsbackpackshould_failbkpfail25 testsuitetestsparsershould_compileT2245 testsuitetestsparsershould_compileread014 testsuitetestsindexed-typesshould_compileClass3 testsuitetestsindexed-typesshould_compileSimple2 testsuitetestsindexed-typesshould_failT7862 testsuitetestsderivingshould_compilederiving-1935 testsuitetestsderivingshould_compileT9968a testsuitetestsderivingshould_compiledrv003 testsuitetestsderivingshould_compileT4966 testsuitetestsderivingshould_compileT14094 testsuitetestsperfcompilerT15304 testsuitetestswarningsminimalWarnMinimal testsuitetestssimplCoreshould_compilesimpl020 testsuitetestsdeSugarshould_compileT14546d testsuitetestsghciscriptsT5820 testsuitetestsghciscriptsghci019

TcRnMisplacedInstSig :: Name -> LHsSigType GhcRn -> TcRnMessage | `TcRnMisplacedInstSig` is an error that happens when a method in a class instance is given a type signature, but the user has not enabled the `InstanceSigs` extension. Test case: testsuitetestsmodule/mod45
TcRnBadBootFamInstDecl | `TcRnBadBootFamInstDecl` is an error that is triggered by a type family instance being declared in an hs-boot file. Test case: testsuitetestsindexed-typesshould_failHsBootFam

Fields

- } -> TcRnMessage

TcRnIllegalFamilyInstance :: TyCon -> TcRnMessage | `TcRnIllegalFamilyInstance` is an error that occurs when an associated type or data family is given a top-level instance. Test case: testsuitetestsindexed-typesshould_failT3092
TcRnMissingClassAssoc :: TyCon -> TcRnMessage | `TcRnMissingClassAssoc` is an error that occurs when a class instance for a class with an associated type or data family is missing a corresponding family instance declaration. Test case: testsuitetestsindexed-typesshould_failSimpleFail7
TcRnBadFamInstDecl :: TyCon -> TcRnMessage | `TcRnBadFamInstDecl` is an error that is triggered by a type or data family instance without the `TypeFamilies` extension. Test case: testsuitetestsindexed-typesshould_failBadFamInstDecl
TcRnNotOpenFamily :: TyCon -> TcRnMessage | `TcRnNotOpenFamily` is an error that is triggered by attempting to give a top-level (open) type family instance for a closed type family. Test cases: testsuitetestsindexed-typesshould_failOverlap7 testsuitetestsindexed-typesshould_failOverlap3
TcRnNoRebindableSyntaxRecordDot :: TcRnMessage | TcRnNoRebindableSyntaxRecordDot is an error triggered by an overloaded record update without RebindableSyntax enabled. Example(s): Test cases: parsershould_failRecordDotSyntaxFail5
TcRnNoFieldPunsRecordDot :: TcRnMessage | TcRnNoFieldPunsRecordDot is an error triggered by the use of record field puns in an overloaded record update without enabling NamedFieldPuns. Example(s): print $ a{ foo.bar.baz.quux } Test cases: parsershould_failRecordDotSyntaxFail12
TcRnIllegalStaticExpression :: HsExpr GhcPs -> TcRnMessage | TcRnIllegalStaticExpression is an error thrown when user creates a static pointer via TemplateHaskell without enabling the StaticPointers extension. Example(s): Test cases: th/T14204
TcRnIllegalStaticFormInSplice :: HsExpr GhcPs -> TcRnMessage | TcRnIllegalStaticFormInSplice is an error when a user attempts to define a static pointer in a Template Haskell splice. Example(s): Test cases: th/TH_StaticPointers02
TcRnListComprehensionDuplicateBinding :: Name -> TcRnMessage | TcRnListComprehensionDuplicateBinding is an error triggered by duplicate let-bindings in a list comprehension. Example(s): [ () | let a = 13 | let a = 17 ] Test cases: typecheckshould_failtcfail092

TcRnEmptyStmtsGroup :: EmptyStatementGroupErrReason -> TcRnMessage

TcRnEmptyStmtsGroup is an error triggered by an empty list of statements in a statement block. For more information, see `EmptyStatementGroupErrReason`

Example(s):

() | then ()

do

proc () -> do

Test cases: renameshould_failRnEmptyStatementGroup1

TcRnLastStmtNotExpr :: HsStmtContext GhcRn -> UnexpectedStatement -> TcRnMessage | TcRnLastStmtNotExpr is an error caused by the last statement in a statement block not being an expression. Example(s): do x <- pure () do let x = 5 Test cases: renameshould_failT6060 parsershould_failT3811g parsershould_failreadFail028
TcRnUnexpectedStatementInContext :: HsStmtContext GhcRn -> UnexpectedStatement -> Maybe Extension -> TcRnMessage | TcRnUnexpectedStatementInContext is an error when a statement appears in an unexpected context (e.g. an arrow statement appears in a list comprehension). Example(s): Test cases: parsershould_failreadFail042 parsershould_failreadFail038 parsershould_failreadFail043
TcRnIllegalTupleSection :: TcRnMessage | TcRnIllegalTupleSection is an error triggered by usage of a tuple section without enabling the TupleSections extension. Example(s): (5,) Test cases: renameshould_failrnfail056
TcRnIllegalImplicitParameterBindings :: Either (HsLocalBindsLR GhcPs GhcPs) (HsLocalBindsLR GhcRn GhcPs) -> TcRnMessage | TcRnIllegalImplicitParameterBindings is an error triggered by binding an implicit parameter in an mdo block. Example(s): mdo { let { ?x = 5 }; () } Test cases: renameshould_failRnImplicitBindInMdoNotation
TcRnSectionWithoutParentheses :: HsExpr GhcPs -> TcRnMessage | TcRnSectionWithoutParentheses is an error triggered by attempting to use an operator section without parentheses. Example(s): (`head` x, ()) Test cases: renameshould_failT2490 renameshould_failT5657

TcRnLoopySuperclassSolve

TcRnLoopySuperclassSolve is a warning, controlled by `-Wloopy-superclass-solve`, that is triggered when GHC solves a constraint in a possibly-loopy way, violating the class instance termination rules described in the section "Undecidable instances and loopy superclasses" of the user's guide.

Example:

class Foo f class Foo f => Bar f g instance Bar f f => Bar f (h k)

Test cases: T20666, T20666{a,b}, T22891, T22912.

Fields

- :: CtLoc

  Wanted `CtLoc`

- -> PredType

  Wanted `PredType`

- -> TcRnMessage

TcRnCannotDefaultConcrete :: !FixedRuntimeRepOrigin -> TcRnMessage |

#### Instances

Instances details

Generic TcRnMessage Source # |
Instance details Defined in GHC.Tc.Errors.Types Associated Types type Rep TcRnMessage :: Type -> Type Source # Methods from :: TcRnMessage -> Rep TcRnMessage x Source # to :: Rep TcRnMessage x -> TcRnMessage Source #
Diagnostic TcRnMessage Source # |

Instance details

Defined in GHC.Tc.Errors.Ppr

Associated Types

type DiagnosticOpts TcRnMessage Source #

Methods

defaultDiagnosticOpts :: DiagnosticOpts TcRnMessage Source #

diagnosticMessage :: DiagnosticOpts TcRnMessage -> TcRnMessage -> DecoratedSDoc Source #

diagnosticReason :: TcRnMessage -> DiagnosticReason Source #

diagnosticHints :: TcRnMessage -> [GhcHint] Source #

diagnosticCode :: TcRnMessage -> Maybe DiagnosticCode Source #

type Rep TcRnMessage Source # |

Instance details

Defined in GHC.Tc.Errors.Types

type Rep TcRnMessage = D1 ('MetaData "TcRnMessage" "GHC.Tc.Errors.Types" "ghc" 'False) (((((((C1 ('MetaCons "TcRnUnknownMessage" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UnknownDiagnostic)) :+: C1 ('MetaCons "TcRnMessageWithInfo" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 UnitState) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TcRnMessageDetailed))) :+: (C1 ('MetaCons "TcRnWithHsDocContext" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 HsDocContext) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TcRnMessage)) :+: (C1 ('MetaCons "TcRnSolverReport" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SolverReportWithCtxt) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 DiagnosticReason) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [GhcHint]))) :+: C1 ('MetaCons "TcRnRedundantConstraints" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Id]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (SkolemInfoAnon, Bool)))))) :+: ((C1 ('MetaCons "TcRnInaccessibleCode" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Implication) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SolverReportWithCtxt)) :+: (C1 ('MetaCons "TcRnTypeDoesNotHaveFixedRuntimeRep" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 FixedRuntimeRepProvenance) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ErrInfo))) :+: C1 ('MetaCons "TcRnImplicitLift" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ErrInfo)))) :+: (C1 ('MetaCons "TcRnUnusedPatternBinds" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsBind GhcRn))) :+: (C1 ('MetaCons "TcRnDodgyImports" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RdrName)) :+: C1 ('MetaCons "TcRnDodgyExports" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)))))) :+: (((C1 ('MetaCons "TcRnMissingImportList" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (IE GhcPs))) :+: (C1 ('MetaCons "TcRnUnsafeDueToPlugin" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TcRnModMissingRealSrcSpan" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Module)))) :+: (C1 ('MetaCons "TcRnIdNotExportedFromModuleSig" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Module)) :+: (C1 ('MetaCons "TcRnIdNotExportedFromLocalSig" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: C1 ('MetaCons "TcRnShadowedName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 OccName) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ShadowedNameProvenance))))) :+: ((C1 ('MetaCons "TcRnDuplicateWarningDecls" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LocatedN RdrName)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RdrName)) :+: (C1 ('MetaCons "TcRnSimplifierTooManyIterations" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cts) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 IntWithInf) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 WantedConstraints))) :+: C1 ('MetaCons "TcRnIllegalPatSynDecl" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LIdP GhcPs))))) :+: (C1 ('MetaCons "TcRnLinearPatSyn" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)) :+: (C1 ('MetaCons "TcRnEmptyRecordUpdate" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TcRnIllegalFieldPunning" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Located RdrName)))))))) :+: ((((C1 ('MetaCons "TcRnIllegalWildcardsInRecord" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RecordFieldPart)) :+: (C1 ('MetaCons "TcRnIllegalWildcardInType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Name)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 BadAnonWildcardContext)) :+: C1 ('MetaCons "TcRnDuplicateFieldName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RecordFieldPart) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty RdrName))))) :+: (C1 ('MetaCons "TcRnIllegalViewPattern" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Pat GhcPs))) :+: (C1 ('MetaCons "TcRnCharLiteralOutOfRange" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Char)) :+: C1 ('MetaCons "TcRnIllegalWildcardsInConstructor" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name))))) :+: ((C1 ('MetaCons "TcRnIgnoringAnnotations" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [LAnnDecl GhcRn])) :+: (C1 ('MetaCons "TcRnAnnotationInSafeHaskell" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TcRnInvalidTypeApplication" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LHsWcType GhcRn))))) :+: (C1 ('MetaCons "TcRnTagToEnumMissingValArg" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TcRnTagToEnumUnspecifiedResTy" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: C1 ('MetaCons "TcRnTagToEnumResTyNotAnEnum" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))))) :+: (((C1 ('MetaCons "TcRnTagToEnumResTyTypeData" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: (C1 ('MetaCons "TcRnArrowIfThenElsePredDependsOnResultTy" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TcRnIllegalHsBootFileDecl" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "TcRnRecursivePatternSynonym" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LHsBinds GhcRn))) :+: (C1 ('MetaCons "TcRnPartialTypeSigTyVarMismatch" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LHsSigWcType GhcRn)))) :+: C1 ('MetaCons "TcRnPartialTypeSigBadQuantifier" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Type)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LHsSigWcType GhcRn))))))) :+: ((C1 ('MetaCons "TcRnMissingSignature" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 MissingSignature) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exported) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))) :+: (C1 ('MetaCons "TcRnPolymorphicBinderMissingSig" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: C1 ('MetaCons "TcRnOverloadedSig" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TcIdSigInfo)))) :+: (C1 ('MetaCons "TcRnTupleConstraintInst" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Class)) :+: (C1 ('MetaCons "TcRnAbstractClassInst" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Class)) :+: C1 ('MetaCons "TcRnNoClassInstHead" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)))))))) :+: (((((C1 ('MetaCons "TcRnUserTypeError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)) :+: C1 ('MetaCons "TcRnConstraintInKind" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type))) :+: (C1 ('MetaCons "TcRnUnboxedTupleOrSumTypeFuncArg" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UnboxedTupleOrSum) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)) :+: (C1 ('MetaCons "TcRnLinearFuncInKind" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)) :+: C1 ('MetaCons "TcRnForAllEscapeError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Kind))))) :+: ((C1 ('MetaCons "TcRnVDQInTermType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe Type))) :+: (C1 ('MetaCons "TcRnBadQuantPredHead" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)) :+: C1 ('MetaCons "TcRnIllegalTupleConstraint" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)))) :+: (C1 ('MetaCons "TcRnNonTypeVarArgInConstraint" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)) :+: (C1 ('MetaCons "TcRnIllegalImplicitParam" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)) :+: C1 ('MetaCons "TcRnIllegalConstraintSynonymOfKind" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)))))) :+: (((C1 ('MetaCons "TcRnIllegalClassInst" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyConFlavour)) :+: (C1 ('MetaCons "TcRnOversaturatedVisibleKindArg" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)) :+: C1 ('MetaCons "TcRnBadAssociatedType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name)))) :+: (C1 ('MetaCons "TcRnForAllRankErr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Rank) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)) :+: (C1 ('MetaCons "TcRnMonomorphicBindings" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name])) :+: C1 ('MetaCons "TcRnOrphanInstance" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ClsInst))))) :+: ((C1 ('MetaCons "TcRnFunDepConflict" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 UnitState) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty ClsInst))) :+: (C1 ('MetaCons "TcRnDupInstanceDecls" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 UnitState) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty ClsInst))) :+: C1 ('MetaCons "TcRnConflictingFamInstDecls" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty FamInst))))) :+: (C1 ('MetaCons "TcRnFamInstNotInjective" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 InjectivityErrReason) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TyCon) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty CoAxBranch)))) :+: (C1 ('MetaCons "TcRnBangOnUnliftedType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)) :+: C1 ('MetaCons "TcRnLazyBangOnUnliftedType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type))))))) :+: ((((C1 ('MetaCons "TcRnMultipleDefaultDeclarations" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [LDefaultDecl GhcRn])) :+: (C1 ('MetaCons "TcRnBadDefaultType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Class])) :+: C1 ('MetaCons "TcRnPatSynBundledWithNonDataCon" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "TcRnPatSynBundledWithWrongType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: (C1 ('MetaCons "TcRnDupeModuleExport" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModuleName)) :+: C1 ('MetaCons "TcRnExportedModNotImported" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModuleName))))) :+: ((C1 ('MetaCons "TcRnNullExportedModule" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModuleName)) :+: (C1 ('MetaCons "TcRnMissingExportList" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModuleName)) :+: C1 ('MetaCons "TcRnExportHiddenComponents" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (IE GhcPs))))) :+: (C1 ('MetaCons "TcRnDuplicateExport" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 GreName) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (IE GhcPs)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (IE GhcPs)))) :+: (C1 ('MetaCons "TcRnExportedParentChildMismatch" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TyThing)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 GreName) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name]))) :+: C1 ('MetaCons "TcRnConflictingExports" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 OccName) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 GreName) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 GlobalRdrElt))) :*: ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (IE GhcPs)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 GreName)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 GlobalRdrElt) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (IE GhcPs))))))))) :+: (((C1 ('MetaCons "TcRnAmbiguousField" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsExpr GhcRn)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TyCon)) :+: (C1 ('MetaCons "TcRnMissingFields" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ConLike) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(FieldLabelString, TcType)])) :+: C1 ('MetaCons "TcRnFieldUpdateInvalidType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(FieldLabelString, TcType)])))) :+: (C1 ('MetaCons "TcRnNoConstructorHasAllFields" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FieldLabelString])) :+: (C1 ('MetaCons "TcRnMixedSelectors" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Id])) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Id]))) :+: C1 ('MetaCons "TcRnMissingStrictFields" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ConLike) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(FieldLabelString, TcType)]))))) :+: ((C1 ('MetaCons "TcRnNoPossibleParentForFields" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [LHsRecUpdField GhcRn])) :+: (C1 ('MetaCons "TcRnBadOverloadedRecordUpdate" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [LHsRecUpdField GhcRn])) :+: C1 ('MetaCons "TcRnStaticFormNotClosed" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 NotClosedReason)))) :+: (C1 ('MetaCons "TcRnSpecialClassInst" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Class) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Bool)) :+: (C1 ('MetaCons "TcRnUselessTypeable" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TcRnDerivingDefaults" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Class))))))))) :+: ((((((C1 ('MetaCons "TcRnNonUnaryTypeclassConstraint" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LHsSigType GhcRn))) :+: C1 ('MetaCons "TcRnPartialTypeSignatures" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 SuggestPartialTypeSignatures) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ThetaType))) :+: (C1 ('MetaCons "TcRnCannotDeriveInstance" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Class) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Type])) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe (DerivStrategy GhcTc))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 UsingGeneralizedNewtypeDeriving) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DeriveInstanceErrReason)))) :+: (C1 ('MetaCons "TcRnLazyGADTPattern" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TcRnArrowProcGADTPattern" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "TcRnForallIdentifier" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RdrName)) :+: (C1 ('MetaCons "TcRnTypeEqualityOutOfScope" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TcRnTypeEqualityRequiresOperators" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "TcRnIllegalTypeOperator" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 SDoc) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RdrName)) :+: (C1 ('MetaCons "TcRnIllegalTypeOperatorDecl" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RdrName)) :+: C1 ('MetaCons "TcRnGADTMonoLocalBinds" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "TcRnNotInScope" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 NotInScopeError) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RdrName)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ImportError]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [GhcHint]))) :+: (C1 ('MetaCons "TcRnUntickedPromotedThing" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UntickedPromotedThing)) :+: C1 ('MetaCons "TcRnIllegalBuiltinSyntax" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SDoc) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RdrName)))) :+: (C1 ('MetaCons "TcRnWarnDefaulting" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Ct]) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe TyVar)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) :+: (C1 ('MetaCons "TcRnIncorrectNameSpace" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)) :+: C1 ('MetaCons "TcRnForeignImportPrimExtNotSet" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ForeignImport GhcRn)))))) :+: ((C1 ('MetaCons "TcRnForeignImportPrimSafeAnn" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ForeignImport GhcRn))) :+: (C1 ('MetaCons "TcRnForeignFunctionImportAsValue" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ForeignImport GhcRn))) :+: C1 ('MetaCons "TcRnFunPtrImportWithoutAmpersand" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ForeignImport GhcRn))))) :+: (C1 ('MetaCons "TcRnIllegalForeignDeclBackend" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Either (ForeignExport GhcRn) (ForeignImport GhcRn))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Backend) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ExpectedBackends))) :+: (C1 ('MetaCons "TcRnUnsupportedCallConv" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Either (ForeignExport GhcRn) (ForeignImport GhcRn))) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UnsupportedCallConvention)) :+: C1 ('MetaCons "TcRnIllegalForeignType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe ArgOrResult)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 IllegalForeignTypeReason))))))) :+: ((((C1 ('MetaCons "TcRnInvalidCIdentifier" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 CLabelString)) :+: (C1 ('MetaCons "TcRnExpectedValueId" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TcTyThing)) :+: C1 ('MetaCons "TcRnNotARecordSelector" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name)))) :+: (C1 ('MetaCons "TcRnRecSelectorEscapedTyVar" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 OccName)) :+: (C1 ('MetaCons "TcRnPatSynNotBidirectional" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name)) :+: C1 ('MetaCons "TcRnSplicePolymorphicLocalVar" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Id))))) :+: ((C1 ('MetaCons "TcRnIllegalDerivingItem" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LHsSigType GhcRn))) :+: (C1 ('MetaCons "TcRnUnexpectedAnnotation" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (HsType GhcRn)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 HsSrcBang)) :+: C1 ('MetaCons "TcRnIllegalRecordSyntax" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (HsType GhcRn))))) :+: (C1 ('MetaCons "TcRnUnexpectedTypeSplice" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (HsType GhcRn))) :+: (C1 ('MetaCons "TcRnInvalidVisibleKindArgument" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LHsType GhcRn)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)) :+: C1 ('MetaCons "TcRnTooManyBinders" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Kind) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [LHsTyVarBndr () GhcRn])))))) :+: (((C1 ('MetaCons "TcRnDifferentNamesForTyVar" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name)) :+: (C1 ('MetaCons "TcRnInvalidReturnKind" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DataSort) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 AllowedDataResKind)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Kind) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe SuggestUnliftedTypes)))) :+: C1 ('MetaCons "TcRnClassKindNotConstraint" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Kind)))) :+: (C1 ('MetaCons "TcRnUnpromotableThing" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 PromotionErr)) :+: (C1 ('MetaCons "TcRnMatchesHaveDiffNumArgs" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (HsMatchContext GhcTc)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 MatchArgBadMatches)) :+: C1 ('MetaCons "TcRnCannotBindScopedTyVarInPatSig" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (NonEmpty (Name, TcTyVar))))))) :+: ((C1 ('MetaCons "TcRnCannotBindTyVarsInPatBind" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (NonEmpty (Name, TcTyVar)))) :+: (C1 ('MetaCons "TcRnTooManyTyArgsInConPattern" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ConLike) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int))) :+: C1 ('MetaCons "TcRnMultipleInlinePragmas" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Id) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LocatedA InlinePragma)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (NonEmpty (LocatedA InlinePragma))))))) :+: (C1 ('MetaCons "TcRnUnexpectedPragmas" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Id) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (NonEmpty (LSig GhcRn)))) :+: (C1 ('MetaCons "TcRnNonOverloadedSpecialisePragma" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LIdP GhcRn))) :+: C1 ('MetaCons "TcRnSpecialiseNotVisible" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name)))))))) :+: (((((C1 ('MetaCons "TcRnNameByTemplateHaskellQuote" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RdrName)) :+: (C1 ('MetaCons "TcRnIllegalBindingOfBuiltIn" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 OccName)) :+: C1 ('MetaCons "TcRnPragmaWarning" 'PrefixI 'True) ((S1 ('MetaSel ('Just "pragma_warning_occ") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 OccName) :*: S1 ('MetaSel ('Just "pragma_warning_msg") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (WarningTxt GhcRn))) :*: (S1 ('MetaSel ('Just "pragma_warning_import_mod") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModuleName) :*: S1 ('MetaSel ('Just "pragma_warning_defined_mod") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModuleName))))) :+: (C1 ('MetaCons "TcRnIllegalHsigDefaultMethods" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (LHsBind GhcRn)))) :+: (C1 ('MetaCons "TcRnBadGenericMethod" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name)) :+: C1 ('MetaCons "TcRnWarningMinimalDefIncomplete" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ClassMinimalDef))))) :+: ((C1 ('MetaCons "TcRnDefaultMethodForPragmaLacksBinding" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Id) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Sig GhcRn))) :+: (C1 ('MetaCons "TcRnIgnoreSpecialisePragmaOnDefMethod" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name)) :+: C1 ('MetaCons "TcRnBadMethodErr" 'PrefixI 'True) (S1 ('MetaSel ('Just "badMethodErrClassName") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel ('Just "badMethodErrMethodName") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name)))) :+: (C1 ('MetaCons "TcRnNoExplicitAssocTypeOrDefaultDeclaration" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: (C1 ('MetaCons "TcRnIllegalNewtype" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 DataCon) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 IllegalNewtypeReason))) :+: C1 ('MetaCons "TcRnIllegalTypeData" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "TcRnTypeDataForbids" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TypeDataForbids)) :+: (C1 ('MetaCons "TcRnTypedTHWithPolyType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TcType)) :+: C1 ('MetaCons "TcRnSpliceThrewException" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 SplicePhase) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 SomeException)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 String) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LHsExpr GhcTc)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Bool)))))) :+: (C1 ('MetaCons "TcRnInvalidTopDecl" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (HsDecl GhcPs))) :+: (C1 ('MetaCons "TcRnNonExactName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RdrName)) :+: C1 ('MetaCons "TcRnAddInvalidCorePlugin" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 String))))) :+: ((C1 ('MetaCons "TcRnAddDocToNonLocalDefn" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DocLoc)) :+: (C1 ('MetaCons "TcRnFailedToLookupThInstName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 LookupTHInstNameErrReason)) :+: C1 ('MetaCons "TcRnCannotReifyInstance" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)))) :+: (C1 ('MetaCons "TcRnCannotReifyOutOfScopeThing" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name)) :+: (C1 ('MetaCons "TcRnCannotReifyThingNotInTypeEnv" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name)) :+: C1 ('MetaCons "TcRnNoRolesAssociatedWithThing" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TcTyThing))))))) :+: ((((C1 ('MetaCons "TcRnCannotRepresentType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 UnrepresentableTypeDescr) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)) :+: (C1 ('MetaCons "TcRnRunSpliceFailure" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe String)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RunSpliceFailReason)) :+: C1 ('MetaCons "TcRnReportCustomQuasiError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Bool) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 String)))) :+: (C1 ('MetaCons "TcRnInterfaceLookupError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 SDoc)) :+: (C1 ('MetaCons "TcRnUnsatisfiedMinimalDef" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ClassMinimalDef)) :+: C1 ('MetaCons "TcRnMisplacedInstSig" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LHsSigType GhcRn)))))) :+: ((C1 ('MetaCons "TcRnBadBootFamInstDecl" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TcRnIllegalFamilyInstance" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TyCon)) :+: C1 ('MetaCons "TcRnMissingClassAssoc" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TyCon)))) :+: (C1 ('MetaCons "TcRnBadFamInstDecl" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TyCon)) :+: (C1 ('MetaCons "TcRnNotOpenFamily" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TyCon)) :+: C1 ('MetaCons "TcRnNoRebindableSyntaxRecordDot" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "TcRnNoFieldPunsRecordDot" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TcRnIllegalStaticExpression" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsExpr GhcPs))) :+: C1 ('MetaCons "TcRnIllegalStaticFormInSplice" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsExpr GhcPs))))) :+: (C1 ('MetaCons "TcRnListComprehensionDuplicateBinding" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: (C1 ('MetaCons "TcRnEmptyStmtsGroup" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 EmptyStatementGroupErrReason)) :+: C1 ('MetaCons "TcRnLastStmtNotExpr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsStmtContext GhcRn)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UnexpectedStatement))))) :+: ((C1 ('MetaCons "TcRnUnexpectedStatementInContext" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsStmtContext GhcRn)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UnexpectedStatement) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Extension)))) :+: (C1 ('MetaCons "TcRnIllegalTupleSection" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TcRnIllegalImplicitParameterBindings" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Either (HsLocalBindsLR GhcPs GhcPs) (HsLocalBindsLR GhcRn GhcPs)))))) :+: (C1 ('MetaCons "TcRnSectionWithoutParentheses" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsExpr GhcPs))) :+: (C1 ('MetaCons "TcRnLoopySuperclassSolve" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CtLoc) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PredType)) :+: C1 ('MetaCons "TcRnCannotDefaultConcrete" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 FixedRuntimeRepOrigin))))))))))

type DiagnosticOpts TcRnMessage Source # |
Instance details Defined in GHC.Tc.Errors.Ppr type DiagnosticOpts TcRnMessage = TcRnMessageOpts

mkTcRnUnknownMessage :: (Diagnostic a, Typeable a, DiagnosticOpts a ~ NoDiagnosticOpts) => a -> TcRnMessage Source #

data TcRnMessageDetailed Source #

`TcRnMessageDetailed` is an "internal" type (used only inside `Monad` that wraps a `TcRnMessage` while also providing any extra info needed to correctly pretty-print this diagnostic later on.

Constructors

TcRnMessageDetailed |

Fields

- !ErrInfo

  Extra info associated with the message

- !TcRnMessage

#### Instances

Instances details

Generic TcRnMessageDetailed Source # |
Instance details Defined in GHC.Tc.Errors.Types Associated Types type Rep TcRnMessageDetailed :: Type -> Type Source # Methods from :: TcRnMessageDetailed -> Rep TcRnMessageDetailed x Source # to :: Rep TcRnMessageDetailed x -> TcRnMessageDetailed Source #
type Rep TcRnMessageDetailed Source # |

Instance details

Defined in GHC.Tc.Errors.Types

type Rep TcRnMessageDetailed = D1 ('MetaData "TcRnMessageDetailed" "GHC.Tc.Errors.Types" "ghc" 'False) (C1 ('MetaCons "TcRnMessageDetailed" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ErrInfo) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TcRnMessage)))

data TypeDataForbids Source #

Things forbidden in `type data` declarations. See Note [Type data declarations]

Constructors

TypeDataForbidsDatatypeContexts |
TypeDataForbidsLabelledFields |
TypeDataForbidsStrictnessAnnotations |
TypeDataForbidsDerivingClauses |

#### Instances

Instances details

Generic TypeDataForbids Source # |
Instance details Defined in GHC.Tc.Errors.Types Associated Types type Rep TypeDataForbids :: Type -> Type Source # Methods from :: TypeDataForbids -> Rep TypeDataForbids x Source # to :: Rep TypeDataForbids x -> TypeDataForbids Source #
Outputable TypeDataForbids Source # |
Instance details Defined in GHC.Tc.Errors.Types Methods ppr :: TypeDataForbids -> SDoc Source #
type Rep TypeDataForbids Source # |

Instance details

Defined in GHC.Tc.Errors.Types

type Rep TypeDataForbids = D1 ('MetaData "TypeDataForbids" "GHC.Tc.Errors.Types" "ghc" 'False) ((C1 ('MetaCons "TypeDataForbidsDatatypeContexts" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TypeDataForbidsLabelledFields" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TypeDataForbidsStrictnessAnnotations" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TypeDataForbidsDerivingClauses" 'PrefixI 'False) (U1 :: Type -> Type)))

data ErrInfo Source #

Constructors

ErrInfo |

Fields

- errInfoContext :: !SDoc

  Extra context associated to the error.

- errInfoSupplementary :: !SDoc

  Extra supplementary info associated to the error.

data FixedRuntimeRepProvenance Source #

In what context did we require a type to have a fixed runtime representation?

Used by `checkTypeHasFixedRuntimeRep` for throwing representation polymorphism errors when validity checking.

See Note [Representation polymorphism checking] in GHC.Tc.Utils.Concrete

Constructors

FixedRuntimeRepDataConField | Data constructor fields must have a fixed runtime representation. Tests: T11734, T18534.
FixedRuntimeRepPatSynSigArg | Pattern synonym signature arguments must have a fixed runtime representation. Test: RepPolyPatSynArg.
FixedRuntimeRepPatSynSigRes | Pattern synonym signature scrutinee must have a fixed runtime representation. Test: RepPolyPatSynRes.

pprFixedRuntimeRepProvenance :: FixedRuntimeRepProvenance -> SDoc Source #

data ShadowedNameProvenance Source #

Where a shadowed name comes from

Constructors

ShadowedNameProvenanceLocal !SrcLoc | The shadowed name is local to the module
ShadowedNameProvenanceGlobal [GlobalRdrElt] | The shadowed name is global, typically imported from elsewhere.

data RecordFieldPart Source #

Which parts of a record field are affected by a particular error or warning.

Constructors

RecordFieldConstructor !Name |
RecordFieldPattern !Name |
RecordFieldUpdate |

data IllegalNewtypeReason Source #

Why the particular illegal newtype error arose together with more information, if any.

Constructors

DoesNotHaveSingleField !Int |
IsNonLinear |
IsGADT |
HasConstructorContext |
HasExistentialTyVar |
HasStrictnessAnnotation |

#### Instances

Instances details

Generic IllegalNewtypeReason Source # |
Instance details Defined in GHC.Tc.Errors.Types Associated Types type Rep IllegalNewtypeReason :: Type -> Type Source # Methods from :: IllegalNewtypeReason -> Rep IllegalNewtypeReason x Source # to :: Rep IllegalNewtypeReason x -> IllegalNewtypeReason Source #
type Rep IllegalNewtypeReason Source # |

Instance details

Defined in GHC.Tc.Errors.Types

type Rep IllegalNewtypeReason = D1 ('MetaData "IllegalNewtypeReason" "GHC.Tc.Errors.Types" "ghc" 'False) ((C1 ('MetaCons "DoesNotHaveSingleField" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int)) :+: (C1 ('MetaCons "IsNonLinear" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "IsGADT" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "HasConstructorContext" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "HasExistentialTyVar" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "HasStrictnessAnnotation" 'PrefixI 'False) (U1 :: Type -> Type))))

data InjectivityErrReason Source #

Why the particular injectivity error arose together with more information, if any.

Constructors

InjErrRhsBareTyVar [Type] |
InjErrRhsCannotBeATypeFam |
InjErrRhsOverlap |
InjErrCannotInferFromRhs !TyVarSet !HasKinds !SuggestUndecidableInstances |

data HasKinds Source #

Constructors

YesHasKinds |
NoHasKinds |

#### Instances

Instances details

Show HasKinds Source # |
Instance details Defined in GHC.Tc.Errors.Types Methods showsPrec :: Int -> HasKinds -> ShowS Source # show :: HasKinds -> String Source # showList :: [HasKinds] -> ShowS Source #
Eq HasKinds Source # |
Instance details Defined in GHC.Tc.Errors.Types Methods (==) :: HasKinds -> HasKinds -> Bool # (/=) :: HasKinds -> HasKinds -> Bool #

hasKinds :: Bool -> HasKinds Source #

data SuggestUndecidableInstances Source #

Constructors

YesSuggestUndecidableInstaces |
NoSuggestUndecidableInstaces |

#### Instances

Instances details

Show SuggestUndecidableInstances Source # |
Instance details Defined in GHC.Tc.Errors.Types Methods showsPrec :: Int -> SuggestUndecidableInstances -> ShowS Source # show :: SuggestUndecidableInstances -> String Source # showList :: [SuggestUndecidableInstances] -> ShowS Source #
Eq SuggestUndecidableInstances Source # |
Instance details Defined in GHC.Tc.Errors.Types Methods (==) :: SuggestUndecidableInstances -> SuggestUndecidableInstances -> Bool # (/=) :: SuggestUndecidableInstances -> SuggestUndecidableInstances -> Bool #

suggestUndecidableInstances :: Bool -> SuggestUndecidableInstances Source #

data SuggestUnliftedTypes Source #

Constructors

SuggestUnliftedNewtypes |
SuggestUnliftedDatatypes |

data DataSort Source #

A description of whether something is a

- `data` or `newtype` (`DataDeclSort`)
- `data instance` or `newtype instance` (`DataInstanceSort`)
- `data family` (`DataFamilySort`)

At present, this data type is only consumed by `checkDataKindSig`.

Constructors

DataDeclSort NewOrData |
DataInstanceSort NewOrData |
DataFamilySort |

ppDataSort :: DataSort -> SDoc Source #

data AllowedDataResKind Source #

Helper type used in `checkDataKindSig`.

Superficially similar to `ContextKind`, but it lacks `AnyKind` and `AnyBoxedKind`, and instead of ``TheKind` liftedTypeKind` provides `LiftedKind`, which is much simpler to match on and handle in `isAllowedDataResKind`.

Constructors

AnyTYPEKind |
AnyBoxedKind |
LiftedKind |

data NotClosedReason Source #

A data type to describe why a variable is not closed. See Note [Not-closed error messages] in GHC.Tc.Gen.Expr

Constructors

NotLetBoundReason |
NotTypeClosed VarSet |
NotClosed Name NotClosedReason |

data SuggestPartialTypeSignatures Source #

Constructors

YesSuggestPartialTypeSignatures |
NoSuggestPartialTypeSignatures |

#### Instances

Instances details

Show SuggestPartialTypeSignatures Source # |
Instance details Defined in GHC.Tc.Errors.Types Methods showsPrec :: Int -> SuggestPartialTypeSignatures -> ShowS Source # show :: SuggestPartialTypeSignatures -> String Source # showList :: [SuggestPartialTypeSignatures] -> ShowS Source #
Eq SuggestPartialTypeSignatures Source # |
Instance details Defined in GHC.Tc.Errors.Types Methods (==) :: SuggestPartialTypeSignatures -> SuggestPartialTypeSignatures -> Bool # (/=) :: SuggestPartialTypeSignatures -> SuggestPartialTypeSignatures -> Bool #

suggestPartialTypeSignatures :: Bool -> SuggestPartialTypeSignatures Source #

data DeriveInstanceErrReason Source #

Why a particular typeclass instance couldn't be derived.

Constructors

DerivErrNotWellKinded | The typeclass instance is not well-kinded.

Fields

- !TyCon

  The type constructor that occurs in the typeclass instance declaration.

- !Kind

  The typeclass kind.

- !Int

  The number of typeclass arguments that GHC kept. See Note [tc_args and tycon arity] in GHC.Tc.Deriv. | Generic instances can only be derived using the stock strategy in Safe Haskell.

DerivErrSafeHaskellGenericInst |
DerivErrDerivingViaWrongKind !Kind !Type !Kind |
DerivErrNoEtaReduce !Type | The instance type | We cannot derive instances in boot files
DerivErrBootFileFound |
DerivErrDataConsNotAllInScope !TyCon |
DerivErrGNDUsedOnData | We cannot use GND on non-newtype types
DerivErrNullaryClasses | We cannot derive instances of nullary classes
DerivErrLastArgMustBeApp | Last arg must be newtype or data application
DerivErrNoFamilyInstance !TyCon [Type] |
DerivErrNotStockDeriveable !DeriveAnyClassEnabled |
DerivErrHasAssociatedDatatypes !HasAssociatedDataFamInsts !AssociatedTyLastVarInKind !AssociatedTyNotParamOverLastTyVar |
DerivErrNewtypeNonDeriveableClass |
DerivErrCannotEtaReduceEnough !Bool |
DerivErrOnlyAnyClassDeriveable |

Fields

- !TyCon

  Type constructor for which the instance is requested

- !DeriveAnyClassEnabled

  Whether or not -XDeriveAnyClass is enabled already. | Stock deriving won't work, but perhaps DeriveAnyClass will.

DerivErrNotDeriveable !DeriveAnyClassEnabled |
DerivErrNotAClass !PredType | The given `PredType` is not a class.
DerivErrNoConstructors !TyCon | The given (representation of the) `TyCon` has no data constructors.
DerivErrLangExtRequired !Extension |
DerivErrDunnoHowToDeriveForType !Type | GHC simply doesn't how to how derive the input `Class` for the given `Type`.
DerivErrMustBeEnumType !TyCon | The given `TyCon` must be an enumeration. See Note [Enumeration types] in GHC.Core.TyCon
DerivErrMustHaveExactlyOneConstructor !TyCon | The given `TyCon` must have precisely one constructor.
DerivErrMustHaveSomeParameters !TyCon | The given data type must have some parameters.
DerivErrMustNotHaveClassContext !TyCon !ThetaType | The given data type must not have a class context.
DerivErrBadConstructor !(Maybe HasWildcard) [DeriveInstanceBadConstructor] | We couldn't derive an instance for a particular data constructor for a variety of reasons.
DerivErrGenerics [DeriveGenericsErrReason] | We couldn't derive a `Generic` instance for the given type for a variety of reasons
DerivErrEnumOrProduct !DeriveInstanceErrReason !DeriveInstanceErrReason | We couldn't derive an instance either because the type was not an enum type or because it did have more than one constructor.

#### Instances

Instances details

Generic DeriveInstanceErrReason Source # |
Instance details Defined in GHC.Tc.Errors.Types Associated Types type Rep DeriveInstanceErrReason :: Type -> Type Source # Methods from :: DeriveInstanceErrReason -> Rep DeriveInstanceErrReason x Source # to :: Rep DeriveInstanceErrReason x -> DeriveInstanceErrReason Source #
type Rep DeriveInstanceErrReason Source # |

Instance details

Defined in GHC.Tc.Errors.Types

type Rep DeriveInstanceErrReason = D1 ('MetaData "DeriveInstanceErrReason" "GHC.Tc.Errors.Types" "ghc" 'False) ((((C1 ('MetaCons "DerivErrNotWellKinded" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyCon) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Kind) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int))) :+: (C1 ('MetaCons "DerivErrSafeHaskellGenericInst" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DerivErrDerivingViaWrongKind" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Kind) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Kind))))) :+: (C1 ('MetaCons "DerivErrNoEtaReduce" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)) :+: (C1 ('MetaCons "DerivErrBootFileFound" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DerivErrDataConsNotAllInScope" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyCon))))) :+: ((C1 ('MetaCons "DerivErrGNDUsedOnData" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "DerivErrNullaryClasses" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DerivErrLastArgMustBeApp" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "DerivErrNoFamilyInstance" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyCon) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Type])) :+: C1 ('MetaCons "DerivErrNotStockDeriveable" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DeriveAnyClassEnabled))) :+: (C1 ('MetaCons "DerivErrHasAssociatedDatatypes" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 HasAssociatedDataFamInsts) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 AssociatedTyLastVarInKind) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 AssociatedTyNotParamOverLastTyVar))) :+: C1 ('MetaCons "DerivErrNewtypeNonDeriveableClass" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "DerivErrCannotEtaReduceEnough" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Bool)) :+: (C1 ('MetaCons "DerivErrOnlyAnyClassDeriveable" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyCon) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DeriveAnyClassEnabled)) :+: C1 ('MetaCons "DerivErrNotDeriveable" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DeriveAnyClassEnabled)))) :+: ((C1 ('MetaCons "DerivErrNotAClass" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 PredType)) :+: C1 ('MetaCons "DerivErrNoConstructors" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyCon))) :+: (C1 ('MetaCons "DerivErrLangExtRequired" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Extension)) :+: C1 ('MetaCons "DerivErrDunnoHowToDeriveForType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type))))) :+: ((C1 ('MetaCons "DerivErrMustBeEnumType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyCon)) :+: (C1 ('MetaCons "DerivErrMustHaveExactlyOneConstructor" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyCon)) :+: C1 ('MetaCons "DerivErrMustHaveSomeParameters" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyCon)))) :+: ((C1 ('MetaCons "DerivErrMustNotHaveClassContext" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyCon) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ThetaType)) :+: C1 ('MetaCons "DerivErrBadConstructor" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe HasWildcard)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [DeriveInstanceBadConstructor]))) :+: (C1 ('MetaCons "DerivErrGenerics" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [DeriveGenericsErrReason])) :+: C1 ('MetaCons "DerivErrEnumOrProduct" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DeriveInstanceErrReason) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DeriveInstanceErrReason)))))))

data UsingGeneralizedNewtypeDeriving Source #

Constructors

YesGeneralizedNewtypeDeriving |
NoGeneralizedNewtypeDeriving |

#### Instances

Instances details

Eq UsingGeneralizedNewtypeDeriving Source # |
Instance details Defined in GHC.Tc.Errors.Types Methods (==) :: UsingGeneralizedNewtypeDeriving -> UsingGeneralizedNewtypeDeriving -> Bool # (/=) :: UsingGeneralizedNewtypeDeriving -> UsingGeneralizedNewtypeDeriving -> Bool #

usingGeneralizedNewtypeDeriving :: Bool -> UsingGeneralizedNewtypeDeriving Source #

data DeriveAnyClassEnabled Source #

Constructors

YesDeriveAnyClassEnabled |
NoDeriveAnyClassEnabled |

#### Instances

Instances details

Eq DeriveAnyClassEnabled Source # |
Instance details Defined in GHC.Tc.Errors.Types Methods (==) :: DeriveAnyClassEnabled -> DeriveAnyClassEnabled -> Bool # (/=) :: DeriveAnyClassEnabled -> DeriveAnyClassEnabled -> Bool #

deriveAnyClassEnabled :: Bool -> DeriveAnyClassEnabled Source #

data DeriveInstanceBadConstructor Source #

Constructors

DerivErrBadConExistential !DataCon | The given `DataCon` must be truly polymorphic in the last argument of the data type.
DerivErrBadConCovariant !DataCon | The given `DataCon` must not use the type variable in a function argument"
DerivErrBadConFunTypes !DataCon | The given `DataCon` must not contain function types
DerivErrBadConWrongArg !DataCon | The given `DataCon` must use the type variable only as the last argument of a data type
DerivErrBadConIsGADT !DataCon | The given `DataCon` is a GADT so we cannot directly derive an istance for it.
DerivErrBadConHasExistentials !DataCon | The given `DataCon` has existentials type vars in its type.
DerivErrBadConHasConstraints !DataCon | The given `DataCon` has constraints in its type.
DerivErrBadConHasHigherRankType !DataCon | The given `DataCon` has a higher-rank type.

data HasWildcard Source #

Constructors

YesHasWildcard |
NoHasWildcard |

#### Instances

Instances details

Eq HasWildcard Source # |
Instance details Defined in GHC.Tc.Errors.Types Methods (==) :: HasWildcard -> HasWildcard -> Bool # (/=) :: HasWildcard -> HasWildcard -> Bool #

hasWildcard :: Bool -> HasWildcard Source #

data BadAnonWildcardContext Source #

A context in which we don't allow anonymous wildcards.

Constructors

WildcardNotLastInConstraint |
ExtraConstraintWildcardNotAllowed SoleExtraConstraintWildcardAllowed |
WildcardsNotAllowedAtAll |

data SoleExtraConstraintWildcardAllowed Source #

Whether a sole extra-constraint wildcard is allowed, e.g. `_ => ..` as opposed to `( .., _ ) => ..`.

Constructors

SoleExtraConstraintWildcardNotAllowed |
SoleExtraConstraintWildcardAllowed |

data DeriveGenericsErrReason Source #

Constructors

DerivErrGenericsMustNotHaveDatatypeContext !TyCon | The type must not have some datatype context.
DerivErrGenericsMustNotHaveExoticArgs !DataCon | The data constructor must not have exotic unlifted or polymorphic arguments.
DerivErrGenericsMustBeVanillaDataCon !DataCon | The data constructor must be a vanilla constructor.
DerivErrGenericsMustHaveSomeTypeParams !TyCon | The type must have some type parameters. check (d) from Note [Requirements for deriving Generic and Rep] in GHC.Tc.Deriv.Generics.
DerivErrGenericsMustNotHaveExistentials !DataCon | The data constructor must not have existential arguments.
DerivErrGenericsWrongArgKind !DataCon | The derivation applies a type to an argument involving the last parameter but the applied type is not of kind * -> *.

data HasAssociatedDataFamInsts Source #

A type representing whether or not the input type has associated data family instances.

Constructors

YesHasAdfs |
NoHasAdfs |

#### Instances

Instances details

Eq HasAssociatedDataFamInsts Source # |
Instance details Defined in GHC.Tc.Errors.Types Methods (==) :: HasAssociatedDataFamInsts -> HasAssociatedDataFamInsts -> Bool # (/=) :: HasAssociatedDataFamInsts -> HasAssociatedDataFamInsts -> Bool #

hasAssociatedDataFamInsts :: Bool -> HasAssociatedDataFamInsts Source #

data AssociatedTyLastVarInKind Source #

If `YesAssocTyLastVarInKind`, the associated type of a typeclass contains the last type variable of the class in a kind, which is not (yet) allowed by GHC.

Constructors

YesAssocTyLastVarInKind !TyCon | The associated type family of the class
NoAssocTyLastVarInKind |

#### Instances

Instances details

Eq AssociatedTyLastVarInKind Source # |
Instance details Defined in GHC.Tc.Errors.Types Methods (==) :: AssociatedTyLastVarInKind -> AssociatedTyLastVarInKind -> Bool # (/=) :: AssociatedTyLastVarInKind -> AssociatedTyLastVarInKind -> Bool #

associatedTyLastVarInKind :: Maybe TyCon -> AssociatedTyLastVarInKind Source #

data AssociatedTyNotParamOverLastTyVar Source #

If `NoAssociatedTyNotParamOverLastTyVar`, the associated type of a typeclass is not parameterized over the last type variable of the class

Constructors

YesAssociatedTyNotParamOverLastTyVar !TyCon | The associated type family of the class
NoAssociatedTyNotParamOverLastTyVar |

#### Instances

Instances details

Eq AssociatedTyNotParamOverLastTyVar Source # |
Instance details Defined in GHC.Tc.Errors.Types Methods (==) :: AssociatedTyNotParamOverLastTyVar -> AssociatedTyNotParamOverLastTyVar -> Bool # (/=) :: AssociatedTyNotParamOverLastTyVar -> AssociatedTyNotParamOverLastTyVar -> Bool #

associatedTyNotParamOverLastTyVar :: Maybe TyCon -> AssociatedTyNotParamOverLastTyVar Source #

data MissingSignature Source #

What kind of thing is missing a type signature?

Used for reporting `"missing signature"` warnings, see `tcRnMissingSignature`.

Constructors

MissingTopLevelBindingSig Name Type |
MissingPatSynSig PatSyn |
MissingTyConKindSig TyCon Bool | whether -XCUSKs is enabled

data Exported Source #

Is the object we are dealing with exported or not?

Used for reporting `"missing signature"` warnings, see `TcRnMissingSignature`.

Constructors

IsNotExported |
IsExported |

#### Instances

Instances details

Outputable Exported Source # |
Instance details Defined in GHC.Tc.Errors.Types Methods ppr :: Exported -> SDoc Source #

data HsDocContext Source #

Constructors

TypeSigCtx SDoc |
StandaloneKindSigCtx SDoc |
PatCtx |
SpecInstSigCtx |
DefaultDeclCtx |
ForeignDeclCtx (LocatedN RdrName) |
DerivDeclCtx |
RuleCtx FastString |
TyDataCtx (LocatedN RdrName) |
TySynCtx (LocatedN RdrName) |
TyFamilyCtx (LocatedN RdrName) |
FamPatCtx (LocatedN RdrName) |
ConDeclCtx [LocatedN Name] |
ClassDeclCtx (LocatedN RdrName) |
ExprWithTySigCtx |
TypBrCtx |
HsTypeCtx |
HsTypePatCtx |
GHCiCtx |
SpliceTypeCtx (LHsType GhcPs) |
ClassInstanceCtx |
GenericCtx SDoc |

data FixedRuntimeRepErrorInfo Source #

Stores the information to be reported in a representation-polymorphism error message.

Constructors

FRR_Info |

Fields

- frr_info_origin :: FixedRuntimeRepOrigin

  What is the original type we checked for representation-polymorphism, and what specific check did we perform?

- frr_info_not_concrete :: Maybe (TcTyVar, TcType)

  Which non-concrete type did we try to unify this concrete type variable with?

data ErrorItem Source #

A predicate with its arising location; used to encapsulate a constraint that will give rise to a diagnostic.

Constructors

EI |

Fields

- ei_pred :: PredType
- ei_evdest :: Maybe TcEvDest

  for Wanteds, where to put the evidence for Givens, Nothing

- ei_flavour :: CtFlavour
- ei_loc :: CtLoc
- ei_m_reason :: Maybe CtIrredReason
- ei_suppress :: Bool

#### Instances

Instances details

Outputable ErrorItem Source # |
Instance details Defined in GHC.Tc.Errors.Types Methods ppr :: ErrorItem -> SDoc Source #

errorItemOrigin :: ErrorItem -> CtOrigin Source #

errorItemEqRel :: ErrorItem -> EqRel Source #

errorItemPred :: ErrorItem -> PredType Source #

errorItemCtLoc :: ErrorItem -> CtLoc Source #

data SolverReport Source #

A collection of main error messages and supplementary information.

In practice, we will: - display the important messages first, - then the error context (e.g. by way of a call to `mkErrorReport`), - then the supplementary information (e.g. relevant bindings, valid hole fits), - then the hints ("Possible fix: ...").

So this is mostly just a way of making sure that the error context appears early on rather than at the end of the message.

See Note [Error report] for details.

Constructors

SolverReport |

Fields

- sr_important_msg :: SolverReportWithCtxt
- sr_supplementary :: [SolverReportSupplementary]
- sr_hints :: [GhcHint]

data SolverReportSupplementary Source #

Additional information to print in a `SolverReport`, after the important messages and after the error context.

See Note [Error report].

Constructors

SupplementaryBindings RelevantBindings |
SupplementaryHoleFits ValidHoleFits |
SupplementaryCts [(PredType, RealSrcSpan)] |

data SolverReportWithCtxt Source #

A `TcSolverReportMsg`, together with context (e.g. enclosing implication constraints) that are needed in order to report it.

Constructors

SolverReportWithCtxt |

Fields

- reportContext :: SolverReportErrCtxt

  Context for what we wish to report. This can change as we enter implications, so is stored alongside the content.

- reportContent :: TcSolverReportMsg

  The content of the message to report.

#### Instances

Instances details

Generic SolverReportWithCtxt Source # |
Instance details Defined in GHC.Tc.Errors.Types Associated Types type Rep SolverReportWithCtxt :: Type -> Type Source # Methods from :: SolverReportWithCtxt -> Rep SolverReportWithCtxt x Source # to :: Rep SolverReportWithCtxt x -> SolverReportWithCtxt Source #
type Rep SolverReportWithCtxt Source # |

Instance details

Defined in GHC.Tc.Errors.Types

type Rep SolverReportWithCtxt = D1 ('MetaData "SolverReportWithCtxt" "GHC.Tc.Errors.Types" "ghc" 'False) (C1 ('MetaCons "SolverReportWithCtxt" 'PrefixI 'True) (S1 ('MetaSel ('Just "reportContext") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SolverReportErrCtxt) :*: S1 ('MetaSel ('Just "reportContent") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TcSolverReportMsg)))

data SolverReportErrCtxt Source #

Context needed when reporting a `TcSolverReportMsg`, such as the enclosing implication constraints or whether we are deferring type errors.

Constructors

CEC |

Fields

- cec_encl :: [Implication]

  Enclosing implications (innermost first) ic_skols and givens are tidied, rest are not

- cec_tidy :: TidyEnv
- cec_binds :: EvBindsVar

  We make some errors (depending on cec_defer) into warnings, and emit evidence bindings into `cec_binds` for unsolved constraints

- cec_defer_type_errors :: DiagnosticReason

  Whether to defer type errors until runtime

- cec_expr_holes :: DiagnosticReason

  Reason for reporting holes in expressions.

- cec_type_holes :: DiagnosticReason

  Reason for reporting holes in types.

- cec_out_of_scope_holes :: DiagnosticReason

  Reason for reporting out of scope holes.

- cec_warn_redundant :: Bool

  True = -Wredundant-constraints

- cec_expand_syns :: Bool

  True = -fprint-expanded-synonyms

- cec_suppress :: Bool

  True = More important errors have occurred, so create bindings if need be, but don't issue any more errors/warnings See Note [Suppressing error messages]

#### Instances

Instances details

Outputable SolverReportErrCtxt Source # |
Instance details Defined in GHC.Tc.Errors.Ppr Methods ppr :: SolverReportErrCtxt -> SDoc Source #

getUserGivens :: SolverReportErrCtxt -> [UserGiven] Source #

discardProvCtxtGivens :: CtOrigin -> [UserGiven] -> [UserGiven] Source #

data TcSolverReportMsg Source #

An error reported after constraint solving. This is usually, some sort of unsolved constraint error, but we try to be specific about the precise problem we encountered.

Constructors

BadTelescope TyVarBndrs [TyCoVar] | Quantified variables appear out of dependency order. Example: forall (a :: k) k. ... Test cases: BadTelescope2, T16418, T16247, T16726, T18451.
UserTypeError Type | We came across a custom type error and we have decided to report it. Example: type family F a where F a = TypeError (Text "error") err :: F () err = () Test cases: CustomTypeErrors0{1,2,3,4,5}, T12104.
ReportHoleError Hole HoleError | We want to report an out of scope variable or a typed hole. See `HoleError`.
UntouchableVariable | Trying to unify an untouchable variable, e.g. a variable from an outer scope. Test case: Simple14

Fields

- untouchableTyVar :: TyVar
- untouchableTyVarImplication :: Implication

CannotUnifyVariable | Cannot unify a variable, because of a type mismatch.

Fields

- mismatchMsg :: MismatchMsg
- cannotUnifyReason :: CannotUnifyVariableReason

Mismatch | A mismatch between two types.

Fields

- mismatchMsg :: MismatchMsg
- mismatchTyVarInfo :: Maybe TyVarInfo
- mismatchAmbiguityInfo :: [AmbiguityInfo]
- mismatchCoercibleInfo :: Maybe CoercibleMsg

FixedRuntimeRepError [FixedRuntimeRepErrorInfo] | A violation of the representation-polymorphism invariants. See `FixedRuntimeRepErrorInfo` and `FixedRuntimeRepContext` for more information.
BlockedEquality ErrorItem | An equality between two types is blocked on a kind equality between their kinds. Test cases: none.
ExpectingMoreArguments Int TypedThing | Something was not applied to sufficiently many arguments. Example: instance Eq Maybe where {..} Test case: T11563.
UnboundImplicitParams (NonEmpty ErrorItem) | Trying to use an unbound implicit parameter. Example: foo :: Int foo = ?param Test case: tcfail130.
AmbiguityPreventsSolvingCt | A constraint couldn't be solved because it contains ambiguous type variables. Example: class C a b where f :: (a,b) x = fst f Test case: T4921.

Fields

- ErrorItem

  always a class constraint

- ([TyVar], [TyVar])

  ambiguous kind and type variables, respectively

CannotResolveInstance | Could not solve a constraint; there were several unifying candidate instances but no matching instances. This is used to report as much useful information as possible about why we couldn't choose any instance, e.g. because of ambiguous type variables.

Fields

- cannotResolve_item :: ErrorItem
- cannotResolve_unifiers :: [ClsInst]
- cannotResolve_candidates :: [ClsInst]
- cannotResolve_importErrors :: [ImportError]
- cannotResolve_suggestions :: [GhcHint]
- cannotResolve_relevant_bindings :: RelevantBindings

OverlappingInstances | Could not solve a constraint using available instances because the instances overlap. Test cases: tcfail118, tcfail121, tcfail218.

Fields

- overlappingInstances_item :: ErrorItem
- overlappingInstances_matches :: NonEmpty ClsInst
- overlappingInstances_unifiers :: [ClsInst]

UnsafeOverlap | Could not solve a constraint from instances because instances declared in a Safe module cannot overlap instances from other modules (with -XSafeHaskell). Test cases: SH_Overlap{1,2,5,6,7,11}.

Fields

- unsafeOverlap_item :: ErrorItem
- unsafeOverlap_match :: ClsInst
- unsafeOverlapped :: NonEmpty ClsInst

#### Instances

Instances details

Generic TcSolverReportMsg Source # |
Instance details Defined in GHC.Tc.Errors.Types Associated Types type Rep TcSolverReportMsg :: Type -> Type Source # Methods from :: TcSolverReportMsg -> Rep TcSolverReportMsg x Source # to :: Rep TcSolverReportMsg x -> TcSolverReportMsg Source #
type Rep TcSolverReportMsg Source # |

Instance details

Defined in GHC.Tc.Errors.Types

type Rep TcSolverReportMsg = D1 ('MetaData "TcSolverReportMsg" "GHC.Tc.Errors.Types" "ghc" 'False) (((C1 ('MetaCons "BadTelescope" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TyVarBndrs) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyCoVar])) :+: (C1 ('MetaCons "UserTypeError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: C1 ('MetaCons "ReportHoleError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Hole) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 HoleError)))) :+: ((C1 ('MetaCons "UntouchableVariable" 'PrefixI 'True) (S1 ('MetaSel ('Just "untouchableTyVar") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TyVar) :*: S1 ('MetaSel ('Just "untouchableTyVarImplication") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Implication)) :+: C1 ('MetaCons "CannotUnifyVariable" 'PrefixI 'True) (S1 ('MetaSel ('Just "mismatchMsg") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 MismatchMsg) :*: S1 ('MetaSel ('Just "cannotUnifyReason") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CannotUnifyVariableReason))) :+: (C1 ('MetaCons "Mismatch" 'PrefixI 'True) ((S1 ('MetaSel ('Just "mismatchMsg") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 MismatchMsg) :*: S1 ('MetaSel ('Just "mismatchTyVarInfo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe TyVarInfo))) :*: (S1 ('MetaSel ('Just "mismatchAmbiguityInfo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [AmbiguityInfo]) :*: S1 ('MetaSel ('Just "mismatchCoercibleInfo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe CoercibleMsg)))) :+: C1 ('MetaCons "FixedRuntimeRepError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FixedRuntimeRepErrorInfo]))))) :+: ((C1 ('MetaCons "BlockedEquality" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ErrorItem)) :+: (C1 ('MetaCons "ExpectingMoreArguments" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TypedThing)) :+: C1 ('MetaCons "UnboundImplicitParams" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty ErrorItem))))) :+: ((C1 ('MetaCons "AmbiguityPreventsSolvingCt" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ErrorItem) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ([TyVar], [TyVar]))) :+: C1 ('MetaCons "CannotResolveInstance" 'PrefixI 'True) ((S1 ('MetaSel ('Just "cannotResolve_item") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ErrorItem) :*: (S1 ('MetaSel ('Just "cannotResolve_unifiers") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ClsInst]) :*: S1 ('MetaSel ('Just "cannotResolve_candidates") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ClsInst]))) :*: (S1 ('MetaSel ('Just "cannotResolve_importErrors") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ImportError]) :*: (S1 ('MetaSel ('Just "cannotResolve_suggestions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [GhcHint]) :*: S1 ('MetaSel ('Just "cannotResolve_relevant_bindings") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RelevantBindings))))) :+: (C1 ('MetaCons "OverlappingInstances" 'PrefixI 'True) (S1 ('MetaSel ('Just "overlappingInstances_item") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ErrorItem) :*: (S1 ('MetaSel ('Just "overlappingInstances_matches") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty ClsInst)) :*: S1 ('MetaSel ('Just "overlappingInstances_unifiers") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ClsInst]))) :+: C1 ('MetaCons "UnsafeOverlap" 'PrefixI 'True) (S1 ('MetaSel ('Just "unsafeOverlap_item") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ErrorItem) :*: (S1 ('MetaSel ('Just "unsafeOverlap_match") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ClsInst) :*: S1 ('MetaSel ('Just "unsafeOverlapped") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty ClsInst))))))))

data CannotUnifyVariableReason Source #

Constructors

CannotUnifyWithPolytype ErrorItem TyVar Type (Maybe TyVarInfo) | A type equality between a type variable and a polytype. Test cases: T12427a, T2846b, T10194, ...
OccursCheck | An occurs check.

Fields

- occursCheckInterestingTyVars :: [TyVar]
- occursCheckAmbiguityInfos :: [AmbiguityInfo]

SkolemEscape ErrorItem Implication [TyVar] | A skolem type variable escapes its scope. Example: data Ex where { MkEx :: a -> MkEx } foo (MkEx x) = x Test cases: TypeSkolEscape, T11142.
DifferentTyVars TyVarInfo | Can't unify the type variable with the other type due to the kind of type variable it is. For example, trying to unify a `SkolemTv` with the type Int, or with a `TyVarTv`.
RepresentationalEq TyVarInfo (Maybe CoercibleMsg) |

#### Instances

Instances details

Generic CannotUnifyVariableReason Source # |
Instance details Defined in GHC.Tc.Errors.Types Associated Types type Rep CannotUnifyVariableReason :: Type -> Type Source # Methods from :: CannotUnifyVariableReason -> Rep CannotUnifyVariableReason x Source # to :: Rep CannotUnifyVariableReason x -> CannotUnifyVariableReason Source #
type Rep CannotUnifyVariableReason Source # |

Instance details

Defined in GHC.Tc.Errors.Types

type Rep CannotUnifyVariableReason = D1 ('MetaData "CannotUnifyVariableReason" "GHC.Tc.Errors.Types" "ghc" 'False) ((C1 ('MetaCons "CannotUnifyWithPolytype" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ErrorItem) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TyVar)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe TyVarInfo)))) :+: C1 ('MetaCons "OccursCheck" 'PrefixI 'True) (S1 ('MetaSel ('Just "occursCheckInterestingTyVars") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVar]) :*: S1 ('MetaSel ('Just "occursCheckAmbiguityInfos") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [AmbiguityInfo]))) :+: (C1 ('MetaCons "SkolemEscape" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ErrorItem) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Implication) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TyVar]))) :+: (C1 ('MetaCons "DifferentTyVars" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TyVarInfo)) :+: C1 ('MetaCons "RepresentationalEq" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TyVarInfo) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe CoercibleMsg))))))

data MismatchMsg Source #

Constructors

BasicMismatch | Couldn't unify two types or kinds. Example: 3 + 3# -- can't match a lifted type with an unlifted type Test cases: T1396, T8263, ...

Fields

- mismatch_ea :: MismatchEA

  Should this be phrased in terms of expected vs actual?

- mismatch_item :: ErrorItem

  The constraint in which the mismatch originated.

- mismatch_ty1 :: Type

  First type (the expected type if if mismatch_ea is True)

- mismatch_ty2 :: Type

  Second type (the actual type if mismatch_ea is True)

- mismatch_whenMatching :: Maybe WhenMatching
- mismatch_mb_same_occ :: Maybe SameOccInfo

KindMismatch | A type has an unexpected kind. Test cases: T2994, T7609, ...

Fields

- kmismatch_what :: TypedThing

  What thing is `kmismatch_actual` the kind of?

- kmismatch_expected :: Type
- kmismatch_actual :: Type

TypeEqMismatch | A mismatch between two types, which arose from a type equality. Test cases: T1470, tcfail212.

Fields

- teq_mismatch_ppr_explicit_kinds :: Bool
- teq_mismatch_item :: ErrorItem
- teq_mismatch_ty1 :: Type
- teq_mismatch_ty2 :: Type
- teq_mismatch_expected :: Type

  The overall expected type

- teq_mismatch_actual :: Type

  The overall actual type

- teq_mismatch_what :: Maybe TypedThing

  What thing is `teq_mismatch_actual` the kind of?

- teq_mb_same_occ :: Maybe SameOccInfo

CouldNotDeduce | Couldn't solve some Wanted constraints using the Givens. Used for messages such as `"No instance for ..."` and `"Could not deduce ... from"`.

Fields

- cnd_user_givens :: [Implication]
- cnd_wanted :: NonEmpty ErrorItem

  The Wanted constraints we couldn't solve.

  N.B.: the `ErrorItem` at the head of the list has been tidied, perhaps not the others.

- cnd_extra :: Maybe CND_Extra

  Some additional info consumed by `mk_supplementary_ea_msg`.

#### Instances

Instances details

Generic MismatchMsg Source # |
Instance details Defined in GHC.Tc.Errors.Types Associated Types type Rep MismatchMsg :: Type -> Type Source # Methods from :: MismatchMsg -> Rep MismatchMsg x Source # to :: Rep MismatchMsg x -> MismatchMsg Source #
type Rep MismatchMsg Source # |

Instance details

Defined in GHC.Tc.Errors.Types

type Rep MismatchMsg = D1 ('MetaData "MismatchMsg" "GHC.Tc.Errors.Types" "ghc" 'False) ((C1 ('MetaCons "BasicMismatch" 'PrefixI 'True) ((S1 ('MetaSel ('Just "mismatch_ea") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 MismatchEA) :*: (S1 ('MetaSel ('Just "mismatch_item") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ErrorItem) :*: S1 ('MetaSel ('Just "mismatch_ty1") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) :*: (S1 ('MetaSel ('Just "mismatch_ty2") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: (S1 ('MetaSel ('Just "mismatch_whenMatching") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe WhenMatching)) :*: S1 ('MetaSel ('Just "mismatch_mb_same_occ") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe SameOccInfo))))) :+: C1 ('MetaCons "KindMismatch" 'PrefixI 'True) (S1 ('MetaSel ('Just "kmismatch_what") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TypedThing) :*: (S1 ('MetaSel ('Just "kmismatch_expected") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Just "kmismatch_actual") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))) :+: (C1 ('MetaCons "TypeEqMismatch" 'PrefixI 'True) (((S1 ('MetaSel ('Just "teq_mismatch_ppr_explicit_kinds") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "teq_mismatch_item") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ErrorItem)) :*: (S1 ('MetaSel ('Just "teq_mismatch_ty1") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Just "teq_mismatch_ty2") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) :*: ((S1 ('MetaSel ('Just "teq_mismatch_expected") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Just "teq_mismatch_actual") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :*: (S1 ('MetaSel ('Just "teq_mismatch_what") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe TypedThing)) :*: S1 ('MetaSel ('Just "teq_mb_same_occ") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe SameOccInfo))))) :+: C1 ('MetaCons "CouldNotDeduce" 'PrefixI 'True) (S1 ('MetaSel ('Just "cnd_user_givens") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Implication]) :*: (S1 ('MetaSel ('Just "cnd_wanted") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty ErrorItem)) :*: S1 ('MetaSel ('Just "cnd_extra") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe CND_Extra))))))

data MismatchEA Source #

Whether to use expected/actual in a type mismatch message.

Constructors

NoEA | Don't use expected/actual.
EA | Use expected/actual.

Fields

- mismatch_mbEA :: Maybe ExpectedActualInfo

  Whether to also mention type synonym expansion.

mkPlainMismatchMsg :: MismatchMsg -> TcSolverReportMsg Source #

Report a mismatch error without any extra information.

mkBasicMismatchMsg :: MismatchEA -> ErrorItem -> Type -> Type -> MismatchMsg Source #

Construct a basic mismatch message between two types.

See `pprMismatchMsg` for how such a message is displayed to users.

data WhenMatching Source #

Explain how a kind equality originated.

Constructors

WhenMatching TcType TcType CtOrigin (Maybe TypeOrKind) |

#### Instances

Instances details

Generic WhenMatching Source # |
Instance details Defined in GHC.Tc.Errors.Types Associated Types type Rep WhenMatching :: Type -> Type Source # Methods from :: WhenMatching -> Rep WhenMatching x Source # to :: Rep WhenMatching x -> WhenMatching Source #
type Rep WhenMatching Source # |

Instance details

Defined in GHC.Tc.Errors.Types

type Rep WhenMatching = D1 ('MetaData "WhenMatching" "GHC.Tc.Errors.Types" "ghc" 'False) (C1 ('MetaCons "WhenMatching" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TcType) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TcType)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CtOrigin) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe TypeOrKind)))))

data ExpectedActualInfo Source #

Expected/actual information.

Constructors

ExpectedActual | Display the expected and actual types.

Fields

- ea_expected, ea_actual :: Type

ExpectedActualAfterTySynExpansion | Display the expected and actual types, after expanding type synonyms.

Fields

- ea_expanded_expected, ea_expanded_actual :: Type

data TyVarInfo Source #

A cue to print out information about type variables, e.g. where they were bound, when there is a mismatch `tv1 ~ ty2`.

Constructors

TyVarInfo |

Fields

- thisTyVar :: TyVar
- thisTyVarIsUntouchable :: Maybe Implication
- otherTy :: Maybe TyVar

data SameOccInfo Source #

Add some information to disambiguate errors in which two `Names` would otherwise appear to be identical.

See Note [Disambiguating (X ~ X) errors].

Constructors

SameOcc |

Fields

- sameOcc_same_pkg :: Bool

  Whether the two `Name`s also came from the same package.

- sameOcc_lhs :: Name
- sameOcc_rhs :: Name

data AmbiguityInfo Source #

Add some information about ambiguity

Constructors

Ambiguity | Some type variables remained ambiguous: print them to the user.

Fields

- lead_with_ambig_msg :: Bool

  True = start the message with "Ambiguous type variable ..." False = create a message of the form "The type variable is ambiguous."

- ambig_tyvars :: ([TyVar], [TyVar])

  Ambiguous kind and type variables, respectively. Guaranteed to not both be empty.

NonInjectiveTyFam TyCon | Remind the user that a particular type family is not injective.

data CND_Extra Source #

Additional information to be given in a `CouldNotDeduce` message, which is then passed on to `mk_supplementary_ea_msg`.

Constructors

CND_Extra TypeOrKind Type Type |

data FitsMbSuppressed Source #

A collection of valid hole fits or refinement fits, in which some fits might have been suppressed.

Constructors

Fits |

Fields

- fits :: [HoleFit]
- fitsSuppressed :: Bool

  Whether we have suppressed any fits because there were too many.

data ValidHoleFits Source #

A collection of hole fits and refinement fits.

Constructors

ValidHoleFits |

Fields

- holeFits :: FitsMbSuppressed
- refinementFits :: FitsMbSuppressed

noValidHoleFits :: ValidHoleFits Source #

data HoleFitDispConfig Source #

Configuration for pretty-printing valid hole fits.

Constructors

HFDC |

Fields

- showWrap, showWrapVars, showType, showProv, showMatches :: Bool

data RelevantBindings Source #

Constructors

RelevantBindings |

Fields

- relevantBindingNamesAndTys :: [(Name, Type)]
- ranOutOfFuel :: Bool

  Whether we ran out of fuel generating the bindings.

pprRelevantBindings :: RelevantBindings -> SDoc Source #

Display some relevant bindings.

data PromotionErr Source #

Constructors

TyConPE |
ClassPE |
FamDataConPE |
ConstrainedDataConPE PredType |
PatSynPE |
RecDataConPE |
TermVariablePE |
NoDataKindsDC |

#### Instances

Instances details

Outputable PromotionErr Source # |
Instance details Defined in GHC.Tc.Errors.Types Methods ppr :: PromotionErr -> SDoc Source #

pprPECategory :: PromotionErr -> SDoc Source #

peCategory :: PromotionErr -> String Source #

data NotInScopeError Source #

Some form of `"not in scope"` error. See also the `OutOfScopeHole` constructor of `HoleError`.

Constructors

NotInScope | A run-of-the-mill `"not in scope"` error.
NoExactName Name | An exact `Name` was not in scope. This usually indicates a problem with a Template Haskell splice. Test cases: T5971, T18263.
SameName [GlobalRdrElt] | always at least 2 elements
MissingBinding SDoc [GhcHint] |
NoTopLevelBinding | Couldn't find a top-level binding. Happens when specifying an annotation for something that is not in scope. Test cases: annfail01, annfail02, annfail11.
UnknownSubordinate SDoc | A class doesn't have a method with this name, or, a class doesn't have an associated type with this name, or, a record doesn't have a record field with this name.

#### Instances

Instances details

Generic NotInScopeError Source # |
Instance details Defined in GHC.Tc.Errors.Types Associated Types type Rep NotInScopeError :: Type -> Type Source # Methods from :: NotInScopeError -> Rep NotInScopeError x Source # to :: Rep NotInScopeError x -> NotInScopeError Source #
type Rep NotInScopeError Source # |

Instance details

Defined in GHC.Tc.Errors.Types

type Rep NotInScopeError = D1 ('MetaData "NotInScopeError" "GHC.Tc.Errors.Types" "ghc" 'False) ((C1 ('MetaCons "NotInScope" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "NoExactName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: C1 ('MetaCons "SameName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [GlobalRdrElt])))) :+: (C1 ('MetaCons "MissingBinding" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SDoc) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [GhcHint])) :+: (C1 ('MetaCons "NoTopLevelBinding" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "UnknownSubordinate" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SDoc)))))

mkTcRnNotInScope :: RdrName -> NotInScopeError -> TcRnMessage Source #

Create a `"not in scope"` error message for the given `RdrName`.

data ImportError Source #

Explain a problem with an import.

Constructors

MissingModule ModuleName | Couldn't find a module with the requested name.
ModulesDoNotExport (NonEmpty Module) OccName | The imported modules don't export what we're looking for.

#### Instances

Instances details

Outputable ImportError Source # |
Instance details Defined in GHC.Tc.Errors.Ppr Methods ppr :: ImportError -> SDoc Source #

data HoleError Source #

Report an error involving a `Hole`.

This could be an out of scope data constructor or variable, a typed hole, or a wildcard in a type.

Constructors

OutOfScopeHole [ImportError] | Report an out-of-scope data constructor or variable masquerading as an expression hole. See Note [Insoluble holes] in GHC.Tc.Types.Constraint. See `NotInScopeError` for other not-in-scope errors. Test cases: T9177a.
HoleError HoleSort [TcTyVar] [(SkolemInfoAnon, [TcTyVar])] | Report a typed hole, or wildcard, with additional information.

data CoercibleMsg Source #

A message that aims to explain why two types couldn't be seen to be representationally equal.

Constructors

UnknownRoles Type | Not knowing the role of a type constructor prevents us from concluding that two types are representationally equal. Example: foo :: Applicative m => m (Sum Int) foo = coerce (pure $ 1 :: Int) We don't know what role `m` has, so we can't coerce `m Int` to `m (Sum Int)`. Test cases: T8984, TcCoercibleFail.
TyConIsAbstract TyCon | The fact that a `TyCon` is abstract prevents us from decomposing a `TyConApp` and deducing that two types are representationally equal. Test cases: none.
OutOfScopeNewtypeConstructor TyCon DataCon | We can't unwrap a newtype whose constructor is not in scope. Example: import Data.Ord (Down) -- NB: not importing the constructor foo :: Int -> Down Int foo = coerce Test cases: TcCoercibleFail.

data PotentialInstances Source #

This datatype collates instances that match or unifier, in order to report an error message for an unsolved typeclass constraint.

Constructors

PotentialInstances |

Fields

- matches :: [ClsInst]
- unifiers :: [ClsInst]

data UnsupportedCallConvention Source #

Specifies which calling convention is unsupported on the current platform

Constructors

StdCallConvUnsupported |
PrimCallConvUnsupported |
JavaScriptCallConvUnsupported |

#### Instances

Instances details

Eq UnsupportedCallConvention Source # |
Instance details Defined in GHC.Tc.Errors.Types Methods (==) :: UnsupportedCallConvention -> UnsupportedCallConvention -> Bool # (/=) :: UnsupportedCallConvention -> UnsupportedCallConvention -> Bool #

type ExpectedBackends = [Backend] Source #

Specifies which back ends can handle a requested foreign import or export

data ArgOrResult Source #

Whether the error pertains to a function argument or a result.

Constructors

Arg |
Result |

data MatchArgsContext Source #

Context for a mismatch in the number of arguments

Constructors

EquationArgs !Name | Name of the function
PatternArgs !(HsMatchContext GhcTc) | Pattern match specifics

data MatchArgBadMatches where Source #

The information necessary to report mismatched numbers of arguments in a match group.

Constructors

MatchArgMatches |

Fields

- :: { matchArgFirstMatch :: LocatedA (Match GhcRn body)
- , matchArgBadMatches :: NonEmpty (LocatedA (Match GhcRn body))
- } -> MatchArgBadMatches

data ConversionFailReason Source #

The reason a TH splice could not be converted to a Haskell expression

Constructors

IllegalOccName !NameSpace !String |
SumAltArityExceeded !SumAlt !SumArity |
IllegalSumAlt !SumAlt |
IllegalSumArity !SumArity |
MalformedType !TypeOrKind !Type |
IllegalLastStatement !HsDoFlavour !(LStmt GhcPs (LHsExpr GhcPs)) |
KindSigsOnlyAllowedOnGADTs |
IllegalDeclaration !THDeclDescriptor !IllegalDecls |
CannotMixGADTConsWith98Cons |
EmptyStmtListInDoBlock |
NonVarInInfixExpr |
MultiWayIfWithoutAlts |
CasesExprWithoutAlts |
ImplicitParamsWithOtherBinds |
InvalidCCallImpent !String | Source
RecGadtNoCons |
GadtNoCons |
InvalidTypeInstanceHeader !Type |
InvalidTyFamInstLHS !Type |
InvalidImplicitParamBinding |
DefaultDataInstDecl ![LDataFamInstDecl GhcPs] |
FunBindLacksEquations !Name |

#### Instances

Instances details

Generic ConversionFailReason Source # |
Instance details Defined in GHC.Tc.Errors.Types Associated Types type Rep ConversionFailReason :: Type -> Type Source # Methods from :: ConversionFailReason -> Rep ConversionFailReason x Source # to :: Rep ConversionFailReason x -> ConversionFailReason Source #
type Rep ConversionFailReason Source # |

Instance details

Defined in GHC.Tc.Errors.Types

type Rep ConversionFailReason = D1 ('MetaData "ConversionFailReason" "GHC.Tc.Errors.Types" "ghc" 'False) ((((C1 ('MetaCons "IllegalOccName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 NameSpace) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 String)) :+: C1 ('MetaCons "SumAltArityExceeded" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 SumAlt) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 SumArity))) :+: (C1 ('MetaCons "IllegalSumAlt" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 SumAlt)) :+: (C1 ('MetaCons "IllegalSumArity" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 SumArity)) :+: C1 ('MetaCons "MalformedType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TypeOrKind) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type))))) :+: ((C1 ('MetaCons "IllegalLastStatement" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 HsDoFlavour) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LStmt GhcPs (LHsExpr GhcPs)))) :+: (C1 ('MetaCons "KindSigsOnlyAllowedOnGADTs" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "IllegalDeclaration" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 THDeclDescriptor) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 IllegalDecls)))) :+: (C1 ('MetaCons "CannotMixGADTConsWith98Cons" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "EmptyStmtListInDoBlock" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NonVarInInfixExpr" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "MultiWayIfWithoutAlts" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CasesExprWithoutAlts" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ImplicitParamsWithOtherBinds" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "InvalidCCallImpent" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 String)) :+: C1 ('MetaCons "RecGadtNoCons" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "GadtNoCons" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "InvalidTypeInstanceHeader" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)) :+: C1 ('MetaCons "InvalidTyFamInstLHS" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)))) :+: (C1 ('MetaCons "InvalidImplicitParamBinding" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "DefaultDataInstDecl" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [LDataFamInstDecl GhcPs])) :+: C1 ('MetaCons "FunBindLacksEquations" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name)))))))

data UnrepresentableTypeDescr Source #

Constructors

LinearInvisibleArgument |
CoercionsInTypes |

data LookupTHInstNameErrReason Source #

Constructors

NoMatchesFound |
CouldNotDetermineInstance |

data SplicePhase Source #

The phase in which an exception was encountered when dealing with a TH splice

Constructors

SplicePhase_Run |
SplicePhase_CompileAndLink |

data THDeclDescriptor Source #

Label for a TH declaration

Constructors

InstanceDecl |
WhereClause |
LetBinding |
LetExpression |
ClssDecl |

data RunSpliceFailReason Source #

Constructors

ConversionFail !ThingBeingConverted !ConversionFailReason |

#### Instances

Instances details

Generic RunSpliceFailReason Source # |
Instance details Defined in GHC.Tc.Errors.Types Associated Types type Rep RunSpliceFailReason :: Type -> Type Source # Methods from :: RunSpliceFailReason -> Rep RunSpliceFailReason x Source # to :: Rep RunSpliceFailReason x -> RunSpliceFailReason Source #
type Rep RunSpliceFailReason Source # |

Instance details

Defined in GHC.Tc.Errors.Types

type Rep RunSpliceFailReason = D1 ('MetaData "RunSpliceFailReason" "GHC.Tc.Errors.Types" "ghc" 'False) (C1 ('MetaCons "ConversionFail" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ThingBeingConverted) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ConversionFailReason)))

data ThingBeingConverted Source #

Identifies the TH splice attempting to be converted

Constructors

ConvDec !Dec |
ConvExp !Exp |
ConvPat !Pat |
ConvType !Type |

data IllegalDecls Source #

Constructors

IllegalDecls !(NonEmpty (LHsDecl GhcPs)) |
IllegalFamDecls !(NonEmpty (LFamilyDecl GhcPs)) |

data EmptyStatementGroupErrReason Source #

The context for an "empty statement group" error.

Constructors

EmptyStmtsGroupInParallelComp | Empty statement group in a parallel list comprehension
EmptyStmtsGroupInTransformListComp | Empty statement group in a transform list comprehension Example: [() | then ()]
EmptyStmtsGroupInDoNotation HsDoFlavour | Empty statement group in do notation Example: do
EmptyStmtsGroupInArrowNotation | Empty statement group in arrow notation Example: proc () -> do

#### Instances

Instances details

Generic EmptyStatementGroupErrReason Source # |
Instance details Defined in GHC.Tc.Errors.Types Associated Types type Rep EmptyStatementGroupErrReason :: Type -> Type Source # Methods from :: EmptyStatementGroupErrReason -> Rep EmptyStatementGroupErrReason x Source # to :: Rep EmptyStatementGroupErrReason x -> EmptyStatementGroupErrReason Source #
type Rep EmptyStatementGroupErrReason Source # |

Instance details

Defined in GHC.Tc.Errors.Types

type Rep EmptyStatementGroupErrReason = D1 ('MetaData "EmptyStatementGroupErrReason" "GHC.Tc.Errors.Types" "ghc" 'False) ((C1 ('MetaCons "EmptyStmtsGroupInParallelComp" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "EmptyStmtsGroupInTransformListComp" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "EmptyStmtsGroupInDoNotation" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 HsDoFlavour)) :+: C1 ('MetaCons "EmptyStmtsGroupInArrowNotation" 'PrefixI 'False) (U1 :: Type -> Type)))

data UnexpectedStatement where Source #

An existential wrapper around ``StmtLR` GhcPs GhcPs body`.

Constructors

UnexpectedStatement :: Outputable (StmtLR GhcPs GhcPs body) => StmtLR GhcPs GhcPs body -> UnexpectedStatement |