Moduleghc-9.10.3GHC2021
GHC.Tc.Types
Various types used during typechecking.
Please see GHC.Tc.Utils.Monad as well for operations on these types. You probably want to import it, instead of this module.
All the monads exported here are built on top of the same IOEnv monad. The monad functions like a Reader monad in the way it passes the environment around. This is done to allow the environment to be manipulated in a stack like fashion when entering expressions... etc.
For state that is global and should be returned at the end (e.g not part of the stack mechanism), you should use a TcRef (= IORef) to store them.
- 60 types
- 36 values
- Packageghc-9.10.3
- Exports98
- LanguageGHC2021
- LicenceBSD-3-Clause
- SourceTypes.hs
Historical "type-checking monad" (now it's just TcRn).
Historical "renaming monad" (now it's just TcRn).
Type alias for IORef; the convention is we'll use this for mutable bits of data in the typechecker which are updated during typechecking and returned at the end.
Instances8Quasi, MonadUnique, MonadThings, ContainsDynFlags, ContainsHooks, ContainsLogger, …
Quasi TcMDefined in ghc-9.10.3 · GHC.Tc.Gen.Splice · orphanMonadUnique (IOEnv (Env gbl lcl))Defined in ghc-9.10.3 · GHC.Tc.Utils.Monad · orphanMonadThings (IOEnv (Env DsGblEnv DsLclEnv))Defined in ghc-9.10.3 · GHC.HsToCore.Monad · orphanMonadThings (IOEnv (Env TcGblEnv TcLclEnv))Defined in ghc-9.10.3 · GHC.Tc.Utils.Env · orphanContainsDynFlags (Env gbl lcl)Defined in ghc-9.10.3 · GHC.Tc.TypesContainsHooks (Env gbl lcl)Defined in ghc-9.10.3 · GHC.Tc.TypesContainsLogger (Env gbl lcl)Defined in ghc-9.10.3 · GHC.Tc.TypesContainsModule gbl => ContainsModule (Env gbl lcl)Defined in ghc-9.10.3 · GHC.Tc.Types
TcGblEnv describes the top-level of the module at the point at which the typechecker is finished work. It is this structure that is handed on to the desugarer For state that needs to be updated during the typechecking phase and returned at end, use a TcRef (= IORef).
Constructors
TcGblEnvtcg_mod :: ModuleModule being compiled
tcg_semantic_mod :: ModuleIf a signature, the backing module See also Note [Identity versus semantic module]
tcg_src :: HscSourceWhat kind of module (regular Haskell, hs-boot, hsig)
tcg_rdr_env :: GlobalRdrEnvTop level envt; used during renaming
tcg_default :: Maybe [Type]Types used for defaulting.
Nothing=> nodefaultdecltcg_fix_env :: FixityEnvJust for things in this module
tcg_type_env :: TypeEnvGlobal type env for the module we are compiling now. All TyCons and Classes (for this module) end up in here right away, along with their derived constructors, selectors.
(Ids defined in this module start in the local envt, though they move to the global envt during zonking)
NB: for what "things in this module" means, see Note [The interactive package] in GHC.Runtime.Context
tcg_type_env_var :: KnotVars (IORef TypeEnv)tcg_inst_env :: !InstEnvInstance envt for all home-package modules; Includes the dfuns in tcg_insts NB. BangPattern is to fix a leak, see #15111
tcg_fam_inst_env :: !FamInstEnvDitto for family instances NB. BangPattern is to fix a leak, see #15111
tcg_ann_env :: AnnEnvAnd for annotations
tcg_exports :: [AvailInfo]What is exported
tcg_imports :: ImportAvailsInformation about what was imported from where, including things bound in this module. Also store Safe Haskell info here about transitive trusted package requirements.
There are not many uses of this field, so you can grep for all them.
The ImportAvails records information about the following things:
All of the modules you directly imported (tcRnImports)
The orphans (only!) of all imported modules in a GHCi session (runTcInteractive)
The module that instantiated a signature
Each of the signatures that merged in
It is used in the following ways: - imp_orphs is used to determine what orphan modules should be visible in the context (tcVisibleOrphanMods) - imp_finsts is used to determine what family instances should be visible (tcExtendLocalFamInstEnv) - To resolve the meaning of the export list of a module (tcRnExports) - imp_mods is used to compute usage info (mkIfaceTc, deSugar) - imp_trust_own_pkg is used for Safe Haskell in interfaces (mkIfaceTc, as well as in GHC.Driver.Main) - To create the Dependencies field in interface (mkDependencies)
tcg_dus :: DefUsestcg_used_gres :: TcRef [GlobalRdrElt]INVARIANT: all these GREs were imported; that is, they all have a non-empty gre_imp field.
tcg_keep :: TcRef NameSettcg_th_used :: TcRef BoolTrue<=> Template Haskell syntax used.We need this so that we can generate a dependency on the Template Haskell package, because the desugarer is going to emit loads of references to TH symbols. The reference is implicit rather than explicit, so we have to zap a mutable variable.
tcg_th_splice_used :: TcRef BoolTrue<=> A Template Haskell splice was used.Splices disable recompilation avoidance (see #481)
tcg_th_needed_deps :: TcRef ([Linkable], PkgsLoaded)The set of runtime dependencies required by this module See Note [Object File Dependencies]
tcg_dfun_n :: TcRef OccSetAllows us to choose unique DFun names.
tcg_zany_n :: TcRef IntegerA source of unique identities for ZonkAny instances See Note [Any types] in GHC.Builtin.Types, wrinkle (Any4)
tcg_merged :: [(Module, Fingerprint)]The requirements we merged with; we always have to recompile if any of these changed.
tcg_rn_exports :: Maybe [(LIE GhcRn, Avails)]tcg_rn_imports :: [LImportDecl GhcRn]tcg_rn_decls :: Maybe (HsGroup GhcRn)Renamed decls, maybe.
Nothing<=> Don't retain renamed decls.tcg_dependent_files :: TcRef [FilePath]dependencies from addDependentFile
tcg_th_topdecls :: TcRef [LHsDecl GhcPs]Top-level declarations from addTopDecls
tcg_th_foreign_files :: TcRef [(ForeignSrcLang, FilePath)]Foreign files emitted from TH.
tcg_th_topnames :: TcRef NameSetExact names bound in top-level declarations in tcg_th_topdecls
tcg_th_modfinalizers :: TcRef [(TcLclEnv, ThModFinalizers)]Template Haskell module finalizers.
They can use particular local environments.
tcg_th_coreplugins :: TcRef [String]Core plugins added by Template Haskell code.
tcg_th_state :: TcRef (Map TypeRep Dynamic)tcg_th_remote_state :: TcRef (Maybe (ForeignRef (IORef QState)))Template Haskell state
tcg_th_docs :: TcRef THDocsDocs added in Template Haskell via
putDoc.tcg_ev_binds :: Bag EvBindtcg_tr_module :: Maybe Idtcg_binds :: LHsBinds GhcTctcg_sigs :: NameSettcg_imp_specs :: [LTcSpecPrag]tcg_warns :: Warnings GhcRntcg_anns :: [Annotation]tcg_tcs :: [TyCon]tcg_ksigs :: NameSettcg_insts :: [ClsInst]tcg_fam_insts :: [FamInst]tcg_rules :: [LRuleDecl GhcTc]tcg_fords :: [LForeignDecl GhcTc]tcg_patsyns :: [PatSyn]tcg_hdr_info :: (Maybe (LHsDoc GhcRn), Maybe (XRec GhcRn ModuleName))Maybe Haddock header docs and Maybe located module name
tcg_hpc :: !AnyHpcUsageTrueif any part of the prog uses hpc instrumentation. NB. BangPattern is to fix a leak, see #15111tcg_self_boot :: SelfBootInfoWhether this module has a corresponding hi-boot file
tcg_main :: Maybe NameThe Name of the main function, if this module is the main module.
tcg_safe_infer :: TcRef BoolHas the typechecker inferred this module as -XSafe (Safe Haskell)? See Note [Safe Haskell Overlapping Instances Implementation], although this is used for more than just that failure case.
tcg_safe_infer_reasons :: TcRef (Messages TcRnMessage)Unreported reasons why tcg_safe_infer is False. INVARIANT: If this Messages is non-empty, then tcg_safe_infer is False. It may be that tcg_safe_infer is False but this is empty, if no reasons are supplied (#19714), or if those reasons have already been reported by GHC.Driver.Main.markUnsafeInfer
tcg_tc_plugin_solvers :: [TcPluginSolver]A list of user-defined type-checking plugins for constraint solving.
tcg_tc_plugin_rewriters :: UniqFM TyCon [TcPluginRewriter]A collection of all the user-defined type-checking plugins for rewriting type family applications, collated by their type family TyCons.
tcg_defaulting_plugins :: [FillDefaulting]A list of user-defined plugins for type defaulting plugins.
tcg_hf_plugins :: [HoleFitPlugin]A list of user-defined plugins for hole fit suggestions.
tcg_top_loc :: RealSrcSpanThe RealSrcSpan this module came from
tcg_static_wc :: TcRef WantedConstraintsWanted constraints of static forms. See Note [Constraints in static forms].
tcg_complete_matches :: !CompleteMatchesTracking indices for cost centre annotations
tcg_cc_st :: TcRef CostCentreStatetcg_next_wrapper_num :: TcRef (ModuleEnv Int)See Note [Generating fresh names for FFI wrappers]
Instances3Quasi, ContainsModule, MonadThings
Quasi TcMDefined in ghc-9.10.3 · GHC.Tc.Gen.Splice · orphanContainsModule TcGblEnvDefined in ghc-9.10.3 · GHC.Tc.TypesMonadThings (IOEnv (Env TcGblEnv TcLclEnv))Defined in ghc-9.10.3 · GHC.Tc.Utils.Env · orphan
Constructors
Constructors
Constructors
A RewriteEnv carries the necessary context for performing rewrites (i.e. type family reductions and following filled-in metavariables) in the solver.
Constructors
REre_loc :: !CtLocIn which context are we rewriting?
Type-checking plugins might want to use this location information when emitting new Wanted constraints when rewriting type family applications. This ensures that such Wanted constraints will, when unsolved, give rise to error messages with the correct source location.
re_flavour :: !CtFlavourre_eq_rel :: !EqRelAt what role are we rewriting?
See Note [Rewriter EqRels] in GHC.Tc.Solver.Rewrite
re_rewriters :: !TcRef RewriterSetSee Note [Wanteds rewrite Wanteds]
FrontendResult describes the result of running the frontend of a Haskell module. Currently one always gets a FrontendTypecheck, since running the frontend involves typechecking a program. hs-sig merges are not handled here.
This data type really should be in GHC.Driver.Env, but it needs to have a TcGblEnv which is only defined here.
Constructors
Additional context to include in an error message, e.g. "In the type signature ...", "In the ambiguity check for ...", etc.
ImportAvails summarises what was imported from where, irrespective of whether the imported things are actually used or not. It is used:
when processing the export list,
when constructing usage info for the interface file,
to identify the list of directly imported modules for initialisation purposes and for optimised overlap checking of family instances,
when figuring out what things are really unused
Constructors
ImportAvailsimp_mods :: ImportedModsDomain is all directly-imported modules
See the documentation on ImportedModsVal in GHC.Unit.Module.Imported for the meaning of the fields.
We need a full ModuleEnv rather than a ModuleNameEnv here, because we might be importing modules of the same name from different packages. (currently not the case, but might be in the future).
imp_direct_dep_mods :: InstalledModuleEnv ModuleNameWithIsBootHome-package modules directly imported by the module being compiled.
imp_dep_direct_pkgs :: Set UnitIdPackages directly needed by the module being compiled
imp_trust_own_pkg :: BoolDo we require that our own package is trusted? This is to handle efficiently the case where a Safe module imports a Trustworthy module that resides in the same package as it. See Note [Trust Own Package] in GHC.Rename.Names
imp_trust_pkgs :: Set UnitIdThis records the packages the current module needs to trust for Safe Haskell compilation to succeed. A package is required to be trusted if we are dependent on a trustworthy module in that package. See Note [Tracking Trust Transitively] in GHC.Rename.Names
imp_boot_mods :: InstalledModuleEnv ModuleNameWithIsBootDomain is all modules which have hs-boot files, and whether we should import the boot version of interface file. Only used in one-shot mode to populate eps_is_boot.
imp_sig_mods :: [ModuleName]Signature modules below this one
imp_orphs :: [Module]Orphan modules below us in the import tree (and maybe including us for imported modules)
imp_finsts :: [Module]Family instance modules below us in the import tree (and maybe including us for imported modules)
Union two ImportAvails
This function is a key part of Import handling, basically for each import we create a separate ImportAvails structure and then union them all together with this function.
Instances2Outputable, HasOccName
Outputable TcBinderDefined in ghc-9.10.3 · GHC.Tc.Types.BasicTypesHasOccName TcBinderDefined in ghc-9.10.3 · GHC.Tc.Types.BasicTypes
A typecheckable thing available in a local context. Could be AGlobal TyThing, but also lexically scoped variables, etc. See GHC.Tc.Utils.Env for how to retrieve a TyThing given a Name.
Instances1Outputable
Outputable TcTyThingDefined in ghc-9.10.3 · GHC.Tc.Types.BasicTypes
Instances3Generic, Outputable, Rep
Generic PromotionErrDefined in ghc-9.10.3 · GHC.Tc.Errors.Types.PromotionErrOutputable PromotionErrDefined in ghc-9.10.3 · GHC.Tc.Errors.Types.PromotionErrtype Rep PromotionErr = D1 ('MetaDataDefined in ghc-9.10.3 · GHC.Tc.Errors.Types.PromotionErr"PromotionErr"
"GHC.Tc.Errors.Types.PromotionErr"
"ghc-9.10.3-cff4"
'False) (((C1 ('MetaCons"TyConPE"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ClassPE"
'PrefixI 'False) U1) :+: (C1 ('MetaCons"FamDataConPE"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ConstrainedDataConPE"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ThetaType)))) :+: ((C1 ('MetaCons"PatSynPE"
'PrefixI 'False) U1 :+: C1 ('MetaCons"RecDataConPE"
'PrefixI 'False) U1) :+: (C1 ('MetaCons"TermVariablePE"
'PrefixI 'False) U1 :+: C1 ('MetaCons"TypeVariablePE"
'PrefixI 'False) U1)))
IdBindingInfo describes how an Id is bound.
It is used for the following purposes:
a) for static forms in GHC.Tc.Gen.Expr.checkClosedInStaticForm and
b) to figure out when a nested binding can be generalised,
in GHC.Tc.Gen.Bind.decideGeneralisationPlan.
Constructors
Instances1Outputable
Outputable IdBindingInfoDefined in ghc-9.10.3 · GHC.Tc.Types.BasicTypes
IsGroupClosed describes a group of mutually-recursive bindings
Constructors
Constructors
A list of conlikes which represents a complete pattern match.
These arise from COMPLETE signatures.
See also Note [Implementation of COMPLETE pragmas].
Instances1Outputable
Outputable CompleteMatchDefined in ghc-9.10.3 · GHC.Types.CompleteMatch
Constructors
Instances1Outputable
Outputable ThStageDefined in ghc-9.10.3 · GHC.Tc.Types.TH
Constructors
Foreign formats supported by GHC via TH
Instances5Eq, Show, Generic, Binary, Rep
Eq ForeignSrcLangDefined in ghc-boot-th-9.10.3 · GHC.ForeignSrcLang.TypeShow ForeignSrcLangDefined in ghc-boot-th-9.10.3 · GHC.ForeignSrcLang.TypeGeneric ForeignSrcLangDefined in ghc-boot-th-9.10.3 · GHC.ForeignSrcLang.TypeBinary ForeignSrcLangDefined in ghc-boot-9.10.3 · GHC.ForeignSrcLang · orphantype Rep ForeignSrcLang = D1 ('MetaDataDefined in ghc-boot-th-9.10.3 · GHC.ForeignSrcLang.Type"ForeignSrcLang"
"GHC.ForeignSrcLang.Type"
"ghc-boot-th-9.10.3-9652"
'False) ((C1 ('MetaCons"LangC"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"LangCxx"
'PrefixI 'False) U1 :+: C1 ('MetaCons"LangObjc"
'PrefixI 'False) U1)) :+: ((C1 ('MetaCons"LangObjcxx"
'PrefixI 'False) U1 :+: C1 ('MetaCons"LangAsm"
'PrefixI 'False) U1) :+: (C1 ('MetaCons"LangJs"
'PrefixI 'False) U1 :+: C1 ('MetaCons"RawObject"
'PrefixI 'False) U1)))
The current collection of docs that Template Haskell has built up via putDoc.
This is a mirror of Template Haskell's DocLoc, but the TH names are resolved to GHC names.
Constructors
Constructors
Instances1Outputable
Outputable TcSigInfoDefined in ghc-9.10.3 · GHC.Tc.Types.BasicTypes
Constructors
Instances1Outputable
Outputable TcIdSigDefined in ghc-9.10.3 · GHC.Tc.Types.BasicTypes
Instances1Outputable
Outputable TcCompleteSigDefined in ghc-9.10.3 · GHC.Tc.Types.BasicTypes
Constructors
Instances1Outputable
Outputable TcPartialSigDefined in ghc-9.10.3 · GHC.Tc.Types.BasicTypes
Constructors
Instances1Outputable
Outputable TcPatSynSigDefined in ghc-9.10.3 · GHC.Tc.Types.BasicTypes
Constructors
TISIsig_inst_sig :: TcIdSigsig_inst_skols :: [(Name, InvisTVBinder)]sig_inst_theta :: TcThetaTypesig_inst_tau :: TcSigmaTypesig_inst_wcs :: [(Name, TcTyVar)]sig_inst_wcx :: Maybe TcType
Instances1Outputable
Outputable TcIdSigInstDefined in ghc-9.10.3 · GHC.Tc.Types.BasicTypes
No signature or a partial signature
A NameShape is a substitution on Names that can be used
to refine the identities of a hole while we are renaming interfaces
(see GHC.Iface.Rename). Specifically, a NameShape for
ns_module_name A, defines a mapping from {A.T}
(for some OccName T) to some arbitrary other Name.
The most intriguing thing about a NameShape, however, is
how it's constructed. A NameShape is *implied* by the
exported AvailInfos of the implementor of an interface:
if an implementor of signature <H> exports M.T, you implicitly
define a substitution from {H.T} to M.T. So a NameShape
is computed from the list of AvailInfos that are exported
by the implementation of a module, or successively merged
together by the export lists of signatures which are joining
together.
It's not the most obvious way to go about doing this, but it does seem to work!
NB: Can't boot this and put it in NameShape because then we start pulling in too many DynFlags things.
Constructors
Get target platform
Constructors
forall s. TcPlugintcPluginInit :: TcPluginM sInitialize plugin, when entering type-checker.
tcPluginSolve :: s -> TcPluginSolverSolve some constraints.
This function will be invoked at two points in the constraint solving process: once to simplify Given constraints, and once to solve Wanted constraints. In the first case (and only in the first case), no Wanted constraints will be passed to the plugin.
The plugin can either return a contradiction, or specify that it has solved some constraints (with evidence), and possibly emit additional constraints. These returned constraints must be Givens in the first case, and Wanteds in the second.
Use
\ _ _ _ _ -> pure $ TcPluginOk [] []if your plugin does not provide this functionality.tcPluginRewrite :: s -> UniqFM TyCon TcPluginRewriterRewrite saturated type family applications.
The plugin is expected to supply a mapping from type family names to rewriting functions. For each type family TyCon, the plugin should provide a function which takes in the given constraints and arguments of a saturated type family application, and return a possible rewriting. See TcPluginRewriter for the expected shape of such a function.
Use
\ _ -> emptyUFMif your plugin does not provide this functionality.tcPluginStop :: s -> TcPluginM ()Clean up after the plugin, when exiting the type-checker.
Result of running a solver plugin.
Constructors
TcPluginSolveResulttcPluginInsolubleCts :: [Ct]Insoluble constraints found by the plugin.
These constraints will be added to the inert set, and reported as insoluble to the user.
tcPluginSolvedCts :: [(EvTerm, Ct)]Solved constraints, together with their evidence.
These are removed from the inert set, and the evidence for them is recorded.
tcPluginNewCts :: [Ct]New constraints that the plugin wishes to emit.
These will be added to the work list.
The plugin found a contradiction. The returned constraints are removed from the inert set, and recorded as insoluble.
The returned list of constraints should never be empty.
The plugin has not found any contradictions,
The first field is for constraints that were solved. The second field contains new work, that should be processed by the constraint solver.
Constructors
TcPluginNoRewriteThe plugin does not rewrite the type family application.
TcPluginRewriteToThe plugin rewrites the type family application providing a rewriting together with evidence: a Reduction, which contains the rewritten type together with a
Coercionwhose right-hand-side type is the rewritten type.The plugin can also emit additional Wanted constraints.
The solve function of a type-checking plugin takes in Given
and Wanted constraints, and should return a TcPluginSolveResult
indicating which Wanted constraints it could solve, or whether any are
insoluble.
For rewriting type family applications, a type-checking plugin provides a function of this type for each type family TyCon.
The function is provided with the current set of Given constraints, together with the arguments to the type family. The type family application will always be fully saturated.
TcPluginM is the monad in which type-checking plugins operate.
This function provides an escape for direct access to
the TcM monad. It should not be used lightly, and
the provided TcPluginM API should be favoured instead.
A plugin for controlling defaulting.
Constructors
forall s. DefaultingPlugindePluginInit :: TcPluginM sInitialize plugin, when entering type-checker.
dePluginRun :: s -> FillDefaultingDefault some types
dePluginStop :: s -> TcPluginM ()Clean up after the plugin, when exiting the type-checker.
A collection of candidate default types for sets of type variables.
Constructors
DefaultingProposaldeProposals :: [[(TcTyVar, Type)]]The type variable assignments to try.
deProposalCts :: [Ct]The constraints against which defaults are checked.
Instances1Outputable
Outputable DefaultingProposalDefined in ghc-9.10.3 · GHC.Tc.Types
Check the TcGblEnv for consistency. Currently, only checks axioms, but should check other aspects, too.
An error which might arise during typechecking/renaming.
Instances4Generic, Diagnostic, Rep, DiagnosticOpts
Generic TcRnMessageDefined in ghc-9.10.3 · GHC.Tc.Errors.TypesDiagnostic TcRnMessageDefined in ghc-9.10.3 · GHC.Tc.Errors.Ppr · orphantype Rep TcRnMessage = D1 ('MetaDataDefined in ghc-9.10.3 · GHC.Tc.Errors.Types"TcRnMessage"
"GHC.Tc.Errors.Types"
"ghc-9.10.3-cff4"
'False) ((((((((C1 ('MetaCons"TcRnUnknownMessage"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (UnknownDiagnostic (DiagnosticOpts TcRnMessage)))) :+: C1 ('MetaCons"TcRnInterfaceError"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 IfaceMessage))) :+: (C1 ('MetaCons"TcRnMessageWithInfo"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 UnitState) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TcRnMessageDetailed)) :+: C1 ('MetaCons"TcRnWithHsDocContext"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 HsDocContext) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TcRnMessage)))) :+: ((C1 ('MetaCons"TcRnSolverReport"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SolverReportWithCtxt) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 DiagnosticReason)) :+: C1 ('MetaCons"TcRnSolverDepthError"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 SubGoalDepth))) :+: (C1 ('MetaCons"TcRnRedundantConstraints"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Id]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (SkolemInfoAnon, Bool))) :+: (C1 ('MetaCons"TcRnInaccessibleCode"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Implication) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SolverReportWithCtxt)) :+: C1 ('MetaCons"TcRnInaccessibleCoAxBranch"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TyCon) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CoAxBranch)))))) :+: (((C1 ('MetaCons"TcRnTypeDoesNotHaveFixedRuntimeRep"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 FixedRuntimeRepProvenance) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ErrInfo))) :+: C1 ('MetaCons"TcRnImplicitLift"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ErrInfo))) :+: (C1 ('MetaCons"TcRnUnusedPatternBinds"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsBind GhcRn))) :+: C1 ('MetaCons"TcRnUnusedQuantifiedTypeVar"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 HsDocContext) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 HsTyVarBndrExistentialFlag)))) :+: ((C1 ('MetaCons"TcRnDodgyImports"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DodgyImportsReason)) :+: C1 ('MetaCons"TcRnDodgyExports"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 GlobalRdrElt))) :+: (C1 ('MetaCons"TcRnMissingImportList"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (IE GhcPs))) :+: (C1 ('MetaCons"TcRnUnsafeDueToPlugin"
'PrefixI 'False) U1 :+: C1 ('MetaCons"TcRnModMissingRealSrcSpan"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Module))))))) :+: ((((C1 ('MetaCons"TcRnIdNotExportedFromModuleSig"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Module)) :+: C1 ('MetaCons"TcRnIdNotExportedFromLocalSig"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name))) :+: (C1 ('MetaCons"TcRnShadowedName"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 OccName) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ShadowedNameProvenance)) :+: C1 ('MetaCons"TcRnInvalidWarningCategory"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 WarningCategory)))) :+: ((C1 ('MetaCons"TcRnDuplicateWarningDecls"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LocatedN RdrName)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RdrName)) :+: C1 ('MetaCons"TcRnSimplifierTooManyIterations"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Cts) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 IntWithInf) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 WantedConstraints)))) :+: (C1 ('MetaCons"TcRnIllegalPatSynDecl"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LIdP GhcPs))) :+: (C1 ('MetaCons"TcRnLinearPatSyn"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)) :+: C1 ('MetaCons"TcRnEmptyRecordUpdate"
'PrefixI 'False) U1)))) :+: (((C1 ('MetaCons"TcRnIllegalFieldPunning"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Located RdrName))) :+: C1 ('MetaCons"TcRnIllegalWildcardsInRecord"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RecordFieldPart))) :+: (C1 ('MetaCons"TcRnIllegalWildcardInType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Name)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 BadAnonWildcardContext)) :+: C1 ('MetaCons"TcRnIllegalNamedWildcardInTypeArgument"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RdrName)))) :+: ((C1 ('MetaCons"TcRnIllegalImplicitTyVarInTypeArgument"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RdrName)) :+: C1 ('MetaCons"TcRnDuplicateFieldName"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RecordFieldPart) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty RdrName)))) :+: (C1 ('MetaCons"TcRnIllegalViewPattern"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Pat GhcPs))) :+: (C1 ('MetaCons"TcRnCharLiteralOutOfRange"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Char)) :+: C1 ('MetaCons"TcRnNegativeNumTypeLiteral"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsTyLit GhcPs))))))))) :+: (((((C1 ('MetaCons"TcRnIllegalWildcardsInConstructor"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name)) :+: C1 ('MetaCons"TcRnIgnoringAnnotations"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [LAnnDecl GhcRn]))) :+: (C1 ('MetaCons"TcRnAnnotationInSafeHaskell"
'PrefixI 'False) U1 :+: C1 ('MetaCons"TcRnInvalidTypeApplication"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LHsWcType GhcRn))))) :+: ((C1 ('MetaCons"TcRnTagToEnumMissingValArg"
'PrefixI 'False) U1 :+: C1 ('MetaCons"TcRnTagToEnumUnspecifiedResTy"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type))) :+: (C1 ('MetaCons"TcRnTagToEnumResTyNotAnEnum"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: (C1 ('MetaCons"TcRnTagToEnumResTyTypeData"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: C1 ('MetaCons"TcRnArrowIfThenElsePredDependsOnResultTy"
'PrefixI 'False) U1)))) :+: (((C1 ('MetaCons"TcRnIllegalHsBootOrSigDecl"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 HsBootOrSig) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 BadBootDecls)) :+: C1 ('MetaCons"TcRnBootMismatch"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 HsBootOrSig) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 BootMismatch))) :+: (C1 ('MetaCons"TcRnRecursivePatternSynonym"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LHsBinds GhcRn))) :+: C1 ('MetaCons"TcRnPartialTypeSigTyVarMismatch"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LHsSigWcType GhcRn)))))) :+: ((C1 ('MetaCons"TcRnPartialTypeSigBadQuantifier"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Type)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LHsSigWcType GhcRn)))) :+: C1 ('MetaCons"TcRnMissingSignature"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 MissingSignature) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Exported))) :+: (C1 ('MetaCons"TcRnPolymorphicBinderMissingSig"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)) :+: (C1 ('MetaCons"TcRnOverloadedSig"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TcIdSig)) :+: C1 ('MetaCons"TcRnTupleConstraintInst"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Class))))))) :+: ((((C1 ('MetaCons"TcRnUserTypeError"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)) :+: C1 ('MetaCons"TcRnConstraintInKind"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type))) :+: (C1 ('MetaCons"TcRnUnboxedTupleOrSumTypeFuncArg"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UnboxedTupleOrSum) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)) :+: C1 ('MetaCons"TcRnLinearFuncInKind"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)))) :+: ((C1 ('MetaCons"TcRnForAllEscapeError"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Kind)) :+: C1 ('MetaCons"TcRnVDQInTermType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe Type)))) :+: (C1 ('MetaCons"TcRnBadQuantPredHead"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)) :+: (C1 ('MetaCons"TcRnIllegalTupleConstraint"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)) :+: C1 ('MetaCons"TcRnNonTypeVarArgInConstraint"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)))))) :+: (((C1 ('MetaCons"TcRnIllegalImplicitParam"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)) :+: C1 ('MetaCons"TcRnIllegalConstraintSynonymOfKind"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type))) :+: (C1 ('MetaCons"TcRnOversaturatedVisibleKindArg"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)) :+: (C1 ('MetaCons"TcRnForAllRankErr"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Rank) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)) :+: C1 ('MetaCons"TcRnSimplifiableConstraint"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 PredType) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 InstanceWhat))))) :+: ((C1 ('MetaCons"TcRnArityMismatch"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyThing) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Arity) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Arity))) :+: C1 ('MetaCons"TcRnIllegalInstance"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 IllegalInstanceReason))) :+: (C1 ('MetaCons"TcRnMonomorphicBindings"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name])) :+: (C1 ('MetaCons"TcRnOrphanInstance"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Either ClsInst FamInst))) :+: C1 ('MetaCons"TcRnFunDepConflict"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 UnitState) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty ClsInst)))))))))) :+: ((((((C1 ('MetaCons"TcRnDupInstanceDecls"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 UnitState) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty ClsInst))) :+: C1 ('MetaCons"TcRnConflictingFamInstDecls"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty FamInst)))) :+: (C1 ('MetaCons"TcRnFamInstNotInjective"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 InjectivityErrReason) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TyCon) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty CoAxBranch)))) :+: C1 ('MetaCons"TcRnBangOnUnliftedType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)))) :+: ((C1 ('MetaCons"TcRnLazyBangOnUnliftedType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)) :+: C1 ('MetaCons"TcRnMultipleDefaultDeclarations"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [LDefaultDecl GhcRn]))) :+: (C1 ('MetaCons"TcRnBadDefaultType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Class])) :+: (C1 ('MetaCons"TcRnPatSynBundledWithNonDataCon"
'PrefixI 'False) U1 :+: C1 ('MetaCons"TcRnPatSynBundledWithWrongType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))))) :+: (((C1 ('MetaCons"TcRnDupeModuleExport"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModuleName)) :+: C1 ('MetaCons"TcRnExportedModNotImported"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModuleName))) :+: (C1 ('MetaCons"TcRnNullExportedModule"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModuleName)) :+: C1 ('MetaCons"TcRnMissingExportList"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModuleName)))) :+: ((C1 ('MetaCons"TcRnExportHiddenComponents"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (IE GhcPs))) :+: C1 ('MetaCons"TcRnDuplicateExport"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 GlobalRdrElt) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (IE GhcPs)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (IE GhcPs))))) :+: (C1 ('MetaCons"TcRnExportedParentChildMismatch"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TyThing)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name]))) :+: (C1 ('MetaCons"TcRnConflictingExports"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 OccName) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 GlobalRdrElt)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (IE GhcPs)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 GlobalRdrElt) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (IE GhcPs))))) :+: C1 ('MetaCons"TcRnDuplicateFieldExport"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (GlobalRdrElt, IE GhcPs)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (GlobalRdrElt, IE GhcPs))))))))) :+: ((((C1 ('MetaCons"TcRnAmbiguousRecordUpdate"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsExpr GhcRn)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TyCon)) :+: C1 ('MetaCons"TcRnMissingFields"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ConLike) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(FieldLabelString, TcType)]))) :+: (C1 ('MetaCons"TcRnFieldUpdateInvalidType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(FieldLabelString, TcType)])) :+: C1 ('MetaCons"TcRnMissingStrictFields"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ConLike) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(FieldLabelString, TcType)])))) :+: ((C1 ('MetaCons"TcRnAmbiguousFieldInUpdate"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (GlobalRdrElt, GlobalRdrElt, [GlobalRdrElt]))) :+: C1 ('MetaCons"TcRnBadRecordUpdate"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [RdrName]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 BadRecordUpdateReason))) :+: (C1 ('MetaCons"TcRnStaticFormNotClosed"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 NotClosedReason)) :+: (C1 ('MetaCons"TcRnUselessTypeable"
'PrefixI 'False) U1 :+: C1 ('MetaCons"TcRnDerivingDefaults"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Class)))))) :+: (((C1 ('MetaCons"TcRnNonUnaryTypeclassConstraint"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LHsSigType GhcRn))) :+: C1 ('MetaCons"TcRnPartialTypeSignatures"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 SuggestPartialTypeSignatures) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ThetaType))) :+: (C1 ('MetaCons"TcRnCannotDeriveInstance"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Class) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Type])) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe (DerivStrategy GhcTc))) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 UsingGeneralizedNewtypeDeriving) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DeriveInstanceErrReason)))) :+: (C1 ('MetaCons"TcRnLazyGADTPattern"
'PrefixI 'False) U1 :+: C1 ('MetaCons"TcRnArrowProcGADTPattern"
'PrefixI 'False) U1))) :+: ((C1 ('MetaCons"TcRnCapturedTermName"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RdrName) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Either [GlobalRdrElt] Name))) :+: C1 ('MetaCons"TcRnTypeEqualityOutOfScope"
'PrefixI 'False) U1) :+: (C1 ('MetaCons"TcRnTypeEqualityRequiresOperators"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"TcRnIllegalTypeOperator"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 SDoc) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RdrName)) :+: C1 ('MetaCons"TcRnIllegalTypeOperatorDecl"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RdrName)))))))) :+: (((((C1 ('MetaCons"TcRnGADTMonoLocalBinds"
'PrefixI 'False) U1 :+: C1 ('MetaCons"TcRnNotInScope"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 NotInScopeError) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RdrName)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ImportError]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [GhcHint])))) :+: (C1 ('MetaCons"TcRnTermNameInType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RdrName) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [GhcHint])) :+: C1 ('MetaCons"TcRnUntickedPromotedThing"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UntickedPromotedThing)))) :+: ((C1 ('MetaCons"TcRnIllegalBuiltinSyntax"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SDoc) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RdrName)) :+: C1 ('MetaCons"TcRnWarnDefaulting"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Ct]) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe TyVar)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))) :+: (C1 ('MetaCons"TcRnIncorrectNameSpace"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)) :+: (C1 ('MetaCons"TcRnForeignImportPrimExtNotSet"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ForeignImport GhcRn))) :+: C1 ('MetaCons"TcRnForeignImportPrimSafeAnn"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ForeignImport GhcRn))))))) :+: (((C1 ('MetaCons"TcRnForeignFunctionImportAsValue"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ForeignImport GhcRn))) :+: C1 ('MetaCons"TcRnFunPtrImportWithoutAmpersand"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ForeignImport GhcRn)))) :+: (C1 ('MetaCons"TcRnIllegalForeignDeclBackend"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Either (ForeignExport GhcRn) (ForeignImport GhcRn))) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Backend) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ExpectedBackends))) :+: C1 ('MetaCons"TcRnUnsupportedCallConv"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Either (ForeignExport GhcRn) (ForeignImport GhcRn))) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UnsupportedCallConvention)))) :+: ((C1 ('MetaCons"TcRnIllegalForeignType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe ArgOrResult)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 IllegalForeignTypeReason)) :+: C1 ('MetaCons"TcRnInvalidCIdentifier"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 CLabelString))) :+: (C1 ('MetaCons"TcRnExpectedValueId"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TcTyThing)) :+: (C1 ('MetaCons"TcRnRecSelectorEscapedTyVar"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 OccName)) :+: C1 ('MetaCons"TcRnPatSynNotBidirectional"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name))))))) :+: ((((C1 ('MetaCons"TcRnIllegalDerivingItem"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LHsSigType GhcRn))) :+: C1 ('MetaCons"TcRnUnexpectedAnnotation"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (HsType GhcRn)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 HsSrcBang))) :+: (C1 ('MetaCons"TcRnIllegalRecordSyntax"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Either (HsType GhcPs) (HsType GhcRn)))) :+: C1 ('MetaCons"TcRnInvalidVisibleKindArgument"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LHsType GhcRn)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)))) :+: ((C1 ('MetaCons"TcRnTooManyBinders"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Kind) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [LHsTyVarBndr (HsBndrVis GhcRn) GhcRn])) :+: C1 ('MetaCons"TcRnDifferentNamesForTyVar"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name))) :+: (C1 ('MetaCons"TcRnDisconnectedTyVar"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name)) :+: (C1 ('MetaCons"TcRnInvalidReturnKind"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DataSort) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 AllowedDataResKind)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Kind) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe SuggestUnliftedTypes)))) :+: C1 ('MetaCons"TcRnUnexpectedKindVar"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RdrName)))))) :+: (((C1 ('MetaCons"TcRnIllegalKind"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsTypeOrSigType GhcPs)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)) :+: C1 ('MetaCons"TcRnClassKindNotConstraint"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Kind))) :+: (C1 ('MetaCons"TcRnUnpromotableThing"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 PromotionErr)) :+: (C1 ('MetaCons"TcRnIllegalTermLevelUse"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TermLevelUseErr)) :+: C1 ('MetaCons"TcRnMatchesHaveDiffNumArgs"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 HsMatchContextRn) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 MatchArgBadMatches))))) :+: ((C1 ('MetaCons"TcRnUnexpectedPatSigType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsPatSigType GhcPs))) :+: C1 ('MetaCons"TcRnIllegalKindSignature"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsType GhcPs)))) :+: (C1 ('MetaCons"TcRnDataKindsError"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TypeOrKind) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Either (HsType GhcPs) Type))) :+: (C1 ('MetaCons"TcRnCannotBindScopedTyVarInPatSig"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (NonEmpty (Name, TcTyVar)))) :+: C1 ('MetaCons"TcRnCannotBindTyVarsInPatBind"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (NonEmpty (Name, TcTyVar)))))))))))) :+: (((((((C1 ('MetaCons"TcRnTooManyTyArgsInConPattern"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ConLike) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Int) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Int))) :+: C1 ('MetaCons"TcRnMultipleInlinePragmas"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Id) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LocatedA InlinePragma)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (NonEmpty (LocatedA InlinePragma)))))) :+: (C1 ('MetaCons"TcRnUnexpectedPragmas"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Id) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (NonEmpty (LSig GhcRn)))) :+: C1 ('MetaCons"TcRnNonOverloadedSpecialisePragma"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LIdP GhcRn))))) :+: ((C1 ('MetaCons"TcRnSpecialiseNotVisible"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name)) :+: C1 ('MetaCons"TcRnPragmaWarning"
'PrefixI 'True) (S1 ('MetaSel ('Just"pragma_warning_info"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PragmaWarningInfo) :*: S1 ('MetaSel ('Just"pragma_warning_msg"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (WarningTxt GhcRn)))) :+: (C1 ('MetaCons"TcRnDifferentExportWarnings"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty SrcSpan))) :+: (C1 ('MetaCons"TcRnIncompleteExportWarnings"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty SrcSpan))) :+: C1 ('MetaCons"TcRnIllegalHsigDefaultMethods"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (LHsBind GhcRn)))))))) :+: (((C1 ('MetaCons"TcRnHsigFixityMismatch"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyThing) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Fixity) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Fixity))) :+: C1 ('MetaCons"TcRnHsigShapeMismatch"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 HsigShapeMismatchReason))) :+: (C1 ('MetaCons"TcRnHsigMissingModuleExport"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 OccName) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 UnitState) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Module))) :+: C1 ('MetaCons"TcRnBadGenericMethod"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name)))) :+: ((C1 ('MetaCons"TcRnWarningMinimalDefIncomplete"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ClassMinimalDef)) :+: C1 ('MetaCons"TcRnIllegalQuasiQuotes"
'PrefixI 'False) U1) :+: (C1 ('MetaCons"TcRnTHError"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 THError)) :+: (C1 ('MetaCons"TcRnDefaultMethodForPragmaLacksBinding"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Id) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Sig GhcRn))) :+: C1 ('MetaCons"TcRnIgnoreSpecialisePragmaOnDefMethod"
'PrefixI 'False) (S1 ('MetaSel 'Nothing '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"TcRnIllegalNewtype"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 DataCon) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 IllegalNewtypeReason)))) :+: (C1 ('MetaCons"TcRnIllegalTypeData"
'PrefixI 'False) U1 :+: C1 ('MetaCons"TcRnTypeDataForbids"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TypeDataForbids)))) :+: ((C1 ('MetaCons"TcRnUnsatisfiedMinimalDef"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ClassMinimalDef)) :+: C1 ('MetaCons"TcRnMisplacedInstSig"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LHsSigType GhcRn)))) :+: (C1 ('MetaCons"TcRnNoRebindableSyntaxRecordDot"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"TcRnNoFieldPunsRecordDot"
'PrefixI 'False) U1 :+: C1 ('MetaCons"TcRnIllegalStaticExpression"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsExpr GhcPs))))))) :+: (((C1 ('MetaCons"TcRnListComprehensionDuplicateBinding"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: C1 ('MetaCons"TcRnEmptyStmtsGroup"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 EmptyStatementGroupErrReason))) :+: (C1 ('MetaCons"TcRnLastStmtNotExpr"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 HsStmtContextRn) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UnexpectedStatement)) :+: C1 ('MetaCons"TcRnUnexpectedStatementInContext"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 HsStmtContextRn) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UnexpectedStatement) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Extension)))))) :+: ((C1 ('MetaCons"TcRnIllegalTupleSection"
'PrefixI 'False) U1 :+: C1 ('MetaCons"TcRnIllegalImplicitParameterBindings"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Either (HsLocalBindsLR GhcPs GhcPs) (HsLocalBindsLR GhcRn GhcPs))))) :+: (C1 ('MetaCons"TcRnSectionWithoutParentheses"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsExpr GhcPs))) :+: (C1 ('MetaCons"TcRnBindingOfExistingName"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RdrName)) :+: C1 ('MetaCons"TcRnMultipleFixityDecls"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SrcSpan) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RdrName)))))))) :+: (((((C1 ('MetaCons"TcRnIllegalPatternSynonymDecl"
'PrefixI 'False) U1 :+: C1 ('MetaCons"TcRnIllegalClassBinding"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 DeclSort) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsBindLR GhcPs GhcPs)))) :+: (C1 ('MetaCons"TcRnOrphanCompletePragma"
'PrefixI 'False) U1 :+: C1 ('MetaCons"TcRnEmptyCase"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 HsMatchContextRn) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 BadEmptyCaseReason)))) :+: ((C1 ('MetaCons"TcRnNonStdGuards"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 NonStandardGuards)) :+: C1 ('MetaCons"TcRnDuplicateSigDecl"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (LocatedN RdrName, Sig GhcPs))))) :+: (C1 ('MetaCons"TcRnMisplacedSigDecl"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Sig GhcRn))) :+: (C1 ('MetaCons"TcRnUnexpectedDefaultSig"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Sig GhcPs))) :+: C1 ('MetaCons"TcRnDuplicateMinimalSig"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LSig GhcPs)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LSig GhcPs)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [LSig GhcPs]))))))) :+: (((C1 ('MetaCons"TcRnIllegalInvisTyVarBndr"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LHsTyVarBndr (HsBndrVis GhcRn) GhcRn))) :+: C1 ('MetaCons"TcRnInvalidInvisTyVarBndr"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LHsTyVarBndr (HsBndrVis GhcRn) GhcRn)))) :+: (C1 ('MetaCons"TcRnInvisBndrWithoutSig"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LHsTyVarBndr (HsBndrVis GhcRn) GhcRn))) :+: C1 ('MetaCons"TcRnDeprecatedInvisTyArgInConPat"
'PrefixI 'False) U1)) :+: ((C1 ('MetaCons"TcRnUnexpectedStandaloneDerivingDecl"
'PrefixI 'False) U1 :+: C1 ('MetaCons"TcRnUnusedVariableInRuleDecl"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FastString) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name))) :+: (C1 ('MetaCons"TcRnUnexpectedStandaloneKindSig"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"TcRnIllegalRuleLhs"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RuleLhsErrReason) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FastString)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LHsExpr GhcRn)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsExpr GhcRn)))) :+: C1 ('MetaCons"TcRnDuplicateRoleAnnot"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (LRoleAnnotDecl GhcPs))))))))) :+: ((((C1 ('MetaCons"TcRnDuplicateKindSig"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (LStandaloneKindSig GhcPs)))) :+: C1 ('MetaCons"TcRnIllegalDerivStrategy"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (DerivStrategy GhcPs)))) :+: (C1 ('MetaCons"TcRnIllegalMultipleDerivClauses"
'PrefixI 'False) U1 :+: C1 ('MetaCons"TcRnNoDerivStratSpecified"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)))) :+: ((C1 ('MetaCons"TcRnStupidThetaInGadt"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 HsDocContext)) :+: C1 ('MetaCons"TcRnShadowedTyVarNameInFamResult"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (IdP GhcPs)))) :+: (C1 ('MetaCons"TcRnIncorrectTyVarOnLhsOfInjCond"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (IdP GhcRn)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LIdP GhcPs))) :+: (C1 ('MetaCons"TcRnUnknownTyVarsOnRhsOfInjCond"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Name])) :+: C1 ('MetaCons"TcRnLookupInstance"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Class) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [Type]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 LookupInstanceErrReason))))))) :+: (((C1 ('MetaCons"TcRnBadlyStaged"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 StageCheckReason) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Int) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Int))) :+: C1 ('MetaCons"TcRnStageRestriction"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 StageCheckReason))) :+: (C1 ('MetaCons"TcRnBadlyStagedType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Int) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Int))) :+: (C1 ('MetaCons"TcRnTyThingUsedWrong"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 WrongThingSort) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TcTyThing) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name))) :+: C1 ('MetaCons"TcRnCannotDefaultKindVar"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyVar) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Kind))))) :+: ((C1 ('MetaCons"TcRnUninferrableTyVar"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [TyCoVar]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 UninferrableTyVarCtx)) :+: C1 ('MetaCons"TcRnSkolemEscape"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [TcTyVar]) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TcTyVar) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)))) :+: (C1 ('MetaCons"TcRnPatSynEscapedCoercion"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Id) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (NonEmpty CoVar))) :+: (C1 ('MetaCons"TcRnPatSynExistentialInResult"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TcSigmaType) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [TyVar]))) :+: C1 ('MetaCons"TcRnPatSynArityMismatch"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Arity) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Arity)))))))))) :+: ((((((C1 ('MetaCons"TcRnPatSynInvalidRhs"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LPat GhcRn))) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [LIdP GhcRn]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 PatSynInvalidRhsReason))) :+: C1 ('MetaCons"TcRnZonkerMessage"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ZonkerMessage))) :+: (C1 ('MetaCons"TcRnTyFamDepsDisabled"
'PrefixI 'False) U1 :+: C1 ('MetaCons"TcRnAbstractClosedTyFamDecl"
'PrefixI 'False) U1)) :+: ((C1 ('MetaCons"TcRnPartialFieldSelector"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 FieldLabel)) :+: C1 ('MetaCons"TcRnHasFieldResolvedIncomplete"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name))) :+: (C1 ('MetaCons"TcRnBadFieldAnnotation"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Int) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DataCon) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 BadFieldAnnotationReason))) :+: (C1 ('MetaCons"TcRnSuperclassCycle"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 SuperclassCycle)) :+: C1 ('MetaCons"TcRnDefaultSigMismatch"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Id) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)))))) :+: (((C1 ('MetaCons"TcRnTyFamsDisabled"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyFamsDisabledReason)) :+: C1 ('MetaCons"TcRnBadTyConTelescope"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyCon))) :+: (C1 ('MetaCons"TcRnTyFamResultDisabled"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LHsTyVarBndr () GhcRn))) :+: C1 ('MetaCons"TcRnRoleValidationFailed"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Role) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RoleValidationFailedReason)))) :+: ((C1 ('MetaCons"TcRnCommonFieldResultTypeMismatch"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DataCon) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DataCon) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 FieldLabelString))) :+: C1 ('MetaCons"TcRnCommonFieldTypeMismatch"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DataCon) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DataCon) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 FieldLabelString)))) :+: (C1 ('MetaCons"TcRnClassExtensionDisabled"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Class) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DisabledClassExtension)) :+: (C1 ('MetaCons"TcRnDataConParentTypeMismatch"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DataCon) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)) :+: C1 ('MetaCons"TcRnGADTsDisabled"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name))))))) :+: ((((C1 ('MetaCons"TcRnExistentialQuantificationDisabled"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DataCon)) :+: C1 ('MetaCons"TcRnGADTDataContext"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name))) :+: (C1 ('MetaCons"TcRnMultipleConForNewtype"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Int)) :+: C1 ('MetaCons"TcRnKindSignaturesDisabled"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Either (HsType GhcPs) (Name, HsType GhcRn)))))) :+: ((C1 ('MetaCons"TcRnEmptyDataDeclsDisabled"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name)) :+: C1 ('MetaCons"TcRnRoleMismatch"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Role) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Role)))) :+: (C1 ('MetaCons"TcRnRoleCountMismatch"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Int) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LRoleAnnotDecl GhcRn))) :+: (C1 ('MetaCons"TcRnIllegalRoleAnnotation"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (RoleAnnotDecl GhcRn))) :+: C1 ('MetaCons"TcRnRoleAnnotationsDisabled"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyCon)))))) :+: (((C1 ('MetaCons"TcRnIncoherentRoles"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyCon)) :+: C1 ('MetaCons"TcRnPrecedenceParsingError"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (OpName, Fixity)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (OpName, Fixity)))) :+: (C1 ('MetaCons"TcRnSectionPrecedenceError"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (OpName, Fixity)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (OpName, Fixity)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsExpr GhcPs)))) :+: (C1 ('MetaCons"TcRnTypeSynonymCycle"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TySynCycleTyCons)) :+: C1 ('MetaCons"TcRnSelfImport"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ModuleName))))) :+: ((C1 ('MetaCons"TcRnNoExplicitImportList"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ModuleName)) :+: C1 ('MetaCons"TcRnSafeImportsDisabled"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ModuleName))) :+: (C1 ('MetaCons"TcRnDeprecatedModule"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ModuleName) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (WarningTxt GhcRn))) :+: (C1 ('MetaCons"TcRnCompatUnqualifiedImport"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (ImportDecl GhcPs))) :+: C1 ('MetaCons"TcRnRedundantSourceImport"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ModuleName)))))))) :+: (((((C1 ('MetaCons"TcRnImportLookup"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ImportLookupReason)) :+: C1 ('MetaCons"TcRnUnusedImport"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (ImportDecl GhcRn)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 UnusedImportReason))) :+: (C1 ('MetaCons"TcRnDuplicateDecls"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 OccName) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (NonEmpty Name))) :+: C1 ('MetaCons"TcRnPackageImportsDisabled"
'PrefixI 'False) U1)) :+: ((C1 ('MetaCons"TcRnIllegalDataCon"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RdrName)) :+: C1 ('MetaCons"TcRnNestedForallsContexts"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 NestedForallsContextsIn))) :+: (C1 ('MetaCons"TcRnRedundantRecordWildcard"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"TcRnUnusedRecordWildcard"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [Name])) :+: C1 ('MetaCons"TcRnUnusedName"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 OccName) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 UnusedNameProv)))))) :+: (((C1 ('MetaCons"TcRnQualifiedBinder"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RdrName)) :+: C1 ('MetaCons"TcRnTypeApplicationsDisabled"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TypeApplication))) :+: (C1 ('MetaCons"TcRnInvalidRecordField"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 FieldLabelString)) :+: C1 ('MetaCons"TcRnTupleTooLarge"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Int)))) :+: ((C1 ('MetaCons"TcRnCTupleTooLarge"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Int)) :+: C1 ('MetaCons"TcRnIllegalInferredTyVars"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (NonEmpty (HsTyVarBndr Specificity GhcPs))))) :+: (C1 ('MetaCons"TcRnAmbiguousName"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 GlobalRdrEnv) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RdrName) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (NonEmpty GlobalRdrElt)))) :+: (C1 ('MetaCons"TcRnBindingNameConflict"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RdrName) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (NonEmpty SrcSpan))) :+: C1 ('MetaCons"TcRnNonCanonicalDefinition"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 NonCanonicalDefinition) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LHsSigType GhcRn)))))))) :+: ((((C1 ('MetaCons"TcRnImplicitImportOfPrelude"
'PrefixI 'False) U1 :+: C1 ('MetaCons"TcRnMissingMain"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Bool) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Module) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 OccName)))) :+: (C1 ('MetaCons"TcRnGhciUnliftedBind"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Id)) :+: C1 ('MetaCons"TcRnGhciMonadLookupFail"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [GlobalRdrElt]))))) :+: ((C1 ('MetaCons"TcRnMissingRoleAnnotation"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Role])) :+: C1 ('MetaCons"TcRnPatersonCondFailure"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PatersonCondFailure) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PatersonCondFailureContext)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))) :+: (C1 ('MetaCons"TcRnImplicitRhsQuantification"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LocatedN RdrName))) :+: (C1 ('MetaCons"TcRnIllformedTypePattern"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Pat GhcRn))) :+: C1 ('MetaCons"TcRnIllegalTypePattern"
'PrefixI 'False) U1)))) :+: (((C1 ('MetaCons"TcRnIllformedTypeArgument"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LHsExpr GhcRn))) :+: C1 ('MetaCons"TcRnIllegalTypeExpr"
'PrefixI 'False) U1) :+: (C1 ('MetaCons"TcRnInvalidDefaultedTyVar"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [Ct]) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(TcTyVar, Type)]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty TcTyVar)))) :+: (C1 ('MetaCons"TcRnNamespacedWarningPragmaWithoutFlag"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (WarnDecl GhcPs))) :+: C1 ('MetaCons"TcRnInvisPatWithNoForAll"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsTyPat GhcRn)))))) :+: ((C1 ('MetaCons"TcRnIllegalInvisibleTypePattern"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsTyPat GhcPs))) :+: C1 ('MetaCons"TcRnNamespacedFixitySigWithoutFlag"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (FixitySig GhcPs)))) :+: (C1 ('MetaCons"TcRnDefaultedExceptionContext"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CtLoc)) :+: (C1 ('MetaCons"TcRnOutOfArityTyVar"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: C1 ('MetaCons"TcRnMisplacedInvisPat"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HsTyPat GhcPs))))))))))))type DiagnosticOpts TcRnMessage = TcRnMessageOptsDefined in ghc-9.10.3 · GHC.Tc.Errors.Ppr · orphan